A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network BTI Project Number: AC362 Project Title: BTI Deliverable Type*: P CEC Deliverable Number: A0362/BTI/WP3/DS/R/P/301/B1 Contractual Date of Delivery to the CEC: 30.12.1999 Actual Date of Delivery to the CEC: 30.12.1999 Title of Deliverable: Conclusions from Evaluation of all Applications running on the Network Work package contributing to the Deliverable: WP30 Nature of the Deliverable: R Authors: A. Azcorra (UC3M), D. Fernández, A. B. García (UPM), Z. Papir, P. Pacyna, J. Gozdecki (UKR), I. Mcay (CCIR) E. Bertelsen (UNI-C), J. Carapinha, J. Vieira (PTIn), Abstract: This deliverable contains a summary specification of the work needed to port the applications to work over IPv6 and RSVP. It also describes the development and main characteristics of the IPv6, MARS and RSVP over ATM protocol stack that has been developed for Windows NT 4.0. The intention of this deliverable is to serve as guidelines for other application developers intending to port their application to an IPv6 plus RSVP environment. Keyword List: RSVP, IPv6, ATM, multicast, QoS aware Applications, * Type: P - Public, R - Restricted, L - Limited, I - Internal **Nature: P - Prototype, R - Report, S - Specification, T - Tool, O - Other Page 1 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Executive Summary This deliverable contains a summary of the developments and experiments carried out inside WP3 during the second year of BTI project. It includes a summary specification of the work needed to port the applications to run over IPv6 and RSVP. It also describes the development and main characteristics of the IPv6, MARS and RSVP over ATM protocol stack that has been developed for Windows NT 4.0 to support the applications running over this operating system. The intention of this deliverable is to summarise the work done and to serve as guidelines for other application developers intending to port their application to an IPv6 plus RSVP environment. The deliverable is organised as follows. The first section describes the IPv6, MARS and RSVP integrated protocol stack developed by the Technical University of Madrid (UPM) under Windows NT. It describes its main characteristics, its internal organisation, some implementation details and concludes summarising the problems faced during its development. The second section describes the development and porting of the VideoServer application done by The University of Mining and Metallurgy of Krakov (UKR). It summarises the main characteristics of the application, how it was modified to include IP6, multicast and RSVP support, how the user of the application controls the QoS, and some conclusions and guidelines. The third section describes the porting of VIC and RAT applications to support IPv6 and RSVP under Windows NT operating system carried out by the Centre for Communication Interface Research (CCIR) of the University of Edinburgh. The fourth section, describes the experiments carried out by the Danish Computer Centre for Research and Education (UNI-C) using and porting MBONE applications to IPv6 and RSVP over several UNIX platforms. Finally, the fifth section describes the porting of Data Conference applications carried out by PT Inovação (PTIn, old CET) and the Technical University of Madrid (UPM). This section shows the reservation model used for Data Applications and reports about the details and problem found during the migration. Page 2 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Contents List 1. IPV6, MARS AND RSVP PROTOCOL STACK FOR WINDOWS NT 4.0 5 1.1. 5 IPv6 over ATM driver 1.2. RSVP daemon 1.2.1. Migration to Windows NT 1.2.2. Adaptation to winsock2 architecture 1.2.3. Interfaces with IPv6 stack: routing and I/O 1.2.4. Traffic Control Interface 7 7 8 8 9 1.3. 9 Conclusions 2. PORTING VIDEOSERVER APPLICATION OVER IPV6 AND RSVP 11 2.1. The Server 12 2.2. Adaptation to IPv6 13 2.3. Adaptation to RSVP 13 2.4. User control of the QoS 15 2.5. Others 15 2.6. Conclusions 16 3. PORTING VIDEOCONFERENCE APPLICATION OVER IPV6 AND RSVP IN WINDOWS NT ENVIRONMENT 17 3.1. Adaptation to IPv6 17 3.2. Adaptation to RSVP 17 3.3. Conclusions 18 4. PORTING VIDEOCONFERENCE APPLICATION OVER IPV6 AND RSVP IN UNIX ENVIRONMENT 19 4.1. The MBone applications 19 4.2. Adaptation to IPv6 4.2.1. The IPv6 environment used 4.2.2. Adaptation of the applications 19 19 20 4.3. 21 Adaptation to RSVP Page 3 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 4.4. Conclusions 21 5. PORTING DATA APPLICATION OVER IPV6 AND RSVP 23 5.1. Adaptation to IPv6 5.1.1. Server Adaptation 5.1.2. Client Adaptation 24 24 25 5.2. Adaptation to RSVP 5.2.1. Reservation Model 5.2.2. Server Adaptation 5.2.3. Client Adaptation 25 25 25 26 5.3. 26 Conclusions 6. REFERENCES 28 Page 4 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 1. IPv6, MARS and RSVP protocol stack for Windows NT 4.0 Due to the unavailability, either in the market or in the research area, of a protocol stack solution including all the functionally required for the BTI project, UPM effort in WG3 was reallocated to develop an integrated protocol stack named PATAM (IPv6 over ATm Adaptation Module with RSVP support). PATAM is a Winsock2 compatible protocol stack running on Windows NT, the operating system chosen by BTI application developers and trial organisations. PATAM includes an IPv6 stack able to run over Ethernet and ATM networks with multicast support, and an RSVP over IPv6 implementation with traffic control support over ATM interfaces. Access to all PATAM services is made through standard winsock2 programming interfaces. In particular, PATAM implements IPv6 over ATM support according to [RFC2491] ("IPv6 over NBMA networks") and [RFC 2492] ("IPv6 over ATM networks"), including IPv6 multicast support by means of MARS client functionality according to RFC2022] ("Support for Multicast over ATM networks"). It is based on a modified version of Microsoft Research's IPv6 implementation for Windows NT [MSRIPv6] (which only supports Ethernet interfaces) with the addition of a completely new IPv6 over ATM driver developed by UPM. MARS client functionality has been based on NIST's MARS implementation [MARSNIST] for LINUX operating system. PATAM includes also RSVP for IPv6 over ATM support according to IETF Internet Integrated Services model described in [RFC2205] [RFC2210], WinSock 2 API [RFC2379], [RFC2380], [RFC2381] and [RFC 2382]. It is based on the Winsock2 well-known ISI's RSVP Transport SPI implementation for UNIX operating system [RSVPD], which has been migrated to Windows NT and adapted to offer a winsock2 interface and interact with MSR's IPv6 stack. QoS aware Applications Winsock2.dll RSVP MSR IPv6 The whole stack integrates under the IPv4 Winsock2 based networking LAN Tunnels architecture of Windows NT. QoS aware applications use the standard ATM NIC Drivers API [WS2-API][WS2-Annex] to access either IPv6 or RSVP services offered by the stack. Figure 1 depicts the Figure 1: Protocol Stack Architecture general architecture of PATAM integrated stack. The next subsections describe with more detail the two main parts of the protocol stack: the IPv6 over ATM driver (PATAM) and the RSVP protocol daemon. PATAM 1.1. IPv6 over ATM driver Figure 2 shows the detailed architecture of the IPv6 over ATM driver, including its relation with other modules of the integrated stack. PATAM is a user-mode multithreaded driver that implements all the necessary functions to carry IPv6 packets over ATM networks using dynamic circuits (SVCs) and with full multicast support. The driver is made of several components: Page 5 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network MSR IPv6 Stack PATAM RSVP daemon Traffic Control Module IPv6 Access (IPAM) Packet Forwarding Flows Database MARS Client Classifier Receiver Scheduler ATM Access Module (ATAM) FORE ATM SP Figure 2: IPv6 over ATM driver Architecture Flows Database. This module manages all the information about the Best Effort (BE) and Controled Load (CL) IPv6 flows maintained by the driver. Each time a new IP flow is created, either unicast or multicast; BE or CL, a new entry in the Flows Database is created, storing all the information necessary to classify and schedule the sending of packets belonging to that flow. IPv6 Access Module (IPAM). This module manages the communications with the IPv6 stack. Each time an IPv6 packet is received through any of the ATM circuits, IPAM passes it to the IPv6 stack; and each time the IPv6 stack has a packet directed to the ATM interface, it is received by IPAM, that delivers it to the classifier and scheduler modules. One of the most important design decisions was to develop PATAM as a user-mode driver, that is, a driver running outside the kernel of the operating system. That decision was taken due to the fact that the development of a real kernelmode driver is an extremely difficult and timeconsuming task that was out of the scope of the project. Applications USER Winsock2 KERNEL In order to communicate the IPv6 stack (which is a kernel-mode device driver) with PATAM, a proxy-driver [Gallen97] was used. Figure 3 shows the detailed architecture used in IPAM module. PATAM MSR IPv6 FORE ATM SP ATM Proxy Driver The IPv6 stack was modified to include a new Figure 3: IPAM Detailed Architecture module (atm.c) that emulates an ATM interface. When the IPv6 stack sends a packet through this ATM interface, a call is made to the proxy driver, which redirects the packet out of the kernel to PATAM driver. In the same way, when an IP packet arrives to PATAM through an ATM circuit, an internal event is signalled, making the ATM module to take the packet form PATAM by means of a call through the proxy driver. Page 6 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Packet Forwarding Module. This module is in charge of sending and receiving IPv6 packets to and from ATM network. It includes all the functions needed to classify IPv6 packets according to the different flows in the database and schedule their transmission. ATM Access Module (ATAM). This module manages the ATM circuits associated with IPv6 flows. It is in charge of creating and releasing SVCs, adding or deleting leafs to multipoint circuits and, in general, reporting other modules about any event related to ATM circuits. It accesses ATM network services using the standard winsock2 API defined in [WS2-Annex] for ATM. This interface allows the creation of UBR and CBR point-to-point and multipoint circuits. By now, no support for ABR is available. PATAM has been tested with ForerunnerLE ATM cards. As it uses a standard API to access ATM services, there should be no problem using it with other ATM cards. However, during the development and testing of PATAM over different ATM networks, a lot of interoperability problems were detected and reported, some of them due to bugs or oddities in NIC drivers and some other due to incompatibilities between switches and cards. Due to these problems, the tuning of ATM parameters used in this module has required a big effort. MARS Client Module. It implements MARS Client functionality according to [RFC 2022]. All requests to send and receive to or from IPv6 multicast addresses and all the communications with the MARS server of the IP LIS are managed by this module. As mentioned, this module was developed starting from a public LINUX implementation [MARS-NIST] of a MARS client for IPv6. This implementation was modified to support IPv6 and later migrated to Windows NT and adapted to work over PATAM architecture. Traffic Control Module. It manages the communications with the RSVP daemon for the creation and release of Controlled Load flows and their correspondent CBR ATM multipoint circuits. It is described with more detailed below. 1.2. RSVP daemon The RSVP functionality developed by UPM for BTI project includes a complete RSVP engine according to current standards [RFC2205] [RFC2210]. The main features are: Standard Winsock2 API according to Winsock2 Protocol Specific annex 10. IPv6 support (no IPv4 support is provided). Support for both Ethernet and ATM interfaces. Interaction with PATAM driver to offer actual Traffic Control implementation over ATM subnetworks, supporting styles FF and SE, and IntServ's Controlled Load reservations. Host (not router) implementation. Native IPv6 encapsulation. 1.2.1. Migration to Windows NT To develop the RSVP engine (or daemon) it was decided to start from the well-known implementation of ISI (Information Sciences Institute, University of Southern California), which works on UNIX platforms. This daemon has been migrated to Windows NT (with the initial help of UNI-C) and completed in order to provide actual Traffic control support for ATM subnetworks. Figure 4 shows the module architecture used in PATAM to support RSVP functionality. The main block is the ISI's RSVP daemon, migrated from UNIX to Windows NT and adapted to work under winsock2 Page 7 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network architecture. It was also modified to interact with MSR IPv6 stack's. The main tasks carried out in the migration area were: The development of an RSVP API Library, to convert from ISI's native RAPI interface to winsock2 RSVP API. The implementation of an ATM Traffic Control Module in RSVP QoS aware Applications daemon to interact with the Traffic Winsock2 Control module of the PATAM driver. RSVP API library The modification of MSR's IPv6 stack Internal message to create a new low-level API to allow based API the sending and reception of RSVP RSVP daemon packets over native IPv6 (raw sockets (rsvpd) were not available in IPv6 stack), and to access interface and routing Adaptation module information. Traffic The migration of the core engine Control in itself, adapting it to the WindowsMSR-IPv6 ATM module specific asynchronous event notification. Figure 4: RSVP Architecture in PATAM 1.2.2. Adaptation to winsock2 architecture To offer the standard Winsock2 RSVP API to applications a standard Service Provider (SP) Library has been developed, together with the necessary installation tools which register the RSVP Service Provider as a standard Winsock2 provider. In order to communicate the SP library (dynamically linked from the application) with the RSVP daemon an internal interface must be used. It has been decided to perform this communication through a TCP/IPv4 socket, maintaining as much as possible the same protocol that the original ISI’s implementation used for the same purpose (over a UNIX socket). This reuse of the internal protocol of ISI reduces the need of modifying internal code of the RSVP daemon, and also the probability of introducing new errors into it. On the other hand, it forces some deviations respect the Winsock2 standard API, which have been properly documented. 1.2.3. Interfaces with IPv6 stack: routing and I/O An RSVP module has to access IP functionality at a lower level than a standard application. Regarding pure input/output (I/O), at least raw IPv6 access must be provided (unless UDP encapsulation is to be used, which is something probably not included in future specifications). But there is also necessary for RSVP to know what interfaces the system has, on which interface a PATH message arrives or through which set of interfaces a multicast packet should be forwarded according to the routing information used by IP. All this makes it necessary to provide RSVP with a lower level IPv6 interface than usual applications. Since standard IPv6 Winsock2 interface does not offer the low level features that RSVP needs, a more advanced internal standard interface to IPv6 has been used: TDI (Transport Driver Interface). Also, the MSR’s IPv6 stack has been modified to offer the required functionality. The TDI calls have been encapsulated to offer to the core processing the higher level interfaces it already used: I/O: A System Independent Interface to Network and Transport Layers is provided. Routing: The daemon already used a generic Routing Support Interface that also has been maintained. Page 8 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 1.2.4. Traffic Control Interface ISI introduces a Link Layer Dependent Adaptation Layer (LLDAL) between core RSVP processing and the actual TC (the latter may present, for example, the TC interface specified in RFC 2205), offering a higher level interface to TC (LLDAL interface). It also provides a LLDAL and an (almost) empty TC implementation suitable for Ethernet interfaces. In BTI the LLDAL interface has been maintained, and a new ATM-specific LLDAL (pertaining to the daemon) and TC (actually implemented within PATAM) have been developed. In the daemon side, a TC stub has been created to communicate with the TC module of PATAM (through an UDP/IPv4 socket). This TC stub offers to the ATM LLDAL the interface of the TC of PATAM, which is a simplified and adapted to ATM version of the TC interface specified in RFC 2205. This simplified interface can be summarised as follows: Daemon (actually, LLDAL) may ask the opening of a multipoint QoS circuit with one leaf (i.e. Next Hop) or the adding of a leaf to an existing circuit when new reservations must be placed. It also may ask the closing of specific leafs or circuits when tearing reservations down. PATAM may notify the closing of leafs/circuits to the daemon. Figure 5 summarises the modules involved in the TC for the two types of interfaces supported. BTI work has been focused on the remarked modules. RSVP daemon PATAM Core RSVP Processing LLDAL interface Internal TC interfaces LLDAL Eth Dummy TC TC module LLDAL ATM ATM TC Stub (Open/close circuits/leafs) UDP/IPv4 Figure 5: Traffic Control Architecture in PATAM 1.3. Conclusions Although the timeframe for the development and integration of the protocol stack was very tight (in fact, the decision to go for this solution was taken at the beginning of 1999, with few months left for this complex job), the big effort dedicated to the task concluded with a successfully running solution. That solution fulfilled the requirements imposed by BTI network scenario and applications running on Windows NT (videoserver, videoconference and data applications), and made possible the experimentation with the whole BTI system during usability testing phase. The effort invested to carry out the protocol stack development was very high. In fact, it was much higher than foreseen, due to several reasons: Instabilities of ATM drivers. This was one of the main problems we faced during development, integration and testing phase. The access to ATM services through winsock2 API was found to be buggy, not very well documented and very frequently was the cause of computer crashes ("NT blue screens"). Several bugs were reported to the manufacturer, but unfortunately, no solution arrived before the end of the project. Page 9 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network ATM Interoperability problems. During the testing phase, a lot of effort was invested to tune all ATM parameters (Information Elements) used in ATM circuits to get a combination of values able to work over all BTI scenarios. It was noted that, depending on the destination of a call (a router, a PC, etc) and the type of ATM switches being passed, some combination of parameters work or failed. Any time a new version of ATM drivers was tested or anytime a new network scenario (with, for example, switches from other manufacturers) was used, it was necessary to repeat all the tuning work. The use of ATM protocol analyzers was found very useful to isolate and solve these kind of problems. However, in some situations, some inconsistencies were detected between the two protocol analyzers used at UPM, complicating even more the solution of the problems. Developments inside Windows NT Kernel. Although the decision to develop a user-mode driver minimized the developments inside Windows NT kernel, the modifications needed were still very important (2.200 new lines added to the IPv6 protocol stack), and required a lot of effort due to the difficult conditions in which device drivers are developed. Advance APIs in IPv6 implementation. The lack or partial support in the IPv6 stack of the advanced APIs needed to integrate RSVP (for example, APIs to send and receive raw packets with interface knowledge or to know the number and addresses of IPv6 interfaces in the system) complicated the development, as we had to modify ourselves the IPv6 stack to add some of these interfaces. State of the art environment. Apart of the technologies mentioned above, most of other components being used (router, access network, IPv6 and RSVP support in servers, etc) showed problems and instabilities. For example, some bugs were discovered in IPv6 support in ISI's RSVP daemon; or some problems were detected in multicast support of IPv6 stack. Besides, software versions of some of the components changed during the project; or, in other cases, it was necessary to test several different versions to select the best for BTI project environment. In summary, most of the problems found were due to the use of state-of-the-art implementations of the technologies being integrated in BTI project. Even some technologies we though at the beginning that should be stable enough (like the use of SVCs in ATM networks) were found to be unstable. Finally, we would like to mention some interesting lines to continue the work described here: ABR support. Due to the lack of ABR support in the winsock2 ATM API used in the project, the implementation of Controlled Load services over ABR ATM circuits could not be finish. We think this is a very interesting and promising line of continuation of the work being described here. Integrated QoS interface. As mentioned, the protocol stack provides two different interfaces: one is used to access IPv6 stack to send and receive data, and the other to access RSVP services to make reservations. Inside winsock2 community, a lot of effort was invested to integrate both interfaces, in order to offer applications an integrated API with QoS support [WS2-GQOS]. We think that the use of an integrated API would simplify greatly the adaptation of applications. Page 10 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 2. Porting VideoServer Application over IPv6 and RSVP Video Retrieval Application implements a concept of a digital video library - a storage and management system for digitally encoded video, capable of synchronous streaming the video content towards the users on request. Unique features of the Video Retrieval Application include the ability to process compound queries submitted by users in order to find a particular film, allow the users to browse the film database, request additional information on a specific topic, and finally submit a request to start video streaming. During the streaming the application allows the user to perform trick-mode functions typical of a VCR. Figure 6: Video Retrieval Applicaiton - user interface The application consists of two parts: the server and the client. The server offers two interfaces: user interface consisting of four web-based pages facilitating server browsing (see Figure 6), and the content manager interface which consists of five pages to enable efficient content management (Figure 7). The application is able to support several simultaneous point-to-multipoint sessions and to control the QoS, i.e. to maintain quality of the video during the network transmission. Figure 7: Video Retrieval Applicaiton - content manager interface The Video Retrieval Application uses IPv6 as a network layer protocol and takes advantage of IPv6 multicast. Network resources are controlled with the RSVP protocol. The resources are reserved in Page 11 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network response to requests generated automatically by the application on behalf of a user, or manually by the user himself. As such Video Retrieval Application constitutes a service that may be used in many fields, including distant-learning, home-shopping and entertainment. The application proved to be a valuable tool to validate the advanced capabilities of the network developed within the BTI Project. In the context of network performance testing its unique features are closely related to the generic features of the video-on-demand service, like: the requirement for high bitrates to carry video bitstream, the requirement for low transmission delay in order to achieve high level of interactivity, and the requirement for low packet jitter because of high sensitivity of the video to network congestion, caused by the requirement of a synchronous playback. We believe that the network that is able to meet the above requirements is likely to be able to support also other, less demanding applications. This chapter briefly summarizes major findings and conclusions drawn after the development of the Video Retrieval Application. The details on the implementation can be found in Milestone 3.2.3 “ Specification and implementation of the server”. 2.1. The Server The server consists of several software components, which are briefly described below. The video server enables storage and streaming of digital video films towards the user or groups of users on request. It works in pair with the application server. The application server provides a consistent user interface for service users and a content manager interface for content management i.e. for the administrator of the service. The application server performs session control. It also interfaces the video server: initiates certain actions on the video server and gets the status of the video server. The application server is implemented as a web server (Apache), equipped with a set of scripts that perform service-specific actions. The data acquisition module provides means to specify object of interest by a user and retrieves a detailed information about the object from the database. The results of a query are then further processed and presented to the user with help of the application server. The database stores information on available video titles, and their technical properties. The information is organised in a SQL database running on a RDBMS platform (Postgres). It includes information that may be interesting to the user and some meta-data that maintains the integrity of the whole server installation. The video server, the application server, acquisition module and the database reside and execute on a common hardware platform (Sun Enterprise) in the Sun Solaris 2.5.1 environment. The operating system has some specific system-level software installed. The most important are: Solaris IPv6 2.5 and ISI RSVP daemon 4.2a4 modified to support IPv6. This specific system-level software is used by the applicationlevel module, developed by UKR to take advantage of the advanced network capabilities. The module is responsible for: resource reservation (rsvp signalling), IPv6 communication between the application client and the server, announcement and management of multicast sessions in the application (Figure 8). Software configuration of the Video Retrieval Application and the location of the software components with reference to the protocol stack is presented on Figure 8. Page 12 Hardware platform Operating system Preinstalled software Application A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Video database Video Application RSVP Sender Database system Web server Video Server RSVP deamon Postgress Apache ver. 1.3 OVS ver. 3.0.4 ISI RSVP ver. 6.4 RSVP software PiM-SM software ver. 4.2a4 Solaris 2.5.1 with IPv6 , ver 5.3 ARP, MARS and NHRP server TBC 2000 kernel Sun E250 TBC 2000 (Eurydyka) Application server (video sender) OVS player RSVP receiver Router plug in ver. 3.0.5 Web browser IPv6 and router specific software RSVP deamon Based on ISI RSVP Microsoft Internet Explorer ver. 4.0 Windows NT with MSRIP6 and IPv6/ATM driver PC with ATM25 and Ethernet network interfaces Application client (video receiver) Figure 8: Software configuration of the Video Retrieval Application 2.2. Adaptation to IPv6 The application is capable to support up to ten simultaneous point-to-multipoint video sessions. The pointto-multipoint communication is implemented using IPv6 multicast. Session management functions of the server, are responsible for allocating IP sessions. Each session is capable to carry one video flow. The ‘session’ is treated as a triple of the form: (dest. addr, dest. port, proto). All sessions use ff0e:10::10:10 multicast address and are differentiated by the port numbers. The transport protocol is UDP. The clients perform explicit join multicast session when they want to connect a session, and perform explicit session quit in order to disconnect from a session. The list of ongoing (running) sessions is known because it is multicasted over a special, well known multicast address (ff0e:10::10:1) used exclusively for the purpose of session announcement. During the development and migration of the Video Retrieval Application to IPv6 there were many problems, but these were mainly resulting from the incompleteness of the available implementations of the protocols (IPv6/RSVP) rather than from conceptual problems of misunderstanding or misinterpretation of the new features of these protocols. We believe that these shortcomings will be eliminated soon by the protocol implementers, and as such are out of scope of this document. One issue that was encountered with respect to IPv6 was the need, and initial difficulty, to handle several types of IPv6 addresses: globally-aggregable unicast addresses, link-local addresses and site-local addresses, and a slightly different address management rules than the rules that apply in typical IPv4 addressing. The major difference results from the fact that IPv6 addresses are dynamically assigned (via neighbour discovery protocol) rather then statically configured into the operating system. A conclusion from this may be that the address auto-configuration feature, though very beneficial from the user’s point of view, may cause some problems for the developers of IPv6 enabled network applications. 2.3. Adaptation to RSVP The approach incorporated in the application follows the Integrated Services model as defined by IETF. Resource Reservation Protocol (RSVP) is used in the application to exploit the Quality of Service (QoS) capability of the network at the IP layer. The application implements procedures for Controlled-Load service. The service model assumes a single source of video traffic (video server) and numerous video clients that are able to connect to the server, browse the database, receive digital video content and render it on the terminal. Page 13 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Usage of the application involves two phases of activity: content selection phase and video streaming phase. The two phases significantly differ in the type and volume of information that is exchanged between the client and the server. During the content selection phase the user exhibits much activity by submitting multiple queries to the database. It involves two-way, transaction-oriented communication with an abruptly changing demand for resources. Resulting downstream traffic, towards the user, is bursty. The video streaming phase produces very low traffic in the upstream direction (towards the server), which results mainly from occasional invocation of trick-mode functions. At the same time high volume of delay-sensitive video traffic is sent downstream. The nature of communication in the Video Retrieval Application is such, that it is reasonable to apply different resource management rules for the two phases. One option for the content selection phase is to treat the resulting traffic as best effort. Alternatively, the application may reserve a pre-defined amount of bandwidth, assuming that the user will use the bandwidth by means of active human-server interaction. The decision about how to treat the traffic during content selection phase will depend on the implementation details, including type and volume of information produced in response to a single query. In Video Retrieval Application the best-effort approach was chosen, assuming that the duration of the content selection phase is short when compared to the video streaming phase. This approach also avoids an additional burden of resource management. For the video streaming phase, there is no doubt that video flow should be subject to resource reservation. This is due to a relatively high bandwidth requirement of video traffic and a bad effect the congestion has on video quality (discontinuities, glitches). The most appropriate reservation style for video flow is Fixed Filter (FF) with simplex reservation, i.e. from the server to the clients. Two software modules: one for the application server and one for the application client perform resource reservation functions by the application (Figure 9). Application server (SUN) Proxy client HTTP Protocol (Ipv4 unicast) Sess. Sig. (Ipv4 unicast) Video player plug-in Session announcement and management (Ipv6 multicast, best-effort) Video (Ipv4 unicast) NIC card Proxy server Sess. Sig. (Ipv4 unicast) WWW Server Video flow (IPv6 multicast with RSVP) Video (Ipv4 unicast) NIC card Oracle Video Server Application client (PC) Internet Explorer 4.0 Figure 9: IPv6 and RSVP in the Video Retrieval Service On the server, RSVP functions are performed by the proxy_server module (rsvp_sender executable programme). It is launched whenever a user makes a choice and initiates video content streaming. The proxy client (rsvp_receiver.exe) module is launched automatically on the users' machine when the user starts the client part of the Video Retrieval Service. The two modules communicate, make a reservation and participate in forwarding of video flow from the server to the client. The two modules (RSVP_sender and RSVP_receiver) use Fixed Filter reservation style. Encapsulation of the RSVP messages straight into IP datagrams (raw encapsulation) ensures that the proposed solution follows the RFC standards. Page 14 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 2.4. User control of the QoS The server works as a video content repository and the application server. Each film available for the application users has associated its own ‘film label’. The label is implemented as a record in the database. The record is called a ‘film label’ because it contains all parameters of a film. The parameters include information, which is interesting/useful to the user, and some technical parameters used internally by the application. QoS information contained in the film label is the Tspec. The administrator of the server (via the content manager interface) sets default values for these parameters for each film, when the film is uploaded to the server. The parameters are derived from the prior MPEG encoding process and set such, that enough resources are reserved when a user requests that film at default (high) quality. The application server retrieves the TSpec information from the database when a user’s request for a film arrives at the server. TSpec information is used to generate an RSVP PATH message that is then sent down to the user’s PC terminal. By default, the PC terminal accepts the proposed reservation parameters and responds with a RSVP RESERVE message. This approach ensures that the [inexperienced] user is offered with the video content at satisfactory QoS. Alternatively, the user may select a “TSpec manual” operation mode, in which he will have the possibility to accept or change the arriving default and trace the RSVP reservation progress. These parameters are then sent to the application server in a RSVP RESERVE message. An important, but complex problem, is the selection of the traffic specification parameters for the reservation (Flowspec), so that to meet the desired target visual quality of a movie at a user terminal - so called subjective visual quality. This is mainly because there are only rough guidelines on how to do that. It is well known that in order to achieve high quality of video, the reservation parameters should correspond to the parameters that were used during the video encoding process providing that no additional traffic shaping is performed in the application. It is also hard to derive how should these settings be altered in order to achieve graceful degradation of subjective video quality. This is because there is no analytical formula expressing the subjective quality as a function of [a set of] resource reservation parameters. Should such a formula exist, it would have to account for properties of the video content, QoS service type and the properties of the transmission channel ( e.g. PDU size). The question of the impact of the QoS parameters settings on MPEG encoded video is a well-known problem, but still an open issue. Selection of too low Flowspec parameters for the transmission will produce excess traffic, that may be discarded during congestion periods. As stated above, this will impact the visual quality of the video but under specific conditions may also impact the in-band session signaling of the application. For this reason, it is adviceable to implement session management as a separate bi-directional flow. 2.5. Others One of the key concepts of the Project was to use the existing software components (possibly off-the-shelf products) as building blocks to develop advanced and useful applications. This reusability indeed helped to avoid developing applications from a scratch and enabled construction of advanced software in a reasonable time span at a lower cost. However the incorporation of the third-party software into the application was not seamless. Conclusions from this approach were drawn, and are listed below as a set of hopefully useful hints for other developers planning to try similar approach. Here they are: Decide on the hardware platform and the operating system in which the application will run. This should be done after a very elaborate study of the features and limitations of the hardware and software platform and third-party software components that will be used. Verify the dependencies of the application on third-party software components. Study carefully the features listed in the third-party software specification. Study their descriptions and verify if your understanding and expectations match the description. Page 15 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Apply limited trust in third party software, in particular when the software is provided without the source code and there are no means to introduce adaptations. Verify usability of the features: check experimentally whether fully implemented and check their performance. Try it in the target network environment or, if not possible, try to mimic the real network conditions in a local lab. If the software comes in source, check the quality of the code and check if you have the tools in case you need to introduce alterations. If the software comes in binary form only, verify the interfaces it provides (API) to control the software, check the level of control, e.g. response time, reporting of the status information, etc. Verify the level of support the third party software vendor can provide in case of any difficulties. Try to determine in much advance potential problems with incorporating the third-party software. Evaluate how these may affect the design of the application and consider alternative solutions or workarounds. 2.6. Conclusions The objective of WP 3.2 was to develop a stable and useful Video Retrieval Service using publically available implementations of network protocols. However, the development of such an advanced service, employing video as a primary means of information exchange in an advanced BTI network exhibited much difficulty. During the development state-of-the-art protocol implementations were used. Among them: pre-release implementation of IPv6 for Solaris, pre-release implementation of Microsoft Research IPv6 for WinNT, experimental implementation of ISI RSVP for Solaris, experimental RSVP implementation for Win’NT ported for the purpose of BTI by DIT-UPM from ISI RSVP, IPv6-to-ATM adaptation driver (PATAM) developed for the purpose of BTI by DIT-UPM for WinNT. In this context, UKR is proud to say that the objective of WP 3.2 was achieved. Page 16 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 3. Porting VideoConference Application over IPv6 and RSVP in Windows NT Environment 3.1. Adaptation to IPv6 The Multicast conferencing software packages ‘VIC’ (‘videoconferencing’) and ‘RAT’ (‘Robust Audio Tool’) have been adapted to have IPv6 functionality, using some degree of the IPv6 code already available (but non-functional) in each. The source code for RAT version 4.0.0 was acquired from UCL and the IPv6 functions made functional as many networking API calls had to be converted from UNIX-specific to Winsock-specific. In addition, much of the Winsock-specific code that did exist did not work and required modification to work with the IPv6 library and header files from MSR (Microsoft Research). The RAT source code at UCL features a new separation of the TCP/IP network communication code from the Tcl/Tk (and C language) interface code – using a separately compiled common library. The VIC source code (version 2.8ucl4) was also acquired from UCL. This version differs from the RAT codebase in that the networking code (an older version than that appearing in RAT) and the interface code are tightly coupled with one another, with no working IPv6 code either (only a few Unix-specific functions). In general, the separately defined Win32 and Winsock specific sections in the RAT and VIC source code could not be compiled and needed a great deal of work to work with NT, Winsock 2 and the MSR IPv6 protocol stack. There were very few IPv6-specific issues requiring changes to the RAT and VIC Tcl/Tk interface code, other than changes to the functions which display a session participant’s IP6 address – a few of these were IPv4 specific and others (especially in the C-language functions) suffered from run-time crashes due to string variables being defined as only having enough length for IPv4 strings and not IPv6 strings. 3.2. Adaptation to RSVP With regards to the ‘PATAM’ drivers and RSVP Daemon from UPM being used on the BTI project, various versions of both VIC and RAT were created over time as the specification of the RSVP functionality of PATAM and the RSVP Daemon also changed over time. Earlier versions of VIC and RAT had to maintain knowledge of the current senders to a multicast session to create and tear-down reservations as participants came and went. The final versions of VIC and RAT use the simpler assumption that all the participant senders in an RSVP session (identified as the multiple Tspec’s in a FlowDesc in an INFO_PATH message) are to have a reservation made for them. Both the VIC and RAT tools had similar additions to the interface to accommodate RSVP functionality. Although the visual appearance in both is similar, the locations of changes to the source code to enable them are very different between both tools. Both the BTI versions of VIC and RAT feature two additional ‘status bars’ at the bottom of the main window – the upper one displaying RSVP status, decisions made and RSVP reservations attempted. The lower status bar displays incoming RSVP messages from the RSVP service provider on the client PC to the application (such as INFO_PATH, INFO_PATH_TEAR, PATH_ERR). The Tcl/Tk interface also sounds a ‘bell’ (ASCII character seven) upon an incoming RSVP message to the application (the client PC needs to have the local ‘speaker’ channel un-muted on the current sound mixer device). The main windows of both VIC and RAT also feature a ‘RSVP ON/OFF’ checkbox which controls whether any of the normal VIC or RAT functions have also to perform relevant RSVP functions. For example, if the checkbox is ‘ON’, then a press of the ‘Transmit’ button in VIC will also call the RSVP function to call an IoCtl function with RSVP_SENDER information filled in. With this checkbox set to ‘OFF’ then both VIC and RAT act as normal – the only RSVP-specific functionality called being the initial RSVP registration with Winsock. Upon a successful reservation, the portion of the main window behind the two RSVP status bars turns green. Page 17 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Initially VIC had the functionality to change a reservation for the transmission from the local machine based on the current codec, frames-per-second and ‘quality’ settings. It was initially the case that the ‘transmission rate’ slider control on the ‘transmission’ window caused a new reservation request with a new Tspec for every few Kbps of change – in order that the reservation requests closely match the level of the current transmission. Later versions of the BTI version of VIC remove such functionality as it can easily confuse the BTI RSVP setup at the network level. Now, as long as the ‘RSVP ON/OFFF’ checkbox is ticked, any start of transmission will use the transmission rate pertaining at the time in the RSVP request, irrespective of any later change in transmission rate. In this case, for a different RSVP Tspec to be used in the reservation request, the current transmission should be stopped and then started again, leaving the RSVP functions to use the newer transmission rate setting. 3.3. Conclusions Both the VIC and RAT applications have been successfully compiled to run under the BTI-specification operating system, namely NT Workstation 4.0 and Winsock 2.0. Much effort was needed to make both VIC and RAT compile and run with IPv6, despite them being advertised as having IPv6 functionality. Later releases of VIC (the latest was released by UCL in the last month) purport to support IPv6 again, updated to use the same common networking library as RAT. This has not been investigated due to time constraints as at the time of writing. The two resultant MBONE tools have RSVP functionality over IPv6 which can be switched on or off via a simple checkbox at the main window level. By way of advice to any future project wishing to follow a similar path towards the creation of RSVPaware multicast IPv6 tools, the UCL codebase for both VIC and RAT must be commended as an excellent source of nearly-complete video and audio conferencing tools. The only drawback with this resource is the lack of commercial-level support (much is now done on a voluntary basis) and the Open-Source license leaving restrictions on certain commercial applications using such a codebase. Also, there can be very many changes between minor version increments, many of which undo changes in a previous release. Such public-spirited initiatives as these and many other ‘MBONE’ (multicast backbone) tools are a boon for a programmer wishing to produce a leading-edge, non-commercial multicast tool very quickly (especially over IPv4), but less use when a commercial-quality product is required. Page 18 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 4. Porting VideoConference Application over IPv6 and RSVP in UNIX environment In early discussions within the BTI project it was clear, that the main emphasis was on working with Windows-based applications (at that time either Windows 95 or Windows NT 4). This was, however, complicated by the fact that there were not – and are still not – commercial products available that implement IPv6 and RSVP in any of the Windows operating systems. Initially the hope was that such products would be released in time for use by the project, but this turned out not to be true. The project decided to keep the option open for working with Unix-based applications, and one partner – UNI-C – was assigned the task of porting the Unix-based multicast conferencing applications widely used on the global MBone IPv4 multicast network. This work was initiated because of the availability of IPv6 support for several Unix systems already at the starting time of the project's lifetime as well as the availability of RSVP software for Unix. In the end, this solution was not adopted by the final BTI application, as the project decided to provide its own ATM and RSVP support for the Microsoft Research IPv6 protocol implementation as described in chapter 1. In this chapter we summarise the work with the MBone applications and the experiences gained. 4.1. The MBone applications The work started with the multicast based conferencing applications that were – and still are – widely used on the global IPv4 multicast test backbone, the MBone. In the BTI project, some of these applications were also selected in their Windows applications as the foundation for the videoconferencing application described in chapter 3. These applications are: sdr, the Session Directory vic, the Video Conference tool vat, the Visual Audio tool which were the ones that we worked with. There are a number of additional Mbone applications: rat, Reliable audio tool (which was the audio tool chosen for the Windows development in BTI) wbd, WhiteBoard nte, Network Text Editor. The sdr application is implemented in traditional C, whereas vic and vat are written in C++, with the user interface implemented using TCL/Tk. 4.2. Adaptation to IPv6 4.2.1. The IPv6 environment used At UNI-C a LAN-based IPv6 environment was already present which was expanded and maintained during the lifetime of the BTI project. This network consists of several LAN segments (one dedicated to IPv6 experiments and later also the main LAN at UNI-C Århus) that were connected with the IPv6 backbone of the Danish Research Network and Page 19 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network consequently to the 6Bone with Telebit TBC 1000 and 2000 routers, later supplemented by host based tunnel services and for a while by a Cisco 3620 router running Cisco's IPv6 prototype software. The hosts that were used during the project comprises (based on hardware that was already available): Sun SparcStations running Solaris 2.5.1, Solaris 7, and NetBSD, PC's running NetBSD, FreeBSD and Linux. The Solaris 2.5.1 machine also serves as a DNS server for the IPv6 domain at UNI-C and as a Web server for access by 6Bone users and by local IPv6 access, including BTI. As of Solaris 7, IPv6 is still not part of the base OS, but is available as an easily installed patch. It seems that IPv6 will be part of Solaris 8, which is in beta testing at the time of writing. The Linux kernel sources now come with IPv6 as part of the standard release. For FreeBSD and NetBSD, we had access to several source based 3rd party IPv6 implementations: INRIA KAME NRL During the BTI project we had several machines running with the INRIA and KAME implementations, and now the KAME implementation seems to become the basis for an integration of these three IPv6 implementations, known as the Unified IPv6 implementation for the *BSD's. The software is now available for NetBSD, FreeBSD, OpenBSD, and BSD/I, and in the near future, it will become a standard part of several – if not all – of these Unix variants. The IPv6 environment used here, we do not, however, have an ATM network infrastructure, and all development and testing has consequently been done in a LAN environment. This means that these machines cannot directly be used as terminals in the BTI access network, but they would have been interoperable with terminals in the BTI access network, if the BTI network is connected to the 6Bone. 4.2.2. Adaptation of the applications One of the reasons for working with several IPv6 implementations on several Unix variants is to verify the portability of applications using the Basic Socket API across different systems. For applications not needing low-level access to the IP stack, the traditional socket interface has been extended to support IPv6 in the "Basic Socket Interface Extensions for IPv6", which was published in April 1997 in RFC 2133, and the upgraded in March 1999 with RFC 2553. In addition to the Basic Socket API, the IETF has also published the "Advanced Sockets API for IPv6" in RFC2292 of February 1998, which is being discussed and updated by the ipngwg working group of IETF, latest in the Internet Draft "draft-ietf-ipngwg-rfc2292bis-01.txt" which is work in progress published in October 1999. This API is needed for applications that need access to raw sockets, interface identification, more IPv6 Extension Headers, etc. The socket interface is the basic programming interface to network and other I/O programming on Unix systems and on several other systems. We expect that the socket is the most widely used network programming interface besides Winsock with is used with Microsoft Windows. The applications were adopted by replacing all instances of sockaddr_in, the IPv4 specific socket address structure, and usages of long/int to store IPv4 addresses, with a new union type encompassing sockaddr, sockaddr_in and sockaddr_in6. This work was done before RFC 2553 had endorsed the sockaddr_storage type, which would have served the same purpose. With that in place, it is only very few places in the code that need to know and differentiate between IPv4 and IPv6. It has not been necessary to use any features of Page 20 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network the Advanced Socket API. The conversion was quite straightforward albeit somewhat tedious because of the problem of identifying all uses of long/int to carry an IPv4 address. Some additional minor adaptations had to be made, in particular related to the DNS resolver API used for querying the name servers when conversion between host names and addresses of different kinds were needed. Our modifed version of the applications work with NetBSD, FreeBSD (Kame or INRIA IPv6 stack), Linux (RedHat 6.0), Solaris 2.5 and 7 based on a common source text. The only conditionals in the code have to do with which headers are available/required for IPv6 support, and some differences in libraries required for linking. 4.3. Adaptation to RSVP The code base we selected was the ISI tools that included RSVP support, so except that we had to adapt the RSVP code for IPv6 the same way as the rest of the code, it did not pose any problems. The main reason that this was so simple compared to the work done with adapting the Windows versions of the same or similar applications is that in the LAN environment, the applications don’t manage the actual QoS implementation them selves. Instead they just have to do the RSVP signalling by sending and receiving RSVP messages and keeping the appropriate state. On the terminal’s own LAN we just have to expect that there is sufficient bandwidth available, while the reservations in the transit network has to be handled by the transit routers. If we could have access to an RSVP-enabled router infrastructure, we would also have been forced to solve some of the problems faced by the Windows based applications, e.g. deciding how calculate the RSVP reservation parameters given the net bandwidth requirements by the applications and to decide whether the overhead for IP headers and ATM packet assembly should be calculated by the applications or the network elements. 4.4. Conclusions Based on the work described here, we can draw the following conclusions: It is possible to set up a stable network infrastructure using a mixture of IPv4 and IPv6 on LAN segments connected locally or remotely by routers or by host based tunnels including tunnel based connections to the global 6Bone IPv6 network. As part of this work we could also give feed-back to the KAME and INRIA projects about the portability of their software including bug reports and in some cases fixes when their software was expanded and upgraded. Finally we were able to participate to some degree in the ipngwg and ngtrans IETF working groups throughout the project period. This network infrastructure was available for unicast as well as for multicast traffic, although there is still not a global multicast connectivity. While setting up this network infrastructure we were also able to give some feed-back to Telebit about their IPv6 and PIM implementations. The applications were adapted to work with IPv6, and actually they are able to use IPv6 and IPv4 simultaneously on different connections as they select the protocol depending on the address to communicate to. The applications were already supporting RSVP, and our work here was quite limited, but testing and network snooping confirms that the RSVP messages were exchanged as expected. During the project period the development of several of the MBone applications was more or less dormant, Page 21 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network which has reduced the possibilities of getting the updates done by the projects integrated into the base versions of the applications. Recently it seems that UCL has revived the work with some of the applications. This simplification of using a LAN based environment (at the cost of total QoS) is probably the main reason that the work with the Unix based applications was much less problematic than the work on the Windows based applications by the other WG3 partners of BTI, where the full ATM integration was needed in the terminals. Page 22 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 5. Porting Data Application over IPv6 and RSVP Data Applications used in BTI project were based on the co-operative work software environment developed by UPM for LEVERAGE ACTS project [LEVERAGE]. This environment is made of four data conferencing applications: shared editor, shared whiteboard, shared web browser and chat tool; all of them integrated in a virtual workspace that allows users to create virtual meetings and interact synchronously by sharing documents. Figure 10 represents the communication architecture of Data Applications. Clients run over PCs with Windows NT or 95/98 and connect to a server daemon called the Session Manager (SM), which runs over a UNIX server. Clients are made of several modules [Fernandez98]: Session Desktop (SD), which is the user-interface to the system; Applications, shared editor, chat, etc, Administrative Database, which maintains all the information about users; and Session Manager Agent (SMA), which is in charge of the communications between the client and the server, and deals with all the session management tasks in clients. Figure 10: Data Applications Communication Architecture The task of porting Data Applications to IPv6 and RSVP was divided between PT Inovação, who was in charge of porting the server part, and UPM, who was in charge of porting the client side. In the case of the server, apart from making the IPv4-to-IPv6 code adaptation, an additional task was carried out that consisted in the selection and testing of a suitable RSVP over IPv6 UNIX platform to run the server. The starting point for the selection task was the ISI RSVP daemon over IPv4 running on Linux Red Hat 5.1, 2.0.35 kernel version, which had been used in BTI phase 1. Three options were then investigated – Linux kernel 2.2.5-15, Solaris 2.5.1 and Solaris 7. The outcome of this investigation was the selection of Solaris 2.5.1 as the platform for the migration to IPv6, as it proved to be a stable solution with an easier compilation and configuration process than the other alternatives. Furthermore, the fact that WP3.2 had successfully implemented ISI RSVP over IPv6 on Solaris 2.5.1 for the development of the video retrieval server reinforced that choice. Page 23 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network As a result of the task, the following server platform was selected: Software Package Solaris RSVP API IPv6 5.1. Version 2.5.1 5.02 Prototype 5.3, Sep22,1997 Adaptation to IPv6 5.1.1. Server Adaptation To adapt the SM server code to support IPv6, a set of changes were carried out on the network interface following [RFC2553]. This RFC describes the socket address structure to carry an IPv6 address, new address conversion functions and new socket options. These extensions provide the access to the basic IPv6 features required by applications using TCP and UDP, including multicast. In addition, [RFC2292] describes extensions for advanced IPv6 features, for example, the utilisation of raw sockets. The SM application had been originally implemented with IPv4/TCP sockets. The adaptation of this application to support IPv6 consisted of changing it to IPv6/TCP sockets as defined in the RFC 2553. No changes were needed in the syntax of the API RSVP, as the RSVP stack used by SM has been implemented for unifying IPv4 and IPv6. The following tables indicate the main adaptations needed. Core socket functions First Group Remark Functions to pass address to socket bind() No changes in the syntax of these functions because the address is carried to socket in a structure which is an argument of these functions. connect() Second Group accept() getpeername() getsockname() Address conversion functions inet_addr() inet_ntoa() Name-to-address translation functions gethostbyname() Functions to return address from the socket No changes in the syntax of these functions. The address is received through an element of a socket structure. Remark Changes to inet_pton() Changes to inet_ntop() Remark Should be updated to getipnodebyname() but the IPv6 distribution that was used does not support this function. Instead, gethostbyname2(), as defined in [RFC 2133] (obsoleted by RCF 2553) was used. Struct and constants struct sockaddr_in struct in_addr Remark Changes to structure sockaddr_in6 Changes to in6_addr INADDR_ANY Changes to in6addr_any AF_INET Changes to AF_INET6 Page 24 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 5.1.2. Client Adaptation The migration of the client part to IPv6 was made in three steps. First of all, the architecture was modified to send and receive all the data traffic from applications through the connection between the SMA and SM. Originally every application had its own independent data channel. But, in order to be able to make a joint RSVP reservation for all the traffic generated by all the applications being used in a session, the client was modified to route all the traffic through the TCP connection that every client establishes with the SM to interchange control traffic. Secondly, the low-level communication libraries of SMA were migrated to use Winsock 2 programming interface. That migration was obliged by the fact that the IPv6 stack used in BTI (MSRIPV6) is not available through winsock 1.1, which was the API used originally by Data Applications. Finally, the SMA was migrated to IPv6. Apart from some small problems found due to some bugs and oddities in IPv6 stack (mainly in routines related to address management) the migration was smooth, mainly because of the similarities between IPv4 and IPv6 sockets in Winsock 2. 5.2. Adaptation to RSVP 5.2.1. Reservation Model As mentioned earlier, the communication between clients and server is done using TCP connections. Thus, in order to add QoS guaranty to Data Applications, RSVP unicast sessions have been used, following the reservation model described below. For each client (meaning SMA) and server (SM) pair, two RSVP unicast sessions are defined: one for the traffic going from client to server (that is: Sserver= IPs/Ps [TCP], being IPs and Ps the well known address and TCP port to which the clients connect), and another for the traffic coming from the server to the client (that is: Sclient= IPc, Pc [TCP]). When a user creates or joins a session, it begins sending PATH messages to the server (S server). As soon as the server receives these PATH messages, it (1) begins to send PATH messages to the client (S client), and (2) issues a reservation for Sserver. Later, when the client receives the PATH messages from the server, it issues a reservation for Sclient. Eventually, both reservations will be established, and all the traffic of the session will be sent/received with QoS guaranty. If there is only one server with N clients connected 1, this means that the server participates as a sender in N unicast sessions (Sclient1, Sclient2, etc; one session per client) and as a receiver in the session that defines its own endpoint TSAP (Sserver). Accordingly, each client participates as a sender in session S server and as a receiver in the session corresponding to its own TSAP (Sclientx). 5.2.2. Server Adaptation The server part of the data applications is implemented as a single process running on Solaris platforms. The RSVP engine chosen for this environment is the one developed by ISI, since it has direct support for Solaris. Thus, the RSVP API offered to the server is the RAPI [RAPI] defined by ISI in its documentation. The server has to maintain one session for each connected client and one more session with its own IP address and TCP port. The actions that the server performs in order to establish the convenient reservations can be summarised as follows: 1 This is the case in BTI escenario. LEVERAGE environment was able to support several sites interconnected, each one with its own Session Manager. Page 25 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network Register as a receiver in Sserver, the session corresponding to its well-known TSAP, When a client connects, register as a sender to that client's session: S client = (IPc, Pc). The Tspec is determined by the QoS parameters sent by the client. When receiving a Path notification from a connected client (on session S server), issue a reservation call asking for a CL reservation with the same parameters as the Tspec the Path carried. Eventually, for each client connected (for each session Sclient), it will receive a Resv notification indicating that the client asked for a reservation that has been conceded. The adaptations needed to support RSVP over IPv4 in Session Manager daemon following the model described above were made for Milestone 2 of the project. As the RSVP stack and API used by SM has been implemented unifying IPv4 and IPv6, practically no syntax changes were needed to have RSVP working over IPv6, apart from the IPv4-to-IPv6 changes mentioned in the previous section. 5.2.3. Client Adaptation Clients applications (in particular, SMA module) access RSVP services through the RSVP Winsock 2 based API offered by the integrated protocol stack developed by UPM for BTI project. The SMA is in charge of making one reservation on behalf of all the individual applications, which will share it. This is a consequence of having changed the model of communications between clients and server, making all the data go through a single TCP socket instead of using one socket per interactive application. Besides, it simplifies the interface to choose the parameters of the reservation since the user has to estimate the total traffic that all its applications will generate, instead of doing so for each application. Basically the user interface gives three preconfigured QoS options (low, medium and high rate transmission) , a custom dialog box (to choose any rate) and the possibility of not asking for QoS (in this case no RSVP activity will be generated from the client’s side). The actions clients perform can be summarised as follows: SMA registers to session Sserver as a sender, with a Tspec according to what the user asked, and as a receiver to session Sclient (its local TSAP). When it receives a Path notification from the server (for session Sclient), it issues a CL reservation with FF style. Eventually it will receive a Resv notification showing that the server asked for a reservation (session Sserver). The migration of SMA to use RSVP over IPv6 was not difficult. As the SMA was previously modified to support RSVP over IP4 (in particular, for Milestone 2 of BTI project on November 1998), and the interfaces used to access RSVP over IPv4 (using Intel's PC-RSVP) and RSVP over IPv6 (using UPM's rsvpd) were very similar (both are winsock2 based), the modifications needed were minimal. Most of the changes were related with the address format used in function calls, messages and user-interface. However, due to the fact that Data Applications use unicast reservations and TCP connections, some new bugs not found when testing other applications were encountered during the testing phase. 5.3. Conclusions The migration of Data Applications to IPv6 and RSVP was, in general, achieved without important problems. As the network model of the system was simple, and we started from a version that already supported RSVP over IPv4, the changes made to the code to adapt it to IPv6 were not important. In fact, the number of lines of code modified was small. However, we faced several problems during the integration and testing phases, mainly due to the inmaturity of protocol stacks being used. On the server side, the main problems come from the interaction between the Page 26 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network RSVP daemon and the IPv6 implementation. Under some circumstances, some RSVP packets were lost, making some reservations fail. On the client side, some bugs were detected in the protocol stack (for example, one important problem that affected only TCP connections, and not UDP packets). Finally, some more problems were detected when testing the complete application over the whole scenario (made of client PCs, ATM access network, IP router, Ethernet and server). As the protocol implementations mature, and all these bugs and instabilities disappear, the migration of applications like the one presented here should be simple and smooth. Page 27 A0362/BTI/WP3/DS/R/P/301/B1 Conclusions from evaluation of all applications running on the network 6. References [RFC2491] IPv6 over Non-Broadcast Multiple Access (NBMA) networks. G. Armitage, P. Schulter, M. Jork, G. Harter. January 1999. [RFC2492] IPv6 over ATM Networks. G. Armitage, P. Schulter, M. Jork. January 1999. [RFC2022] Support for Multicast over UNI 3.0/3.1 based ATM Networks. G. Armitage. November 1996. [MSRIPv6] Microsoft Research's IPv6 implementation. Available on: http://www.research.microsoft.com/msripv6. [MARS-NIST] NIST's MARS client implementation. Available on: http://snad.ncsl.nist.gov/hendaz/NIST-MARS [RFC2379] RSVP over ATM Implementation Guidelines. L. Berger. August 1998. [RFC2380] RSVP over ATM Implementation Requirements. L. Berger. August 1998. [RFC2381] Interoperation of Controlled-Load Service and Guaranteed Service with ATM. M. Garrett, M. Borden. August 1998. [RFC2382] A Framework for Integrated Services and RSVP over ATM. E. Crawley, L. Berger, S. Berson, F. Baker, M. Borden, J. Krawczyk. August 1998. [RSVPd] Information Science Institute's RSVP daemon. Available on: http://www.isi.edu/rsvp. [WS2-API] Windows Sockets 2 Application Programming Interface. Revision 2. August 7, 1997. [WS2-Annex] Windows Sockets 2 Protocol-Specific Annex. Revision 2.0.3. May 10, 1996. [Gallen97] Creating User-Mode Device Drivers with a Proxy. Galen C. Hunt, University of Rochester. First USENIX Windows NT Workshop. Seattle, Washington, 1997. [WS2-GQOS] Winsock Generic QOS Mapping. Yoram Bernet, Jim Stewart, Raj Yavatkar, Dave Andersen, Charlie Tai, Bob Quinn, Kam Lee. Windows Networking Group. [LEVERAGE] LEarn from Video Extensive Real Atm Gigabit Experiment (LEVERAGE). ACTS project 109. http://www.dit.upm.es/leverage. [RFC2205] Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification. R. Braden, Ed., L. Zhang, S. Berson, S. Herzog, S. Jamin. September 1997. [RFC2210] The Use of RSVP with IETF Integrated Services. J. Wroclawski. September 1997. [Fernandez98] Specification of Cooperative Work Services. David Fernández, Luis Bellido. Deliverable 921 of LEVERAGE ACTS project. Available in http://www.dit.upm.es/leverage. [RFC2553] R. Gilligan, S. Thomson, J. Bound, W. Stevens, RFC 2533, “Basic Socket Interface Extensions for IPv6”, March 1999. [RFC2292] W. Stevens, M. Thomas, RFC 2292, “Advanced Sockets API for IPv6”, February 1998. [RFC2133] R. Gilligan, S. Thomson, J. Bound, W. Stevens, RFC 2133, “Basic Socket Interface Extensions for IPv6”, April 1997. [RAPI] RAPI -- An RSVP Application Programming Interface. R. Braden, D. Hoffman. Internet Draft. Page 28