ABSTRACT Recent developments in data communications have been dominated by advances in high-speed networking and distributed multimedia applications. It is well known that the communications bottleneck in modern high-speed networks is located in the endsystem. Multimedia applications have increased the set of requirements in terms of throughput, delay, delay jitter and synchronization. These needs may not all be directly met by the networks. End-to-end protocols may be necessary to provide the quality of service (QoS) required by the applications. Fixed end-system protocols are not able to support the wide range of different application requirements on top of current networks without including unnecessary functionality. The aim of this work is to provide a framework for dynamic configuration of end-system protocols. The framework is implemented along with a module pool, which consists of set of modules(protocols) providing different services. These modules enrich the services of the transport infrastructure to fulfill the needs of the distributed applications. New application requirements can be supported simply by integrating new appropriate modules and configuring a suitable protocol. An appropriate connection management protocol facilitates dynamic reconfiguration of protocols. The evaluation of our proposal shows that by configuring appropriate protocols increases protocol performance and decreases protocol complexity. TABLE OF CONTENTS LIST OF FIGURES .................................................................................................. III ACKNOWLEDGEMENT: ...................................................................................... IV 1 INTRODUCTION.................................................................................................... 1 1.1 THESIS ................................................................................................................. 2 1.2 STRUCTURE OF THESIS ...................................................................................... 3 2 LITERATURE REVIEW ....................................................................................... 4 2.1 CONFIGURABLE PROTOCOL SYSTEMS ............................................................... 4 2.2 RELATED WORK .................................................................................................. 5 2.2.1 x-kernel ......................................................................................................... 5 2.2.2 Da Ca Po ....................................................................................................... 6 2.2.3 Tau Framework ........................................................................................... 7 2.3 SUMMARY .......................................................................................................... 10 3 PROBLEM STATEMENT .................................................................................. 11 4 IMPLEMENTATION ........................................................................................... 15 4.1 ENVIRONMENT .................................................................................................. 15 4.2 DETAILS OF THE FRAMEWORK ......................................................................... 16 4.2.1 Outline ........................................................................................................ 16 4.2.2 Framework static components ................................................................. 17 4.2.3 Framework Architecture .......................................................................... 19 i 4.2.4 Configuration Protocol ............................................................................ 21 4.2.5 Send Thread .............................................................................................. 22 4.2.6 Receive Thread .......................................................................................... 22 4.2.7 Transport Protocol .................................................................................... 23 4.2.8 System Interface ........................................................................................ 24 4.2.9 Timer Management ................................................................................... 24 4.3 RUN-TIME ENVIRONMENT ................................................................................ 25 4.3.1 Message Forwarding ................................................................................. 25 4.3.2 Synchronization ......................................................................................... 26 4.4 PERFORMANCE TESTING .................................................................................. 26 5 CONCLUSION ...................................................................................................... 30 5.1 SUMMARY .......................................................................................................... 30 5.2 FUTURE WORK ................................................................................................... 30 REFERENCES .......................................................................................................... 31 ii LIST OF FIGURES Fig 1 The Da Ca Po 3 layer model............................................................................7 Fig 2 Architecture of τ...............................................................................................8 Fig 3 Generic Framework Interface........................................................................11 Fig 4 Static Components of Framework.................................................................17 Fig 5 Framework Architecture................................................................................19 Fig 6 Control Message Sequence.............................................................................20 Fig 7 Data Message Sequence..................................................................................20 Fig 8 Message Forwarding.......................................................................................25 iii ACKNOWLEDGEMENT: I would like to express my sincere gratitude to Dr. Singh for his constant guidance and encouragement throughout the project. I would like to thank Dr. Dan Andresen and Dr. Mitch Neilsen for serving on my supervisory committee. I would also like to thank Dr. Virg Wallentine and the entire department staff for their constant support throughout my masters program. Last but not the least, I would like to thank all the members of my family and my friends, for their moral support and encouragement. iv Chapter 1 INTRODUCTION Today’s high-speed network offer much more bandwidth then traditional networks. This is possible due to usage of various technologies viz optical switching,fast packet switching etc. This abundance of bandwidth has led to the development of new distributed applications involving multimedia. Most of the highspeed networks offer end-to-end connectivity which do not meet the requirements of the distributed applications. There is a need for additional various functionality to enrich the services offered by network. Most current end-to-end protocols offering such functionality result in a performance bottleneck in high-speed communications, due to the insufficient processing power of end-systems and missing configurable options in the end-system protocols. It is becoming difficult for the current protocols architectures to keep up with the evolving applications. As its very difficult to predict what the next generation applications will demand from the network, we need a flexible and extendable end-to-end system. We propose a new flexible mechanism of configuring functionalities without layering. Protocol configuring is a mechanism wherein an application is able to select the necessary functionalities to fulfill its requirements. 1 1.1 Thesis The goal of this research is to develop an end-to-end protocol system which supports wide range of application requirements. This is achieved using dynamic composition of various protocol functions such as error detection, encryption, connection management etc. This compositional mechanism of protocol configuration is particularly useful for applications for which performance is important. Our work is focussed on showing the importance of being able to dynamically configure protocols during the run-time. We develop a framework which allows for dynamic configuration of a protocol stack using a modulepool. We also demonstrate that actual applications can benefit from dynamic protocol configurations beyond what is available from the current state of the art. 2 1.2 Structure Of Thesis The thesis is divided into following main chapters, Chapter 2: Discussion of related work on the static and dynamic configuration of protocols. Chapter 3: A description of an example application using our framework. Chapter 4: Detailed description of the implementation. Chapter 5: A summary of thesis and suggestions for future work. 3 CHAPTER 2 LITERATURE REVIEW Distributed multimedia applications are straining the resources of today’s networks. The ability to better adapt to available resources may provide applications to continue working well in situations where non-adaptable applications would fail. Current technology provides applications with very limited communication control over the communication protocols. Applications are given the choice of specific protocol stacks and must work around the fact that they cannot easily change communication parameters. This leaves the burden of maintaining flexible communication to the application. Configurable protocol systems solve this problem by supplying applications with a simple model for communication. The configurable protocol systems manage the communication resources in an independent, modular manner that is easily accessible by any application. 2.1 Configurable Protocol Systems A commonly used abstraction for the protocol processing associated with communication channel is the protocol stack. A protocol stack defines the modules used for processing messages and in what order they are executed. Configurable protocol systems provide applications with the ability to choose communication functionality from a set of available protocol modules. These protocol modules can be combined in any correct manner into a protocol stack that can provide the applications with the appropriate service. Such systems can be classified into two groups on the basis of when the configuration is performed. 4 Connection Time Configuration: The first level of configurability allows the application to configure its communication at connection time. Connection time configuration allows the application to have different communication channels with different service requirements, by providing multiple protocol stacks. The limitation here is that once a communication channel has been configured, it cannot be changed during its lifetime. Connection-time configuration also limits a channel to handling one type of data correct, since one type of service must be chosen for the lifetime of the communication. Dynamic Configuration: The second level provides applications with the ability to dynamically configure communication channels at run time. Dynamic configuration solves the problem of handling multiple data types over one single channel as well as the problem of changing service requirements over time. Some examples of connection time configuration and dynamic configuration are discussed in the next section. 2.2 Related work 2.2.1 x-kernel The x kernel is a configurable operating system kernel. Communication protocols such as ARP,IP,UDP,TCP represent the building blocks of the configuration. Besides the explicit architecture for constructing and composing protocols, the x-kernel consists of fixed memory and process management 5 components. The x-kernel supports three fundamental communication objects: Static and passive protocol objects, Passive but dynamically created session objects, and Active messages whose data part corresponds to conventional messages. All protocols objects and their relationships are defined at configuration time of and represent the protocol supported by the configured kernel. The x-kernel provides light-weight processes. When a message is generated by a user process, a packet is dispatched to a “shepherd”. The shepherd then guides the message through a series of protocols and sessions. Messages flow forward and backward direction via their push and pop operations respectively. In the x-kernel, protocols are divided into modules. And these modules are connected in a protocol graph. Connections can choose a protocol path for their communication. x-kernel can be basically cited as an example for connection-time configuration. It provides some of the functionality that we are looking for, like the protocol stack determination. 2.2.2 Da Ca Po Da Ca Po provides an environment for the dynamic configuration of protocols. Configuration is done with respect to application requirements, properties of the offered network services and the available resources in the end systems. The goal of the configuration is to reduce the protocol complexity and increase the performance. Da Ca Po is based on a three-layer model (fig 1), which splits the communications systems into the layers Application (A), Connection (C), and Transport (T). In layer C, the end-to-end communication support adds functionality to the T services in such 6 a manner that at the AC interface, a full set of services is provided as needed to support distributed applications (A). The C layer is decomposed into a set of protocol functions according to their functionlity. A Application C Connection T Transport AC-Interface C Layer- End System CT-Interface Transport Layer Fig 1: The Da Ca Po 3 layer model The runtime environment of Da Ca Po links modules to protocols in one UNIX process and realizes an efficient data transport inside the end system because operations reducing performance like data copying or UNIX context switches are minimized in Da Ca Po. 2.2.3 Tau Framework This section discusses the design and features of τ framework. Design Overview of τ 7 The primary design objective of τ is to provide two mechanisms (protocol function composition and multiplexing) in a manner that supports various performance – enhancing techniques while preserving modularity in some form. The idea is that these mechanisms should work with an extensible set of policies, in order to support a wide variety of applications, including the applications whose requirements are not yet fully understood. The τ framework (fig2) comprises of three parts: 1. A generic model of protocol processing, in which the protocol functions are separated from the details of the “glue” that binds them together. 2. A metaheader protocol, which provides the basic mechanism for implementing the primary functions of τ, namely multiplexing and non-layered flexible protocol function composition. 3. A set of modular protocol functions, structured according to the generic model. A Generic Model of Protocol Processing: Per-endPoint State Information User Request Integrated Protocol Configurations Demux/ Dispatch τ metaheader Protocol Function Modules Incoming Messages Fig 2: Architecture of τ 8 Because protocol functions are not layered in τ, they do not attach their headers directly to outgoing data units, nor extract them from incoming data units; instead this is handled by the τ infrastructure. The generic protocol model defines the interface between the τ infrastructure and each protocol function. From the logical block diagram of τ implementation , we can see that each protocol function is viewed as a transducer, which is given inputs and produces outputs. The architectural “glue” is provided by the τ demux-and-dispatch function. Its selects and coordinates the between the protocol functions providing them with inputs based on external events and passing on to the external environment their outputs. The interface is defined in terms of a set of entry points corresponding their outputs. The interface is defined in terms of a set of entry points corresponding to various external stimuli: incoming data unit, user request, timer expiry, etc . This allows the protocol function to base its behavior on the specific situation indicated by the entry point, without having to first decide what the situation is. Metaheader Protocol: The τ metaheader protocol implements the multiplexing and composition mechanisms. As such , it contains two kinds of information. Information that the receiving τ can use to efficently retrieve the relevent state information for the incoming data unit. Information indicating which set of protocol functions need to be applied to the incoming data unit. 9 2.3 Summary In general, all previously presented approaches provide some degree of flexibility. Furthermore, they all realize modular protocol implementation in order to enable flexibility and software reuse. All approaches are placed on top of network interfaces and are concerned with protocols in between the network interface and the application. They all decompose protocols into building blocks, and all of them except x-kernel perform dynamic configuration. 10 CHAPTER 3 PROBLEM STATEMENT Traditional distributed applications, such as the file transfer protocol (FTP) and Telnet exchange mostly textual information. In contrast, modern distributed multimedia applications combine several information types, including audio,compressed and uncompressed video, still images and numerical and textual information. The following example demonstates the combination of data types in a medical imaging and consultation application and the application’s communication service requirements. This application demonstrate a typical use of this framework (fig 3). Protocol Stacks Sound Image Text Generic Interface Network Interface Fig 3: Generic Framework Interface 11 The medical imaging and consultation application handles and exchanges the following data types: audio, video, still images, telepointers and text (patient records). Each type of data has different QOS requirements. To transmit video, still images, and documents, we need high throughput because of the data volume. While conference participants may tolerate a certain loss in audio and video data, patients records must be transmitted error free. Furthermore, the decision whether to compress still images with a particular compression technique depends on the particular user. The dynamic part of this application is that it has the ability to request different protocol stacks on a message by message basis. For example, the application may start out sending text unencrypted, but at some point during the run decide to increase security. The application simply informs the framework to make use of a new configuration for text with some type of security protocol. The application has the knowledge of what type of service it requires and the framework provides the functionality to provide that service. However, the use of traditional architectures (layered protocol architectures) with such an application may result in problems such as redundancy and inflexibility, which are discussed below. Redundancy The layering principle leads to redundant placement of protocol functions into protocols of several layers. One example in the OSI model includes error control. The data link layer is responsible for performing error control on data exchanged between neighboring systems, while the transport layer performs end-to-end error control. Studies in the context of high-speed networks with low error rates have shown that 12 end-to-end error control in more efficient than link-by-link error control. In other words, error control should be performed only within the end-systems. Inflexibility Traditional protocols cannot be tailored to meet the needs of the application on top of networks. Consequently, most protocols include a certain amount of overhead for multiple combinations of the cross product networks – application requirements. The reduction of protocols to the minimum needed functionality is one step towards a solution of the “slow-software fast transmission” problem. For example, in an environment with low error probability and applications tolerating some amount of unreliability, the protocol does not need to perform error control. Excluding protocol functions like error control, retransmission, acknowledgement and perhaps resequencing reduces the number of processing steps to handle a packet, and thus increase protocol performance. Thus the applied protocol mechanisms should be selected according to the application requirements. For instance, strong application requirements for low delay jitter could be reflected in a protocol applying a forward error control mechanism instead of selective retransmission or go-back-n mechanism. Flexible environments should also support easy integration of new protocol mechanisms. However, the integration of new protocol mechanism in traditional protocol architectures demands the specification and implementation of new protocols, which is a long and troublesome procedure resulting in standardization and implementation overhead. The discussion of extending network services to meet the needs of distributed applications using traditional protocols (e.g OSI Model) leads to the conclusion that 13 new flexible approaches are needed to fulfill the broad range of current and future application requirements. Our framework is focussed on showing the importance of flexibility by being able to dynamically configure protocols during the life time of the communication. Also, we may want to be able to turn protocols on and off during communication. Our experimental evidence demonstrate that actual applications can benefit from dynamic protocol configurations beyond what is available from the current state of the art. 14 CHAPTER 4 IMPLEMENTATION 4.1 Environment Java is chosen as the language for implementation due to the following reasons, Simple : Java inherits the C/C++ syntax and many of the object-oriented features of C++. Also some of the confusing concepts from C++ are either left out of Java or implement in a cleaner, more approachable manner. This makes it easy to use. Dynamic : Java programs carry with them substantial amounts of run-time type information that is used to verify and resolve accesses to objects at run time. This makes it possible to dynamically link code in a safe and expedient manner. Object oriented: Java has very clean, usable, pragmatic approach to objects. Also object model in Java is simple and easy to extend. Multithreaded support: Java supports multithreaded programming which allows us to write programs that do many things simultaneously. The Java run-time system comes with an elegant yet sophisticated solution for multiprocess synchronization that enables us to construct smoothly running interactive systems. Portability : Java’s goal of “write once; run anywhere , any time forever” makes it easy for program portability. Distributed : Java has an extensive library of routines for easily coping with TCP/IP and UDP/IP. The underlying network architecture used is 10Mb/sec Ethernet local area network consisting of Sun workstations running Solaris 2.6. 15 4.2 Details of the Framework Different design and implementations paradigms used in the framework are explained in this section 4.2.1 Outline The primary objective of this framework is to allow applications the flexibility they may need based on their QOS requirements. The result of this flexibility includes allowing the ability to change communication configurations on the fly, Configuration Protocol – Takes care of dynamic connection management. SendThread – processes the messages which are meant to be sent to other ConnectionManager. ReceiveThread – processes the received messages and takes appropriate actions. Transport Protocol – uses UDP/IP to send/receive messages to/from the network. Module Pool – Stack of different protocol functions. The architecture of framework is divided in three main layers. The topmost layer is an Application layer and the bottommost layer is the transport layer(UDP/IP). The actual processing of information is done in the middle layer which constitutes different threads performing different activities depending the different datatypes. Also the modulePool resides in the middle layer. 16 4.2.2 Framework static components The static entities used in the frameworks is as shown in the diagram below. The TopMessageQ, ApplicationQ(s), clientserverSendQ and clientserverRecvQ are the instances of MessageListQueue. The State information is stored in various hashtables which are declared in the class StateInfo. The modulepool comprises of four objects viz checksum, encryption, retrans and multicastretrans. TopMessageQ ApplicationQ(s) ModulePool Checksum Encryption SystemTables Retrans MulticastRetrans ClientServerRecvQ ClientServerSendQ Fig 4 Static components of FrameWork Systemtables: These are the Hashtables necessary to store information for each configuration. They include AppIdToDestination table, AppIdToConfigID table, 17 ConfigIdToAppId table and SystemInformation table. The systeminformation table maps the configId to the modules which are selected for that configuration. TopMessageQ: This queue holds the messages sent either by the application or configuration protocol. These messages are picked by the Send Thread for further processing. ApplicationQ(s): These queues store the data messages which are picked up by the applications. ClientServerSendQ: This queue holds the messages which are sent by the Send Thread and later picked up by the UDPThread. ClientServerRecvQ: This queue holds the messages received from the network by the UDPListenThread. ModulePool: It’s the protocol stacks which comprises of checksum, encryption, retransmission and multicastretransmission. It can simply be enhanced by including any new protocol function. Checksum: This module performs the function of parity checking [4]. Encryption: This module encrypts the data to provide security[4]. Retrans: This module provides the reliability for unicast transmissions. It uses the selective retransmission mechanism to provide reliability. MulticastRetrans: This module provides the reliability for multicast transmissions. 18 4.2.3 Framework Architecture Application SendThread ReceiveThread Transport Protocol Data Message Fig 5 Framework Architecture Control Message 19 Use Case 1: ctrl message Application SystemInterface.register() ConfigProtocol.doProcessing() TopMessageQ SendThread Transport Protocol ClientServerSendQ Fig 6 Control Message Sequence Use Case 1: ctrl message Application SystemInterface.send() TopMessageQ SendThread Transport protocol ClientServerSendQ Fig 7 Data Message Sequence 20 4.2.4 Configuration Protocol The configuration protocol processes new configuration requests. The doProcessing function of this class does the function of assigning configuration identities to the new requests. The Configuration protocol puts the request messages in the TopMessage queue which is then taken by the SendThread. Each configuration is done per message type(data type) per application. A unique identifier is assigned to each configuration to distinguish the configurations used by different applications having the same data types. The steps followed by the configuration protocol when the application requests a new configuration are shown below: 1. Application requests a new configuration by providing its AppId and the DataType for which the configuration is desired. This is done by selecting the desired modules from the modulepool. 2. The configuration protocol then forms a unique identifier called the configId for the requested configuration. 3. It then forms a control message with type “ctrl” and appends it to the AppId, ConfigId, Data Type and the Modules needed and sends it to the SendThread. SendThread then negotiates with the peer connection Managers on establishing new configuration. 21 4.2.5 Send Thread The SendThread is the thread which process all sorts of messages which are meant to be passed to the other connectionmanager. It waits for the messages from the topmessage queue. As soon as the message arrives it first check for the messagetype. If the message is found to be control then it saves the state of that control messages in appropriate hashtables and sends it to the clientserverSendQ. If the message is data then it is passed through different modules according to the configuration of the message. If the message is timeout then it sends the nack message for the appropriate messageList. 4.2.6 Receive Thread It processes the received messages and takes an action according to the messagetype. If the message is of type data it passes is through different modules using from its configid. If the message is of type control then it changes the system tables. If message is of type control acknowledgement then it updates its system tables to make sure that the new configuration request was accepted. Similarly it appropriately processes other messages like ‘nack’ and ‘end’. 22 4.2.7 Transport Protocol It uses UDP/IP suite as an underlying transport machanism. It uses datagramsocket for message communications. The data sending operation is performed by UDPThread and data receiving operation is performed by UDPListenThread. The steps in the UDPThread is explained as follows, The UDPThread starts by opening a UDP socket connection. It contains the mapping of server name and port number to alphabet in the form of address Table. This address table is established at the start of connection manager which copies the content of system file. When it receives a message from the clientserverSendQ, it removes the destination name from the message, packs the message into a string and sends it to the peer whose address is obtained from the address table. The steps in the UDPListenThread is explained as follows, The UDPListen Thread is initiated by the UDPThread. When the UDPListen Thread receives a message from the network, it unpacks the message and sends the message to the clientserverRecvQ from where the Receive Thread picks that message. 23 4.2.8 System Interface The framework interfaces with the applications using the SystemInterface class. The necessary functions to for this are Register(): Registers an channel with a give set of properties. SendMessage(): Used to send data message to other connection manager(s). ReceiveMessage(): Used to receive the message for a particular channel. The channel name had to be provided as parameter. Join(): Used as non-blocking join by an application. JoinBlock(): Used as blocking join by an application. The application can use this interface to make sure that a channel was not formed before it registers one. 4.2.9 Timer Management The framework is responsible for the timer management. It starts a timer thread for the control messages and Generic timer thread for all other messages. When an event in the timer queue times out, the generic timer thread picks that up and puts in the internal message queue which is then processed by internal message thread. The timer thread takes care of the control message time out events. 24 4.3 Run-Time Environment The runtime environment is provided by the sendThread and receiveThread. 4.3.1 Message Forwarding SendThread Application 1 2 3 4 Transport protocol ReceiveThread Fig 8 Message Forwarding The send Thread receives the data message to be send and passes it through different modules. As the message is passed from each modules returns with its call whether to forward the message or not. Each module is provided the information of where its header position is, when the reconfiguration is done. So the modules can attach or remove headers to the message. Therefore the messages reach the transport layer using the Send Thread. The receive Thread does the reverse of Send Thread. It picks the messages from the transport layer and passes the messages through each of the modules as defined in its configuration. Each modules returns a boolean variable which determines whether to drop the message or to pass it on to the next module. 25 4.3.2 Synchronization As the multiple threads access the queues and also different system tables we have used the Java synchronized method to ensure that only one thread is having access to the resource at a time. Also object notification technique of Java was used for achieving blocking. 4.4 Performance Testing We carried out performance testing on a 10Mbps LAN on different Sun Servers running Solaris 2.5/2.6. For the unicast channels we tested using different modules and the results were displayed in the following table. The test file is of different sizes were used for testing. Time was recorded when the first transmission is made. Time was also recorded at the received end after the receipt of last transmissions. The difference between two recorded time was taken as the total transmission time from end to end. Modules Used For 5 KB File Time Taken No Framework 387 mSec No Module 946 mSec Checksum 1145 mSec Checksum, Encryption 1439 mSec Checksum, Encryption, Retrans 1512 mSec 26 Module Used For 10 KB file No Framework 716 mSec No Module 1566 mSec Checksum 1922 mSec Checksum, Encryption 2174 mSec Checksum, Encryption, Retrans 2215 mSec Module Used For 20 KB file Time Taken Time Taken No Framework 1310 mSec No Module 2639 mSec Checksum 2932 mSec Checksum, Encryption 3024 mSec Checksum, Encryption, Retrans 3612 mSec For Multicast Channels, we used three different servers and carried out the test using the same set module as did for the unicast channels. As in the case of unicast channel testing we used files of different sizes. The average receipt time is subtracted from the start time of the sender to record to the total transmission time. The result is recorded in the following tables. 27 Modules Used Time Taken For 5 KB file No Framework 685 mSec No Module 1682 mSec Checksum 1744 mSec Checksum, Encryption Checksum, Encryption, Multicastretrans Modules Used For 10 KB file 1987 mSec 2117 mSec Time Taken No Framework 1035 mSec No Module 2899 mSec Checksum 3107 mSec Checksum, Encryption 3368 mSec Checksum, Encryption, Multicastretrans 3784 mSec Modules Used For 20 KB file No Framework 2160 mSec No Module 5373 mSec Checksum 5611 mSec Checksum, Encryption 5946 mSec Checksum, Encryption, Multicastretrans 7122 mSec 28 From the performance evaluation we conclude that the framework will have relatively good performance for applications sending long messages in less number. 29 CHAPTER 5 CONCLUSION 5.1 Summary Dynamic configurable protocol stack is an efficient way of end-system protocols that support wide range of application requirements. We conclude that this work will suggest future research activities. Our experience suggests that applications can simplify their design and improve their performance by dynamically configuring protocol functions. Such a general approach includes the overhead in comparison to highly specialized monolithic protocols, but the diversity of current and future multimedia application requirements and network services makes it hard to implement for every combination a special protocol. The multithreaded architecture of framework makes it possible to improve the performance on a multiprocessor system. 5.2 Future work As a future work we suggest to provide applications with feedback from the network and to provide a mechanism to evaluate the module properties. We also propose to use dynamic configuration into the transport layer. Framework can also be extended by providing simultaneous execution of different modules. 30 REFERENCES [1] Vogt M., Plagemann T., Plattner B., Walter T.: “A Run-time Environment for DaCaPo”, in Proc. Of INET’93, Int, Networking Conf. Internet Society, San Francisco, August 1993. [2] Plagemann T., Plattner B., Vogt M., Walter T., “A Model for Dynamic Configuration of Light-Weight Protocols”, in: Proc. IEEE Third Workshop on Future Trends of Distributed Computing Systems, Taipei, Taiwan, April 92. [3] Kravets R., Calvert K., Schwan K., “Dynamically Configurable Communication Protocols and Distributed Applications: Motivation and Experience”, College of Computing Technical Report GIT-CC-96-16. [4] Nandyal S., “A Framework for Protocol Composition”, a Master’s Project, Kansas State University 1998. [5] Plagemann T., “Framework for Dynamic Protocol Configuration”, Swiss Federal Institute, 1994. [6] Hutchison N. C., Peterson L. L., “The x-kernel: Architecture for implementing Network Protocols”. Department of Computer Science, University of Arizona, 1990. [7] Bach M. J, “Design of the UNIX Operating System”, Prentice-Hall Software Series, Prentice-Hall International Inc. 1986. [8] Suryanarayan S, “Connection Management Protocol”, Master’s Thesis, Kansas State University 1998. 31