home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-pullen-ipv4-rsvp-00.txt < prev    next >
Text File  |  1996-11-26  |  41KB  |  830 lines

  1.  
  2. INTERNET DRAFT                                  J.M.Pullen
  3. Expiration: 25 April 1997                         George Mason University
  4.                                                 Ravi Malghan
  5.                                                   COMSAT Incorporated
  6.                                                 Lava K. Lavu
  7.                                                   George Mason University
  8.                                                 25 November 1996
  9.  
  10.  
  11.              A Simulation Model for IP Multicast with RSVP
  12.                     <draft-pullen-ipv4-rsvp-00.txt>
  13.  
  14. Status of this Memo
  15.  
  16.    This document is an Internet-Draft.  Internet-Drafts are working
  17.    documents of the Internet Engineering Task Force (IETF), its
  18.    areas, and its working groups.  Note that other groups may also
  19.    distribute working documents as Internet-Drafts.
  20.  
  21.    Internet-Drafts are draft documents valid for a maximum of six
  22.    months and may be updated, replaced, or obsoleted by other
  23.    documents at any time.  It is inappropriate to use Internet-
  24.    Drafts as reference material or to cite them other than as
  25.    ``work in progress''
  26.  
  27.    To learn the current status of any Internet-Draft, please check
  28.    the ``1id-abstracts.txt'' listing contained in the Internet-
  29.    Drafts Shadow Directories on ftp.is.co.za (Africa),
  30.    nic.nordu.net (Europe), munnari.oz.au (Pacific Rim),
  31.    ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).
  32.  
  33.  
  34. Abstract
  35.  
  36.    This document describes a detailed model of IPV4 multicast with
  37.    RSVP that has been developed using the OPNET simulation package
  38.    but could be ported to any descrete event simulation package
  39.    with procedures defined in the C language.  The model was 
  40.    developed to allow investigation of performance constraints on 
  41.    routing but should have wide applicability in the Internet
  42.    multicast/resource reservation community.  We are making this
  43.    model publicly available with the intention that it can be used
  44.    to provide expanded studies of resource-reserved multicasting.
  45.  
  46. 1.  Background
  47.  
  48.    The successful deployment of IP multicasting [1] and its availability in
  49.    the Mbone has led to continuing increase in real-time multimedia 
  50.    Intermet applications.  Because the Internet has traditionally supported
  51.    only a best-effort quality of service, there is considerable interest
  52.    to create mechanisms that will allow adequate resources to be reserved
  53.    in networks using the Internet protocol suite, such that the quality
  54.    of real-time traffic such as video and voice can be sustained at 
  55.    specified levels.  The RSVP protocol [2] has been developed for this 
  56.    purpose and is the subject of considerable ongoing implementation
  57.    efforts.  Although the developers of RSVP have used simulation in their
  58.    design process, no simulation of IPmc with RSVP is generally available
  59.  
  60.    for analysis of the performance and prediction of the behavior of these
  61.    protocols.  The simulation model described here was developed to fill
  62.    this gap, and is explicitly intended to be made available to the
  63.    IETF community.
  64.  
  65. 2.  The OPNET Simulation Environment
  66.  
  67.    The Optimized Network Engineering Tools (OPNET) is a commercial 
  68.    simulation product of the MIL3 company of Arlington, VA.  It employs a
  69.    Discrete Event Simulation approach that allows large numbers of
  70.    closely-spaced events in a sizable network to be represented accurately
  71.    and efficiently.  OPNET uses a modeling approach where networks are
  72.    built of components interconnected by perfect links (which can be
  73.    degraded at will).  Each component's behavior is modeled as a state-
  74.    transition diagram.  The process that takes place in each state is
  75.    described by a program in the C language.  We believe this makes the
  76.    OPNET-based models relatively easy to port to other modeling 
  77.    environments.  Perhaps more importantly, given the widespread 
  78.    availability of OPNET, it makes them highly efficient so that extended 
  79.    period of network behavior can be simulated in considerable detail, even 
  80.    for large networks.
  81.  
  82.    The folowing sections describe the state-transition models and process
  83.    code for the IPmc and RSVP models we have created using OPNET.
  84.  
  85.  
  86. 3.  IP Multicast Model
  87.  
  88.    The state-transition diagrams for the IPmc model are available at
  89.    http://bacon.gmu.edu/qosip/igmp  {In the  postscript 
  90.    version we will include them at this point.}
  91.  
  92.    The following processing takes place in the indicated modules.
  93.    Each subsection below describes in detail each layer in the host and 
  94.    the router with the help of the corresponding OPNET network layer or 
  95.    node layer or the process layer starting from physical layer.
  96.  
  97. 3.1.1 Address format  
  98.  
  99.    The OPNET IP model has only one type of addressing denoted by "X.Y" 
  100.    where X is 24 bits long and Y is 8 bits long.  The X indicates the 
  101.    destination or the source network number and Y indicates the 
  102.    destination or the source node number.  In our model X = 500 is 
  103.    reserved for multicast traffic.  For multicast traffic the value of Y 
  104.    indicates the group to which the packet belongs.
  105.  
  106. 3.1 Network Layer
  107.  
  108.    Fig 6.1 describes an example network topology built using the OPNET 
  109.    network editor.  This network consists of two backbone routers BR2,  
  110.    BR4, three area border routers BR0,  BR1,  BR3 and six subnets F0,  
  111.    through F5.  As OPNET has no full duplex link model, each connecting 
  112.    link is modeled as two simplex links enabling bi-directional traffic.  
  113.  
  114. 3.1.1 Attributes
  115.  
  116.    The attributes of the elements of the network layer are:
  117.    
  118.    a. Area Border Routers and Backbone routers
  119.      1. IP address of each active interface of each router  
  120.         (network_id.node_id)
  121.      2. Service rate of the IP layer ( packets/sec)
  122.      3. Transmission speeds of each active interface (bits/sec)
  123.       
  124.    b. Subnets
  125.      1. IP address of each active interface of the router in the subnet
  126.      2. IP address of the hosts in each of the subnet.
  127.      3. Service rate of the IP layer in the subnet router and the hosts.
  128.  
  129.    c. Simplex links
  130.      1. Propagation delay in the links
  131.      2. the process model to be used for simulating the simplex links 
  132.         (this means whether animation is included or not).
  133.  
  134. 3.1.2 FDDI Subnets 
  135.  
  136.    Fig 6.2 shows the FDDI ring in a subnet and a Ethernet in a subnet. 
  137.    Both of the subnets will have one router and one or more  hosts.  The 
  138.    routers in the subnet are included to route the traffic between the 
  139.    FDDI ring or Ethernet in the corresponding subnet and the external 
  140.    network.  The subnet router is connected on one end to Ethernet or 
  141.    FDDI ring and generally connected to an area border router on another 
  142.    interface (the subnet routers are connected to more than one backbone 
  143.    router).  In the Ethernet all the hosts are connected to the bus        
  144.    and in FDDI ring the hosts are interconnected as illustrated in  
  145.    figure 6.2.
  146.  
  147.    FDDI provides general purpose networking at 100 Mb/sec transmission 
  148.    rates for large numbers of communicating stations configured in a ring 
  149.    topology.  Use of ring bandwidth is controlled through a timed token 
  150.    rotation protocol, wherein stations must receive a token and meet 
  151.    with a set of timing and priority criteria before transmitting frames.  
  152.    In order to accommodate network applications in which response times
  153.    are critical,  FDDI provides for deterministic availability of ring 
  154.    bandwidth by defining a synchronous transmission service. Asynchronous 
  155.    frame transmission requests dynamically share the remaining ring 
  156.    bandwidth.  
  157.  
  158. 3.1.3 Ethernet subnets   
  159.  
  160.    Ethernet is a bus-based local area network (LAN) technology.  The 
  161.    operation of the LAN is managed by a media access protocol (MAC) which 
  162.    has been standardized by the IEEE under the name 802.3.  The role of 
  163.    this MAC protocol is to provide efficient and fair sharing of the 
  164.    communication channel connecting the stations of the LAN.
  165.  
  166. 3.2 Node layer
  167.  
  168.    This section discusses the internal structure of the hosts and routers 
  169.    with the help of node level illustrations built using the Node editor 
  170.    of OPNET.
  171.  
  172.  
  173. 3.2.1 Basic elements
  174.  
  175.    The basic elements of a node level illustration are
  176.  
  177.    a. Processor nodes: Processor nodes are used for processing incoming 
  178.    packets and generating packets with a specified packet format.
  179.  
  180.    b. Queue node: Queue nodes are a superset of processor nodes. In 
  181.    addition to the capabilities of processor nodes,  queue nodes also 
  182.    have capability to store packets in one or more queues.
  183.  
  184.    c. Transmitter and Receiver nodes: Transmitters simulate the 
  185.    link behavior effect of packet transmission and Receivers simulate the 
  186.    receiving effects of packet reception.  The transmission speed is an 
  187.    attribute of the transmitter and receiving speed is an attribute of 
  188.    the receiver. These values together decide the transmission delay of a 
  189.    packet.
  190.  
  191.    d. Packet streams: Packet streams are used to interconnect the above 
  192.    described nodes.
  193.  
  194.    e. Statistic streams:  Statistic streams are used to convey 
  195.    information between the different nodes Processor, Queue, Transmitters 
  196.    and Receivers nodes respectively.
  197.  
  198. 3.2.2 Host description
  199.  
  200.    The host model built using OPNET has a layered structure which is very 
  201.    similar to the TCP/IP protocol suite. Fig 6.3 shows the node level 
  202.    structure of a FDDI host.  
  203.  
  204.    a. MAC queue node: The MAC interfaces on one side to the physical 
  205.    layer through the transmitter (phy_tx) and receiver (phy_rx) and also 
  206.    provides services to the IP layer.  Use of ring bandwidth is 
  207.    controlled through a timed token rotation protocol, wherein hosts must 
  208.    receive a token and meet with a set of timing and priority criteria 
  209.    before transmitting frames.  When a frame arrives at the MAC node, the 
  210.    node performs one of the following actions:
  211.      1. If the owner of the frame is this MAC, the MAC layer destroys the 
  212.         frame since the frame has finished circulating through the FDDI 
  213.         ring. 
  214.      2. if the frame is destined for this host, the MAC layer makes a 
  215.         copy of the frame, decapsulates the frame and sends the 
  216.         descapsulated frame (packet) to the IP layer.  The original frame 
  217.         is transmitted to the next host in the FDDI ring.
  218.      3. if the owner of the frame is any other host and the frame is not 
  219.         destined for this host,  the frame is forwarded to the adjacent 
  220.         host.  
  221.  
  222.    b. ADDR_TRANS processor node: The next layer above the MAC layer is 
  223.    the addr_trans processor node. This layer provides service to the IP 
  224.    layer by carrying out the function of translating the IP address to 
  225.    physical interface address.  This layer accepts packets from the IP 
  226.    layer with the next node information, maps the next node information 
  227.    to a physical address and forwards the packet for transmission.  This
  228.  
  229.    service is required only in one direction from the IP layer to the MAC 
  230.    layer.  Since queuing is not done at this level, a processor node is 
  231.    used to accomplish the address translation function.
  232.  
  233.    c. IP queue node: The next layer in the hierarchy is the IP layer.  IP 
  234.    layer provides service for the layers above which are the different 
  235.    higher level protocols by utilizing the services provided by the MAC 
  236.    layer.  For packets arriving from the MAC layer, the IP layer 
  237.    decapsulates the packet and forwards the information to an upper layer 
  238.    protocol based upon the value of the protocol ID in the IP header.  
  239.    For packets arriving from upper layer protocols,  the IP layer obtains 
  240.    the destination address,  calculates the next node address from the 
  241.    routing table, encapsulates it with a IP header and forwards the 
  242.    packet to the addr_trans node with the next node information.
  243.  
  244.    The IP node is a queue node. It is in this layer that packets incur 
  245.    delay which simulates the processing capability of a host and 
  246.    queueing for use of the outgoing link.  A packet arrival to the IP 
  247.    layer will experience delay when it finds another packet already being 
  248.    transmitted, plus possibly other packets queued for transmission.  The 
  249.    packets arriving at the IP layer are queued and operates with a first-
  250.    in first-out (FIFO) discipline.  The queue size, service rate of the 
  251.    IP layer are both promoted attributes,  specified at the simulation 
  252.    run level. 
  253.  
  254.    d. IGMP processor node:  The models described above are standard 
  255.    components available in OPNET libraries.  We have added the host 
  256.    multicast protocol model IGMP_host, the router multicast model IGMP,
  257.    and the unicast best-effort protocol model UBE.  
  258.  
  259.    The IGMP_host node is a process node.  Packets are not queued in this 
  260.    layer.  IGMP_host provides unique group management services for the 
  261.    multicast applications utilizing the services provided by the IP 
  262.    layer. IGMP_host maintains a single table which consists of group 
  263.    membership information of the application above the IGMP layer.  The 
  264.    function performed by the IGMP_host layer depends upon the type of 
  265.    the packet received and the source of the packet.
  266.  
  267.    The IGMP_host layer expects certain type of packets from the 
  268.    application layer and from the network:
  269.    1.    Accept join group requests from the application layer (it can be
  270.       one or more applications):  IGMP_host maintains a table which 
  271.       consists of the membership information for each group.  When a 
  272.       application sends a  join request,  it requests to join a specific 
  273.       group N.  The membership  information is updated.  This new group 
  274.       membership information has to be conveyed to the nearest router and 
  275.       to the MAC layer.  If the IGMP_host is already a member of this 
  276.       group (i.e. if another application above the IGMP_host is a member 
  277.       of the group N),  the IGMP_host does not have to send a message to 
  278.       the router or indicate to the MAC layer.  If the IGMP_host is not a 
  279.       member currently,  the IGMP_host generates a join request for the 
  280.       group N (this is called a "response" in RFC 1112) and forwards it 
  281.       to the IP layer to be sent to the nearest router.  In addition the 
  282.       IGMP_host also conveys this membership information to the MAC layer 
  283.       interfacing to the physical layer through the OPNET "statistic 
  284.       wire" connected from the IGMP_host to the MAC layer so that the MAC 
  285.       layer begins to accept the frames destined for the group N.
  286.  
  287.    2.    Accept queries arriving from the nearest router and send responses 
  288.       based on the membership information in the multicast table at the 
  289.       IGMP_host layer:  A query is a message from a router inquiring each 
  290.       host on the router's interface about group membership information. 
  291.       When the IGMP_host receives a query,  it looks up the multicast 
  292.       group membership table, to determine if any of the host's 
  293.       applications are registered for any  group.  If any registration 
  294.       exists, the IGMP_host schedules an event to generate a response 
  295.       after a random amount of time corresponding to each active group.
  296.       The Ethernet example in Fig 6.4 and the description in the 
  297.       following section describes the scenario.
  298.  
  299.       (See Fig 6.4, An example Ethernet architecture.)  The router R 
  300.       interfaces with the Ethernet on one interface I1 and H1, H2,  H3 
  301.       are the hosts on the Ethernet.  To illustrate this let us assume 
  302.       that the hosts H1 and H3 are members of group N1 and H2 is a member 
  303.       of group N2.  When the router sends a query,  all the hosts receive 
  304.       the query at the same time t0.  IGMP_host in H1 schedules an event 
  305.       to generate a response at a randomly generated time t1 (t1 >= t0) 
  306.       which will indicate the host H1 is a member of group N1.  Similarly 
  307.       H2 will schedule an event to generate a response at t2 (t2 >= t0) 
  308.       to indicate membership in group N2 and H3 at t3 (t3 >= t0) to 
  309.       indicate membership in group N3.  When the responses are generated, 
  310.       the responses are sent with destination address set to the 
  311.       multicast group address.  Thus all member hosts of a group will 
  312.       receive the responses sent by the other hosts in the Ethernet who 
  313.       are members of the same group.  
  314.  
  315.       In the above example if t1 < t3,  IGMP_host in H1 will generate a 
  316.       response to update the membership in group N1 before H3 does and H3 
  317.       will also receive this response in addition to the router.  When 
  318.       IGMP_host in H3 receives the response sent by H1,  IGMP_host in H3 
  319.       cancels the event scheduled at time t3, since a response for that 
  320.       group has been sent to the router.  To make this work, the 
  321.       events to generate response to queries are scheduled randomly, and
  322.       the interval for scheduling the above described event is forced to 
  323.       be less than the interval at which router sends the queries.
  324.    3. Accept responses sent by the other hosts in the subnet if any 
  325.       application layer is a member of the group to which the packet is 
  326.       destined.  The Ethernet example in Fig 6.4 described the function 
  327.       to be performed when a IGMP_host receives the response sent by 
  328.       other hosts in the subnet.
  329.    4.    Accept terminate group requests from the Application layer. These 
  330.       requests are generated by application layer when a application 
  331.       decides to leave a group. The IGMP_host updates the group 
  332.       information table and from now on will not send any response 
  333.       corresponding to this group (unless any other application is a 
  334.       member of this group).  When a router does not receive any response 
  335.       for a group in certain amount of time on a specific interface,  the 
  336.       membership is canceled for that group on that interface.
  337.  
  338.  
  339.    e. Unicast best-effort (UBE) processor node: This node is used model a 
  340.    best effort traffic in the Internet based on the User Datagram Protocol 
  341.    (UDP).  The objective of this node is to model the background traffic in 
  342.    a  network.  This traffic does not use the services provided QOSPF or 
  343.  
  344.    RSVP.  UBE node aims to create the scenarios observed in a network 
  345.    which has one type of application using the services provided by 
  346.    QOSPF, RSVP to achieve specific levels of QoS and  the best effort 
  347.    traffic which uses the services provided by only the underlying IP.
  348.  
  349.    The UBE node generates traffic to a randomly generated IP address 
  350.    so as to create congestion in the network.  The packets generated 
  351.    are sent to the IP layer which routes the packet based upon the 
  352.    information in the routing table.  The attributes of the UBE node are: 
  353.    1. Session InterArrival Time (IAT) : is the variable used to schedule 
  354.       an event to begin a session.  The UBE node generates a 
  355.       exponentially distributed random variable with mean Session IAT and 
  356.       begins to generate data traffic at that time.
  357.    2. Data IAT: When the UBE generates data traffic, the interarrival 
  358.       times between data packets is Data IAT. A decrease in the value of 
  359.       Data IAT increases the severity of congestion in the network.
  360.    3. Session-min and Session-max : When the UBE node starts generating 
  361.       data traffic it remains in that session for a period which is 
  362.       uniformly distributed between Session-min and Session-max.
  363.  
  364.    e. Application processor node: The application layer consists of one 
  365.    or more application nodes which are process nodes.  These nodes use 
  366.    the services provided by lower layer protocols IGMP, RSVP and IP.  The 
  367.    Application layer models the requests and traffic generated by 
  368.    Application layer programs. Attributes of the application layer are:
  369.    1. Session IAT: is the variable used to schedule an event to begin a 
  370.       session.  The Application node generates a exponentially 
  371.       distributed random variable with mean Session IAT and begins to 
  372.       generate information for a specific group at that time and also 
  373.       accept packets belonging to  that group.
  374.    2. Data IAT: When Application node generates data traffic,  the inter 
  375.       arrival time between the packets uses Data IAT variable as the 
  376.       argument.  The distribution can be any of the available 
  377.       distribution functions in  OPNET.
  378.    3. Session-min and Session-max: When an application joins a session 
  379.       the duration for which the application stays in that session is 
  380.       bounded by Session-min and Session-max.  A uniformly distributed 
  381.       random variable between Session-min and Session-max is generated 
  382.       for this purpose.
  383.    4. NGRP: This variable is used by the application generating multicast 
  384.       traffic to bound the value of the group to which an application 
  385.       requests  the IGMP to join.
  386.  
  387. 3.2.3 Router description
  388.        
  389.    There are two types of routers.  A router in a subnet and a backbone 
  390.    router.  A subnet router has all the functions of a backbone router 
  391.    and in addition also has a interface to the underlying subnet which 
  392.    can be either a FDDI network or a Ethernet subnet. In the following 
  393.    section the subnet router will be discussed in detail. Fig 6.5 shows 
  394.    the node level model of a subnet router.  
  395.  
  396.    a. The queueing technique implemented in the router is a combination 
  397.    of input and output queueing.  The nodes rx1, rx2, rx3 and rx4 are the 
  398.    receivers connected to incoming T1 links.  The router in Fig 6.5 has a 
  399.    physical interface to the FDDI ring,  which consists of the queue node 
  400.  
  401.    MAC, transmitter phy_tx, and the receiver phy_rx.  The backbone 
  402.    routers will not have the MAC layer.  The services provided and the 
  403.    functions of the MAC layer are the same as in the host discussed 
  404.    earlier. 
  405.  
  406.    There is one major difference between the MAC node in an subnet router 
  407.    that in a host.  The MAC node in a subnet router accepts all the 
  408.    multicast packets unlike the MAC in a host which accepts only the 
  409.    multicast packets for groups of which the IGMP_host.  For this reason 
  410.    the statistic wire from the IGMP to MAC layer does not exist in a 
  411.    router.
  412.  
  413.    b. Addr_trans: The next layer in the router hierarchy is the 
  414.    addr_trans processor node which provides the service of translating 
  415.    the IP address to a physical address. The addr_trans node was has 
  416.    already been described under the most model.
  417.  
  418.    c. IP layer: The next layer in the hierarchy is the IP layer which 
  419.    provides services to the upper layer transport protocols and also 
  420.    performs routing based upon the information in the routing table.  The 
  421.    IP layer maintains two routing tables and one group membership table.
  422.  
  423.    d. The tables used by the router model are:
  424.    1. Unicast routing table:  This table is a single dimensional array,  
  425.       which is used to route packets generated by the UDP process node in 
  426.       the hosts.  If no route is available to a particular IP address,  
  427.       the corresponding entry is set to a default route in the array.
  428.    2. Multicast routing table: This table is a N by I array where N is 
  429.       the maximum number of multicast groups in the model and I is the 
  430.       number of interfaces in the router.  This table is used to route 
  431.       multicast packets. The routing table in a router is set by a upper 
  432.       layer routing protocol which for this project is the QOSPF layer.  
  433.       When the IP layer receives a multicast packet with a session_id 
  434.       corresponding to a session which is utilizing the QOSPF and RSVP,  
  435.       it looks up the multicast routing table to obtain the next hop.
  436.    3. Group membership table:  This table is used to maintain group 
  437.       membership information of all the interfaces of the router.  This 
  438.       table  which is also an N by I array is set by the IGMP layer 
  439.       protocol.  The QOSPF (or any routing protocol) uses this 
  440.       information in the group membership table to calculate and set the 
  441.       routes in the Multicast routing table.
  442.  
  443.    e. Sub-queues: The IP layer has three sub queues built in it,  
  444.    which implement queuing based upon the priority of arriving packets 
  445.    from the neighboring routers or the underlying subnet. The 
  446.    architecture of the router queues is illustrated in Fig 6.6.
  447.    The queue with index 0 has the highest priority.  When a packet 
  448.    arrives at the IP node,  the packets are inserted into the appropriate 
  449.    sub-queue based on the priority of their traffic category: resource-
  450.    reserved traffic, best effort traffic, or control traffic.  A non-
  451.    preemptive priority is used in servicing the packets.  After the 
  452.    servicing, packets are sent to the one of the output queues q_1 
  453.    through q_I or the MAC.  The packets progress through these queues 
  454.    until the transmitter becomes available.
  455.  
  456.    f. Attributes of the IP node are:
  457.    1. Unique IP address for each interface (a set of transmitter and 
  458.       receiver constitute an interface).
  459.    2. Service rate: the rate with which packets are serviced at the 
  460.       router.
  461.    3. Queue size: size of each of the sub queues used to store incoming 
  462.       packets based on the priority can be specified individually
  463.  
  464.    g. Output queues: The output queues perform the function of queuing 
  465.    the packets served by the IP layer when the transmitter is busy.  
  466.    A significant amount of queuing takes place in the output queues only 
  467.    if the throughput of the IP node approaches the transmission capacity 
  468.    of the links.  Attribute of the queue node are:
  469.    1. Queue size: size of the queue in each queue nodes.
  470.  
  471. 3.2.4 IGMP implementation at a router
  472.        
  473.   The next layers in the hierarchy level are the IGMP for implementing 
  474.   multicasting, the routing protocol, and RSVP for providing specific 
  475.   QoS setup.
  476.  
  477.   a. IGMP Node: The IGMP node implements the IGMP protocol as defined in 
  478.   RFC 1112.  The IGMP node at a router is different from the one at a 
  479.   host. The functions of the IGMP node at a router are:  
  480.   1. IGMP node at a router sends queries at regular intervals on all it's 
  481.      interfaces.  
  482.   2. When IGMP receives a response to the queries sent, IGMP updates the 
  483.      multicast Group membership table in the IP node.
  484.   3. Every time the IGMP sends a query, it also updates the multicast 
  485.      group membership table in the IP node if no response has been 
  486.      received on for the group on any interface,  indicating that a 
  487.      interface is no longer a member of that group.  This update is done 
  488.      only on entries which indicate an active membership for a group on a 
  489.      interface where the router has not received a response for the last 
  490.      query sent.  
  491.   4. The routing protocol (which we have implemented as QOSPF, see 
  492.      companion paper) uses the information in the Group membership table 
  493.      to calculate the routes and update the multicast routing table.
  494.   5. When the IGMP receives a query (an IGMP at router can receive a 
  495.      query from a directly connected neighboring router),  the IGMP node 
  496.      creates a response for each of the groups it is a member of on all 
  497.      the interfaces except the one through which the query was received.
  498.  
  499.  
  500. 4.  RSVP model
  501.  
  502.    The current version of the RSVP model supports only fixed-filter
  503.    reservation style.  The state-transition diagrams for the RSVP model are 
  504.    available at
  505.    
  506.    http://bacon.gmu.edu/qosip/rsvp  
  507.  
  508.    The following processing takes place in the indicated modules.
  509.  
  510. 4.1 RSVP APPLICATION
  511.  
  512. 4.1.1  Init 
  513.  
  514.    Initializes all variables and load the distribution functions
  515.    for Multicast Group Id's, termination of the session. Transit
  516.    to Idle state after completing all the initializations.
  517.  
  518. 4.1.2  Idle
  519.  
  520.    This state has transitions to four states, Arr, Join, Data_Send and 
  521.    EndSim. It transit to Arr state upon Packet Arrival, transit to 
  522.    Join state when the Join interrupt was true, transit to Data_Send 
  523.    state when the Send_Data interrupt was true, transit to EndSim state 
  524.    when simulation ends.
  525.  
  526. 4.1.3  Arr
  527.  
  528.    In this state if a data packet arrives the application will
  529.    increment the Data Received counter, and if a Session message
  530.    from Local RSVP daemon arrives it update it's Registered
  531.    Session directory. After completing these functions it will return 
  532.    to the idle state.
  533.  
  534. 4.1.4  Join
  535.      
  536.    The Application will send a session call to local RSVP
  537.    daemon and once it receives the session Id from the Local
  538.    daemon it makes a sender or receiver call. The multicast 
  539.    group id is selected randomly from a uniform distribution.
  540.    While doing a sender call the application will write all its
  541.    sender information in a global session directory.
  542.  
  543.    If the application is acting as a receiver it will check for
  544.    the sender information in the session directory for the 
  545.    multicast group that it wants to join to and makes a receive
  546.    call to the local RSVP daemon.
  547.      
  548.    Along with these two calls it makes a IGMP join call.
  549.  
  550.    If the application chooses to terminate the session it
  551.    was registered to, it will send a release call to the
  552.    local RSVP daemon and a terminate call to IGMP daemon.
  553.  
  554.    After completing these functions it will return to the idle state.
  555.  
  556. 4.1.5  Data_Send
  557.   
  558.    Creates a data packet and send it multicast destination
  559.    that it selects. It update a counter to keep track of how many 
  560.    packets that it had sent. This state on default returns to
  561.    Idle state.
  562.  
  563. 4.1.6  EndSim
  564.                
  565.    This state gives statistics of how many packets have
  566.    received and how many packets have been sent.
  567.  
  568. 4.2 RSVP ON ROUTER
  569.   
  570. 4.2.1 Init
  571.     
  572.    This state calls a function called RouterInitialize which
  573.    will initialize all the router variables. This state will go to 
  574.    Idle state after completing these functions.
  575.     
  576. 4.2.2 Idle
  577.                   
  578.    Idle state transit to Arr state upon receiving a packet.
  579.     
  580. 4.2.3 Arr
  581.         
  582.    This state checks for the type of the packet arrived and
  583.    calls the appropriate function depending on the type of message
  584.    received.   
  585.  
  586.    a. PathMsgPro: This function was invoked by the Arr state when a path 
  587.    message is received. 
  588.    1. It first checks for a Path state block which has a 
  589.       matching destination Address and if the sender port or sender address 
  590.       or destination port does not match the values of the Session object 
  591.       of the Path state block, it sends an path error message and returns. 
  592.       (At present in our application we are not sending any error 
  593.       messages, we are printing this error message on to console).
  594.    2. If a PSB is found whose Session Object and Sender Template
  595.       Object matches with that of the path message received, the current 
  596.       PSB is made as forwarding PSB.
  597.    3. Search for the PSB whose session and sender template matches
  598.       the corresponding objects in the path message and whose incoming 
  599.       interface matches the IncInterface. If such a PSB is found and the
  600.       if the Previous Hop Address, Next Hop Address, and SenderTspec 
  601.       Object doesn't match that of path message then the values of path
  602.       message is copied into the path state block and path refresh
  603.       needed flag is turned on. If the Previous Hop Address, Next Hop
  604.       Address of PSB differs from the path message then the Resv Refresh 
  605.       Needed Flag is also turned on, and the Current PSB is made equal
  606.       to this PSB. 
  607.    4. If a matching PSB is not found then a new PSB is created and
  608.       and Path Refresh Needed Flag is turned on, and the Current PSB
  609.       is made equal to this PSB. 
  610.    5. If Path Refresh Needed Flag is on, Current PSB is copied into 
  611.       forwarding PSB and Path Refresh Sequence is executed. To execute 
  612.       this function called PathRefresh is used.  Path Refresh is sent to 
  613.       every interface that is in the outgoing interfaces list of 
  614.       forwarding path state block.
  615.    6. Search for a Reservation State Block whose filter spec object 
  616.       matches with the Sender Template Object of the forwarding PSB and 
  617.       whose Outgoing Interface matches one of the entry in the forwarding 
  618.       PSB's outgoing interface list. If found then a Resv Refresh message 
  619.       to the Previous Hop Address in the forwarding PSB and execute the 
  620.       Update Traffic Control sequence. 
  621.  
  622.    b. PathRefresh: This function is called from PathMsgPro. It creates the  
  623.    Path message sends the message through the outgoing interface that is 
  624.    specified by the PathMsgPro.
  625.  
  626.    c. ResvMsgPro: This function was invoked by the Arr state when a Resv 
  627.    message is received.
  628.    1. Determine the outgoing interface and check for the PSB whose
  629.       Source Address and Session Objects match the ones in the Resv
  630.       message. 
  631.    2. If such a PSB is not found then send a ResvErr message saying 
  632.       that No Path Information available (At present we are not
  633.       implementing this message and just printing this error message on
  634.       to console).
  635.    3. Check for the incompatible styles and process the flow
  636.       descriptor list to make reservations, checking the PSB list for
  637.       the sender information. If no sender information is available 
  638.       through the PSB list then send an Error message saying that No 
  639.       Sender information. For all the matching PSB's found, if the
  640.       Refresh PHOP list doesn't have the Previous Hop Address of the PSB
  641.       then add the Previous Hop Address to the Refresh PHOP list.
  642.    4. Check for matching Reservation State Block (RSB) whose Session
  643.       and Filter Spec Object matches that of Resv message. If no such
  644.       RSB is found then create a new RSB from the Resv Message and set
  645.       the NeworMod flag On. Call this RSB as activeRSB. Turn on the Resv
  646.       Refresh Needed Flag.
  647.    5. If a matching RSB is found, call this as activeRSB and if the 
  648.       FlowSpec and Scope objects of this RSB differ from that of Resv
  649.       Message copy the Resv message Flowspec and Scope objects to the 
  650.       activeRSB and set the NeworMod flag On.
  651.    6. Call the Update Traffic Control Sequence. This is done by
  652.       calling the function UpdateTrafficControl
  653.    7. If Resv Refresh Needed Flag is On then send a ResvRefresh
  654.       message for each Previous Hop in the Refresh PHOP List. This was
  655.       done by calling the ResvRefresh function for every Previous Hop in
  656.       the Refresh PHOP List.
  657.  
  658.    d. ResvRefresh: this function is called by both PathMsgPro and
  659.    ResvMsgPro with RSB and Previous Hop as input. The function constructs 
  660.    the Resv Message from the RSB and sends the message to the Previous 
  661.    Hop.
  662.  
  663.    e. PathTearPro: This function was invoked by the Arr state when a 
  664.    PathTear message is received.  
  665.    1. Search for PSB whose Session Object and Sender Template Object 
  666.       matches that of the arrived PathTear message. 
  667.    2. If such a PSB is not found do nothing and return. 
  668.    3. If a matching PSB is  found, a PathTear message is sent to all the 
  669.       outgoing interfaces that are listed in the Outgoing Interface list 
  670.       of the PSB. 
  671.    4. Search for all the RSB whose Filter Spec Object matches the Sender 
  672.       Template Object of the PSB and if the Outgoing Interface of this 
  673.       RSB is listed in the PSB's Outgoing interface list delete the RSB. 
  674.    5. Delete the PSB and return.
  675.  
  676.    f. ResvTearPro: This function is invoked by the Arr state when a 
  677.    ResvTear message is received.  
  678.  
  679.    1. Determine the Outgoing Interface. 
  680.    2. Process the flow descriptor list of the arrived ResvTear message. 
  681.    3. Check for the RSB whose Session Object, Filter Spec Object matches 
  682.       that of ResvTear message and if there is no such RSB return. 
  683.    4. If such an RSB is found and Resv Refresh Needed Flag is on send 
  684.       ResvTear message to all the Previous Hops that are in Refresh PHOP 
  685.       List. 
  686.    5. Finally delete the RSB.
  687.  
  688.    g. ResvConfPro: This function is invoked by the Arr state when a 
  689.    ResvConf message is received. The Resv Confirm is forwarded to the IP 
  690.    address that was in the Resv Confirm Object of the received ResvConf 
  691.    message.
  692.  
  693.    h. UpdateTrafficControl: This function is called by PathMsgPro and 
  694.    ResvMsgPro and input to this function is RSB. 
  695.    1. The RSB list is searched for a matching RSB that matches the 
  696.       Session Object, and Filter Spec Object with the input RSB.  
  697.    2. Effective Kernel TC_Flowspec are computed for all these RSB's. 
  698.    3. If the Filter Spec Object of the RSB doesn't match the one of the 
  699.       Filter Spec Object in the TC Filter Spec List then add the Filter 
  700.       Spec Object to the TC Filter Spec List.
  701.    4. If the FlowSpec Object of the input RSB is greater than the 
  702.       TC_Flowspec then turn on the Is_Biggest flag.
  703.    5. Search for the matching Traffic Control State Block(TCSB) whose
  704.       Session Object, Outgoing Interface, and Filter Spec Object matches 
  705.       with those of the Input RSB. 
  706.    6. If such a TCSB is not found create a new TCSB.
  707.    7. If matching TCSB is found modify the reservations.
  708.    8. If Is_Biggest flag is on turn on the Resv Refresh Needed Flag flag, 
  709.       else send a ResvConf Message to the IP address in the ResvConfirm 
  710.       Object of the input RSB.
  711.  
  712. 4.2.4 pathmsg: The functions to be done by this state are done through 
  713.    the function call PathMsgPro described above.
  714.  
  715. 4.2.5 resvmsg: The functions that would be done by this state are done
  716.    through the function call ResvMsgPro described above.
  717.     
  718. 4.2.6 ptearmsg: The functions that would be done by this state are done
  719.    through the function call PathTearPro described above.
  720.  
  721. 4.2.7 rtearmsg: The functions that would be done by this state are done
  722.   through the function call ResvTearPro described above.
  723.     
  724. 4.2.8 rconfmsg: The functions that would be done by this state are done
  725.   through the function call ResvConfPro described above.
  726.  
  727. 4.3 RSVP ON HOSTS         
  728.      
  729. 4.3.1  Init 
  730.  
  731.    Initializes all the variables. Default transition to idle state.
  732.  
  733. 4.3.2  idle
  734.  
  735.    This state transit to the Arr state on packet arrival.
  736.      
  737. 4.3.3  Arr 
  738.  
  739.    This state calls the appropriate functions depending on the
  740.    type of message received. Default transition to idle state. 
  741.  
  742.    a. MakeSessionCall: This function is called from the Arr state whenever 
  743.    a Session call is received from the local application. 
  744.    1. Search for the Session Information. 
  745.    2. If one is found return the corresponding Session Id. 
  746.    3. If the session information is not found assign a new session Id to 
  747.       the session to the corresponding session. 
  748.    4. Make an UpCall to the local application with this Session Id.
  749.  
  750.    b. MakeSenderCall: This function is called from the Arr state whenever 
  751.    a Sender call is received from the local application. 
  752.    1. Get the information corresponding to the Session Id and create a Path 
  753.       message corresponding to this session. 
  754.    2. This packet is sent to the IP layer.
  755.  
  756.    c. MakeReserveCall: This function is called from the Arr state whenever 
  757.    a Reserve call is received from the local application. This function 
  758.    will create and send a Resv message.
  759.  
  760.    d. MakeReleaseCall: This function is called from the Arr state whenever 
  761.    a Release call is received from the local application.This function will 
  762.    generate a PathTear message if the local application is sender or 
  763.    generates a ResvTear message if the local application is receiver.
  764.  
  765. 4.3.4  EndSim 
  766.     
  767.    This state does not do anything.
  768.  
  769. 4.3.5  Session 
  770.          
  771.    This state's function is performed by the MakeSessionCall function.
  772.  
  773. 4.3.6  Sender 
  774.  
  775.    This state's function is han by the MakeSenderCall function.
  776.  
  777. 4.3.7  Reserve 
  778.                                          
  779.    This state's function is performed by the MakeReserveCall function.
  780.  
  781. 4.3.8  Release 
  782.  
  783.   This state's function is performed by the MakeReleaseCall function.
  784.  
  785.  
  786. 5.  Future work.
  787.  
  788.    We hope to receive assistance from the IPmc/RSVP development
  789.    community within the IETF in validating and refining this model.
  790.    We believe it will be a useful tool for predicting the behavior
  791.    of RSVP-capable systems.
  792.  
  793. 6.  References
  794.  
  795.    [1] Deering, "Host Requirements for IP Multicasting", RFC 1112, 
  796.        August 1989
  797.  
  798.    [2] Braden et. al., "Resource Reservation Protocol Version 1 Functional 
  799.        Specification", work in progress (draft-ietf-rsvp-spec-14)
  800.        November 1996 
  801.  
  802.    [3] MIL3 Inc., "OPNET: Optimized Network Engineering Tools, Simulation
  803.        Kernel Manual", November 1991
  804.  
  805.  
  806.  
  807.  Authors' Addresses
  808.  
  809.   J. Mark Pullen
  810.   Computer Science/4A5
  811.   George Mason University
  812.   Fairfax, VA 22032
  813.   mpullen@gmu.edu
  814.  
  815.   Ravi Malghan
  816.   COMSAT Laboratories
  817.   22300 COMSAT Drive
  818.   Clarksburg, MD 20871-9475
  819.   rmalghan@bacon.gmu.edu
  820.  
  821.   Lava K. Lavu
  822.   C3I Center/4B5
  823.   George Mason University
  824.   Fairfax, VA 22030
  825.   llavu@bacon.gmu.edu
  826.  
  827.  
  828. Expiration: 25 April 1997
  829.  
  830.