by Vinaychandra A V S, Wipro Technologies Girish Dandin, Wipro Technologies Bangalore, India Abstract :
IP protocol suite market is competitive both in terms of cost and delivery. It is prone to the vagaries of the highly volatile telecom market and rapidly evolving technology standards. Increasingly, protocol stack development is subjected to constant requirements changes arising from evolving technical standards, changing customer needs and diverse deployment scenarios coupled with resource constraints. Rapid protocol stack development framework - a multi-pronged approach presented in this paper, comprising of reusable components, processes and tools, effectively addresses these challenges.
Rapid protocol stack development framework can greatly reduce time to market for protocol stacks development by helping development teams concentrate on core protocol issues early in the development process. The proposed process gives enormous flexibility to the team in terms of prioritizing requirements and having a phased delivery schedule. A development team judiciously following the proposed approach can effectively deliver high quality protocol stacks faster. INTRODUCTION
IP Protocol stacks market is highly competitive, cost and schedule sensitive and is highly vulnerable to the highly volatile telecom market and rapidly evolving technology standards.
Consequently Protocol stack development is subject to requirements changes and resource constraints due to evolving technical standards, changing customer needs and deployment scenarios. In addition the quality expectations have gone up with increased security and reliability needs. This requires a highly flexible and “always available” development processes that can minimize cost of change in business plans and software design.
A holistic Rapid development framework encompassing re-usable components, tools and recommended processes is proposed to address these issues. This framework, as depicted in Figure 1 is a result of authors’ experiences, observations and lessons learnt during communications software development for Telecom market at Broadband- Center of Excellence (CoE) at Wipro Technologies. Figure 1: Motivation and constituents of the proposed framework Overview
The section on “Inside a protocol stack” discusses the most common functionalities of control plane protocols. The section on “Rapid protocol stack development Components” describes the various libraries and re-usable modules available or in development for each of the common functions. The integration of individual components to yield a functional protocol stack is discussed in the section titled “Integrated skeletal framework”. The section on “Rapid protocol development Process” describes a model which is a hybrid of Iterative development model and V process model. The section on “Rapid development Tools” describes the various tools available to speed up the development processes with increased quality. INSIDE A PROTOCOL STACK
By definition protocol stacks are message processing software components. Basic functionality of a protocol stack can be viewed as a black box wherein:
- a message in a predefined format enters a node
- the stack processes the message as per rules pre-defined by standard bodies
- the node updates it’s own state and
- Possibly generates and sends a new message as per pre-defined format.
Figure 2 depicts a typical protocol stack block diagram. Protocol stacks have the following interfaces:
RAPID PROTOCOL DEVELOPMENT COMPONENTS
- Programmable APIs, CLI, SNMP and configuration file for configuring the stack.
- Physical interface on the host for capturing relevant network messages.
- Platform/OS APIs for memory management, signals, Inter-process communication and other system facilities.
As can be seen in Figure 2, there are common functionalities shared across protocols. Reusable components are proposed for each of the identified functions to support portability and reduce defects. Design criteria for the development of these components were
a) Portability (Segregation of Platform independent and dependent code),
b) Generic interface and
c) simple intuitive design.
Figure 2: Typical Protocol stack Functional Block diagram
Reusable components for some of the commonly occurring functionalities of protocol stacks are listed in Table 1 below. Some additional reusable components are described below: Interface Management library
This reusable library maintains the list of interfaces enabled on the target platform and manages these interfaces. It also maintains additional information for the other modules of the stack so as to avoid costly OS calls.
Table 1: Common functionality and corresponding re-usable Components Message Capture
|Sr No || Functionality || Components |
|1 || Message encode- decode || MSg2Cdata: A tool which parses Message format in XML format and generates code for Message translation across host to network formats and visa versa. |
|2 || CLI || WIPCLI: Wipro’s CLI generator tool to develop and manage CLI code. |
|3 || Configuration || A reusable code base for reading configuration file and writing stack state for persistence storage. |
|4 || Memory management || Memory Manager: A reusable library for handling all the memory requirements of the application. Provides detailed runtime usage and debug statistics which is useful for managing application foot-print and debugging at high loads. |
Messages relevant to a protocol are captured through sockets. The message handler library developed to facilitate this functionality provides as an abstraction to the OS for any type of the socket like net link sockets, TCP and UDP. The advantage of such a portable library is that the protocol can be independent of the operating system idiosyncrasies of socket interfaces. Multi threading library
Multi-threading architectures are fairly common in protocol stacks for processing multiple messages. Multi-threading introduces additional complexity through the need for thread management and inter-process process communication. A reusable library which provides thread management and inter-thread communication functionality with OS independent interfaces is proposed. This library can also enhance the scalability and configurability of the resultant protocol stacks through the capability to configure number of threads to be used in the application. Timer library
In most of the protocol stacks, timer functionality is needed for periodic or onetime callback for state updates or keeping the sessions live etc. The Timer library provides coarse grained piggybacked sub-millisecond timers for efficient utilization of CPU resources at high load levels.
This reusable library has multiple storage and search implementations like AVL Tree, Hash Tables, BTrees, etc which can be chosen to match the performance characteristics for target application. The interface to these varied implementation is standardized which enhances maintainability of the code. Integrated skeletal framework
A bare-bones implementation of a protocol stack with the reusable components and sample glue code is depicted in Figure 3. A new development effort has to include only the glue code and the core processing modules as described in the figure in lighter colored boxes. With the help of the framework, the development team can concentrates only on the core protocol processing functionality saving time and reducing the development effort.
Figure 3: Ready to use framework using Components
Rapid IP development process
Due to the various factors outlined in the beginning of this paper, protocol development processes have to be robust to handle the following demands:
- Flexibility in terms of requirements change due to changing market needs and evolving organizational plans.
- Short lead time and 100% availability of demo-able software with latest features for marketing and sales efforts.
- High project engineer churn rates due to organizational business compulsions.
- Evolutionary nature of complex technology standards. Due to high level of complexity the development process should preferably adopt iterative development models.
To handle these seemingly conflicting needs, a tailored hybrid of Iterative and V process as depicted in Table 2 below, is recommended.
The first Stage is the initial iteration in the development of the stack wherein the roadmap and the master RS is laid out. These documents along with the test plan are constantly updated in the further iterations (Nth stage) with the increments introduced those stages. The testing is cumulative wherein stage N testing would include a running the regression tests for the previous N-1 stages. Typically Stage I can be scheduled for 3 months and subsequent phases lasting 1 month to 2 months depending on the quantum of additional features incorporated in that stage.
Table 2: Proposed Rapid protocol stack development Process
One major source of savings in terms of time is in directly using the integrated skeletal framework as described in the previous section. The general strategy used is to delay decisions on core protocol issues to the end of the stage by which time there is considerable knowledge in the team to handle those issues. For example: message encode-decode module in a protocol stack can be designed implemented and tested before any other custom processing module is designed. This has the advantage of securing a bug free platform for enhancements in further stages. Benefits of the process:
Tools and techniques
- The recommended model introduces discipline in taking up additional requirements or for going in for complex implementations early in the development cycles. The time crashing approach to requirements and design helps in achieving the required functionality with the earmarked schedule.
- Reduced lead time for demos and software release. The need for always available software is great in protocol development. This process ensures that the next release is never more than a month or so away at any point of time.
- Bug free platform for subsequent stages.
- High utilization rates and conducive for developing domain and operational expertise. Most protocol stack development efforts are small. Traditional waterfall approaches to development result in under-utilized teams spreading themselves thin in variety of activities. But the proposed process, with high concentration of work of similar nature, is more conductive to developing functional expertise in a small team.
- Due to short development cycles people can be assigned to activities for shorter time. With proper knowledge management and transition management practices, the team can withstand large and frequent churns in team profile. This is desirable to create a robust support team for servicing customers’ requests for support after the software sale and deployment.
It is a well-known fact that usage of tools has two fold benefits, in terms of reducing the cycle time and reducing defect injections the development cycle. Table 3 lists some tools used in different phases of the protocol stack development. The tools to be used can be are communicated to the team in advance during planning stage and the benefits documented. This helps in choosing the appropriate tool for the specific requirement at hand. The protocol development team can also maintain a detailed catalogue of tools with step and step instructions and example scenarios for tool usage.
Table 3: Tools used in various phases of protocol stack development Summary
This paper presents a collection of re-usable components, customizable libraries, tools for various phases of protocol development and testing along with a rapid development iterative process. This framework can greatly reduce time to market of protocol stacks by helping development teams to concentrate on core protocol issues early in the development process. The proposed process gives enormous flexibility to the team in terms of prioritizing requirements and having a phased delivery schedule. A development team judiciously following the proposed approach can effectively deliver high quality protocol stacks faster. About the Authors:
Vinaychandra AVS is a Product Manager Telecom solutions at Wipro Technologies. Vinay holds a Bachelors degree in computer science from the University of Bombay, Mumbai and is currently pursuing MBA from Indian Institute of Management, Bangalore.
His interest areas include design methodologies for reuse, software development processes and VPN technologies.
Girish Dandin is a Project Manager at Wipro Technologies. Girish holds a Bachelors degree in Electronics and communication engineering from the Karnataka University, Dharwad. His main interest areas are software process improvement using tools and techniques.