home *** CD-ROM | disk | FTP | other *** search
/ Internet Core Protocols / Oreilly-InternetCoreProtocols.iso / RFCs / rfc2490.txt < prev    next >
Encoding:
Text File  |  1999-10-14  |  74.9 KB  |  1,740 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         M. Pullen
  8. Request for Comments: 2490                      George Mason University
  9. Category: Informational                                      R. Malghan
  10.                                                    Hitachi Data Systems
  11.                                                                 L. Lavu
  12.                                                            Bay Networks
  13.                                                                 G. Duan
  14.                                                                  Oracle
  15.                                                                   J. Ma
  16.                                                               NewBridge
  17.                                                                  H. Nah
  18.                                                 George Mason University
  19.                                                            January 1999
  20.  
  21.  
  22.              A Simulation Model for IP Multicast with RSVP
  23.  
  24. Status of this Memo
  25.  
  26.    This memo provides information for the Internet community.  It does
  27.    not specify an Internet standard of any kind.  Distribution of this
  28.    memo is unlimited.
  29.  
  30. Copyright Notice
  31.  
  32.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  33.  
  34. Abstract
  35.  
  36.    This document describes a detailed model of IPv4 multicast with RSVP
  37.    that has been developed using the OPNET simulation package [4], with
  38.    protocol procedures defined in the C language.  The model was
  39.    developed to allow investigation of performance constraints on
  40.    routing but should have wide applicability in the Internet
  41.    multicast/resource reservation community.  We are making this model
  42.    publicly available with the intention that it can be used to provide
  43.    expanded studies of resource-reserved multicasting.
  44.  
  45. Table of Contents
  46.  
  47.    1. Background                                                  2
  48.    2. The OPNET Simulation Environment                            3
  49.    3. IP Multicast Model                                          3
  50.            3.1 Address Format                                     3
  51.            3.2 Network Layer                                      4
  52.            3.3 Node layer                                         5
  53.    4. RSVP Model                                                 13
  54.            4.1 RSVP Application                                  13
  55.  
  56.  
  57.  
  58. Pullen, et. al.              Informational                      [Page 1]
  59.  
  60. RFC 2490                 IP Multicast with RSVP             January 1999
  61.  
  62.  
  63.            4.2 RSVP on Routers                                   14
  64.            4.3 RSVP on Hosts                                     17
  65.    5. Multicast Routing Model Interface                          19
  66.            5.1 Creation of multicast routing processor node      19
  67.            5.2 Interfacing processor nodes                       19
  68.            5.3 Interrupt Generation                              21
  69.            5.4 Modifications of modules in the process model     22
  70.    6. OSPF and MOSPF Models                                      23
  71.            6.1 Init                                              23
  72.            6.2 Idle                                              23
  73.            6.3 BCOspfLsa                                         23
  74.            6.4 BCMospfLsa                                        23
  75.            6.5 Arr                                               23
  76.            6.6 Hello_pks                                         24
  77.            6.7 Mospfspfcalc                                      24
  78.            6.8 Ospfspfcalc                                       25
  79.            6.9 UpstrNode                                         25
  80.            6.10 DABRA                                            25
  81.    7. DVMRP Model                                                26
  82.            7.1 Init                                              26
  83.            7.2 Idle                                              26
  84.            7.3 Probe_Send State                                  26
  85.            7.4 Report_Send                                       26
  86.            7.5 Prune _Send                                       26
  87.            7.6 Graft_send                                        27
  88.            7.7 Arr_Pkt                                           27
  89.            7.8 Route_Calc                                        28
  90.            7.9 Timer                                             28
  91.    8. Simulation performance                                     28
  92.    9. Future Work                                                29
  93.    10. Security Considerations                                   29
  94.    11. References                                                29
  95.    Authors' Addresses                                            30
  96.    Full Copyright Statement                                      31
  97.  
  98. 1. Background
  99.  
  100.    The successful deployment of IP multicasting [1] and its availability
  101.    in the Mbone has led to continuing increase in real-time multimedia
  102.    Internet applications.  Because the Internet has traditionally
  103.    supported only a best-effort quality of service, there is
  104.    considerable interest to create mechanisms that will allow adequate
  105.    resources to be reserved in networks using the Internet protocol
  106.    suite, such that the quality of real-time traffic such as video,
  107.    voice, and distributed simulation can be sustained at specified
  108.    levels.  The RSVP protocol [2] has been developed for this purpose
  109.    and is the subject of ongoing implementation efforts. Although the
  110.    developers of RSVP have used simulation in their design process, no
  111.  
  112.  
  113.  
  114. Pullen, et. al.              Informational                      [Page 2]
  115.  
  116. RFC 2490                 IP Multicast with RSVP             January 1999
  117.  
  118.  
  119.    simulation of IPmc with RSVP has been generally available for
  120.    analysis of the performance and prediction of the behavior of these
  121.    protocols.  The simulation model described here was developed to fill
  122.    this gap, and is explicitly intended to be made available to the IETF
  123.    community.
  124.  
  125. 2.  The OPNET Simulation Environment
  126.  
  127.    The Optimized Network Engineering Tools (OPNET) is a commercial
  128.    simulation product of the MIL3 company of Arlington, VA.  It employs
  129.    a Discrete Event Simulation approach that allows large numbers of
  130.    closely-spaced events in a sizable network to be represented
  131.    accurately and efficiently. OPNET uses a modeling approach where
  132.    networks are built of components interconnected by perfect links that
  133.    can be degraded at will.  Each component's behavior is modeled as a
  134.    state-transition diagram.  The process that takes place in each state
  135.    is described by a program in the C language. We believe this makes
  136.    the OPNET-based models relatively easy to port to other modeling
  137.    environments. This family of models is compatible with OPNET 3.5.
  138.    The following sections describe the state-transition models and
  139.    process code for the IPmc and RSVP models we have created using
  140.    OPNET. Please note that an OPNET layer is not necessarily equivalent
  141.    to a layer in a network stack, but shares with a stack layer the
  142.    property that it is a highly modular software element with well
  143.    defined interfaces.
  144.  
  145. 3.  IP Multicast Model
  146.  
  147.    The following processing takes place in the indicated modules. Each
  148.    subsection below describes in detail a layer in the host and the
  149.    router that can be simulated with the help of the corresponding OPNET
  150.    network layer or node layer or the process layer, starting from
  151.    physical layer.
  152.  
  153. 3.1 Address format
  154.  
  155.    The OPNET IP model has only one type of addressing denoted by "X.Y"
  156.    where X is 24 bits long and Y is 8 bits long, corresponding to an
  157.    IPv4 Class C network.  The X indicates the destination or the source
  158.    network number and Y indicates the destination or the source node
  159.    number.  In our model X = 500 is reserved for multicast traffic.  For
  160.    multicast traffic the value of Y indicates the group to which the
  161.    packet belongs.
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Pullen, et. al.              Informational                      [Page 3]
  171.  
  172. RFC 2490                 IP Multicast with RSVP             January 1999
  173.  
  174.  
  175. 3.2 Network Layer
  176.  
  177.    Figure 1 describes an example network topology built using the OPNET
  178.    network editor.  This network consists of two backbone routers BBR1,
  179.    BBR2, three area border routers ABR1, ABR2,  ABR3 and six subnets F1,
  180.    through F6.  As OPNET has no full duplex link model, each connecting
  181.    link is modeled as two simplex links enabling bidirectional traffic.
  182.  
  183.                  [Figure 1: Network Layer of Debug Model]
  184.  
  185. 3.2.1 Attributes
  186.  
  187.    The attributes of the elements of the network layer are:
  188.  
  189.    a. Area Border Routers and Backbone Routers
  190.  
  191.      1. IP address of each active interface of each router
  192.         (network_id.node_id)
  193.      2. Service rate of the IP layer (packets/sec)
  194.      3. Transmission speeds of each active interface (bits/sec)
  195.  
  196.    b. Subnets
  197.  
  198.      1. IP address of each active interface of the router in the subnet
  199.      2. IP address of the hosts in each of the subnet.
  200.      3. Service rate of the IP layer in the subnet router and the hosts.
  201.  
  202.    c. Simplex links
  203.  
  204.      1. Propagation delay in the links
  205.      2. The process model to be used for simulating the simplex links
  206.         (this means whether animation is included or not).
  207.  
  208. 3.2.2 LAN Subnets
  209.  
  210.    Figure 2 shows the FDDI ring as used in a subnet. The subnet will
  211.    have one router and one or more hosts.  The router in the subnet is
  212.    included to route the traffic between the FDDI ring or Ethernet in
  213.    the corresponding subnet and the external network.  The subnet router
  214.    is connected on one end to Ethernet or FDDI ring and normally also is
  215.    connected to an area border router on another interface (the area
  216.    border routers may be connected to more than one backbone router). In
  217.    the Ethernet all the hosts are connected to the bus, while in FDDI
  218.    the hosts are interconnected in a ring as illustrated in Figure 2.
  219.  
  220.                     [Figure 2: FDDI Ring Subnet Layer]
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Pullen, et. al.              Informational                      [Page 4]
  227.  
  228. RFC 2490                 IP Multicast with RSVP             January 1999
  229.  
  230.  
  231.    FDDI provides general purpose networking at 100 Mb/sec transmission
  232.    rates for large numbers of communicating stations configured in a
  233.    ring topology.  Use of ring bandwidth is controlled through a timed
  234.    token rotation protocol, wherein stations must receive a token and
  235.    meet with a set of timing and priority criteria before transmitting
  236.    frames.  In order to accommodate network applications in which
  237.    response times are critical,  FDDI provides for deterministic
  238.    availability of ring bandwidth by defining a synchronous transmission
  239.    service. Asynchronous frame transmission requests dynamically share
  240.    the remaining ring bandwidth.
  241.  
  242.    Ethernet is a bus-based local area network (LAN) technology.  The
  243.    operation of the LAN is managed by a media access protocol (MAC)
  244.    following the IEEE 802.3 standard, providing Carrier Sense Multiple
  245.    Access with Collision Detection (CSMA/CD) for the LAN channel.
  246.  
  247. 3.3 Node layer
  248.  
  249.    This section discusses the internal structure of hosts and routers
  250.    with the help of node level illustrations built using the Node editor
  251.    of OPNET.
  252.  
  253. 3.3.1 Basic OPNET elements
  254.  
  255.    The basic elements of a node level illustration are
  256.  
  257.    a. Processor nodes: Processor nodes are used for processing incoming
  258.    packets and generating packets with a specified packet format.
  259.  
  260.    b. Queue node: Queue nodes are a superset of processor nodes. In
  261.    addition to the capabilities of processor nodes,  queue nodes also
  262.    have capability to store packets in one or more queues.
  263.  
  264.    c. Transmitter and Receiver nodes: Transmitters simulate the link
  265.    behavior effect of packet transmission and Receivers simulate the
  266.    receiving effects of packet reception.  The transmission rate is an
  267.    attribute of the transmitter and receiving rate is an attribute of
  268.    the receiver. These values together decide the transmission delay of
  269.    a packet.
  270.  
  271.    d. Packet streams: Packet streams are used to interconnect the above
  272.    described nodes.
  273.  
  274.    e. Statistic streams:  Statistic streams are used to convey
  275.    information between the different nodes: Processor, Queue,
  276.    Transmitters and Receivers nodes respectively.
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Pullen, et. al.              Informational                      [Page 5]
  283.  
  284. RFC 2490                 IP Multicast with RSVP             January 1999
  285.  
  286.  
  287. 3.3.2 Host description
  288.  
  289.    The host model built using OPNET has a layered structure. Different
  290.    from the OPNET layers (Network, Node and Process layer) that describe
  291.    the network at different levels, protocol stack elements are
  292.    implemented at OPNET nodes. Figure 3 shows the node level structure
  293.    of a FDDI host.
  294.  
  295.                       [Figure 3: Node Level of Host]
  296.  
  297.    a. MAC queue node: The MAC interfaces on one side to the physical
  298.    layer through the transmitter (phy_tx) and receiver (phy_rx) and also
  299.    provides services to the IP layer.  Use of ring bandwidth is
  300.    controlled through a timed token rotation protocol, wherein hosts
  301.    must receive a token and meet with a set of timing and priority
  302.    criteria before transmitting frames.  When a frame arrives at the MAC
  303.    node, the node performs one of the following actions:
  304.  
  305.      1. If the owner of the frame is this MAC, the MAC layer destroys
  306.         the frame since the frame has finished circulating through the
  307.         FDDI ring.
  308.      2. if the frame is destined for this host, the MAC layer makes a
  309.         copy of the frame, decapsulates the frame and sends the
  310.         descapsulated frame (packet) to the IP layer.  The original
  311.         frame is transmitted to the next host in the FDDI ring
  312.      3. if the owner of the frame is any other host and the frame is not
  313.         destined for this host, the frame is forwarded to the adjacent
  314.         host.
  315.  
  316.    b. ADDR_TRANS processor node: The next layer above the MAC layer is
  317.    the addr_trans processor node. This layer provides service to the IP
  318.    layer by carrying out the function of translating the IP address to
  319.    physical interface address.  This layer accepts packets from the IP
  320.    layer with the next node information, maps the next node information
  321.    to a physical address and forwards the packet for transmission.  This
  322.    service is required only in one direction from the IP layer to the
  323.    MAC layer.  Since queuing is not done at this level, a processor node
  324.    is used to accomplish the address translation function, from IP to
  325.    MAC address (ARP).
  326.  
  327.    c. IP queue node: Network routing/forwarding in the hierarchy is
  328.    implemented here. IP layer provides service for the layers above
  329.    which are the different higher level protocols by utilizing the
  330.    services provided by the MAC layer.  For packets arriving from the
  331.    MAC layer, the IP layer decapsulates the packet and forwards the
  332.    information to an upper layer protocol based upon the value of the
  333.    protocol ID in the IP header.  For packets arriving from upper layer
  334.    protocols,  the IP layer obtains the destination address,  calculates
  335.  
  336.  
  337.  
  338. Pullen, et. al.              Informational                      [Page 6]
  339.  
  340. RFC 2490                 IP Multicast with RSVP             January 1999
  341.  
  342.  
  343.    the next node address from the routing table, encapsulates it with a
  344.    IP header and forwards the packet to the addr_trans node with the
  345.    next node information.
  346.  
  347.    The IP node is a queue node. It is in this layer that packets incur
  348.    delay which simulates the processing capability of a host and
  349.    queueing for use of the outgoing link.  A packet arrival to the IP
  350.    layer will be queued and experience delay when it finds another
  351.    packet already being transmitted, plus possibly other packets queued
  352.    for transmission.  The packets arriving at the IP layer are queued
  353.    and operate with a first-in first-out (FIFO) discipline.  The queue
  354.    size, service rate of the IP layer are both promoted attributes,
  355.    specified at the simulation run level by the environment file.
  356.  
  357.    d. IGMP processor node: The models described above are standard
  358.    components available in OPNET libraries.  We have added to these the
  359.    host multicast protocol model IGMP_host, the router multicast model
  360.    IGMP_gwy, and the unicast best-effort protocol model UBE.
  361.  
  362.    The IGMP_host node (Figure 4) is a process node.  Packets are not
  363.    queued in this layer.  IGMP_host provides unique group management
  364.    services for the multicast applications utilizing the services
  365.    provided by the IP layer. IGMP_host maintains a single table which
  366.    consists of group membership information of the application above the
  367.    IGMP layer.  The function performed by the IGMP_host layer depends
  368.    upon the type of the packet received and the source of the packet.
  369.  
  370.                      [Figure 4: IGMP process on hosts]
  371.  
  372.    The IGMP_host layer expects certain type of packets from the
  373.    application layer and from the network:
  374.  
  375.    1. Accept join group requests from the application layer (which can
  376.       be one or more applications):  IGMP_host maintains a table which
  377.       consists of the membership information for each group.  When a
  378.       application sends a  join request,  it requests to join a specific
  379.       group N.  The membership information is updated.  This new group
  380.       membership information has to be conveyed to the nearest router
  381.       and to the MAC layer.  If the IGMP_host is already a member ofthis
  382.       group (i.e. if another application above the IGMP_host is a member
  383.       of the group N), the IGMP_host does not have to send a message to
  384.       the router or indicate to the MAC layer.  If the IGMP_host is not
  385.       a member currently,  the IGMP_host generates a join request for
  386.       the group N (this is called a "response" in RFC 1112) and forwards
  387.       it to the IP layer to be sent to the nearest router.  In addition
  388.       the IGMP_host also conveys this membership information to the MAC
  389.       layer interfacing to the physical layer through the OPNET
  390.       "statistic wire" connected from the IGMP_host to the MAC layer, so
  391.  
  392.  
  393.  
  394. Pullen, et. al.              Informational                      [Page 7]
  395.  
  396. RFC 2490                 IP Multicast with RSVP             January 1999
  397.  
  398.  
  399.       that the MAC layer knows the membership information immediately
  400.       and begins to accept the frames destined for the group N. (An
  401.       OPNET statistic wire is a virtual path to send information between
  402.       OPNET models.)
  403.    2. Accept queries arriving from the nearest router and send responses
  404.       based on the membership information in the multicast table at the
  405.       IGMP_host layer:  A query is a message from a router inquiring
  406.       each host on the router's interface about group membership
  407.       information. When the IGMP_host receives a query, it looks up the
  408.       multicast group membership table, to determine if any of the
  409.       host's applications are registered for any  group.  If any
  410.       registration exists, the IGMP_host schedules an event to generate
  411.       a response after a random amount of time corresponding to each
  412.       active group.  The Ethernet example in Figure 5 and the
  413.       description in the following section describes the scenario.
  414.  
  415.                    ---------------------------------------
  416.                         |        |         |         |
  417.                         |        |         |         |
  418.                       +---+    +---+     +---+     +---+
  419.                       | H1|    | H2|     | H3|     | R |
  420.                       +---+    +---+     +---+     +---+
  421.  
  422.            Figure 5: An Ethernet example of IGMP response schedule
  423.  
  424.       The router R interfaces with the subnet on one interface I1 and to
  425.       reach the hosts.  To illustrate this let us assume that hosts H1
  426.       and H3 are members of group N1 and H2 is a  member of group N2.
  427.       When the router sends a query, all the hosts receive the query at
  428.       the same time t0.  IGMP_host in H1 schedules an event to generate
  429.       a response at a randomly generated time t1 (t1 >= t0) which will
  430.       indicate the host H1 is a member of group N1.  Similarly H2 will
  431.       schedule an event to generate a response at t2 (t2 >= t0)to
  432.       indicate membership in group N2 and H3 at t3 (t3 >= t0) to
  433.       indicate membership in group N3.  When the responses are
  434.       generated, the responses are sent with destination address set to
  435.       the multicast group address.  Thus all member hosts of a group
  436.       will receive the responses sent by the other hosts in the subnet
  437.       who are members of the same group.
  438.  
  439.       In the above example if t1 < t3,  IGMP_host in H1 will generate a
  440.       response to update the membership in group N1 before H3 does and
  441.       H3 will also receive this response in addition to the router. When
  442.       IGMP_host in H3 receives the response sent by H1,  IGMP_host in H3
  443.       cancels the event scheduled at time t3, since a response for that
  444.       group has been sent to the router.  To make this work, the events
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Pullen, et. al.              Informational                      [Page 8]
  451.  
  452. RFC 2490                 IP Multicast with RSVP             January 1999
  453.  
  454.  
  455.       to generate response to queries are scheduled randomly, and the
  456.       interval for scheduling the above described event is forced to be
  457.       less than the interval at which router sends the queries.
  458.    3. Accept responses sent by the other hosts in the subnet if any
  459.       application layer is a member of the group to which the packet is
  460.       destined.
  461.    4. Accept terminate group requests from the Application layer. These
  462.       requests are generated by application layer when a application
  463.       decides to leave a group. The IGMP_host updates the group
  464.       information table and subsequently will not send any response
  465.       corresponding to this group (unless another application is a
  466.       member of this group).  When a router does not receive any
  467.       response for a group in certain amount of time on a specific
  468.       interface, membership of that interface is canceled in that group.
  469.  
  470.    e. Unicast best-effort (UBE) processor node: This node is used to
  471.    generate a best effort traffic in the Internet based on the User
  472.    Datagram Protocol (UDP).  The objective of this node is to model the
  473.    background traffic in a network. This traffic does not use the
  474.    services provided by RSVP. UBE node aims to create the behaviors
  475.    observed in a network which has one type of application using the
  476.    services provided by RSVP to achieve specific levels of QoS and the
  477.    best effort traffic which uses the services provided by only the
  478.    underlying IP.
  479.  
  480.    The UBE node generates traffic to a randomly generated IP address so
  481.    as to model competing traffic in the network from applications such
  482.    as FTP. The packets generated are sent to the IP layer which routes
  483.    the packet based upon the information in the routing table. The
  484.    attributes of the UBE node are:
  485.  
  486.    1. Session InterArrival Time (IAT): is the variable used to schedule
  487.       an event to begin a session. The UBE node generates an
  488.       exponentially distributed random variable with mean Session IAT
  489.       and begins to generate data traffic at that time.
  490.    2. Data IAT: When the UBE generates data traffic, the interarrival
  491.       times between data packets is Data IAT. A decrease in the value of
  492.       Data IAT increases the severity of congestion in the network.
  493.    3. Session-min and Session-max: When the UBE node starts generating
  494.       data traffic it remains in that session for a random period which
  495.       is uniformly distributed between Session-min and Session-max.
  496.  
  497.    f. Multicast Application processor node: The application layer
  498.    consists of one or more application nodes which are process nodes.
  499.    These nodes use the services provided by lower layer protocols IGMP,
  500.    RSVP and IP.  The Application layer models the requests and traffic
  501.    generated by Application layer programs. Attributes of the
  502.    application layer are:
  503.  
  504.  
  505.  
  506. Pullen, et. al.              Informational                      [Page 9]
  507.  
  508. RFC 2490                 IP Multicast with RSVP             January 1999
  509.  
  510.  
  511.    1. Session IAT: is the variable used to schedule an event to begin a
  512.       session.  The Application node generates an exponentially
  513.       distributed random variable with mean Session IAT and begins to
  514.       generate information for a specific group at that time and also
  515.       accept packets belonging to that group.
  516.    2. Data IAT: When Application node generates data traffic, the inter
  517.       arrival time between the packets uses Data IAT variable as the
  518.       argument.  The distribution can be any of the available
  519.       distribution functions in OPNET.
  520.    3. Session-min and Session-max: When an application joins a session
  521.       the duration for which the application stays in that session is
  522.       bounded by Session-min and Session-max.  A uniformly distributed
  523.       random variable between Session-min and Session-max is generated
  524.       for this purpose. At any given time each node will have zero or
  525.       one flow(s) of data.
  526.    4. NGRPS: This variable is used by the application generating
  527.       multicast traffic to bound the value of the group to which an
  528.       application requests  the IGMP to join.  The group is selected at
  529.       random from the range [0,NGRPS-1].
  530.  
  531.                       [Figure 6: Node Level of Gateway]
  532.  
  533. 3.3.3 Router description
  534.  
  535.       There are two types of routers in the model, a router serving a
  536.       subnet and a backbone router.  A subnet router has all the
  537.       functions of a backbone router and in addition also has a
  538.       interface to the underlying subnet which can be either a FDDI
  539.       network or a Ethernet subnet. In the following section the subnet
  540.       router will be discussed in detail.
  541.  
  542.       Figure 6 shows the node level model of a subnet router.
  543.  
  544.       a. The queueing technique implemented in the router is a
  545.       combination of input and output queueing.  The nodes rx1 to rx10
  546.       are the receivers connected to incoming links.  The router in
  547.       Figure 6 has a physical interface to the FDDI ring or Ethernet,
  548.       which consists of the queue node MAC, transmitter phy_tx, and the
  549.       receiver phy_rx.  The backbone routers will not have a MAC layer.
  550.       The services provided and the functions of the MAC layer are the
  551.       same as the MAC layer in the host discussed above.
  552.  
  553.       There is one major difference between the MAC node in a subnet
  554.       router and that in a host.  The MAC node in a subnet router
  555.       accepts all arriving multicast packets unlike the MAC in a host
  556.       which accepts only the multicast packets for groups of which the
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Pullen, et. al.              Informational                     [Page 10]
  563.  
  564. RFC 2490                 IP Multicast with RSVP             January 1999
  565.  
  566.  
  567.       host is a member. For this reason the statistic wire from the IGMP
  568.       to MAC layer does not exist in a router (also because a subnet
  569.       router does not have an application layer).
  570.  
  571.       b. Addr_trans: The link layer in the router hierarchy is the
  572.       addr_trans processor node which provides the service of
  573.       translating the IP address to a physical address. The addr_trans
  574.       node was described above under the host model.
  575.  
  576.       c. IP layer: The router IP layer which provides services to the
  577.       upper layer transport protocols and also performs routing based
  578.       upon the information in the routing table. The IP layer maintains
  579.       two routing tables and one group membership table.
  580.  
  581.       The tables used by the router model are:
  582.  
  583.       1. Unicast routing table: This table is an single array of one
  584.       dimension, which is used to route packets generated by the UDP
  585.       process node in the hosts.  If no route is known to a particular
  586.       IP address, the corresponding entry is set to a default route.
  587.    2. Multicast routing table: This table is a N by I array where N is
  588.       the maximum number of multicast groups in the model and I is the
  589.       number of interfaces in the router.  This table is used to route
  590.       multicast packets. The routing table in a router is set by an
  591.       upper layer routing protocol (see section 4 below). When the IP
  592.       layer receives a multicast packet with a session_id corresponding
  593.       to a session which is utilizing the MOSFP, it looks up the
  594.       multicast routing table to obtain the next hop.
  595.    3. Group membership table: This table is used to maintain group
  596.       membership information of all the interfaces of the router.  This
  597.       table  which is also an N by I array is set by the IGMP layer
  598.       protocol.  The routing protocols use this information in the group
  599.       membership table to calculate and set the routes in the Multicast
  600.       routing table.
  601.  
  602.    Sub-queues: The IP node has three subqueues, which implement queuing
  603.    based upon the priority of arriving packets from the neighboring
  604.    routers or the underlying subnet. The queue with index 0 has the
  605.    highest priority.  When a packet arrives at the IP node, the packets
  606.    are inserted into the appropriate sub-queue based on the priority of
  607.    their traffic category: control traffic, resource- reserved traffic,
  608.    or best effort traffic.  A non-preemptive priority is used in
  609.    servicing the packets.  After the servicing, packets are sent to the
  610.    one of the output queues or the MAC. The packets progress through
  611.    these queues until the transmitter becomes available.
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Pullen, et. al.              Informational                     [Page 11]
  619.  
  620. RFC 2490                 IP Multicast with RSVP             January 1999
  621.  
  622.  
  623.    Attributes of the IP node are:
  624.  
  625.    1. Unique IP address for each interface (a set of transmitter and
  626.       receiver constitute an interface).
  627.    2. Service rate: the rate with which packets are serviced at the
  628.       router.
  629.    3. Queue size: size of each of the sub queues used to store incoming
  630.       packets based on the priority can be specified individually
  631.  
  632.    d. Output queues: The output queues perform the function of queueing
  633.    the packets received by the IP layer when the transmitter is busy. A
  634.    significant amount of queuing takes place in the output queues only
  635.    if the throughput of the IP node approaches the transmission capacity
  636.    of the links.  The only attribute of the queue node is:
  637.  
  638.    Queue size: size of the queue in each queue node.  If the queue is
  639.    full when a packet is received, that packet is dropped.
  640.  
  641.    e. IGMP Node: Also modeled in the router is the IGMP for implementing
  642.    multicasting, the routing protocol, and RSVP for providing specific
  643.    QoS setup.
  644.  
  645.    The IGMP node implements the IGMP protocol as defined in RFC 1112.
  646.    The IGMP node at a router (Figure 7) is different from the one at a
  647.    host. The functions of the IGMP node at a router are:
  648.  
  649.    1. IGMP node at a router sends queries at regular intervals on all
  650.       its interfaces.
  651.    2. When IGMP receives a response to the queries sent, IGMP updates
  652.       the multicast Group membership table in the IP node and triggers
  653.       on MOSPF LSA update.
  654.    3. Every time the IGMP sends a query, it also updates the multicast
  655.       group membership table in the IP node if no response has been
  656.       received on for the group on any interface,  indicating that a
  657.       interface is no longer a member of that group.  This update is
  658.       done only on entries which indicate an active membership for a
  659.       group on a interface where the router has not received a response
  660.       for the last query sent.
  661.    4. The routing protocol (see ection 4 below) uses the information in
  662.       the group membership table to calculate the routes and update the
  663.       multicast routing table.
  664.    5. When the IGMP receives a query (an IGMP at router can receive a
  665.       query from a directly connected neighboring router), the IGMP node
  666.       creates a response for each of the groups it is a member of on all
  667.       the interfaces except the one through which the query was
  668.       received.
  669.    6. The IGMP node on a backbone router is disabled, because IGMP is
  670.       only used when a router has hosts on its subnet.
  671.  
  672.  
  673.  
  674. Pullen, et. al.              Informational                     [Page 12]
  675.  
  676. RFC 2490                 IP Multicast with RSVP             January 1999
  677.  
  678.  
  679.                      [Figure 7: IGMP process on routers]
  680.  
  681. 4.  RSVP model
  682.  
  683.    The current version of the RSVP model supports only fixed-filter
  684.    reservation style. The following processing takes place in the
  685.    indicated modules. The model is current with [2].
  686.  
  687. 4.1 RSVP APPLICATION
  688.  
  689. 4.1.1  Init
  690.  
  691.    Initializes all variables and loads the distribution functions for
  692.    Multicast Group IDs, Data, termination of the session. Transit to
  693.    Idle state after completing all the initializations.
  694.  
  695. 4.1.2  Idle
  696.  
  697.    This state has transitions to two states, Join and Data_Send. It
  698.    transit to Join state at the time that the application is scheduled
  699.    to join a session or terminate the current session, transit to
  700.    Data_Send state when the application is going to send data.
  701.  
  702. 4.1.3  Join
  703.  
  704.    The Application will send a session call to local RSVP daemon. In
  705.    response it receives the session Id from the Local daemon. This makes
  706.    a sender or receiver call. The multicast group id is selected
  707.    randomly from a uniform distribution.  While doing a sender call the
  708.    application will write all its sender information in a global session
  709.    directory.
  710.  
  711.    If the application is acting as a receiver it will check for the
  712.    sender information in the session directory for the multicast group
  713.    that it wants to join to and make a receive call to the local RSVP
  714.    daemon.  Along with the session and receive calls, it makes an IGMP
  715.    join call.
  716.  
  717.    If the application chooses to terminate the session to which it was
  718.    registered, it will send a release call to the local RSVP daemon and
  719.    a terminate call to IGMP daemon.  After completing these functions it
  720.    will return to the idle state.
  721.  
  722.                     [Figure 8: RSVP process on routers]
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Pullen, et. al.              Informational                     [Page 13]
  731.  
  732. RFC 2490                 IP Multicast with RSVP             January 1999
  733.  
  734.  
  735. 4.1.4 Data_Send
  736.  
  737.    Creates a data packet and sends it to a multicast destination that it
  738.    selects. It update a counter to keep track of how many packets that
  739.    it has sent. This state on default returns to Idle state.
  740.  
  741. 4.2 RSVP on Routers
  742.  
  743.    Figure 8 shows the process model of RSVP on routers.
  744.  
  745. 4.2.1 Init
  746.  
  747.    This state calls a function called RouterInitialize which will
  748.    initialize all the router variables. This state will go to Idle state
  749.    after completing these functions.
  750.  
  751. 4.2.2 Idle
  752.  
  753.    Idle state transit to Arr state upon receiving a packet.
  754.  
  755. 4.2.3 Arr
  756.  
  757.    This state checks for the type of the packet arrived and calls the
  758.    appropriate function depending on the type of message received.
  759.  
  760.    a. PathMsgPro: This function was invoked by the Arr state when a path
  761.    message is received. Before it was called, OSPF routing had been
  762.    recomputed to get the latest routing table for forwarding the Path
  763.    Message.
  764.  
  765.    1. It first checks for a Path state block which has a matching
  766.       destination address and if the sender port or sender address or
  767.       destination port does not match the values of the Session object
  768.       of the Path state block, it sends an path error message and
  769.       returns. (At present the application does not send any error
  770.       messages, we print this error message on the console.)
  771.    2. If a PSB is found whose Session Object and Sender Template Object
  772.       matches with that of the path message received, the current PSB
  773.       becomes the forwarding PSB.
  774.    3. Search for the PSB whose session and sender template matches the
  775.       corresponding objects in the path message and whose incoming
  776.       interface matches the IncInterface. If such a PSB is found and the
  777.       if the Previous Hop Address, Next Hop Address, and SenderTspec
  778.       Object doesn't match that of path message then the values of path
  779.       message is copied into the path state block and Path Refresh
  780.       Needed flag is turned on. If the Previous Hop Address, Next Hop
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Pullen, et. al.              Informational                     [Page 14]
  787.  
  788. RFC 2490                 IP Multicast with RSVP             January 1999
  789.  
  790.  
  791.       Address of PSB differs from the path message then the Resv Refresh
  792.       Needed flag is also turned on, and the Current PSB is made equal
  793.       to this PSB.
  794.    4. If a matching PSB is not found then a new PSB is created and and
  795.       Path Refresh Needed Flag is turned on, and the Current PSB is made
  796.       equal to this PSB.
  797.    5. If Path Refresh Needed Flag is on, Current PSB is copied into
  798.       forwarding PSB and Path Refresh Sequence is executed. To execute
  799.       this function called PathRefresh is used.  Path Refresh is sent to
  800.       every interface that is in the outgoing interfaces list of
  801.       forwarding path state block.
  802.    6. Search for a Reservation State Block whose filter spec object
  803.       matches with the Sender Template Object of the forwarding PSB and
  804.       whose Outgoing Interface matches one of the entry in the
  805.       forwarding PSB's outgoing interface list. If found then a Resv
  806.       Refresh message to the Previous Hop Address in the forwarding PSB
  807.       and execute the Update Traffic Control sequence.
  808.  
  809.    b. PathRefresh: This function is called from PathMsgPro. It creates
  810.    the Path message sends the message through the outgoing interface
  811.    that is specified by the PathMsgPro.
  812.  
  813.    c. ResvMsgPro: This function was invoked by the Arr state when a Resv
  814.    message is received.
  815.  
  816.    1. Determine the outgoing interface and check for the PSB whose
  817.       Source Address and Session Objects match the ones in the Resv
  818.       message.
  819.    2. If such a PSB is not found then send a ResvErr message saying that
  820.       No Path Information is available. (We have not implemented this
  821.       message, we only print an error message on the console.)
  822.    3. Check for incompatible styles and process the flow descriptor list
  823.       to make reservations, checking the PSB list for the sender
  824.       information. If no sender information is available through the PSB
  825.       list then send an Error message saying that No Sender information.
  826.       For all the matching PSBs found, if the Refresh PHOP list doesn't
  827.       have the Previous Hop Address of the PSB then add the Previous Hop
  828.       Address to the Refresh PHOP list.
  829.    4. Check for matching Reservation State Block (RSB) whose Session and
  830.       Filter Spec Object matches that of Resv message. If no such RSB is
  831.       found then create a new RSB from the Resv Message and set the
  832.       NeworMod flag On. Call this RSB as activeRSB. Turn on the Resv
  833.       Refresh Needed Flag.
  834.    5. If a matching RSB is found, call this as activeRSB and if the
  835.       FlowSpec and Scope objects of this RSB differ from that of Resv
  836.       Message copy the Resv message Flowspec and Scope objects to the
  837.       ActiveRSB and set the NeworMod flag On.
  838.  
  839.  
  840.  
  841.  
  842. Pullen, et. al.              Informational                     [Page 15]
  843.  
  844. RFC 2490                 IP Multicast with RSVP             January 1999
  845.  
  846.  
  847.    6. Call the Update Traffic Control Sequence. This is done by calling
  848.       the function UpdateTrafficControl
  849.    7. If Resv Refresh Needed Flag is On then send a ResvRefresh message
  850.       for each Previous Hop in the Refresh PHOP List. This is done by
  851.       calling the ResvRefresh function for every Previous Hop in the
  852.       Refresh PHOP List.
  853.  
  854.    d. ResvRefresh: this function is called by both PathMsgPro and
  855.    ResvMsgPro with RSB and Previous Hop as input. The function
  856.    constructs the Resv Message from the RSB and sends the message to the
  857.    Previous Hop.
  858.  
  859.    e. PathTearPro: This function is invoked by the Arr state when a
  860.    PathTear message is received.
  861.  
  862.    1. Search for PSB whose Session Object and Sender Template Object
  863.       matches that of the arrived PathTear message.
  864.    2. If such a PSB is not found do nothing and return.
  865.    3. If a matching PSB is  found, a PathTear message is sent to all the
  866.       outgoing interfaces that are listed in the Outgoing Interface list
  867.       of the PSB.
  868.    4. Search for all the RSB whose Filter Spec Object matches the Sender
  869.       Template Object of the PSB and if the Outgoing Interface of this
  870.       RSB is listed in the PSB's Outgoing interface list delete the RSB.
  871.    5. Delete the PSB and return.
  872.  
  873.    f. ResvTearPro: This function is invoked by the Arr state when a
  874.    ResvTear message is received.
  875.    1. Determine the Outgoing Interface.
  876.    2. Process the flow descriptor list of the arrived ResvTear message.
  877.    3. Check for the RSB whose Session Object, Filter Spec Object matches
  878.       that of ResvTear message and if there is no such RSB return.
  879.    4. If such an RSB is found and Resv Refresh Needed Flag is on send
  880.       ResvTear message to all the Previous Hops that are in Refresh PHOP
  881.       List.
  882.    5. Finally delete the RSB.
  883.  
  884.    g. ResvConfPro: This function is invoked by the Arr state when a
  885.    ResvConf message is received. The Resv Confirm is forwarded to the IP
  886.    address that was in the Resv Confirm Object of the received ResvConf
  887.    message.
  888.  
  889.    h. UpdateTrafficControl: This function is called by PathMsgPro and
  890.    ResvMsgPro and input to this function is RSB.
  891.  
  892.    1. The RSB list is searched for a matching RSB that matches the
  893.       Session Object, and Filter Spec Object with the input RSB.
  894.    2. Effective Kernel TC_Flowspec are computed for all these RSB's.
  895.  
  896.  
  897.  
  898. Pullen, et. al.              Informational                     [Page 16]
  899.  
  900. RFC 2490                 IP Multicast with RSVP             January 1999
  901.  
  902.  
  903.    3. If the Filter Spec Object of the RSB doesn't match the one of the
  904.       Filter Spec Object in the TC Filter Spec List then add the Filter
  905.       Spec Object to the TC Filter Spec List.
  906.    4. If the FlowSpec Object of the input RSB is greater than the
  907.       TC_Flowspec then turn on the Is_Biggest flag.
  908.    5. Search for the matching Traffic Control State Block(TCSB) whose
  909.       Session Object, Outgoing Interface, and Filter Spec Object matches
  910.       with those of the Input RSB.
  911.    6. If such a TCSB is not found create a new TCSB.
  912.    7. If matching TCSB is found modify the reservations.
  913.    8. If Is_Biggest flag is on turn on the Resv Refresh Needed Flag
  914.       flag, else send a ResvConf Message to the IP address in the
  915.       ResvConfirm Object of the input RSB.
  916.  
  917. 4.2.4 pathmsg: The functions to be done by this state are done through
  918.    the function call PathMsgPro described above.
  919.  
  920. 4.2.5 resvmsg: The functions that would be done by this state are done
  921.    through the function call ResvMsgPro described above.
  922.  
  923. 4.2.6 ptearmsg: The functions that would be done by this state are done
  924.    through the function call PathTearPro described above.
  925.  
  926. 4.2.7 rtearmsg: The functions that would be done by this state are done
  927.   through the function call ResvTearPro described above.
  928.  
  929. 4.2.8 rconfmsg: The functions that would be done by this state are done
  930.   through the function call ResvConfPro described above.
  931.  
  932. 4.3 RSVP on Hosts
  933.  
  934.    Figure 9 shows the process of RSVP on hosts.
  935.  
  936. 4.3.1  Init
  937.  
  938.    Initializes all the variables. Default transition to idle state.
  939.  
  940.                      [Figure 9: RSVP process on hosts]
  941.  
  942. 4.3.2  idle
  943.  
  944.    This state transit to the Arr state on packet arrival.
  945.  
  946. 4.3.3  Arr
  947.  
  948.    This state calls the appropriate functions depending on the type of
  949.    message received. Default transition to idle state.
  950.  
  951.  
  952.  
  953.  
  954. Pullen, et. al.              Informational                     [Page 17]
  955.  
  956. RFC 2490                 IP Multicast with RSVP             January 1999
  957.  
  958.  
  959.    a. MakeSessionCall: This function is called from the Arr state
  960.    whenever a Session call is received from the local application.
  961.  
  962.    1. Search for the Session Information.
  963.    2. If one is found return the corresponding Session Id.
  964.    3. If the session information is not found assign a new session Id to
  965.       the session to the corresponding session.
  966.    4. Make an UpCall to the local application with this Session Id.
  967.  
  968.    b. MakeSenderCall: This function is called from the Arr state
  969.    whenever a Sender call is received from the local application.
  970.  
  971.    1. Get the information corresponding to the Session Id and create a
  972.       Path message corresponding to this session.
  973.    2. A copy of the packet is buffered and used by the host to send the
  974.       PATH message periodically.
  975.    3. This packet is sent to the IP layer.
  976.  
  977.    c. MakeReserveCall: This function is called from the Arr state
  978.    whenever a Reserve call is received from the local application. This
  979.    function will create and send a Resv message. Also, the packet is
  980.    buffered for later use.
  981.  
  982.    d. MakeReleaseCall: This function is called from the Arr state
  983.    whenever a Release call is received from the local application. This
  984.    function will generate a PathTear message if the local application is
  985.    sender or generates a ResvTear message if the local application is
  986.    receiver.
  987.  
  988. 4.3.4  Session                  This state's function is performed by
  989.    the MakeSessionCall function.
  990.  
  991. 4.3.5  Sender
  992.  
  993.    This state's function is han by the MakeSenderCall function.
  994.  
  995. 4.3.6  Reserve
  996.                                                    This state's function
  997.    is performed by the MakeReserveCall function.
  998.  
  999. 4.3.7  Release
  1000.  
  1001.    This state's function is performed by the MakeReleaseCall function.
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Pullen, et. al.              Informational                     [Page 18]
  1011.  
  1012. RFC 2490                 IP Multicast with RSVP             January 1999
  1013.  
  1014.  
  1015. 5. Multicast Routing Model Interface
  1016.  
  1017.    Because this set of models was intended particularly to enable
  1018.    evaluation by simulation of various multicast routing protocols, we
  1019.    give particular attention in this section to the steps necessary to
  1020.    interface a routing protocol model to the other models.  We have
  1021.    available implementations of DVMRP and OSPF, which we will describe
  1022.    below.  Instructions for invoking these models are contained in a
  1023.    separate User's Guide for the models.
  1024.  
  1025. 5.1  Creation of multicast routing processor node
  1026.  
  1027.    Interfacing a multicast routing protocol using the OPNET Simulation
  1028.    package requires the creation of a new routing processor node in the
  1029.    node editor and linking it via packet streams.  Packet streams are
  1030.    unidirectional links used to interconnect processor nodes, queue
  1031.    nodes, transmitters and receiver nodes.  A duplex connection between
  1032.    two nodes is represented by using two unidirectional links to connect
  1033.    the two nodes to and from each other.
  1034.  
  1035.    A multicast routing processor node is created in the node editor and
  1036.    links are created to and from the processors(duplex connection) that
  1037.    interact with this module, the IGMP processor node and the IP
  1038.    processor node.  Within the node editor, a new processor node can be
  1039.    created by selecting the button for processor creation (plain gray
  1040.    node on the node editor control panel) and by clicking on the desired
  1041.    location in the node editor to place the node.  Upon creation of the
  1042.    processor node, the name of the processor can be specified by right
  1043.    clicking on the mouse button and entering the name value on the
  1044.    attribute box presented.  Links to and from this node are generated
  1045.    by selecting the packet stream button (represented by two gray nodes
  1046.    connected with a solid green arrow on the node editor control panel),
  1047.    left clicking on the mouse button to specify the source of the link
  1048.    and right clicking on the mouse button to mark the destination of the
  1049.    link.
  1050.  
  1051. 5.2  Interfacing processor nodes
  1052.  
  1053.    The multicast routing processor node is linked to the IP processor
  1054.    node and the IGMP processor node each with a duplex connection. A
  1055.    duplex connection between two nodes is represented by two uni-
  1056.    directional links interconnecting them providing a bidirectional flow
  1057.    of information or interrupts, as shown in Figure 6.  The IP processor
  1058.    node (in the subnet router) interfaces with the multicast routing
  1059.    processor node, the unicast routing processor node, the Resource
  1060.    Reservation processor node(RSVP), the ARP processor node( only on
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Pullen, et. al.              Informational                     [Page 19]
  1067.  
  1068. RFC 2490                 IP Multicast with RSVP             January 1999
  1069.  
  1070.  
  1071.    subnet routers and hosts), the IGMP processor node, and finally the
  1072.    MAC processor node (only on subnet routers and hosts) each with a
  1073.    duplex connection with exceptions for ARP and MAC nodes.
  1074.  
  1075. 5.2.1  Interfacing ARP and MAC processor nodes
  1076.  
  1077.    The service of the ARP node is required only in the direction from
  1078.    the IP layer to the MAC layer(requiring only a unidirectional link
  1079.    from IP processor node to ARP processor node).  The MAC processor
  1080.    node on the subnet router receives multicast packets destined for all
  1081.    multicast groups in the subnet, in contrast to the MAC node on subnet
  1082.    hosts which only receives multicast packets destined specifically for
  1083.    its multicast group.  The MAC node connects to the IP processor node
  1084.    with a single uni-directional link from it to the IP node.
  1085.  
  1086. 5.2.2  Interfacing IGMP, IP, and multicast routing processor nodes
  1087.  
  1088.    The IGMP processor node interacts with the multicast routing
  1089.    processor node, unicast routing processor node, and the IP processor
  1090.    node. Because the IGMP node is linked to the IP node, it is thus able
  1091.    to update the group membership table(in this model, the group
  1092.    membership table is represented by the local interface(interface 0)
  1093.    of the multicast routing table data structure) within the IP node.
  1094.    This update triggers a signal to the multicast routing processor node
  1095.    from the IGMP node causing it to reassess the multicast routing table
  1096.    within the IP node.  If the change in the group membership table
  1097.    warrants a modification of the multicast routing table, the multicast
  1098.    routing processor node interacts with the IP node to modify the
  1099.    current multicast routing table according to the new group membership
  1100.    information updated by IGMP.
  1101.  
  1102. 5.2.2.1  Modification of group membership table
  1103.  
  1104.    The change in the group membership occurs with the decision at a host
  1105.    to leave or join a particular multicast group.  The IGMP process on
  1106.    the gateway periodically sends out queries to the IGMP processes on
  1107.    hosts within the subnet in an attempt to determine which hosts
  1108.    currently are receiving packets from particular groups.  Not
  1109.    receiving a response for a pending IGMP host query specific to a
  1110.    group indicates to the gateway IGMP that no host belonging to the
  1111.    particular group exists in the subnet.  This occurs when the last
  1112.    remaining member of a multicast group in the subnet leaves.  In this
  1113.    case the IGMP processor node updates the group membership able and
  1114.    triggers a modification of the multicast routing table by alerting
  1115.    the multicast routing processor node.  A prune message specific to
  1116.    the group is initiated and propagated upward establishing a  prune
  1117.    state for the interface leading to the present subnet, effectively
  1118.    removing this subnet from the group-specific multicast spanning tree
  1119.  
  1120.  
  1121.  
  1122. Pullen, et. al.              Informational                     [Page 20]
  1123.  
  1124. RFC 2490                 IP Multicast with RSVP             January 1999
  1125.  
  1126.  
  1127.    and potentially leading to additional pruning of spanning tree edges
  1128.    as the prune message travels higher up the tree.  Joining a multicast
  1129.    group is also managed by the IGMP process which updates the group
  1130.    membership table leading to a possible modification of the multicast
  1131.    routing table.
  1132.  
  1133. 5.2.2.2  Dependency on unicast routing protocol
  1134.  
  1135.    The multicast routing protocol is dependent on a unicast routing
  1136.    protocol (RIP or OSPF) to handle  multicast routing.  The next hop
  1137.    interface to the source of the packet received, or the upstream
  1138.    interface, is determined using the unicast routing protocol to trace
  1139.    the reverse path back to the source of the packet.  If the packet
  1140.    received arrived on this upstream interface, then the packet can be
  1141.    propagated downstream through its downstream interfaces (excluding
  1142.    the interface in which the packet was received). Otherwise, the
  1143.    packet is deemed to be a duplicate and dropped, halting the
  1144.    propagation of the packet downstream.  This repeated reverse path
  1145.    checking and broadcasting eventually generates the spanning tree for
  1146.    multicast routing of packets.  To determine the reverse path forward
  1147.    interface of a received multicast packet propagated up from the IP
  1148.    layer, the multicast routing processor node retrieves a copy of the
  1149.    unicast routing table from the IP processor node and uses it to
  1150.    recalculate the multicast routing table in the IP processor node.
  1151.  
  1152. 5.3  Interrupt Generation
  1153.  
  1154.    Using the OPNET tools, interrupts to the multicast routing processor
  1155.    node are generated in several ways.  One is the arrival of a
  1156.    multicast packet along a packet stream (at the multicast routing
  1157.    processor node) when the packet is received by the MAC node and
  1158.    propagated up the IP node where upon discarding the IP header
  1159.    determination is made as to which upper layer protocol to send the
  1160.    packet.  A second type of interrupt generation occurs by remote
  1161.    interrupts from the IGMP process alerting the multicast routing
  1162.    process of an update in the group membership table.  A third occurs
  1163.    when the specific source/group (S,G) entry for a multicast packet
  1164.    received at the IP node does not exist in the current multicast
  1165.    routing table and a new entry needs to be created.  The IP node
  1166.    generates an interrupt to the multicast routing processor node
  1167.    informing it to create a new source/group entry on the multicast
  1168.    routing table.
  1169.  
  1170. 5.3.1  Types of interrupts
  1171.  
  1172.    The process interrupts generated within the OPNET model can be
  1173.    handled by specifying the types of interrupts and the conditions for
  1174.    the interrupts using the interrupt code, integer number representing
  1175.  
  1176.  
  1177.  
  1178. Pullen, et. al.              Informational                     [Page 21]
  1179.  
  1180. RFC 2490                 IP Multicast with RSVP             January 1999
  1181.  
  1182.  
  1183.    the condition for a specific interrupt.  The conditions for
  1184.    interrupts are specified on the interrupt stream linking the
  1185.    interrupt generating state and the state resulting from the
  1186.    interrupt.  For self-interrupts (interrupts occurring among states
  1187.    within the same process), interrupts of type OPC_INTRPT_SELF are
  1188.    used.  For remote interrupts (interprocess interrupts), the
  1189.    conditions for specific interrupts are specified from the idle state
  1190.    to the state resulting from the interrupt within the remote process.
  1191.  
  1192.    The remote interrupts are of type, OPC_INTRPT_REMOTE.  A third type
  1193.    of interrupt is the OPC_INTRPT_STRM, which is triggered when packets
  1194.    arrive via a packet stream, indicating its arrival.  The condition of
  1195.    this interrupt is also specified from the idle state to the resultant
  1196.    state by the interrupt condition stream defined by a unique interrupt
  1197.    code.  For all of these interrupts, the interrupt code is provided
  1198.    within the header block (written in C language) of the interrupted
  1199.    process.  When the condition for the interrupt becomes true, a
  1200.    transition is made to the resultant state specified by the interrupt
  1201.    stream.
  1202.  
  1203. 5.3.2  Conditions for interrupts
  1204.  
  1205.    Several interrupt connections exist to interface the IGMP processor
  1206.    node, IP processor node , and the multicast routing processor node
  1207.    with each other in the present OPNET Simulation Model.  Also, the IP
  1208.    processor node interfaces with the unicast routing protocol which
  1209.    interfaces with the IGMP processor node.  An OPC_INTRPT_STRM
  1210.    interrupt is generated when a multicast packet arrives via a packet
  1211.    stream from the IP processor node to the multicast routing processor
  1212.    node.  A remote interrupt of type, OPC_INTRPT_REMOTE, is generated
  1213.    from the IGMP process to the IP process when a member of a group
  1214.    relinquishes membership from a particular group or a new member is
  1215.    added to a group.  This new membership is updated in the group
  1216.    membership table located in the IP node by the IGMP process which
  1217.    also generates a remote interrupt to the multicast routing protocol
  1218.    process, causing a recalculation of the multicast routing table in
  1219.    the IP module.
  1220.  
  1221. 5.4  Modifications of modules in the process model
  1222.  
  1223.    Modifications of routing protocol modules (in fact all of the modules
  1224.    in the process model) are made transparently throughout the network
  1225.    using the OPNET Simulation tools.  An addition or modification of a
  1226.    routing module in any subnet will reflect on all the subnets.
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Pullen, et. al.              Informational                     [Page 22]
  1235.  
  1236. RFC 2490                 IP Multicast with RSVP             January 1999
  1237.  
  1238.  
  1239. 6.  OSPF and MOSPF Models
  1240.  
  1241.    OSPF and MOSPF models [5] are implemented in the OSPF model
  1242.    containing fourteen states. They only exist on routers. Figure 10
  1243.    shows the process model. The following processing takes place in the
  1244.    indicated modules.
  1245.  
  1246. 6.1 init
  1247.  
  1248.    This state initializes all the router variables. Default transition
  1249.    to idle state.
  1250.  
  1251. 6.2 idle
  1252.  
  1253.    This state has several transitions. If a packet arrives it transits
  1254.    to arr state. Depending on interrupts received it will transit to
  1255.    BCOspfLsa, BCMospfLsa, hello_pks state. In future versions, links
  1256.    coming up or down will also cause a transition.
  1257.  
  1258. 6.3 BCOspfLsa
  1259.  
  1260.    Transition to this state from idle state is executed whenever the
  1261.    condition send_ospf_lsa is true, which happens when the network is
  1262.    being initialized, and when ospf_lsa_refresh_timout occurs. This
  1263.    state will create Router, Network, Summary Link State Advertisements
  1264.    and pack all of them into an Link State Update packet. The Link State
  1265.    Update Packet is sent to the IP layer with a destination address of
  1266.    AllSPFRouters.
  1267.  
  1268.            [Figure 10: OSPF and MOSPF process model on routers]
  1269.  
  1270. 6.4 BCMospfLsa
  1271.  
  1272.    Transition to this state from idle state is executed whenever the
  1273.    condition send_mospf_lsa is true. This state will create Group
  1274.    Membership Link State Advertisement and pack them into Mospf Link
  1275.    State Update Packet. This Mospf Link State Update Packet is sent to
  1276.    IP layer with a destination address of AllSPFRouters.
  1277.  
  1278. 6.5 arr
  1279.  
  1280.    The arr state checks the type of packet that is received upon a
  1281.    packet arrival. It calls the following functions depending on the
  1282.    protocol Id of the packet received.
  1283.  
  1284.    a. OspfPkPro: Depending on the type of OSPF/MOSPF packet received the
  1285.    function calls the following functions.
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Pullen, et. al.              Informational                     [Page 23]
  1291.  
  1292. RFC 2490                 IP Multicast with RSVP             January 1999
  1293.  
  1294.  
  1295.    1. HelloPk_pro: This function is called whenever a hello packet is
  1296.       received. This function updates the router's neighbor information,
  1297.       which is later used while sending the different LSAs.
  1298.    2. OspfLsUpdatePk_pro: This function is called when an OSPF LSA
  1299.       update packet is received (router LSA, network LSA, or summary
  1300.       LSA). If the Router is an Area Border Router or if the LSA belongs
  1301.       to the Area whose Area Id is the Routers Area Id, then it is
  1302.       searched to determine whether this LSA already exists in the Link
  1303.       State database. If it exists and if the existing LSA's LS Sequence
  1304.       Number is less than the received LSA's LS Sequence Number the
  1305.       existing LSA was replaced with the received one. The function
  1306.       processes the Network LSA only if it is a designated router or
  1307.       Area Border Router.  It processes the Summary LSA only if the
  1308.       router is a Area Border Router.  The function also turns on the
  1309.       trigger ospfspfcalc which is the condition for the transition from
  1310.       arr state to ospfspfcalc.
  1311.    3. MospfLsUpdatePk_pro: This function is called when a MOSPF LSA
  1312.       update packet is received. It updates the group membership link
  1313.       state database of the router.
  1314.  
  1315. 6.6 hello_pks
  1316.  
  1317.    Hello packets are created and sent with destination address of
  1318.    AllSPFRouters. Default transition to idle state.
  1319.  
  1320. 6.7 mospfspfcalc
  1321.  
  1322.    The following functions are used to calculate the shortest path tree
  1323.    and routing table. This state transit to upstr_node upon detupstrnode
  1324.    condition.
  1325.  
  1326.    a. CandListInit: Depending upon the SourceNet of the datagram, the
  1327.    candidate lists are initialized.
  1328.  
  1329.    b. MospfCandAddPro: The vertex link is examined and if the other end
  1330.    of the link is not a stub network and is not already in the candidate
  1331.    list it is added to the candidate list after calculating the cost to
  1332.    that vertex. If this other end of the link is already on the shortest
  1333.    path tree and the calculated cost is less than the one that shows in
  1334.    the shortest path tree entry update the shortest path tree to show
  1335.    the calculated cost.
  1336.  
  1337.    c. MospfSPFTreeCalc: The vertex that is closest to the root that is
  1338.    in the candidate list is added to the shortest path tree and its link
  1339.    is considered for possible inclusions in the candidate list.
  1340.  
  1341.    d. MCRoutetableCalc: Multicast routing table is calculated using the
  1342.    information of the MOSPF shortest Path tree.
  1343.  
  1344.  
  1345.  
  1346. Pullen, et. al.              Informational                     [Page 24]
  1347.  
  1348. RFC 2490                 IP Multicast with RSVP             January 1999
  1349.  
  1350.  
  1351. 6.8 ospfspfcalc
  1352.  
  1353.    The following functions are used in this state to calculate the
  1354.    shortest path tree and using this information the routing table.
  1355.    Transition to ospfspfcalc state on ospfcalc condition. This is set to
  1356.    one after processing all functions in the state.
  1357.  
  1358.    a. OspfCandidateAddPro: This function initializes the candidate list
  1359.    by examining the link state advertisement of the Router. For each
  1360.    link in this advertisement, if the other end of the link is a router
  1361.    or transit network and if it is not already in the shortest-path tree
  1362.    then calculate the distance between these vertices. If the other end
  1363.    of this link is not already on the candidate list or if the distance
  1364.    calculated is less than the value that appears for this other end add
  1365.    the other end of the link to candidate list.
  1366.  
  1367.    b. OspfSPTreeBuild: This function pulls each vertex from the
  1368.    candidate list that is closest to the root and adds it to the
  1369.    shortest path tree.  In doing so it deletes the vertex from the
  1370.    candidate list. This function continues to do this until the
  1371.    candidate list is empty.
  1372.  
  1373.    c. OspfStubLinkPro: In this procedure the stub networks are added to
  1374.    shortest path tree.
  1375.  
  1376.    d. OspfSummaryLinkPro: If the router is an Area Border Router the
  1377.    summary links that it has received is examined. The route to the Area
  1378.    border router advertising this summary LSA is examined in the routing
  1379.    table. If one is found a routing table update is done by adding the
  1380.    route to the network specified in the summary LSA and the cost to
  1381.    this route is sum of the cost to area border router advertising this
  1382.    and the cost to reach this network from that area border router.
  1383.  
  1384.    e. RoutingTableCalc: This function updates the routing table by
  1385.    examining the shortest path tree data structure.
  1386.  
  1387. 6.9 upstr_node
  1388.  
  1389.    This state does not do anything in the present model. It transitions
  1390.    to DABRA state.
  1391.  
  1392. 6.10 DABRA
  1393.  
  1394.    If the router is an Area Border Router and the area is the source
  1395.    area then a DABRA message is constructed and send to all the
  1396.    downstream areas. Default transition to idle state.
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Pullen, et. al.              Informational                     [Page 25]
  1403.  
  1404. RFC 2490                 IP Multicast with RSVP             January 1999
  1405.  
  1406.  
  1407. 7. DVMRP Model
  1408.  
  1409.    The DVMRP model is implemented based on reference [6], DVMRP version
  1410.    3. There are nine states. The DVMRP process only exists on Routers.
  1411.    Figure 11 shows the states of the DVMRP process.
  1412.  
  1413. 7.1 Init
  1414.  
  1415.    Initialize all variables, routing table and forwarding table and load
  1416.    the simulation parameters. It will transit to the Idle state after
  1417.    completing all the initializations.
  1418.  
  1419. 7.2 Idle
  1420.  
  1421.    The simulation waits for the next scheduled event or remotely invoked
  1422.    event in the Idle State and transit to the state accordingly. In the
  1423.    DVMRP model, Idle State has transitions to Probe_Send, Report_Send,
  1424.    Prune_Send, Graft_Send, Arr_Pkt, Route_Calc and Timer states.
  1425.  
  1426.                    [Figure 11. DVMRP process on routers]
  1427.  
  1428. 7.3 Probe_Send State
  1429.  
  1430.    A DVMRP router sends Probe messages periodically to inform other
  1431.    DVMRP routers that it is operational. A DVMRP router lists all its
  1432.    known neighbors' addresses in the Probe message and sends it to All-
  1433.    DVMRP-Routers address. The routers will not process any message that
  1434.    comes from an unknown neighbor.
  1435.  
  1436. 7.4 Report_Send
  1437.  
  1438.    To avoid sending Report at the same time for all DVMRP routers, the
  1439.    interval between two Report messages is uniformly distributed with
  1440.    average 60 seconds. The router lists source router's address,
  1441.    upstream router's address and metric of all sources into the Report
  1442.    message and sends it to All-DVMRP-Routers address.
  1443.  
  1444. 7.5 Prune_Send
  1445.  
  1446.    The transition to this state is triggered by the local IGMP process.
  1447.    When a host on the subnetwork drops from a group, the IGMP process
  1448.    asks DVMRP to see if the branch should be pruned.
  1449.  
  1450.    The router obtains the group number from IGMP and checks the IP
  1451.    Multicast membership table to find out if there is any group member
  1452.    that is still in the group. If the router determines that the last
  1453.    host has resigned, it goes through the entire forwarding table to
  1454.    locate all sources for that group. The router sends Prune message,
  1455.  
  1456.  
  1457.  
  1458. Pullen, et. al.              Informational                     [Page 26]
  1459.  
  1460. RFC 2490                 IP Multicast with RSVP             January 1999
  1461.  
  1462.  
  1463.    containing source address, group address and prune lifetime,
  1464.    separately for each (source, group) pair and records the row as
  1465.    pruned in the forwarding table.
  1466.  
  1467. 7.6 Graft_Send
  1468.  
  1469.    The transition to this state is triggered by the local IGMP process.
  1470.    Once a multicast delivery has been pruned, Graft messages are
  1471.    necessary when a host in the local subnetwork joins into the group. A
  1472.    Graft message sent to the upstream router should be acknowledged hop
  1473.    by hop to the root of the tree guaranteeing end-to-end delivery.
  1474.  
  1475.    The router obtains the group number from IGMP and go through the
  1476.    forwarding table to locate all traffic sources for that group. A
  1477.    Graft message will be sent to the upstream router with the source
  1478.    address and group address for each (source, group) pair. The router
  1479.    also setups a timer for each Graft message waiting for an
  1480.    acknowledgement.
  1481.  
  1482. 7.7 Arr_Pkt
  1483.  
  1484.    All DVMRP control messages will be sent up to DVMRP layer by IP. The
  1485.    function performed by the DVMRP layer depends upon the type of the
  1486.    message received.
  1487.  
  1488.    a. Probe message: The router checks the neighbors' list in Probe
  1489.    message, update its their status to indicate the availability of its
  1490.    neighbors.
  1491.  
  1492.    b. Report message: Based on exchanging report messages, the routers
  1493.    can build the Multicast delivery tree rooted at each source. A
  1494.    function called ReportPkPro will be called to handle all possible
  1495.    situations when receiving a report message. If the message is a
  1496.    poison reverse report and not coming from one of the dependent
  1497.    downstreams, the incoming interface should be added to the router's
  1498.    downstream list. If the message is not a poison reverse report but it
  1499.    came from one of the downstreams, this interface should be deleted
  1500.    from the downstreams list. And then, the router compared the metric
  1501.    got from the message with the metric of the current upstream, if the
  1502.    new metric is less than the older one, the router's upstream
  1503.    interface should be updated.
  1504.  
  1505.    c. Prune message: The router extracts the source address, group
  1506.    address and prune lifetime, marks the incoming interface as pruned in
  1507.    the dependent downstream list of the (source, group) pair. If all
  1508.    downstream interfaces have been pruned, the router will send a prune
  1509.    message to its upstream.
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Pullen, et. al.              Informational                     [Page 27]
  1515.  
  1516. RFC 2490                 IP Multicast with RSVP             January 1999
  1517.  
  1518.  
  1519.    d. Graft message: The router extracts the source and group address,
  1520.    active the incoming interface in the dependent downstream list of the
  1521.    (source, group) pair. If the (source, group) pair has been pruned,
  1522.    the router will reconnect the branch by sending a graft message to
  1523.    its upstream interface.
  1524.  
  1525.    e. Graft Acknowledge message: The router extracts the source and
  1526.    group address, clear the graft message timer of the (source, group)
  1527.    pair in the forwarding table.
  1528.  
  1529. 7.8 Route_Calc
  1530.  
  1531.    The transition to this state is triggered by the local IP process.
  1532.    Once the IP receives a packet, it will fire a remote interrupt to the
  1533.    DVMRP and ask the DVMRP to prepare the outgoing interfaces for the
  1534.    packet. The DVMRP process obtains the packet's source address and
  1535.    group address from the IP and checks the (source, group) pairs in the
  1536.    forwarding table to decide the branches that have the group members
  1537.    on the Multicast delivery tree. The Group Membership Table on IP will
  1538.    be updated based on this knowledge.
  1539.  
  1540. 7.9 Timer
  1541.  
  1542.    This state is activated once every second. It checks the forwarding
  1543.    table, if the Graft message acknowledgment timer is expired, The
  1544.    router will retransmit the Graft message to the upstream. If the
  1545.    prune state lifetime timer is expired, the router will graft this
  1546.    interface so that the downstream router can receive the packets to
  1547.    the group again. The router also checks if the (source, group) pair
  1548.    is pruned by the upstream router, if so, it will send a graft message
  1549.    to the upstream interface.
  1550.  
  1551. 8. Simulation performance
  1552.  
  1553.    Our simulations of three network models with MOSPF routing have
  1554.    showed good Scalability of the protocol. The running platform we used
  1555.    is a SGI Octane Station with 512 MB main memory and MIPS R10000 CPU,
  1556.    Rev 2.7. Here we list the real running time of each model along with
  1557.    its major elements and the packet inter-arrival times for the streams
  1558.    generated in the hosts.
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Pullen, et. al.              Informational                     [Page 28]
  1571.  
  1572. RFC 2490                 IP Multicast with RSVP             January 1999
  1573.  
  1574.  
  1575. Simulated      Debug Model       Intermediate Model      Large Model
  1576.   time         11 Routers           42 routers           86 routers
  1577.                 12 Hosts             48 hosts             96 hosts
  1578.  
  1579.               Reserve Data         Reserve Data         Reserve Data
  1580.                  0.01s                0.02s                 0.02s
  1581.            Best-effort Data      Best-effort Data      Best-effort Data
  1582.                  0.01s                0.025s               0.025s
  1583.  
  1584.   100 s        3 hours               14 hours             30 hours
  1585.   200 s        7 hours               30 hours               - - -
  1586.  
  1587. 9.  Future work
  1588.  
  1589.    We hope to receive assistance from the IPmc/RSVP development
  1590.    community within the IETF in validating and refining this model.  We
  1591.    believe it will be a useful tool for predicting the behavior of
  1592.    RSVP-capable systems.
  1593.  
  1594. 10.  Security Considerations
  1595.  
  1596.    This RFC raises no security considerations.
  1597.  
  1598. 11.  References
  1599.  
  1600.    [1] Deering, S., "Host Requirements for IP Multicasting", STD 5,
  1601.        RFC 1112, August 1989.
  1602.  
  1603.    [2] Braden, R., Zhang, L., Berson, S., Herzog, S. and S. Jamin,
  1604.        "Resource Reservation Protocol (RSVP) -- Version 1 Functional
  1605.        Specification", RFC 2205, September 1997.
  1606.  
  1607.    [3] Wroclawski, J., "The Use of RSVP with IETF Integrated Services",
  1608.        RFC 2210, September 1997.
  1609.  
  1610.    [4] MIL3 Inc., "OPNET Modeler Tutorial Version 3", Washington, DC,
  1611.        1997
  1612.  
  1613.    [5] Moy, J., "Multicast Extensions to OSPF", RFC 1584, March 1994.
  1614.  
  1615.    [6] Pusateri, T., "Distance Vector Multicast Routing Protocol", Work
  1616.        in Progress.
  1617.  
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Pullen, et. al.              Informational                     [Page 29]
  1627.  
  1628. RFC 2490                 IP Multicast with RSVP             January 1999
  1629.  
  1630.  
  1631. Authors' Addresses
  1632.  
  1633.    J. Mark Pullen
  1634.    C3I Center/Computer Science
  1635.    Mail Stop 4A5
  1636.    George Mason University
  1637.    Fairfax, VA 22032
  1638.  
  1639.    EMail: mpullen@gmu.edu
  1640.  
  1641.  
  1642.    Ravi Malghan
  1643.    3141 Fairview Park Drive, Suite 700
  1644.    Falls Church VA 22042
  1645.  
  1646.    EMail: rmalghan@bacon.gmu.edu
  1647.  
  1648.  
  1649.    Lava K. Lavu
  1650.    Bay Networks
  1651.    600 Technology Park Dr.
  1652.    Billerica, MA 01821
  1653.  
  1654.    EMail: llavu@bacon.gmu.edu
  1655.  
  1656.  
  1657.    Gang Duan
  1658.    Oracle Co.
  1659.    Redwood Shores, CA 94065
  1660.  
  1661.    EMail: gduan@us.oracle.com
  1662.  
  1663.  
  1664.    Jiemei Ma
  1665.    Newbridge Networks Inc.
  1666.    593 Herndon Parkway
  1667.    Herndon, VA 20170
  1668.  
  1669.    EMail: jma@newbridge.com
  1670.  
  1671.  
  1672.    Hoon Nah
  1673.    C3I Center
  1674.    Mail Stop 4B5
  1675.    George Mason University
  1676.    Fairfax, VA 22030
  1677.  
  1678.    EMail: hnah@bacon.gmu.edu
  1679.  
  1680.  
  1681.  
  1682. Pullen, et. al.              Informational                     [Page 30]
  1683.  
  1684. RFC 2490                 IP Multicast with RSVP             January 1999
  1685.  
  1686.  
  1687. Full Copyright Statement
  1688.  
  1689.    Copyright (C) The Internet Society (1999).  All Rights Reserved.
  1690.  
  1691.    This document and translations of it may be copied and furnished to
  1692.    others, and derivative works that comment on or otherwise explain it
  1693.    or assist in its implementation may be prepared, copied, published
  1694.    and distributed, in whole or in part, without restriction of any
  1695.    kind, provided that the above copyright notice and this paragraph are
  1696.    included on all such copies and derivative works.  However, this
  1697.    document itself may not be modified in any way, such as by removing
  1698.    the copyright notice or references to the Internet Society or other
  1699.    Internet organizations, except as needed for the purpose of
  1700.    developing Internet standards in which case the procedures for
  1701.    copyrights defined in the Internet Standards process must be
  1702.    followed, or as required to translate it into languages other than
  1703.    English.
  1704.  
  1705.    The limited permissions granted above are perpetual and will not be
  1706.    revoked by the Internet Society or its successors or assigns.
  1707.  
  1708.    This document and the information contained herein is provided on an
  1709.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1710.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1711.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1712.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1713.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Pullen, et. al.              Informational                     [Page 31]
  1739.  
  1740.