IP Multicast Simulation in OPNET Xin Wang, Chien-Ming Yu, Henning Schulzrinne Columbia University Department of Computer Science New York, New York Email: xinwang@cs.columbia.edu, hgs@cs.columbia.edu Paul A. Stirpe Reuters 88 Parkway Drive South Hauppuage, New York email: paul.stirpe@reuters.com receiver hosts and multicast-enabled first hop routers on the LAN. Internet Group Management Protocol (IGMP) [2] is the primary group management protocol used in the Internet community. IGMP is used between hosts and their immediate multicast-enabled routers to query, report, and refresh the multicast group information on LAN. ABSTRACT IP multicast is an emerging wide area network technology that provides the capability for efficient information dissemination from senders to potentially large sets of receivers. IP multicast distribution trees or pathways are enabled via a combination of the LANbased Internet Group Management Protocol (IGMP) working in concert with multicast routing protocols. The financial industry is beginning to utilize IP multicast as a delivery mechanism for near real-time information dissemination. However, financial services typically have stringent availability requirements. Therefore, the failure recovery characteristics of IP multicast are of interest to investigate. In this paper, we report on the simulation design of the Protocol Independent Multicast Dense Mode (PIM DM) multicast routing model, the IGMP group management model, and other models for OPNET. Furthermore, the modifications required to several OPNET IP models to support multicast are detailed. The simulation was used to investigate the failure recovery characteristics of IP multicast. There are several types of unicast routing protocols currently in use, including dynamic and static. RIP is a distance vector type protocol whereas Open Shortest Path First (OSPF) is link state based [1]. A superior characteristic of link state protocols is that they can react more rapidly to topologic changes as compared to distance vector or static topologies. A third component protocol required to enable multicast communications over the WAN is multicast routing protocols. Multicast routing protocols often use the metrics and topology information that is maintained by the underlying unicast routing protocol to build and maintain multicast packet delivery trees, and forward multicast packets. Multicast routing protocols may be integrated with a unicast routing protocols or may be independent of the underlying unicast routing protocol. Distance Vector Multicast Routing Protocol (DVMRP) [5] is tightly coupled with RIP, and Multicast Open Shortest Path First (MOSPF) [3] to OSPF, whereas Protocol Independent Multicast (PIM) [6] is independent of the underlying unicast routing protocol and may run over any unicast routing protocol. The protocol models developed herein include IGMP for multicast group membership management, OSPF as the unicast routing protocol, and PIM DM [4] as the multicast routing protocol. INTRODUCTION There has been much discussion about the use of IP multicast technology for efficient information dissemination. IP Multicast enables a network to send messages to a group of anonymous receivers, as compared to unicast or broadcast that targets one or all recipients respectively. It has the potential to utilize less network and host resources in providing this service. Applications, such as Internet radio, realtime financial information dissemination, software distribution all can potentially benefit from the use of IP multicast. Simulation models for an IP multicast system are developed for the investigation of end-to-end multicast failure recovery behavior and performance. When a link or router failure occurs in a network, the multicast data delivery service can be interrupted for a period of time. Multicast group membership management, unicast routing protocols, and multicast routing protocols are all required to enable end-to-end multicast communications. Group membership management is needed between 1 In financial systems, for example, services that are carried using multicast must be able to rapidly recover from network failures. only pull-down those multicast channels for groups that are of interest to receivers on the LAN. PIM DM is a broadcast and prune protocol and is best suited for networks where most receivers are “densely” populated and bandwidth is plentiful. When a source commences sending UDP traffic with an IP destination group address the first hop router(s) floods the data out its interfaces except the interface on which the data arrive. Subsequent routers do the same during this broadcast phase of the protocol. When the multicast channel reaches a leaf router (one that is LAN connected to potential receivers), the group information maintained by the router is examined and either the multicast data is forwarded onto the LAN or the router prunes back the channel. This allows only those receivers that have expressed interest in the group to have the channel extended to them. The broadcast and prune process repeats every three minutes. There is also the ability for a new receiver to asynchronously attach to the multicast channel via a grafting mechanism. This paper outlines the simulation models that where developed within OPNET for IP multicast. Several models were developed to provide multicast network capabilities. The models include IGMP, PIM DM, modifications to the IP forwarding engine, a random topology generator, an multicast sender and receiver application model, and a link fault injector, as well as several probes to acquire simulation statistics. In the next section, an introduction to the protocols is provided, followed by a description of the simulation models. MODELS OVERVIEW The establishment of end-to-end multicast communication channels requires several protocols to work in concert. To establish a multicast channel over a native multicast enabled WAN, a sender application need only to send UDP packets onto the LAN using a class D IP address (group address) in the destination field of the IP header. The multicast enabled routers in the network are responsible for constructing the multicast channel, and extending it to the interested receivers. OSPF is a link state unicast routing protocol that provides robust fail-over characteristics, compared to other unicast routing protocols. It can dynamically detect topological changes and calculate new loop-free routes after a period of convergence. Each router in the network maintains a replicated database. Routers execute Dijkstra's algorithm on their database to calculate a shortest-path route to a given destination subnet. Routers exchange database information periodically, or when network element failures occur, via a standard flooding algorithm. OSPF was first introduced into OPNET in version 3.5A by Mil3 and is the version on which this work was completed. At the receiver side, however, the group management protocol IGMP must execute between receiver hosts and their default routers to allow hosts to express interest in particular multicast groups. The receiving application must explicitly express interest to its transport stack, in attaching to a specified group and UDP port. The IGMP component executing on the receiver host then forwards the group interest, specified by the class D IP address, to the routers on the receiver’s LAN. A selected router (designated router) subsequently attaches to and forwards all multicast channels for the specified group onto the LAN network. The host’s transport stack filters data received from different sources for the same group de-multiplexing via the UDP port number specified by the receiving application. If multiple sources send using the same group and destination UDP port number, application level filtering would be required at the receiving application to distinguish amongst the information streams. In the next section, an overview is given for the IGMP, PIM DM models, as well as the other required modifications and capabilities developed for the multicast simulation. THE SIMULATION MODELS A network consists of numbers of routers and hosts. Routers connect directly to other routers or to local area networks (LAN), where hosts or other routers are connected. To support IP multicast, we modify the original OPNET IP models (IP_RTE and IP_ENCAP) to process multicast packets and thus carry-out multicast forwarding. The PIM_DM model is added into the network node models and provides routing control for multicast packets. In addition, the IGMP router and host Periodically, IGMP executing in the router queries the hosts on the LAN to maintain the accuracy of its group knowledge. This allows the designated router (DR) to 2 models are added, to work with the PIM model. In order to inject traffic into a network, an application model which generates either unicast or multicast UDP datagrams is developed. Inside each of the following models, we will mention the uses of the above methods to interact with other modules. IP MULTICAST FORWARDING: THE IP_RTE MODEL There are two communication mechanisms and one model-wide registry used to get, give, or exchange information from one model instance to another. They are: IGMP PIM r,w r,w r,w Mlocal OSPF r Mroute r The main function of IP_RTE is to act as the IP forwarding engine and process IP packets that go through this module either from higher layers or from network. There are several modifications required to the standard IP_RTE model in order to support IP Multicast as illustrated in Figure 1. Those modifications are outlined below. r IP_RTE: PROCESSING PACKETS ARRIVING FROM HIGHER LAYERS r,w r,w IP Encap Unicast route r Packets arriving from upper layer models like OSPF, PIM DM, UDP, etc., need to be forwarded out towards their destination. In this case, IP_RTE will either get one or more interface addresses specified by the upper layer model as an outgoing interface, or needs to perform a lookup in the routing tables to get a list of one or more outgoing interfaces. There are a few circumstances in which packets will reach IP_RTE from the upper layer. IP Forwarding Network Figure 1: Basic router simulation model structure 1. Model-wide Registry: This can be effectively used in conjunction with the existing communication mechanisms for various modeling requirements. The process registry defines a group of procedures that allow OPNET defined processes to record, access, and share information in a model-wide (or global) registry. Usually, we use this type of communication mechanism to share information needed by other modules, such as dynamic unicast routing table, the dynamic multicast routing table or interface table information. Unicast data packets: IP_RTE needs to find the outgoing interface from the dynamic unicast routing table. Multicast data packets: 1. Inside a host, this situation happens when the host is the source of data packets. So far our hosts only have exactly one interface connected to the broadcast media; we use this interface address as an outgoing interface. 2. Inside a router, this situation happens when the dynamic multicast routing (mroute) table did not contain an entry of the source-destination that matched this incoming packet when this packet arrived at the router. This packet was forwarded up to PIM. PIM creates an entry for this sourcedestination and sends it down to IP_RTE again. For this case, outgoing interfaces are obtained from the mroute table. 2. Packet-Based Communications: This is used when there are packets needed to be relayed or exchanged inside the simulation network. 3. Interface Control Information: This type of communication mechanism is generally associated with Packet-Based communications, that is, stream events. This happens because the information not carried by packets themselves needs to be sent to the receiving process. Sometimes, an ICI is associated with remote a interrupt so that the interrupted module can retrieve information even when the model instances are not physically connected inside a node or outside a node. Multicast control packets: when IP_RTE receives packets destined to a reserved multicast address (multicast control packets), IP_RTE will process them in a different way compared to a pure datagram data packet. Multicast control packets are forwarded out through the interface specified by the higher layer. 3 When a packet arrives from the IP_RTE layer, the reverse procedure of the above situation needs to be performed. That is, attributes from the incoming packet are converted into an ICI that is associated with the datagram sent to the higher layer. IP_RTE: PACKET PROCESSING ARRIVING FROM THE NETWORK Packets from the network will either be forwarded to the higher layer, forwarded out, or destroyed. When a packet from network arrives and reaches it's destination, this packet will be forwarded up to IP_ENCAP. IP_ENCAP then dispatches this packet to the corresponding module. Some packets need to be forwarded out again. Control packets are forwarded up to IP_ENCAP if their reserved control address is registered. Incoming data packets that have reached their destination are forwarded to IP_ENCAP. All other incoming packets are destroyed. PIM DM MODEL The main function of PIM_DM is to create and maintain routing information for multicast packets inside the router nodes. The interaction between the PIM_DM model and the IGMP model is also important to properly maintain the mroute table, as will be discussed shortly. The mroute table needs to be registered so that IP_RTE can reference it and know how to forward multicast data and control packets. Furthermore, dynamic unicast routing information is received from the OSPF process registry. After the mroute table is constructed, IP_RTE can use both dynamic unicast and multicast routing information during its packet forwarding process. At this point, the PIM hello message is scheduled to be forwarded to all PIM neighboring routers. Unicast data packets: IP_RTE will either forward them to upper layers if they reach their destination or out again onto the network towards their destination. Multicast data packets: When a router receives this type of packet, it will lookup in the mroute table to find an entry that matches this packet. If the entry is found in the mroute table, IP_RTE forwards the packet out onto the one or more interfaces specified in the mroute table entry. If an entry that matches this packet is not found, the packet is sent to the PIM model that will create an mroute entry for this packet and in turn send it down to IP_RTE again. At this time, IP_RTE knows how to forward this packet, using the just established mroute table entry. For a host node model, IP_RTE checks the incoming multicast data packet against the mlocal, maintained by IGMP. The PIM DM model is now ready to process the incoming packets. There are two types of packets that can arrive at the PIM DM model; IGMP and all PIM messages. The IGMP messages are used to update the mlocal table and the PIM messages are used to update the mroute table. All the PIM messages are processed as is specified in the PIM_DM protocol specification. IGMP MODELS Multicast control packets: If the IP address of the incoming packets is a reserved address, IP_RTE will forward it to the higher layer via IP_ENCAP. IP_ENCAP in turn will forward it to the corresponding module. IGMP is a group management protocol that has two components; one that executes in hosts and one that executes in routes. IP_ENCAP MODEL The IGMP router model initializes and then periodically sends IGMP general queries on all its LAN interfaces to collect group information. The IGMP router model may receive an IGMP leave group message from a host and subsequently remove that group specific information from the mlocal table (after executing a group specific query, as per the IGMP specification). PIM_DM is notified when the first member of the group joins the group, and when the last member of the group has left the group. IGMP ROUTER MODEL This model processes all packets from upper modules that want to use the IP service provided by IP_RTE, and by all packets arriving from the IP_RTE. When a packet arrives from the higher layer, an IP packet needs to be created to encapsulate this packet. In turn, the attributes of this IP packet need to be set from the ICI corresponding to this stream event and a new ICI will be installed. There are two ICI formats used for this purpose. One is for general datagrams from higher layers. When a router receives an IGMP message, if the message is a query from another router, it determines whether it remains in the Querier role. If the message is 4 a report from a host, the IGMP model refreshes the report timer for that group on the interface received, or insert the group for the interface into the IGMP mlocal table if it is not yet in the table, and notifies PIM of the state change. If the message is an IGMP leave message from a host, IGMP schedules a group specific query for that group on the interface from which the message was received. place. If the time value is zero, then the join or leave will be called immediately. However in some circumstance users might want to schedule a join and leave based on previously defined values instead of scheduling an immediately join or leave. The APP model also provides an API to allow dynamic join or leaves to occur. For dynamically called joins and leaves, a new state is defined that can receive interrupts from prospective models. IGMP HOST MODEL The IGMP host model is responsible for two activities. It can receive join or leave requests from the application model (APP). It also responds to membership queries. When the module receives a join or leave from an application (higher layer), it needs to update the IGMP table inside the host to indicate the group address and number of applications on this host joining this specific group. When a host receives a membership query, it will schedule an interrupt so that a response state will send a membership report to the routers on the LAN. CONCLUSIONS THE APPLICATION MODULE (APP) A description of an IP multicast OPNET simulation is provided. The simulation models consist of several new node models, including PIM DM and IGMP. Additionally, many changes were required of OPNET within the IP forwarding function to support multicast. The detailed enhancements to the OPNET IP_RTE and IP_ENCAP models were outlined. Since space is limited, several supporting models are mentioned but not discussed, including a random topology generator, link failure injection model and several multicast probes. The application model is used for injecting multicast data packets into networks and issuing join or leave message requests to the IGMP host model. The simulation is being used to investigate the failure recovery characteristics of IP multicast for highly available systems, such as those in the financial services industry. Data packets from this application module are sent to the UDP layer, which in turn encapsulates them with a UDP header, such as port number, and sends them down to IP_ENCAP. The App model has to specify the destination address and remote port number in order to send packets. On the multicast receiver side, the App model needs to register the port number on which it is going to receive the multicast packets. REFERENCES [1] Moy, J., OSPF Version 2. Draft Standard RFC 1583, March, 1994. [2] Fenner, W. Internet Group Management Protocol, Version 2, RFC2236, November 1997. [3] Moy, J., "Multicast Extensions to OSPF", RFC 1584, Proteon, Inc., March 1994. [4] Stephen Deering, Deborah Estrin, Dino Farinacci, Van Jacobson, Ahmed Helmy, David Meyer, Liming Wei. PIM Dense Mode Specification. draft-ietf-pimv2-dm-02.txt [5] Waitzman, D., Partridge, C., Deering , S., Distance Vector Multicast Routing Protocol. RFC 1075, Nov01-1988. [6] Deering, S., Estrin, D., Farinacci, D., Jacobson, V., Liu, C., and Wei, L., The PIM Architecture for WAN Multicast Routing. ACM Transactions on Networks, April 1996. When reaching their destination, data packets will be forwarded to IP_ENCAP from IP_RTE. IP_ENCAP dispatches packets by protocol identifier. In this case, the identifier is UDP and packets are forwarded up to UDP module. After the UDP layer receives the multicast packet, it dispatches the packet to the appropriate App model, based on its destination port number. Besides sending and receiving data packets, the App model also communicates with the IGMP host model. The interaction between these two models consists of join and leave group messages. Join and leave group messages are specified by the user either in the initial state or dynamically during the simulation run time. If join and leave are specified in the initial state, users need to input a time argument, which corresponds to the simulation time at which the join or leave will take 5