Popular Posts

Tuesday, May 11, 2010

Saturday, May 01, 2010

Bjarne Stroustrup on what should be taught to new software developers in college

Bjarne Stroustrup's article titled "What Should We Teach New Software Developers? Why" (Communications of the ACM, Vol. 53 No. 1, Pages 40-42 ).

Tuesday, April 27, 2010

REST Links

A nice list of REST links: Andre's REST Links.

Tuesday, April 06, 2010

TM Forum's MTOSI standard: Setting the Context

MTOSI stands for Multi-Technology Operations Systems Interface. It is a standard specified by TM Forum. It is now part of TM Forum's Interface Program (TIP).

Why is it called "multi-technology"? Why do you need to worry about it? What does it really do? How does it relate to other TM Forum standards and initiatives (often, quite confusing for starters!)? This article attempts to explain the answers for these questions.

This article is organized as follows: 
1) Intent

The intent of TeleManagement Forum's (TMF) Multi-Technology Operations Systems (MTOSI) is to provide open and standards-based interfaces between OSSs (e.g., Service Activation systems, Inventory systems, Network Management Systems, Element Management Systems, etc.). For a detailed exploration of OSS/BSS systems, see my earlier post titled "Telecom OSS/BSS: An Overview".

2) Related TM Forum Standards

2.1 Relationship with MTNM

TeleManagement Forum's (TMF) Multi-Technology Operations Systems Interface (MTOSI) started as an MTNM (Multi-Tehchnology Network Management) substream sometime in 2003. Lets discuss MTNM first.

MTNM provides CORBA-based Element Management Layer (EML)-to-Network Management Layer (NML) interfaces for the management of "multi-technology" networks (SONET, SDH, PDH, ATM, Frame Relay, DSL, connectionless networks such as Ethernet, etc.). However, it can also be used to support a single technology such as ATM. Examples of management areas are: connection management, NE and EMS configuration, network inventory discovery, euqipment inventory management, performance monitoring, alarm surveillance and event reporting, etc. MTNM can also be used to manage a particular subset of a management area - say, alarm surveillance.

Around the time MTNM 3.5 commenced, it was realized that several vendors were using MTNM by converting the CORBA IDLs to XMLs, due to lack of XML based interfaces. Enter MTOSI.

MTOSI has gradually taken sets of MTNM interfaces, generalized the operations systems to operations systems interactions and created XML, SOAP Web services based interfaces - recasting and extending MTNM. Like MTNM, it provides a single interface for the management of many technologies. Moreover, MTOSI has had the goal to make XML interfaces independent of the underlying transport (HTTP, JMS, etc.)

2.2 Relationship with TIP and mTOP

MTOSI has been part of TM Forum Interface Program (TIP) since April 2008. Multi Technology OSS Program (mTOP) coordinates advances in the SOAP and XML based MTOSI interface standard, as well as the CORBA/IDL based MTNM standard. MTOSI service classifications are based on the eTOM model, while the information model is based on SID and MTNM data models.

2.3 Comparision with OSS/J

MTOSI APIs are focused towards providing interfaces at the service, network and element management layers. OSS/J on the other hand aims to provide open interfaces across the spectrum of both OSS and BSS. OSS/J APIs, unlike most MTOSI APIs are network technology independent [1]. OSS/J APIs are entity centric unlike MTOSI APIs that are task-centric. OSS/J provides a generic set of operations on "Managed Entities" [1]. There are efforts underway to draw the OSS/J and MTOSI communicaties together, and we may see a common goals and plans for migration for both OSS/J and MTOSI in the future.

3) Motivation

Element Management Systems (EMS) typically manage the functions of Network Elements (switches, CPU and remote hubs, gateways, routers, susbcriber line units, etc.) from a single vendor. Examples of such management functions include receiving and executing commands sent by upstream activation systems, feeding equipment status data back to upstream systems such as network and trouble management systems, etc. Moreover, the EMS may be able to manage functions related to a single technology (e.g., ATM, SONET, etc.) for a subset of management area (e.g., performance monitoring). Therefore a service provider environment typically has several types of EMS. Typically a Network Management System (NMS) manages functions of many EMSs. To be easily portable across different NMS systems, an EMS vendor can provide MTOSI based standards interface. This would enable easy integration of the EMS with various NMS that service providers could use.

Lets consider another example. A service activation system (an OS) may allow an order management system (also an OS), to request activation of a given service via a service request. The service activation system (an OS) may in turn need to send requests to multiple NMS and EMS OS's to complete the service activation request. A service provider environment in all likelihood contains multiple service activation systems as well as multiple EMS's. If each of those provided proprietary interfaces containing proprietary information models: a) the order management system must be integrated with each of the service activation interfaces, and b) the service activation systems must be integrated with the relevant EMS interfaces. With many services being added on frequent basis, this can easily turn into a nightmare. Utilizing standards-based interfaces provided by MTOSI the integration becomes lot more easier, reducing costs and increasing agility.

Lets consider yet another example. Say, an operator uses Telcordia TIRKS system to administer Layer 1 facilities and equipment while it uses a seperate OSS inventory system to administer Layer 2/3 (logical inventory) and higher services. TIRKS provides an open interface (data dictionaries and XML message definitions) using MTOSI which can be used by the OSS inventory systems to receive messages generated by TIRKS systems (such as inventory update notifications) and to send messages to the TIRKS system.

Similarly, a fault managent system may need to subscribe to alarm reports based on filtering conditions and may also handle subsequent reporting of alarms to subscribed OSs. Similarly, a manager fault management system may receive alarms from several technology-specific fault management system via active alarm sync.

4) MTOSI Description

MTOSI defines OS-to-OS (OS stands for operations systems) interfaces for service and resource management, where OS functionality can be at the levels of Element Management Layer, Network Management Layer or the Service Management layer, in the Telecommunications Management Network (TMN) Logical model.

Examples of such OS in this context include: Inventory Management, Performance Management Systems, Fault Management Systems, Service Activation, Service Assurance, CRM systems such as Order Entry system, Network Management systems, Element Management Systems (EMS). Refer to my earlier post titled "Telecom OSS/BSS: An Overview" for a description of some of these.

Note, that MTOSI is not concerned with EMS-to-NE API, which is typically based on protocols such as SNMP, TL or CMIP. Nor is it concerned with internal implementation details such as an internal inventory model - it only provides a data format and a number of operations around retrieving or modifying the data.

Management functions covered by MTOSI include (but not limited to): 
  • Inventory Retrieval, Inventory Update Notifications, Enhanced Inventory Retrieval (attribute value matching based on XPath), Multi-Event Inventory Notifications (ability to send multiple inventory updates in a single notification)
  • Alarm Reporting, Active Alarm Retrieval
  • Service Activation
  • Service Inventory Management
  • Resource configuration and activation
  • Performance management and maintenance commands
  • Multi-Action and Request Transactions (MART) (i.e., ability to package multiple requests into a single message)
The output of the MTOSI effort can be downloaded from the TM Forum Web site. The output is partitioned into something called as Document Delivery Packages (DDPs) - often organized based on functional areas (such as resource inventory management). The framework DDPs contain the generic aspects applicable to all other DDPs while the Data Model DDPs contain aspects related to entities, data structures, attributes and states. Each DDP also contains the following set of documents:

  • TMF 518, MTOSI Business Aggreement (BA): Identifies the requirements and use cases to be supported by the interface.
  • TMF 612, MTOSI Information Aggreement (IA): UML description of the interface.
  • TMF 864, MTOSI Interface Implementation Specifications (IIS): Maps the UML model to XML (WSDL, XSD, bindings, etc.)
  • Supporting documentation
5) References

[1] "Bridging the Gap Between MTOSI and OSS/J" by Nigel Davis, John Reilly and Suresh Bhandarkar
[2] "Implementing NGOSS with MTOSI"
[3] "A very short history of mTOP" (Requires login to TM Forum site)
[4] Tim McElligott, "MTOSI brings OSS Integration a Step Closer", Nov 2005,
[5] "Designing a Standards-Based Application", March 2009,
[6] Stephen Fratini, Irene McGoey, Garry Grimes and Enrico Grosso, "Introduction to the TM Forum's Multi-Technology Network Model", National Fiber Optic Engineers Conference, 2001
 

Thursday, April 01, 2010

On patterns of software degeneration

Here ("Big Ball of Mud" by Brian Foote and Joseph Yoder) is a paper that explains some patterns of software entropy.

Wednesday, March 24, 2010

REST in practice and Richardson's RESTful maturity model

Jim Webber, Savas Parastatidis and Ian Robinson presented "REST in Practice" at a QCon talk, in which they also presented a model of RESTful maturity developed by Leonard Richardson.  

Here (Richardson Maturity Model: steps toward the glory of REST) is Martin Fowler's explanation of the maturity model.

Friday, March 19, 2010

Telecom OSS/BSS: An Overview

1. Introduction

Before the initial 1970s, most of the support activities in a telephone company such as taking orders, maintaining network inventory, provisioning services (for example, line assignment and testing), configuring network components, managing faults and collecting payments were performed manually. It was realized that many of these activities could be replaced by computers. In the next few years, a number of computer systems and software applications were created to automate these activities. Examples include TIRKS, RMAS, SES, etc. Thus came the term Operations Support Systems (OSS).

OSS are “network systems” dealing with the communications network and supporting processes such as maintaining network inventory, provisioning services, configuring network components, managing faults.

Business Support Systems (BSS) is a newer term and typically refers to “business systems” dealing with customers and support processes such as taking orders, processing bills, collecting payments, sales and marketing, supporting customer care agents in response to service requests, trouble reporting and billing inquiries, etc.

OSS and BSS systems together are often abbreviated as BSS/OSS or B/OSS. The term OSS was historically used to include both network and business systems. Some industry analysts, system integrators and service providers still use the term OSS to include both network and business systems, which sometimes causes confusion.

This article provides an overview of some of the core areas in OSS and BSS such as Order Fulfillment, Service Assurance and Billing systems. The following BSS/OSS systems are covered:
  • Order Fulfillment – Order Management, Service Provisioning and Inventory Management
  • Service Assurance - Fault & Trouble Management, Network Performance Management, Topology & Configuration Management, Planning & Testing
  • Billing - Billing Mediation, Rating, Billing Systems, Interconnection Billing, Revenue Assurance
The article explains some of the basic functions of these systems. However, this article doesn't intend to provide extensive details. For an extensive overview of business activities, business process and functions, refer to standards such as eTOM and TAM at http://www.tmforum.org/.

2. The Realm of OSS/BSS in Order Fulfillment, Assurance and Billing

2.1 Order Fulfillment

Communications products/services could range from Voice services to IP and Data services to Hosting and CPE services. Some of the examples of communications products/services are: 
  • Voice – Basic telephony, long distance, toll-free, Voice over IP (VoIP), Contact Center, Local Access, etc.
  • Internet Protocol (IP) – Internet Access, VPN, Contact Center, VoIP, Remote Access, etc.
  • Data – Layer 1 Wide Area Network (WAN) Services such as SONET, Layer 2 WAN services such as ATM, Frame Relay, Private Lines, Layer 2 VPN and Metro Ethernet, etc.
  • Hosting – Custom Application Environments, Disaster Recovery, Managed Services such as storage, security and network services, Web Site Hosting, etc.
Order Fulfillment functions are a critical set of activities performed in order to fulfill customer orders for services in a Communications Service Provider (CSP) environment.
The following figure shows a very high-level view of activities performed in a typical CSP environment.


After order entry, validation and submission, orders are decomposed and sent for provisioning. Upon fulfilling the decomposed orders and appropriate testing of the circuits, the orders are put into inventory. The following sub-sections explain the Order Fulfillment related functions and OSS/BSS systems.

2.1.1 Order Management

Order Management systems are complex systems that allow customer or customer service representatives to capture and process new orders, modify existing orders, process customer moves and changes, price quotes and orders, validate orders, etc., while supporting multiple channels such as Web, Order template documents and partner applications as well as multiple lines of businesses.  

Order Management includes the following areas: 
  • Order Entry and validation – The Order Entry process captures order details such as package or plan, service address, service details, customer accounts, relevant contacts and applicable contracts. Data entered during Order Entry is also validated against predetermined rules.
    Orders can be validated as the data is entered and/or validation after all the data has been entered. Products/solutions that validate order data as they are entered and walk the user through the product configuration process are known as “Product Configurators”. One of such tools available in the market is Selectica COnfigurator.
  • Order Decomposition – A single customer order can be decomposed into one or more service requests, typically based on service types or quantities, in order to be able to fulfill an order.
    For example, if a customer order contains both a VoIP order and a phone line order, two service requests would be created, one each for VoIP and the phone line, each of which would be sent to the appropriate provisioning systems.
One of the major problems service providers often grapple with is that, as new services are added to the offerings, led by different business units, the lack of flexible order management platform results in product/service specific OSS/BSS applications. These in turn result in higher time-to-market as well as increased costs of maintaining many different applications and systems. Product catalog based Order Management solutions attempt to solve these problems by storing and processing qualification rules for services based on customer profiles, ordering channels, service locations, product interdependencies, availability, customer eligibility and other business constraints.

2.1.2 Service Provisioning

Service Provisioning systems are systems used to setup products/services for the customer after an order for the services has been created and accepted by the CSP.

Service provisioning activities include specifying the pieces of equipment and parts of the network to fulfill the service, configuring the customer’s routing path, allocation of bandwidth in the transport network, setting up of wiring and transmission, etc.

Some of the systems that constitute provisioning systems are: Circuit Design & Assignment Tools, Activation systems, and Field Service Management systems.

Circuit design refers to specifying whether facilities exist to provide the service and which pieces of the network equipment and routes the service shall utilize.

One of the most widely used systems providing Circuit Design facility is Telcordia TIRKS. Apart from Circuit Design support, it also provides circuit order control, inventory record maintenance, selection and assignment of components from inventory, and preparation and distribution of circuit work orders. The order control module in TIRKS works with a circuit provisioning system and operates in conjunction with other TIRKS components to assign facility and equipment information for circuit orders and design circuits. TIRKS can then provide automated design criteria for certain circuit orders. The circuit design generated in TIRKS is then communicated to field operations or automated activation systems for implementation.

Circuit Design and Assignment tools these days often have graphical tools that allow a user to create services on a network map using mouse clicks and drag-and-drop rather than drawing maps by hand or using an abstract set of equipment identifiers displayed in a table.

After a service is designed based on the existing equipment and circuit inventory, it is ready to be activated. If new equipment or lines need to be configured manually, a Field Service Management (FSM) system is notified which in turn dispatches technicians.

Moreover, certain activations can be performed automatically. For example, issuing commands to ATM or circuit switches to provision circuits, to SONET terminals to allocate bandwidth, and to a wide array of access devices such as DSLAMS, Digital Loop Carriers (DLC), or cable modems. For such activations, Service Activation systems pass the device specific commands and configuration changes to the network elements, Element Management Systems (EMS), Network Management Systems (NMS) or application hosts.

EMSs are designed to receive and execute commands sent by activation systems on the devices. EMSs can also feed equipment status data back to network and trouble management systems. EMSs use protocols such as Common Management Information protocol (CMIP) or Transaction Language (TL) or Simple Network Management Protocol (SNMP) to communicate with activation and other systems.

Activation systems often comprise a library of adapters to various network systems. They usually also support transaction control, i.e. the capability to roll-back operations already performed, in case an error occurs.
It should be noted that Provisioning systems interact with the Inventory systems, both to verify that the required network elements and other facilities are available, and once the resources are provisioned - to reflect the changed on-line configuration of the facilities. Therefore, provisioning systems have close channels with inventory systems. As a result, some vendors have combined workflow capabilities with inventory management capabilities in their products.
 
2.3 Inventory Management
 
Tracking inventory involves tracking equipment, facilities and circuits.

Some examples of information tracked are: the location and quantities of the equipment, how a piece of equipment is configured and its status, etc.
Inventory Management Systems track both the physical network assets (such as equipment and devices) as well as “logical” inventory (such as active ports, circuit ids, IP addresses, etc.), although not all support both.

By relating usage of network assets to specific customers and services, an inventory system can help network operations determine the network usage and available capacity as well as enable automated network design and planning. Inventory Management Systems also enable Service Assurance systems to find the impact of a network fault on the customer’s circuits.

Some tools also have “auto-discovery” features to automatically check physical network assets and match the results with the information held in the inventory. However, these work only with some of the newer intelligent network elements.

2.2 Service Assurance

Communications service providers (CSP) strive to differentiate themselves from their competitors by implementing attractive Service Level Agreements (SLA). SLAs are formal contracts where the level of service delivered by the CSP to his customer is stipulated. An SLA may specify levels of service availability, performance, operation, etc. as well as penalties upon violation of the SLA.

Offering SLAs implies that the service provider has the ability to monitor, act and report the level of service, in order to assure the quality of services delivered to the customers. Service Assurance refers to all the activities performed for such an assurance. The goal of Service Assurance is to provide an optimal customer experience, that helps retain existing customers, attract new customers and prevent penalties arising out of violation of SLAs.

The following sub-sections introduce some of the common service Assurance systems.

2.2.1 Fault and Trouble Management

Fault Management Systems are designed for detection, isolation and correction of malfunctions in a communications network. They monitor and process network alarms generated by network elements (routers, switches, gateways, etc.). An alarm* is a persistent indication of a fault that is cleared only when the triggering condition is resolved.

Examples of trouble or fault in a network are damage to an optical fiber line, switch failure, etc. Such a problem in the network can result in a chain reaction where many network elements in a certain path produce alarms*.

Fault Management Systems may be either a component within Network Management Systems or as a standalone set of system and application software.

The following figure illustrates how fault management works.



Network Elements are designed to provide various levels of self-diagnosis. Older Network Elements might simply send an alarm notifying a problem while newer Network Elements can provide more precise and detailed messages. Fault Management Systems may collect alarms via SNMP traps, CMIP events or proprietary agents, via EMS. They use complex filtering systems to assign alarms to specific severity levels and correlate different alarms to locate the source and cause of a problem.

After a problem is identified, the FMS then notifies appropriate network operators as well as pass the problem information to a Trouble Management System that in turn logs the problem and issues a trouble ticket to start the repair process.

The Trouble Management System then sends commands to appropriate systems such as Field Service Management to schedule and dispatch technicians to repair the equipment and/or to EMS to reroute network traffic around the problem areas.

Trouble Management systems also handle automatic escalation, such as progression of a ticket from minor to major or major to critical, etc., and support a variety of notification methods such as paging, emails, synthesis voice dial-out.

Fault Management systems usually provide graphical network displays which are projected on large screens at the Network Operations Centres (NOC). NOC operators can see role-based views on their consoles, shortcuts to operations they perform the most as well as tools to quickly make connections to EMS to perform any testing or diagnostic operation.

2.2.2 Network Performance Management

Performance Management components in NMS and other Alarm Handlers monitor applications and systems and collect performance variables of interest at specified intervals. Performance variables of interest may be service provider network edge availability, customer premises availability, response times, packet delivery rate, packet losses, latencies, jitters and out of sequence packet reorder, etc., to name a few.

One way to capture performance metrics is collecting event logs, CDRs and other performance data such as counters or timers that the network and system elements maintain as part of their normal operation. This is referred to as passive measurement. Performance data is captured by polling MIB using SNMP or using syslog, (I & II), FTP, EMS feeds, etc. Most passive measurements report on a single network element.

For example, an Ethernet Switch may have a MIB which provides in and out data volumes of each port, histograms of frame sizes, number and types of erroneous frames, central processing unit (CPU) busy status. Associated Remote Monitoring (RMON) MIB-type data can then list ten most active users, etc. Performance Management tools can access the data by using SNMP to poll the MIBs at predefined intervals.

Statistics on performance variables can also be captured via dedicated network appliances known such as “probes” and “sniffers” that monitor or probe customer’s local loop connections, packet performance, etc. This form of performance testing is usually referred to as active testing.

Packet sniffers typically monitor signaling protocols such as SIP and RTP by inspecting packets on the wire/fiber, using pings, DNS, FTP, HTTP fetches, etc. Examples include WireShark and Geoprobes.

Probes such as Brix Networks BrixWorks Verifiers and Tektronix/Minacom IVR tools typically emulate customer traffic in order to test or probe specific paths to measure the quality of the services supported. Probes could be either placed into the network or could be built into network elements such as in the case of Cisco’s IP Service Level Agreements tools.

Note that active measurement measures a service, such as application response time, instead of the internal operation of a network element.

An example of active network performance test is injecting “ping” (short, network layer echo packet) into the network aimed at a remote IP address. Round-trip time is measured if the ping packet returns, and an error counter is incremented if it doesn’t.

Performance statistics captured by “active” or “passive” performance tests are normalized and routed to relational databases and/or data-warehouses. An alternative is to pass the performance data directly to Performance Management tools. For example, Concord eHealth could collect performance statistics from Netcool agents via SNMP polls at a pre-defined interval.

Performance statistics are initially analyzed to determine the normal (baseline) levels. Appropriate thresholds are determined for each of the interesting performance variable so that exceeding the thresholds indicates a problem.

Performance Management tools then measure the performance variables against SLAs defined as thresholds per application or service, on an on-going basis. In case of exceptions they report them to alarm handlers. This form of performance monitoring is reactive performance monitoring. Some tools also support proactive monitoring by way of providing simulation tools that helps network operators project how growth in network traffic will affect performance metrics and plan to take proactive countermeasures such as increase capacity.

Performance Management tools may also support real-time and historical reporting. Some CSPs have taken performance statistics of the network affecting customers’ circuits to their customer self-service portals.

2.2.3. Topology & Configuration Management

Older networks and systems were static and the network wiring was fixed in place, and sometimes required long outages while changes to the network and its configuration were being made. Any error or inconsistency in the configuration files of different network devices caused problem, and therefore these changes were well controlled [3].

According to [3], with the rise of IP-based, dynamically routed networks, network topologies started becoming dynamic. The topology of the network became dynamic because a few of routers might decide, on their own, to shift routing patterns, or because a network operator group might add a new router or switch to the network, possibly without everyone else in the network operations center being aware of the changes. Instead of static associations between users and network addresses (as was set in the old “hosts” file), DHCP and other techniques allowed users to appear, move, and disappear without providing prior notice to the network administration.

Most major NMSs therefore provide capabilities to automatically discover a network’s actual topology, which is critical to understand network performance or root cause of network alarms, etc.

Probes are placed into the network to automatically find devices and circuits. Also, most network elements provide MIBs that can be polled via SNMP to discover the network, although discovering the network topology in its entirety may not be guaranteed. Backup paths, virtual private networks, MPLS, etc., can make it very difficult to discover actual paths, through multiplexed links, patch panels, and test equipment [3].

Also, most Topology Management Systems allow the network operator to provide hints so that the system, for instance, in order that the system can ignore certain portions of the network. This makes it easier to discover relevant portions of the network more accurately.

Some service providers may run network discovery routines on a daily basis to discover any unauthorized changes to the network topology as a result of security intrusions or unplanned insertion of devices.

Moreover, network elements and computer systems have a variety of version information associated with them. For example, a workstation may have: Operation System, version 32, Ethernet Interface, version 5.4, TCP/IP Software, version 2.0 and SNMP Software, version 3.1. Since multiple engineers/network operators work on making changes to the network equipment, tracking the changes manually would be very tedious and error-prone. Configuration Management tools help automates the tracking of the changes. Configuration Management systems store the configurations in a database or LDAP server for easy access.

They also enable network operators to change configurations of the network elements as well as to roll back a change to a previous configuration, if required.

When a problem in the network occurs, network operators often search the Configuration Management database for clues that can help solve the problem.

2.2.4. Planning & Testing

Network Planning solutions help determine when a communication network needs an upgrade or additional equipment as well as to predict the impact of changes to a service provider’s network’s topology, configuration, traffic and technology. They provide simulation tools that help the network operators to project how growth in network traffic will affect the network performance. Based on the results and other planning activities, network operators can take countermeasures such as increase capacity.

Testing is an important activity in setting up a network or customer circuits. For simplicity in understanding the gamut of testing activities, let us divide them into the following:

1. Testing of existing network or a change
2. Integration testing of services configured for the customer
3. End-to-end testing of services configured for the customer

Testing the entire network platform - including the equipment, services and call quality – is critical for assessing the system prior to deployment and for service assurance in production environments [4].

Network testing tools usually simulate a production environment and generate synthetic voice, video and data traffic, which helps measure call/data quality, network performance, and the affects of any changes to the network or increasing traffic or adding new applications. These tests typically include tests like DNS, HTTP, RTP, Ping, etc. Also, during ongoing operations, these testing tools enable active testing of facilities.

Another form of testing is integration testing of network setup for the customer, i.e., routes, circuits, etc. configured for a customer. Network operators or field engineers perform integration testing of services upon completion of activations and other provisioning activities. Field engineers typically use equipment and network element specific applications to perform integration testing.

Upon completion of integration testing, field operations teams are notified to perform end-to-end testing. End-to-end testing includes testing of circuits, both within the CSP’s network as well as local access circuits between the CSP and the customer premises. Some service provider’s use craft access systems for the benefit of field technician’s access to their internal systems through a hand held terminal [5]. The hand held terminal helps them to access loop testing system and to view the complete test summary from remote locations.

2.3 Billing

IDC [6] defines Billing as: the processing and compiling of charges and enabling of revenue collection for network usage, feature transactions, and access charges of the services.Mediation systems collect network usage data from the network elements and convert to billable statistics.
The following figure depicts a simple Billing flow:




Traditionally, for phone calls, Call Detail Records (CDR) have been used to record the details of the circuit-switched phone call. CDR includes information on start time of call, end time of call, duration of call, originating and termination numbers. CDRs are stored until a billing cycle runs. For IP Based Services, a new standard is gaining acceptance called Internet Protocol Detail Record (IPDR). IPDR supports both voice and data.

Billing systems use mediation output to determine charges for the customers. It is also used to feed other downstream applications such as Fraud and Churn Management.

2.3.2 Rating

Rating systems calculate the charge for an individual call, IP usage event, etc. using the CDRs/IPDRs. Rating systems apply charges based on pre-configured pricing rules, applicable discounts and rebates from promotions.

This rating process has grown increasingly complex in recent years. In older times, it was solely a matter of taking the length of the call, assigning a price based on the mileage band (calculated by cross-referencing the prefix of the originating and terminating numbers in a table of values), and assigning discounts based on the time of day (peak, evening, night), day of the week, and holidays.

Modern rating systems can assign discounts based on calling circles, provide flexible rating plans based on size of accounts and increase switching costs [2]. These serve as strategic marketing tools but can be very complex to administer and operate.

2.3.3 Billing Systems

Billing systems aggregate rated calls, IP/data usage events, etc. and calculate customer invoices. In the United States, billing is usually performed once a month.

Billing systems combine rated records with prior balance information, payment records, recurring charges (such as line rentals), one-time fees (such as installation and service charges), promotions and discounts associated with the customer account, taxes and credits. Overnight billing batch jobs are among the largest batch environment at a CSP’s operating environment. Each customer is assigned a specific billing cycle.

According to Insight [2], the holy grails of the billing industry are unified billing and convergent billing. With unified billing, a customer gets a single bill for all services provided (or billed) by the service provider, appropriately rated, discounted, and taxed, and a single contact for inquiries and negotiation.

2.3.4. Interconnection Billing

In the competitive world of communications, service providers often tie-up with partners, in order to bundle their own products with their partners. This helps the service providers to provide attractive bundles of products and services. However, in order to successfully settle interconnect billing settlements an effective Interconnection Billing is required.

Interconnection Billing products support inter-working of a service provider’s billing systems with the corresponding systems of another service provider, based on interconnect agreements and contracts.

2.3.5. Revenue Assurance

Revenue Assurance & Fraud Management systems verify billing, detect and identify unauthorized usage of service provider network assets. Some of the kinds of frauds are Usage and Subscription.

Usage Fraud means that a customer uses the telecommunications network illegally. This is accomplished either by obtaining a service with no intent to pay or by obtaining unauthorized access to the network (i.e. “hacking” or “cracking”).

Fraud Management systems typically detect and prevent unauthorized access to a communications network by analyzing traffic patterns on the network. Some examples are provided in [8]:

  • One technique involves analyzing the average call duration or the number of calls placed to foreign countries to determine whether the traffic patterns are consistent with a subscriber's call history or pattern. If a call is inconsistent with the subscriber's call pattern profile, the subscriber is provided with a report of the abnormal call activity.
  • Other methods for dealing with the problem of unauthorized use involve automatically denying or blocking access to the network when abnormal use is detected to minimize the subscriber's financial loss.
Subscription fraud means that a customer obtains a service account by giving a false identity (name and/or SSN) or by giving a false address or false credit worthiness.

Detecting subscription fraud involves searching recent order and existing customer data for multiple orders and/or accounts with the same customer name, SSN, or service address.

Common subscription fraud patterns include:
  • Change of billing address within a few weeks of opening an account.
  • Substantial deviation of usage profile of a new user from an average new user.
Common techniques to control subscription based fraud include threshold based analysis, inference rules analysis, profile based analysis such as habitual user profiles and neural networks.

Fraud Management Systems typically read and store usage data from the service provider’s network switching equipment and allows queries to be executed against the data that detect suspicious usage patterns.

They also allow operators to review customer accounts that have suspicious activity, to track their investigation and record the final case resolution.

It should be noted that fraud is different from revenue leakage. Revenue leakage is characterized by the loss of revenues resulting from operational or technical loopholes where the resulting losses are sometimes recoverable and generally detected through audits or similar procedures [1]. Fraud, on the other hand, is characterized with theft by deception, typically characterized by evidence of intent where the resulting losses are often not recoverable and may be detected by analysis of calling patterns.

Another important class of Revenue Assurance tools includes Churn Management tools. Churn management is an important area for service providers that have subscription-based business - due to price wars, aggressive marketing and promotions from competing service providers, and customer’s expectations related to customer service.

Churn Management tools provide functions such as automated behavior analysis, forecasting and simulation, empirical profiling, churn metrics capture, that enable service providers to learn which customers are likely to leave and take appropriate countermeasures.

3. Conclusion

3.1 Summary

OSS/BSS systems and applications automate many of the day to day operations performed in a communications service provider’s operating environment. They optimize the time taken to perform these operations and make the business processes more efficient.

There are no all-encompassing OSS/BSS systems that can be installed, integrated, tested and allow the service providers to easily modernize their end-to-end operations functions.

Service providers, therefore, use all the different approaches: best-of-breed in some areas, off-the-shelf in some, and home-grown custom applications in the remaining areas, to modernize and optimize their operations.

More often than not, many of these OSS/BSS systems are integrated with the others in a point-to-point fashion, as part of discrete projects and programs, sponsored out of different business units. This leads to point-to-point integration of OSS/BSS systems unless the programs/projects are planned with a strategic goal.

A side effect of the difficulty in integrating the various OSS/BSS systems is many of the OSS/BSS systems in a service provider’s operating environment may not be integrated at all. For example, it is not unusual to find the following scenario: when a customer orders a new telephone line, the ordering system takes the details of a customer’s order, but a manual process is present to configure the telephone exchange using a switch management system. Details of the order entered in the Order Handling system is re-keyed manually by the technician into the Switch Management System – a process often referred to as “Swivel-Chair Integration”.

The article provided an overview of some of the core OSS/BSS areas in Order Fulfillment, Service Assurance and Billing.

3.2 References

[1] Who Makes What: OSS, http://www.lightreading.com/document.asp?doc_id=113052&print=true, Light Reading, Dec 2006
[2] The 2007 Telecommunications Industry Review, The Insight Research Corp., Dec 2006
[3] Eric Siegel, Architectural Overview of Network Management, The Burton Group, Oct 2005
[4] Arindam Banerjee, Network Management is the Key to the Success of Next-Generation Architecture, Yankee Group, Jan 2007
[5] Senthil K. Ramachandran, Order Fulfillment Core Processes and Pain Areas, TMFC 2122 White-paper
[6] Sterling Perrin et al., IDC's Service Provider Infrastructure Taxonomy, 2004, IDC
[7] Lars Andersson, OSS Solutions for Network Operators – white paper, 2002
[8] Telecommunications Fraud Detection Scheme, US Patent 5504810, http://www.patentstorm.us/patents/5504810/description.html, April 1996
[9] OSS Through Java Initiative, OSS/J Roadmap, TeleManagement Forum, Jan 2007
[10] Element Management Systems – Definition and Overview, Web ProForums, International Engineering Consortium (IEC)
[11] Divakara K. Udapa, TMN Telecommunications Management Network, McGraw Hill, ISBN:9780070658158, 1999
[12] Enhanced Telecom Operations map - eTOM: The Business Process Language of NGOSS, TeleManagement Forum
[13] Wikipedia, http://en.wikipedia.org/wiki/Operational_Support_Systems
[14] Elisabeth Rainge, Next-Generation OSS and Billing Market Taxonomy, IDC, Oct 2004
[15] Wikipedia, http://en.wikipedia.org/wiki/Fault_management
[16] Wikipedia, http://en.wikipedia.org/wiki/Management_information_base
[17] Network Management Basics, http://www.cisco.com/en/US/docs/internetworking/technology/handbook/NM-Basics.html
[18] Wikipedia, http://en.wikipedia.org/wiki/Network_planning_and_design
[19] Balan Nair et al., Method and system for planning a telecommunications network, United States Patent 5974127, http://www.freepatentsonline.com/5974127.html, Oct 1999
[20] Telecommunications Fraud Detection Scheme, US Patent 5504810, http://www.patentstorm.us/patents/5504810/description.html, April 1996
[21] Stephen Brown, Telecommunication Fraud Management, Jan 2005, http://www.waveroad.ca/ressources/Whitepaper_SB_Janvier2005.pdf
[22] Eric Siegel, Measuring Performance of Networks and Applications, The Burton Group, Feb 2007
[23] International Engineering Consortium (IEC), Tutorials, http://www.iec.org/online/tutorials/

Monday, March 15, 2010

Colin Powell on leadership

For great leadership lessons, see "Colin Powell on leadership".

A proof that Microsoft technologies can be used for ultra-large-scale systems

Here's a proof that Microsoft technologies can indeed be used to build ultra-large-scale systems: MySpace architecture.

Ultra-large-scale systems have the following characteristics, as Len Bass of Software Engineering Institure (SEI) describes here:
  • They are decentralized in terms of data, development, evolution, amd operational control
  • They have a wide variety of stake holders and therefore they have inherently conflicting and unknowable requirements
  • They continually add new functions and content
  • Software and hardware failure is a norm rather than the exception

Friday, March 12, 2010

Testing 1 million concurrent users on MySpace live site

Here is Dan Bartow's account of how MySpace tested a live site with 1 million concurrent users.

Wednesday, March 03, 2010

Comparision of "wrapped"/"non-wrapped" conventions in Document/Literal (style/usage) Web Services

For a good comparision on the bare/wrapped conventions while using Document/Literal Web services, see this post from Alexander Ananiev.

Tuesday, March 02, 2010

What every programmer must know about Unicode and Character Sets

The following are great articles on the very important subject of Unicode and character sets.

Thursday, February 25, 2010

Craft, cooperative gaming and lessons from lean manufacturing

Alistair Cockburn, in his thought-provoking publications titled "From Agile Development to the New Software Engineering", shows how software engineering is built on the following three legs and what to make of it. A few excerpts:

  • Craft -  "Being in a craft profession brings with it certain expectations, such as lifelong learning, or “deepening” the proficiency in one’s craft. Programmers shouldn’t think that just because they once learned to program a computer, their programming skills are still sufficient. As craft professionals, programmers, project managers and others should always be looking to learn new tools, and techniques, and get better in the ones they have. [Cockburn]"
  • Cooperative gaming - "Every game and every situation are potentially different – there is no formula for winning the game. Different, even opposite strategies may be needed at any instant; The quality of a move in the game is not absolute, but rather, is only relative to how it improves the position of the team for its next move; The quality of community and communication among the team members matter enormously – they often make the difference between success and failure. [Cockburn]"
  • Lessons from lean manufacturing - "... people hand other people decisions; people wait on each other for decisions; and some people have a bigger backlog of decisions than they can handle at the moment. Examining the dependency network of decisions in play in an organization, we see that this network is very similar to the dependency network of parts in a manufacturing plant. Quite surprisingly, the same mathematics applies to the situation, and many of the same strategies apply: just-in-time, pull, continuous flow, and so on. [Cockburn]"

Software Engineering Method and Theory (SEMAT)

Anyone who has worked in the software industry for a few years, in all likelihood, wouldn't find it hard to acknowledge that the state of practice in software development has a long way to go.
 
Visit Software Engineering Method and Theory (SEMAT) for a community working on developing a framework for improving the state of practice in software. Its heartening to see a list of great signatories on this initiative.
 
The SEMAT call for action states:

Software engineering is gravely hampered today by immature practices. Specific problems include:  
  • The prevalence of fads more typical of fashion industry than of an engineering discipline.
  • The lack of a sound, widely accepted theoretical basis.
  • The huge number of methods and method variants, with differences little understood and artificially magnified.
  • The lack of credible experimental evaluation and validation.
  • The split between industry practice and academic research.
Visit here for SEMAT publications and references.

Data view as an architectural view

For a nice roundup of data view as an architectural view, refer to Paulo Merson's tech note on the SEI site.

Wednesday, February 24, 2010

How we overvalue stuff

Paul Graham on "Stuff". He says "Stuff has gotten a lot cheaper, but our attitudes toward it haven't changed correspondingly. We overvalue stuff." So true.

Enlivening discussion around static and dynamic types

For a hilarious account of "Static-Typing Fundamentalist, the bearded and grizzled veteran of the Static/Dynamic Code Wars [Ted Neward] ", read Ted Neward's blog post on the comments posted on Scott Hanselman's intro to the C# dynamic types (don't miss the comments on Scott's post, either).

CWE's list of top 25 most dangerous programming errors

Common Weakness Enumeration (CWE)'s study describing the top 25 programming errors that can open up security holes in your applications is here.

Monday, February 15, 2010

Examples of Interoperability Issues in SOAP-based Web services

1- Mismatch in platform native data types

Data type compatibility is among the most important issue in Web services (SOAP based) interoperability. SOAP implementations convert XML schema types to language native data types during serialization and vice versa during deserialization. Different SOAP runtimes and underlying platforms/languages at sender and receiver end can therefore cause interoperability issues.

a) No direct native type maping. Some schema types such as xsd:unsignedshort, xsd:unsignedint xsd:unsignedlong do not always have a direct native type mappings on all languages. For example, in Java, unsigned types are not defined.

b) Difference in precisions. Different programming languages and platorms might support different precisions for XML schema defined floating point and decimal numbers such as xsd:decimal, xsd:double or xsd:float, leading to loss of precision during translation between xsd types to native types.
A good example of this issue is that of supporting Bigdecimal. XML Schema specification for decimal data types allows an arbitrary precision, upto 40 digits. Although Java BigDecimal also is defined as arbitrary-precision signed decimal numbers, it has an upper limit based on the underlying platform - Windows, Solaris, Linux, etc. The .NET implementation supports upto 29 digits.

Similarly, platforms use different precisions when interpreting native xsd:dateTime types. As per XML Schema specification, any number of digits after seconds may be coded into a dateTime data type. The Java platform supports a precision of upto three digits for the millisecond while .NET supports seven digits for the millisecond (can therefore support nanoseconds).

c) Null values in SOAP messages. Difference in how schema data types are mapped to native platform data types can cause issue in handling null values.
For example, lets say, a Java based Web service returns a date/time using java.util.Date or java.util.Calendar and a .NET consumer consumes the service. If the service returns a null, the .NET consumer fails, because in .NET System.DateTime is considered a value type (i.e., they reside in the stack) and value types cannot be a null. This is unlike Java where the two are classed as reference types (stored in the heap) and therefore can be null.

d) Processing byte arrays. SOAP allows exchanging data in the form of byte arrays (e.g., base64 encoded and placed on the XML document). Implementations may return inconsistent values due to a difference in native data types or other problems.

e) Processing nil and minOccurs='0'.
These get handled differently in different platforms. For example, Java tools tend to serialize nulls explicitly as xsi:nil='true' unless told otherwise.


f) Weakly typed data structures: Some programming languages support Collection types such as hashmaps, vectors, sets, etc. Objects of these collection types, contains objects of other types. The receiving side may have trouble understanding SOAP messages containing such weakly-typed elements.
For example, an ArrayList may be taken as "anyType" in the XML schema, making it hard for the receiving side to map it to appropriate type.

2- Platform Idiosyncracies

a) Different interpretations of namespace declarations. Lets say you have two .NET services defined by unique URLs of the form: http://domain/branchname in the namespace declarations. The first service contains the URL: http://www.somecompany.com/ordering in its namespace declaration and the other contains the URL: http://www.somecompany.com/provisioning. Although both have unique URLs in the namespace declarations, a Java consumer consuming both services will face a naming conflict. This is because, the package name in generated stub code in Java is based on the domain name of the namespace, unlike in .NET where both domain name and the branch name are used to construct the namespace of the generated code.

b) Difference in platform generated proxies. Service proxies/stubs generated using one implemention do not typically work with other implementations. Moreover, code written against proxies generated using one version of the implementation may not work with another version of the implementation. For example, Code written against Axis 1.1 generated proxy may not work when the proxy is regenerated using Axis 1.2 (for example due to evolving xsd to Java type mappings).

c) Differences in expectations of type information. SOAP 1.1 defines a way to type each value explicitly using the xsi:type attribute. This is optional and typically not required if the type information is being expressed through the use of schema or any form of metadata exchange.
There were implementations that require explicit type information such as an earlier version of Apache SOAP. Other implementations such as .NET SOAP implementations didn't support it at all. This caused significant interoperability issues, since the implementation requiring type information would not be able to process a message from an implementation that doesn't include explicit type information.

3- SOAP and WSDL specific issues

a) Usage of mustUnderstand attribute. SOAP 1.1 defines a mustUnderstand attribute that can be specified for a SOAP header. The intent of this attribute is to ensure that if a SOAP processor/implementation doesn't understand it, it must fault. In other words, the recipient is required to understand and make use of the information supplied by the header. This helps in situations where a recipient can't perform its job unless it knows what to do with data provided by this header element.

SOAP 1.1 defines values for this attribute as 0 (false) or 1(true). The issues related to this attribute are:
  • Some toolkits have allowed the values "false" and "true". Latest SOAP versions may also be requiring implementations to support these.
  • Some SOAP runtimes do not support this attribute and rather offer work-arounds.
b) Out-of-sync SOAPAction headers. SOAP defines a "SOAPAction" request header. When bound to HTTP, SOAP mandates using this header, i.e., an HTTP client must issue this header field when issuing a SOAP HTTP request. According to http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528, this can be used to indicate the intent of the SOAP HTTP request. Legal values of this header's value are:
  • null or no value, meaning there is no indication of the intent of the message, e.g., SOAPAction:
  • Empty value, meaning the intent of the message is provided by the HTTP request URI, e.g., SOAPAction:""
  • An arbitrary URI, such as SOAPAction: "http://mydomain.com/whatever" or SOAPAction: "whatever.sdl". Implementations have also allowed unquoted URIs such as SOAPAction:http://mydomain/whatever.
The original intent of this header was to give hints about the content of the message to devices at lower levels (e.g., proxies, HTTP intermediaries, firewalls for filtering), without requiring the recipient to parse the XML. This allows implementations to identify, route or dispatch requests without having to parse the input request.

Some implementations also use it for application-level dispatch (e.g., routing the message to appropriate code).

Issues related to this header are:
  • Use of SOAPAction for transports other than HTTP, is not specified by SOAP 1.1., although some SOAP implementations do provide equivalent functionality for other transport protocols, leading to interoperability issues, since not all implementations implement or implement the same way.
  • SOAP implementations may interpret the "intent of the SOAP message" in different ways. This could be interpreted as the intended target for the message, the name of the target service, application level dispatch, and so forth. Therefore, a unless prior negotiation occurs between the sender and the receiver, full interoperability between implementations is hard to achieve.
  • Some SOAP implementations require that the values be quoted. However, some implementations do not quote their SOAPAction HTTP header values; this causes problems with implementations that assume SOAPAction values.
  • Also, if a receiver requires null-value SOAPAction, some HTTP client APIs have difficulty setting a null HTTP header value.
  • Some implementations are unable to parse the the Unicode byte order mark sent by other implementations.
  • Some SOAP implementations such as Apache SOAP do not support dispatching using the SOAPAction header. Instead they route based on the namespace URI of the first child element contained in the SOAP:Body element.
c) Identifying SOAP fault: Some implementations use only the HTTP status code to determine the presence of SOAP Fault. However, there are cases where the web infrastructure changes the HTTP status code.

d) WSDL Style and encoding. The WSDL "style" refers to the way WSDL describes the content of a SOAP message. It has two legal values - Document and RPC.

WSDL also has a "use" attribute (encoded/literal) that controls how web services messages are serialized (formatted according to a standard format).
  • SOAP 1.1 defines a SOAP encoding scheme (also refererred to as Section 5 encoding) that uses a set a rules based on the XML schema data types to encode programming language data types to XML and vice versa. However, the message doesn't conform to a particular schema. SOAP encoding is particularly useful while passing cyclic object graphs. For e.g., of one has an object graph that references a particular element many times, one would specify the element once and reference it at other places (similar to how one would do in a programming language such as Java). In literal encoding, on the other hand, one would have to repeat the element each time it is referenced. However, on the flip side, one cannot validate the message with an XML schema or transform it with XSLT.
  • SOAP also supports literal encoding, which means the application data such as objects, primitive types and methods are serialied to XML according to a particular schema, and therefore one can validate the message with an XML schema or transorm it using XSLT.
Key interoperability issues related to the value of the styles (RPC/Document) and uses (encoded/literal) attributes in WSDL are:
  • SOAP has no default encoding. Also, encoding can be defined through the encodingStyle attribute that identifies serialization rules. Some SOAP implementations default to SOAP encoding, while others default to using literal encoding. So, one side must be able to specify the encoding explicitly rather than use its default.
  • Based on the WSDL style and use attributes, these are these possible combinations, that implementations must agree to (or worked around) before two sides can interoperate: RPC/Encoded, RPC/Literal, Document/Encoded (almost never used) and Document/Literal (and Document/Literal Wrapped).
e) Mismatch using the "actor" attribute. A SOAP message sometimes passes through one or more intermediaries (such as a SOAP proxy service) before being processed. Therefore, SOAP headers may contain information intended solely for an intermediary, as well as that for the ultimate destination. If an "actor" attribute doesn't appear on the header element, it is assumed to be intended for the ultimate destination. SOAP requires that a header element intended for an intermediary is not passed on to the next SOAP processor in the path.

An actor is of the type anyURI and can have multiple URI identifiers. The ultimate destination can be designated either explicitly (targeting the ultimate destination using a URI identifier) or by the absence of the actor attribute, as described in the last paragraph. This leads to confusion and interoperability issues among different SOAP implementations.

Also, certain SOAP implementations put additional constraints on SOAP headers containing "actor" attributes. For example, .NET WSE2.0 server looks for the WS-Addressing header when the actor attribute is configured on the client, while the clients may not be requiring that, since its not required by SOAP specification.

For additional interoperability issues refer to http://www.xmethods.net/soapbuilders/interop.html.

Monday, February 08, 2010

Get started with Google App Engine

Google App Engine allows you to deploy apps in Google's production infrastructure (for free upto a limit and then using pay-as-you-go model). Key advantages include:
  • You don't need to worry about handling scaling (delivery on a global scale and low latency), so you can concentrate on app's features and innovations
  • OpenSocial, Android devices, Facebook, etc. opens up your app to 100s of millions of target users
  • Typical to Google solutions, costs are low and fair
Get started with App Engine with Rick Hightower's three-part article series:
Google App Engine for Java: Part 1: Rev it up!
Google App Engine for Java: Part 2: Building the killer app
Google App Engine for Java: Part 3: Persistence and relationships
Ofcourse, you could also start here: http://code.google.com/appengine/