home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 2000s / rfc2091.txt < prev    next >
Text File  |  1997-01-22  |  45KB  |  1,236 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           G. Meyer
  8. Request for Comments: 2091                                         Shiva
  9. Category: Standards Track                                      S. Sherry
  10.                                                                   Xyplex
  11.                                                             January 1997
  12.  
  13.  
  14.          Triggered Extensions to RIP to Support Demand Circuits
  15.  
  16. Status of this Memo
  17.  
  18.    This document specifies an Internet standards track protocol for the
  19.    Internet community, and requests discussion and suggestions for
  20.    improvements.  Please refer to the current edition of the "Internet
  21.    Official Protocol Standards" (STD 1) for the standardization state
  22.    and status of this protocol.  Distribution of this memo is unlimited.
  23.  
  24. Abstract
  25.  
  26.    This document defines a modification which can be applied to
  27.    Bellman-Ford (distance vector) algorithm information broadcasting
  28.    protocols - for example IP RIP, Netware RIP or Netware SAP - which
  29.    makes it feasible to run them on connection oriented Public Data
  30.    Networks.
  31.  
  32.    This proposal has a number of efficiency advantages over the Demand
  33.    RIP proposal (RFC 1582).
  34.  
  35. Acknowledgements
  36.  
  37.    The authors wish to thank Richard Edmonstone of Shiva, Joahanna
  38.    Kruger of Xyplex, Steve Waters of DEC and Guenter Roeck of Conware
  39.    for many comments and suggestions which improved this effort.
  40.  
  41. Conventions
  42.  
  43.    The following language conventions are used in the items of
  44.    specification in this document:
  45.  
  46.    o  MUST -- the item is an absolute requirement of the specification.
  47.       MUST is only used where it is actually required for
  48.       interoperation, not to try to impose a particular method on
  49.       implementors where not required for interoperability.
  50.  
  51.    o  SHOULD -- the item should be followed for all but exceptional
  52.       circumstances.
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Meyer & Sherry              Standards Track                     [Page 1]
  59.  
  60. RFC 2091                      Trigger RIP                   January 1997
  61.  
  62.  
  63.    o  MAY or optional -- the item is truly optional and may be followed
  64.       or ignored according to the needs of the implementor.
  65.  
  66.       The words "should" and "may" are also used, in lower case, in
  67.       their more ordinary senses.
  68.  
  69. Table of Contents
  70.  
  71.    1. Introduction ...........................................  2
  72.    2. Overview ...............................................  3
  73.    3. The Routing Database ...................................  5
  74.        3.1. Presumption of Reachability ......................  6
  75.        3.2. Alternative Routes ...............................  6
  76.        3.3. Split Horizon with Poisoned Reverse ..............  7
  77.        3.4. Managing Updates .................................  7
  78.        3.5. Retransmissions ..................................  7
  79.    4. New Packet Types .......................................  8
  80.        4.1. Update Request (9) ...............................  9
  81.        4.2. Update Response (10) .............................  9
  82.        4.3. Update Acknowledge (11) .......................... 10
  83.    5. Packet Formats ......................................... 10
  84.        5.1. Update Header .................................... 10
  85.        5.2. IP Routing Information Protocol Version 1 ........ 11
  86.        5.3. IP Routing Information Protocol Version 2 ........ 11
  87.        5.4. Netware Routing Information Protocol ............. 12
  88.        5.5. Netware Service Advertising Protocol ............. 12
  89.    6. Timers ................................................. 17
  90.        6.1. Database Timer ................................... 17
  91.        6.2. Hold Down Timer .................................. 17
  92.        6.3. Retransmission Timer ............................. 18
  93.        6.4. Over-subscription Timer .......................... 18
  94.    7. Security Considerations ................................ 19
  95.    Appendix A - Implementation Suggestion .................... 20
  96.    References ................................................ 21
  97.    Authors' Addresses ........................................ 22
  98.  
  99. 1. Introduction
  100.  
  101.    Routers are used on connection oriented networks, such as X.25 packet
  102.    switched networks and ISDN networks, to allow potential connectivity
  103.    to a large number of remote destinations.  Circuits on the Wide Area
  104.    Network (WAN) are established on demand and are relinquished when the
  105.    traffic subsides.  Depending on the application, the connection
  106.    between any two sites for user data might actually be short and
  107.    relatively infrequent.
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Meyer & Sherry              Standards Track                     [Page 2]
  115.  
  116. RFC 2091                      Trigger RIP                   January 1997
  117.  
  118.  
  119.    Periodic broadcasting by Bellman-Ford (distance vector) algorithm
  120.    information broadcasting protocols IP RIP [1], IP RIP V2 [2] or
  121.    Netware RIP and SAP [3] generally prevents WAN circuits from being
  122.    closed.  Even on fixed point-to-point links the overhead of periodic
  123.    transmission of RIP - and even more so SAP broadcasts - can seriously
  124.    interrupt normal data transfer simply through the quantity of
  125.    information which hits the line every 30 or 60 seconds.
  126.  
  127.    To overcome these limitations, this specification modifies the
  128.    distance vector protocols so as to send information on the WAN only
  129.    when there has been an update to the routing database OR a change in
  130.    the reachability of a next hop router is indicated by the task which
  131.    manages connections on the WAN.
  132.  
  133.    Because datagrams are not guaranteed to get through on all WAN media,
  134.    an acknowledgement and retransmission system is required to provide
  135.    reliability.
  136.  
  137.    The protocols run unmodified on Local Area Networks (LANs) and so
  138.    interoperate transparently with implementations adhering to the
  139.    original specifications.
  140.  
  141.    This proposal differs from Demand RIP [4] conceptually as follows:
  142.  
  143.    o  If a router has exchanged all routing information with its partner
  144.       and some routing information subsequently changes only the changed
  145.       information is sent to the partner.
  146.  
  147.    o  The receiver of routes is able to apply all changes immediately
  148.       upon receiving information from a partner.
  149.  
  150.    These differences lead to further reduced routing traffic and also
  151.    require less memory than Demand RIP [4].  Demand RIP also has an
  152.    upper limit of 255 fragments in an update which is lifted in
  153.    Triggered RIP (which does not use fragmentation).
  154.  
  155. 2. Overview
  156.  
  157.    Multiprotocol routers are used on connection oriented Wide Area
  158.    Networks (WANs), such as X.25 packet switched networks and ISDN
  159.    networks, to interconnect LANs.  By using the multiplexing properties
  160.    of the underlying WAN technology, several LANs can be interconnected
  161.    simultaneously through a single physical interface on the router.
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Meyer & Sherry              Standards Track                     [Page 3]
  171.  
  172. RFC 2091                      Trigger RIP                   January 1997
  173.  
  174.  
  175.    A circuit manager provides an interface between the connectionless
  176.    network layers, IP and IPX, and the connection oriented WAN, X.25,
  177.    ISDN etc.  Figure 1 shows a schematic representative stack showing
  178.    the relationship between routing protocols, the network layers, the
  179.    circuit manager and the connection oriented WAN.
  180.  
  181.              --------------           ---------  ---------
  182.              |    RIP     |           |  RIP  |  |  SAP  |
  183.              --------------           ---------  ---------
  184.                    |                      |          |
  185.              --------------               |          |
  186.              |    UDP     |               |          |
  187.              --------------               |          |
  188.                    |                      |          |
  189.              --------------             ----------------
  190.              |    IP      |             |     IPX      |
  191.              --------------             ----------------
  192.                    |                           |
  193.              -------------------------------------------
  194.              |             Circuit Manager             |
  195.              -------------------------------------------
  196.                               ||||||||||
  197.                               ||||||||||
  198.                       ---------------------------
  199.                       |   Connection Oriented   |
  200.                       |        WAN stack        |
  201.                       ---------------------------
  202.  
  203.       A WAN circuit manager will  support  a  variety  of  network
  204.       layer protocols,  on its upper interface.  On its lower interface,
  205.       it may support one or more subnetworks.  A subnetwork may support
  206.       a number of Virtual Circuits.
  207.  
  208.             Figure 1.   Representative Multiprotocol Router stack
  209.  
  210.    The router has a translation table which relates the network layer
  211.    address of the next hop router to the physical address used to
  212.    establish a Virtual Circuit (VC) to it.
  213.  
  214.    The circuit manager takes datagrams from the connectionless network
  215.    layer protocols and (if one is not currently available) opens a VC to
  216.    the next hop router.  A VC can carry all traffic between two end-
  217.    point routers for a given network layer protocol (or with appropriate
  218.    encapsulation all network layer protocols).  An idle timer (or some
  219.    other mechanism) is used to close the VC when the datagrams stop
  220.    arriving at the circuit manager.
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Meyer & Sherry              Standards Track                     [Page 4]
  227.  
  228. RFC 2091                      Trigger RIP                   January 1997
  229.  
  230.  
  231.    If the circuit manager has data to forward (whether user data OR a
  232.    routing update) and fails to obtain a VC it informs the routing
  233.    application that the destination is unreachable (circuit down).  The
  234.    circuit manager is then expected to perform whatever is necessary to
  235.    recover the link.   Once successful, it informs the routing
  236.    application (circuit up).
  237.  
  238.    In Triggered RIP, routing updates are only transmitted on the WAN
  239.    when required:
  240.  
  241.    1  When a specific request for a routing update has been received.
  242.  
  243.    2  When the routing database is modified by new information from
  244.       another interface.
  245.  
  246.    3  When the circuit manager indicates that a destination has changed
  247.       from an unreachable (circuit down) to a reachable (circuit up)
  248.       state.
  249.  
  250.    4  And also when a unit is first powered on to ensure that at least
  251.       one update is sent.  This can be thought of as a transition from
  252.       circuit down to circuit up.  It MAY contain no routes or services,
  253.       and is used to flush routes or services from the peer's database.
  254.  
  255.    In cases 1,3 and 4 the full contents of the database is sent.  In
  256.    case 2 only the latest changes are sent.
  257.  
  258.    Because of the inherent unreliability of a datagram based system,
  259.    both routing requests and routing responses require acknowledgement,
  260.    and retransmission in the event of NOT receiving an acknowledgement.
  261.  
  262. 3. The Routing Database
  263.  
  264.    Entries in the routing database can either be permanent or temporary.
  265.    Entries learned from broadcasts on LANs are temporary. They will
  266.    expire if not periodically refreshed by further broadcasts.
  267.  
  268.    Entries learned from a triggered response on the WAN are 'permanent'.
  269.    They MUST not time out in the normal course of events.  Certain
  270.    events can cause these routes to time out.
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Meyer & Sherry              Standards Track                     [Page 5]
  283.  
  284. RFC 2091                      Trigger RIP                   January 1997
  285.  
  286.  
  287. 3.1 Presumption of Reachability
  288.  
  289.    If a routing update is received from a next hop router on the WAN,
  290.    entries in the update are thereafter always considered to be
  291.    reachable, unless proven otherwise:
  292.  
  293.    o  If in the normal course of routing datagrams, the circuit manager
  294.       fails to establish a connection to the next hop router, it
  295.       notifies the routing application that the next hop router is not
  296.       reachable through an internal circuit down message.
  297.  
  298.       The database entries are first marked as temporary and aged
  299.       normally; Some implementations may choose to omit this initial
  300.       aging step.  The routing application then marks the appropriate
  301.       database entries as unreachable for a hold down period (the normal
  302.       120 second RIP hold down timer).
  303.  
  304.    o  If the circuit manager is subsequently able to establish a
  305.       connection to the next hop router, it will notify the routing
  306.       application that the next hop router is reachable through an
  307.       internal circuit up message.
  308.  
  309.       The routing application will then exchange messages with the next
  310.       hop router so as to re-prime their respective routing databases
  311.       with up-to-date information.
  312.  
  313.    The next hop router may also be marked as unreachable if an excessive
  314.    number of retransmissions of an update go unacknowledged (see section
  315.    6.3).
  316.  
  317.    Handling of circuit up and circuit down messages requires that the
  318.    circuit manager takes responsibility for establishing (or re-
  319.    establishing) the connection in the event of a next hop router
  320.    becoming unreachable.  A description of the processes the circuit
  321.    manager adopts to perform this task is outside the scope of this
  322.    document.
  323.  
  324. 3.2 Alternative Routes
  325.  
  326.    A requirement of using Triggered RIP for propagating routing
  327.    information is that NO routing information ever gets LOST or
  328.    DISCARDED.  This means that all alternative routes SHOULD be
  329.    retained.
  330.  
  331.    It MAY be possible to operate with a sub-set of all alternative
  332.    routes, but this adds complexity to the protocol - which is NOT
  333.    covered in this document.
  334.  
  335.  
  336.  
  337.  
  338. Meyer & Sherry              Standards Track                     [Page 6]
  339.  
  340. RFC 2091                      Trigger RIP                   January 1997
  341.  
  342.  
  343. 3.3 Split Horizon with Poisoned Reverse
  344.  
  345.    The rules for Split Horizon with Poisoned Reverse MUST be used to
  346.    determine whether and/or how a route is advertised on an interface
  347.    running this protocol.
  348.  
  349.    Split Horizon consists of omitting routes learned from a peer when
  350.    sending updates back to that peer.  With Poisoned Reverse instead of
  351.    omitting those routes, they are advertised as unreachable (setting
  352.    the metric to infinity).
  353.  
  354.    A route is only poisoned if it is the best route (rather than an
  355.    inferior alternative route) in the database.
  356.  
  357.    Poison Reverse is necessary because a router may be advertising a
  358.    route to a network to its partner and then later learn a better route
  359.    for the same network from the partner.  Without Poison Reverse the
  360.    partner will not know to discard the inferior route learned from the
  361.    first router.
  362.  
  363. 3.4 Managing Routing Updates
  364.  
  365.    The routing database SHOULD be considered to be a sequence of
  366.    elements ordered by the time it was last updated.  If there is a
  367.    change in the best route (i.e. a new route is added or a route's
  368.    metric has changed), the route is reordered and given a new highest
  369.    sequence number.
  370.  
  371.    Sending updates to a peer consists of running through the database
  372.    from the oldest entry to the newest entry.  Once an entry has been
  373.    sent and acknowledged it is generally never resent.  As new routing
  374.    information arrives, only the new information is sent.
  375.  
  376. 3.5 Retransmissions
  377.  
  378.    Handling retransmission of updates is simplest if updates are
  379.    restricted to never having more than one un-acknowledged update
  380.    outstanding - "one packet in flight".  A copy of the update packet
  381.    can be kept and retransmitted until acknowledged - and then
  382.    subsequent update packets are sent in turn until the full database
  383.    (to date) has been sent and acknowledged.
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Meyer & Sherry              Standards Track                     [Page 7]
  395.  
  396. RFC 2091                      Trigger RIP                   January 1997
  397.  
  398.  
  399.    Things become more complicated if several packets are sent in quick
  400.    succession without waiting for an acknowledgements between packets -
  401.    "several packets in flight":
  402.  
  403.    o  If packets arrive out of order they could corrupt the peer's
  404.       database.  If the underlying datalink layer bundles several VCs,
  405.       it MUST guarantee to NOT reorder datagrams.
  406.  
  407.    o  If the elements making up a packet requiring retransmission change
  408.       because of an alteration in the database, stale incorrect
  409.       information could be sent (again new information could overtake
  410.       old information).
  411.  
  412.    To guard against this when 'retransmitting' a packet when the
  413.    database is in flux the packet MUST be re-created from the database
  414.    to contain only the subset of routes which currently apply.  And if
  415.    none of the routes still apply, nothing will be 'retransmitted'.
  416.  
  417.    For simplicity of implementation we would advise having only one
  418.    packet in flight.  However if the 'round trip' for a response and
  419.    acknowledgement is quite long this could significantly delay large
  420.    updates.  See Appendix A for an understanding of the additional
  421.    complexity of managing several packets in flight.
  422.  
  423. 4. New Packet Types
  424.  
  425.    To support triggered updates, three new packet types MUST be
  426.    supported.  For IP RIP Version 1 [1] and IP RIP Version 2 [2] these
  427.    are identified by the Command Field values shown:
  428.  
  429.       o  9 - Update Request
  430.  
  431.       o  10 - Update Response
  432.  
  433.       o  11 - Update Acknowledge
  434.  
  435.    For Netware RIP and SAP [3] the equivalent Field to distinguish
  436.    between packet types is called Operation and these take the same
  437.    values.
  438.  
  439.    These Command and Operation types require the addition of a 4 octet
  440.    Update header.  All three packet types contain a Version, which MUST
  441.    be 1.  Update Response and Update Acknowledge also have a Sequence
  442.    Number and a Flush Flag.
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450. Meyer & Sherry              Standards Track                     [Page 8]
  451.  
  452. RFC 2091                      Trigger RIP                   January 1997
  453.  
  454.  
  455. 4.1 Update Request
  456.  
  457.    The Update Request has the Command/Operation value 9.
  458.  
  459.    It is a request to the peer system to send ALL appropriate elements
  460.    in its routing database.  It is retransmitted at periodic intervals
  461.    (every 5 seconds) until an Update Response message is received with
  462.    the Flush flag set.
  463.  
  464.    An Update Request is transmitted in the following circumstances:
  465.  
  466.    o  Firstly when the router is powered on.
  467.  
  468.    o  Secondly when the circuit manager indicates a destination has been
  469.       in an unreachable (circuit down) state and changes to a reachable
  470.       (circuit up) state.
  471.  
  472.    An Update Request may also be sent at other times to compensate for
  473.    discarding non-optimal routing information or if an Update Response
  474.    continues to be unacknowledged (see section 6.3).
  475.  
  476. 4.2 Update Response
  477.  
  478.    The Update Response has the Command/Operation value 10.
  479.  
  480.    It is a message containing zero or more routes in an update.  It is
  481.    retransmitted at periodic intervals until an Update Acknowledge is
  482.    received.
  483.  
  484.    An Update Response message MUST be sent:
  485.  
  486.    o  In response to an Update Request.  The Update Response MUST have
  487.       the Flush flag set.  Other Update Responses should NOT be sent
  488.       until an Update Acknowledge has been received acknowledging the
  489.       Flush flag.
  490.  
  491.       The remainder of the database MUST then be sent as a series of
  492.       Update Responses with the Flush flag NOT set.
  493.  
  494.    o  An Update Response with the Flush flag set MUST also be sent at
  495.       power on to flush the peer's routing table learned from a previous
  496.       incarnation.  This Update Response SHOULD NOT contain any routes.
  497.       This avoids any possibility of an acknowledgement being received
  498.       to a response sent BEFORE the unit was restarted causing confusion
  499.       about which routes are being acknowledged.
  500.  
  501.    Update Response messages continue to be sent any time there is fresh
  502.    routing information to be propagated.
  503.  
  504.  
  505.  
  506. Meyer & Sherry              Standards Track                     [Page 9]
  507.  
  508. RFC 2091                      Trigger RIP                   January 1997
  509.  
  510.  
  511.    Each new Update Response is given a different Sequence Number.  The
  512.    Sequence Number only has 'meaning' to the sender of the Update
  513.    Response.  The same Update Response sent to different peers MAY have
  514.    a different Sequence Number.
  515.  
  516.    An Update Response packet with the Flush flag set MUST be sent to a
  517.    peer:
  518.  
  519.       o  At power on.
  520.  
  521.       o  In response to an Update Request packet.
  522.  
  523.       o  After transitioning from a circuit down to a circuit up state.
  524.  
  525.    After sending an Update Flush, the full database MUST be sent
  526.    subsequently.
  527.  
  528. 4.3 Update Acknowledge
  529.  
  530.    The Update Acknowledge has the Command/Operation value 11.
  531.  
  532.    It is a message sent in response to every Update Response packet
  533.    received.  If the Update Response packet has the flush flag set then
  534.    so should the Update Acknowledge packet.
  535.  
  536. 5. Packet Formats
  537.  
  538. 5.1 Update Header
  539.  
  540.    To support the mechanism outlined in this proposal the packet format
  541.    for RIP Version 1 [1], RIP Version 2 [2] and Netware RIP and SAP [3]
  542.    are modified to include an additional small header when using
  543.    Commands Update Request (9), Update Response (10) and Update
  544.    Acknowledge (11).  Commands are called Operations in Netware.
  545.  
  546.    Update Request (9):
  547.  
  548.      0                   1                   2                   3 3
  549.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  550.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  551.      |  Version (1)  |               must be zero (3)                |
  552.      +-------------------------------+-------------------------------+
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Meyer & Sherry              Standards Track                    [Page 10]
  563.  
  564. RFC 2091                      Trigger RIP                   January 1997
  565.  
  566.  
  567.      Update Response (10) and Update Acknowledge (11):
  568.  
  569.      0                   1                   2                   3 3
  570.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  571.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  572.      |  Version (1)  |   Flush (1)   |     Sequence Number (2)       |
  573.      +-------------------------------+-------------------------------+
  574.  
  575.  
  576.      Four octet Update headers, with each  tick  mark  representing  one
  577.      bit.  All fields are coded in network byte order (big-endian).
  578.  
  579.  
  580.                          Figure 2.   Update Headers.
  581.  
  582.    Version MUST be 1 in all headers.  Any packets received for a
  583.    different Version MUST be silently discarded.
  584.  
  585.    The Sequence Number MUST be incremented every time a new Update
  586.    Response packet is sent on the WAN.  The Sequence Number is unchanged
  587.    for retransmissions.  The Sequence Number wraps round at 65535.
  588.  
  589.    Flush is set to 1 in an Update Response if the peer is required to
  590.    start timing out its entries - otherwise it is set to zero.  Any
  591.    other values MUST be silently discarded.
  592.  
  593.    The peer returns an Update Acknowledge containing the same Sequence
  594.    Number and Flush.
  595.  
  596. 5.2 IP Routing Information Protocol Version 1
  597.  
  598.    IP RIP [1] is a UDP-based protocol which generally sends and receives
  599.    datagrams on UDP port number 520.
  600.  
  601.    To support the mechanism outlined in this proposal the packet format
  602.    for RIP Version 1 [1] is modified when using Commands Update Request
  603.    (9), Update Response (10) and Update Acknowledge (11).  See Figure 3.
  604.  
  605. 5.3 IP Routing Information Protocol Version 2
  606.  
  607.    IP RIP Version 2 [2] is an enhancement to IP RIP Version 1 which
  608.    allows RIP updates to include subnetting information.
  609.  
  610.    To support the mechanism outlined in this proposal the packet format
  611.    for RIP Version 2 [2] is modified when using Commands Update Request
  612.    (9), Update Response (10) and Update Acknowledge (11).  See Figure 4.
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Meyer & Sherry              Standards Track                    [Page 11]
  619.  
  620. RFC 2091                      Trigger RIP                   January 1997
  621.  
  622.  
  623. 5.4 Netware Routing Information Protocol
  624.  
  625.    Netware [3] supports a mechanism that allows routers on an
  626.    internetwork to exchange routing information using the Routing
  627.    Information Protocol (RIP) which runs over the Internetwork Packet
  628.    Exchange (IPX) protocol using socket number 453h.
  629.  
  630.    To support the mechanism outlined in this proposal the packet format
  631.    for Novell RIP [3] is modified when using Operations Update Request
  632.    (9), Update Response (10) and Update Acknowledge (11).  See Figure 5.
  633.  
  634. 5.5 Netware Service Advertising Protocol
  635.  
  636.    Netware [3] also supports a mechanism that allows servers on an
  637.    internetwork to advertise their services by name and type using the
  638.    Service Advertising Protocol (SAP) which runs over the Internetwork
  639.    Packet Exchange (IPX) protocol using socket number 452h.  SAP
  640.    operates on similar principals to running RIP.  Routers act as SAP
  641.    agents, collecting service information from different networks and
  642.    relay it to interested parties.
  643.  
  644.    To support the mechanism outlined in this proposal the packet format
  645.    for Novell SAP [3] is modified when using Operations Update Request
  646.    (9), Update Response (10) and Update Acknowledge (11).  See Figure 6.
  647.  
  648.      0                   1                   2                   3 3
  649.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  650.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  651.      | Command (1)   | RIP Version (1)|     must be zero (2)         |
  652.      +---------------+---------------+-------------------------------+
  653.  
  654.      0                   1                   2                   3 3
  655.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  656.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  657.      |                     Update Header (4)                         |
  658.      +-------------------------------+-------------------------------+
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674. Meyer & Sherry              Standards Track                    [Page 12]
  675.  
  676. RFC 2091                      Trigger RIP                   January 1997
  677.  
  678.  
  679.      Update Response then has up to 25 routing entries (each 20 octets):
  680.  
  681.      0                   1                   2                   3 3
  682.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  683.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  684.      | Address Family Identifier (2) |      must be zero (2)         |
  685.      +-------------------------------+-------------------------------+
  686.      |                         IP address (4)                        |
  687.      +---------------------------------------------------------------+
  688.      |                         must be zero (4)                      |
  689.      +---------------------------------------------------------------+
  690.      |                         must be zero (4)                      |
  691.      +---------------------------------------------------------------+
  692.      |                         Metric (4)                            |
  693.      +---------------------------------------------------------------+
  694.                                      .
  695.                                      .
  696.  
  697.      The format of an IP RIP datagram in octets,  with  each  tick  mark
  698.      representing  one  bit.  All fields are coded in network byte order
  699.      (big-endian).
  700.  
  701.      The four octets of the Update header are included in Update Request
  702.      (Command  9),  Update  Response  (10)  and  Update Acknowledge (11)
  703.      packets.  They are not present in packet types in the original  RIP
  704.      Version 1 specification.
  705.  
  706.                   Figure 3.   IP RIP Version 1 packet format
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. Meyer & Sherry              Standards Track                    [Page 13]
  731.  
  732. RFC 2091                      Trigger RIP                   January 1997
  733.  
  734.  
  735.      0                   1                   2                   3 3
  736.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  737.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  738.      | Command (1)   |RIP Version (1)|      must be zero (2)         |
  739.      +---------------+---------------+-------------------------------+
  740.  
  741.      0                   1                   2                   3 3
  742.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  743.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  744.      |                     Update Header (4)                         |
  745.      +-------------------------------+-------------------------------+
  746.  
  747.      Update Response then has up to 25 routing entries (each 20 octets):
  748.  
  749.      0                   1                   2                   3 3
  750.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  751.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  752.      | Address Family Identifier (2) |        Route Tag (2)          |
  753.      +-------------------------------+-------------------------------+
  754.      |                         IP address (4)                        |
  755.      +---------------------------------------------------------------+
  756.      |                         Subnet Mask (4)                       |
  757.      +---------------------------------------------------------------+
  758.      |                         Next Hop (4) - must be zero           |
  759.      +---------------------------------------------------------------+
  760.      |                         Metric (4)                            |
  761.      +---------------------------------------------------------------+
  762.                                      .
  763.                                      .
  764.  
  765.      The format of an IP RIP Version 2 datagram  in  octets,  with  each
  766.      tick  mark  representing  one bit.  All fields are coded in network
  767.      byte order (big-endian).
  768.  
  769.      The four octets of the Update header are included in Update Request
  770.      (Command  9),  Update  Response  (10)  and  Update Acknowledge (11)
  771.      Packets.  They are not present in packet types in the original  RIP
  772.      Version 2 specification.
  773.  
  774.      Next Hop MUST be zero, since Triggered RIP can NOT advertise routes
  775.      on behalf of other WAN routers.
  776.  
  777.      If authentication is used it immediately follows the Update header.
  778.  
  779.                   Figure 4.   IP RIP Version 2 packet format
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786. Meyer & Sherry              Standards Track                    [Page 14]
  787.  
  788. RFC 2091                      Trigger RIP                   January 1997
  789.  
  790.  
  791.      0                   1         1
  792.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  793.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  794.      |       Operation (2)           |
  795.      +---------------+---------------+
  796.  
  797.      0                   1                   2                   3 3
  798.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  799.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  800.      |                     Update Header (4)                         |
  801.      +-------------------------------+-------------------------------+
  802.  
  803.      Update Response then has up to 50 routing entries (each 8 octets):
  804.  
  805.      0                   1                   2                   3 3
  806.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  807.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  808.      |                       Network Number (4)                      |
  809.      +---------------------------------------------------------------+
  810.      |       Number of Hops (2)      |      Number of Ticks (2)      |
  811.      +---------------------------------------------------------------+
  812.                                      .
  813.                                      .
  814.  
  815.      The format of a Netware RIP datagram in octets, with each tick mark
  816.      representing  one  bit.  All fields are coded in network byte order
  817.      (big-endian).
  818.  
  819.      The four octets of the Update header are included in Update Request
  820.      (Operation  9),  Update  Response  (10) and Update Acknowledge (11)
  821.      packets.  They are not present in  packet  types  in  the  original
  822.      Novell RIP specification.
  823.  
  824.                     Figure 5.   Netware RIP packet format
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Meyer & Sherry              Standards Track                    [Page 15]
  843.  
  844. RFC 2091                      Trigger RIP                   January 1997
  845.  
  846.  
  847.      0                   1         1
  848.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  849.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  850.      |       Operation (2)           |
  851.      +---------------+---------------+
  852.  
  853.      0                   1                   2                   3 3
  854.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  855.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  856.      |                     Update Header (4)                         |
  857.      +-------------------------------+-------------------------------+
  858.  
  859.      Update Response then has up to 8 service entries (each 64 octets):
  860.  
  861.      0                   1                   2                   3 3
  862.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  863.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  864.      |        Service Type (2)       |                               |
  865.      +-------------------------------+                               |
  866.      |                       Service Name (48)                       |
  867.      |                            .                                  |
  868.                                   .
  869.                                   .  +-------------------------------+
  870.      |                            .  | Network Address (4)           |
  871.      +-------------------------------+-------------------------------+
  872.      |  Network Address (cont)       |                               |
  873.      +-------------------------------+                               |
  874.      |                        Node Address (6)                       |
  875.      +-------------------------------+-------------------------------+
  876.      |      Socket Address (2)       |       Hops to Server (2)      |
  877.      +-------------------------------+-------------------------------+
  878.                                      .
  879.                                      .
  880.  
  881.      The format of a Netware SAP datagram in octets, with each tick mark
  882.      representing  one  bit.  All fields are coded in network byte order
  883.      (big-endian).
  884.  
  885.      The four octets of the Update header are included in Update Request
  886.      (Operation  9),  Update  Response  (10) and Update Acknowledge (11)
  887.      packets.  They are not present in  packet  types  in  the  original
  888.      Novell SAP specification.
  889.  
  890.  
  891.                     Figure 6.   Netware SAP packet format
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Meyer & Sherry              Standards Track                    [Page 16]
  899.  
  900. RFC 2091                      Trigger RIP                   January 1997
  901.  
  902.  
  903. 6. Timers
  904.  
  905.    Three timers are supported to handle the triggered update mechanism:
  906.  
  907.    o  Database timer.
  908.  
  909.    o  Hold down timer.
  910.  
  911.    o  Retransmission timer.
  912.  
  913.    An optional over-subscription timer MAY also be supported.
  914.  
  915. 6.1 Database Timer
  916.  
  917.    Routes learned by an Update Response are normally considered to be
  918.    permanent.
  919.  
  920.    When an Update Response with the Flush flag set is received, all
  921.    routes learned from that next hop router should start timing out as
  922.    if they had (just) been learned from a conventional Response (Command
  923.    2).
  924.  
  925.    Namely each route exists while the database entry timer (usually 180
  926.    seconds) is running and is advertised on other interfaces as if still
  927.    present.  The route is then advertised as unreachable while a further
  928.    hold down timer is allowed to expire.
  929.  
  930. 6.2 Hold down Timer
  931.  
  932.    A hold down timer of 120 seconds is started on a route:
  933.  
  934.    o  When the database timer for the route expires.
  935.  
  936.    o  When a formerly reachable route changes to unreachable in an
  937.       incoming response.
  938.  
  939.    o  When a circuit down is received from the circuit manager.
  940.  
  941.    While the hold down timer is running routes are advertised as
  942.    unreachable on other interfaces.
  943.  
  944.    When the hold down timer expires the route MAY be deleted from the
  945.    database PROVIDING its unreachability has been successfully
  946.    propagated to all WAN destinations, or the remaining WAN destinations
  947.    are in a circuit down state.  If a route can not be deleted when the
  948.    hold-down timer expires, it MAY subsequently be deleted when each and
  949.    every peer is either up-to-date or is in a circuit down state.
  950.  
  951.  
  952.  
  953.  
  954. Meyer & Sherry              Standards Track                    [Page 17]
  955.  
  956. RFC 2091                      Trigger RIP                   January 1997
  957.  
  958.  
  959.    If the hold down timer is already running it is NOT reset by any
  960.    events which would start the hold down timer.
  961.  
  962. 6.3 Retransmission Timer
  963.  
  964.    The routing task runs a retransmission timer:
  965.  
  966.    o  An Update Request packet is retransmitted periodically until an
  967.       Update Flush packet is received.  An Update Flush packet is an
  968.       Update Response packet with the Flush field set.  It need not
  969.       contain routes.
  970.  
  971.    o  An Update Response packet is retransmitted periodically until an
  972.       Update Acknowledge packet is received containing the same Sequence
  973.       Number.
  974.  
  975.    With call set up time on the WAN being of the order of a second, a
  976.    value of 5 seconds for the retransmission timer is appropriate.
  977.  
  978.    To prevent against failures in the circuit manager a limit SHOULD be
  979.    placed on the number of retransmissions. If no response has been
  980.    received after a configurable length of time (say 180 seconds) routes
  981.    via the next hop router are marked as unreachable, the hold down
  982.    timer is started and the entry is advertised as unreachable on other
  983.    interfaces.
  984.  
  985.    The next hop router may then be polled with Update Requests at a
  986.    reduced frequency.  A suitable poll interval would be of the order of
  987.    minutes rather than seconds.  Alternatively an Update Request could
  988.    be initiated by administrative action.  When a response is received
  989.    the routers should perform a complete exchange of routing
  990.    information.
  991.  
  992. 6.4 Over-subscription Timer
  993.  
  994.    Over-subscription is where there are more next hop routers to send
  995.    updates to on the WAN than there are channels.  For example 3 next
  996.    hop routers accessed by an ISDN Basic Rate Interface (BRI) which can
  997.    only support 2 calls simultaneously.
  998.  
  999.    To avoid route oscillation routes may NOT be marked unreachable
  1000.    immediately on receiving a circuit down message from the circuit
  1001.    manager.  A timeout MAY be used to delay marking the routes
  1002.    unreachable for sufficiently long to allow the calls to 'time
  1003.    division multiplex' over the available channels.  A timeout as long
  1004.    as the regular 180 second RIP route timeout MAY be suitable.  In
  1005.    general the greater the over-subscription, the longer the time out
  1006.    should be.
  1007.  
  1008.  
  1009.  
  1010. Meyer & Sherry              Standards Track                    [Page 18]
  1011.  
  1012. RFC 2091                      Trigger RIP                   January 1997
  1013.  
  1014.  
  1015.    Implementations wishing to support over-subscription may implement
  1016.    the delay within the circuit manager or within the routing
  1017.    application.
  1018.  
  1019.    If the delay is implemented within the routing application the
  1020.    routing entries MUST NOT start timing out during  the delay.  This
  1021.    allows the circuit up message to be ignored if the timeout after
  1022.    receiving the circuit down has still to expire.  This avoids any
  1023.    confusion if the peer had previously issued a Route Flush command and
  1024.    was part way through an update.
  1025.  
  1026. 7. Security Considerations
  1027.  
  1028.    The circuit manager is required to be provided with a list of
  1029.    physical addresses to enable it to establish a call to the next hop
  1030.    router.  The circuit manager SHOULD only allow incoming calls to be
  1031.    accepted from the same well defined list of routers.
  1032.  
  1033.    Elsewhere in the system there will be a set of logical address and
  1034.    physical address tuples to enable the network protocols to run over
  1035.    the correct circuit.  This may be a lookup table, or in some
  1036.    instances there may be an algorithmic conversion between the two
  1037.    addresses.
  1038.  
  1039.    The routing (or service advertising) task MUST be provided with a
  1040.    list of logical addresses to which triggered updates are to be sent
  1041.    on the WAN.  The list MAY be a subset of the list of next hop routers
  1042.    maintained by the circuit manager.
  1043.  
  1044.    RIP Version 2 also allows further authentication of Triggered RIP
  1045.    packets.
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Meyer & Sherry              Standards Track                    [Page 19]
  1067.  
  1068. RFC 2091                      Trigger RIP                   January 1997
  1069.  
  1070.  
  1071. Appendix A - Implementation Suggestion
  1072.  
  1073.    This section suggests how the database might be structured to handle
  1074.    Triggered RIP.
  1075.  
  1076.    Each entry in the database is given a unique route number.  Every
  1077.    time a best route to a network changes, a global route number is
  1078.    incremented and the changed route is given the new route number.
  1079.    Note that this route number is completely internal to the router and
  1080.    has no bearing on the Sequence Number sent in Update Responses sent
  1081.    to the peer.
  1082.  
  1083.    The route number size should be large enough so as not to wrap round
  1084.    - or the routes can be renumbered before it becomes a problem.  Re-
  1085.    numbering requires that the database environment is stable (No Update
  1086.    Responses are queued awaiting Acknowledgement)
  1087.  
  1088.    Is is probably easier to manage the routes if they are also chained
  1089.    together using a pointer to a later (and possibly also a pointer to
  1090.    an earlier) entry which reflect the route number/age.
  1091.  
  1092.    Performing a complete update then consists of running though the
  1093.    routes from the oldest to the latest and sending them out in Update
  1094.    Responses.  Subsequent changes to the database are treated as sending
  1095.    out only the changed entries (from the previous latest to the new
  1096.    latest).
  1097.  
  1098.    When allowing for several packets in flight care must be taken with
  1099.    retransmissions.  An Update Response 'retransmission' MAY be
  1100.    different from the original.  When transmitting a sequence of Update
  1101.    Responses each Response packet contains a number of routes which is a
  1102. represented by a series of routes with consecutive route numbers.
  1103.    Consider sending three Update Responses with Sequence numbers 10,11
  1104.    and 12 each containing 10 routes:
  1105.  
  1106.    Sequence Number    Routes represented by Route Numbers
  1107.  
  1108.          10           101, 102, 103, 104, 105, 106, 107, 108, 109, 110
  1109.  
  1110.          11           111, 112, 113, 114, 115, 116, 117, 118, 119, 120
  1111.  
  1112.          12           121, 122, 123, 124, 125, 126, 127, 128, 129, 130
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Meyer & Sherry              Standards Track                    [Page 20]
  1123.  
  1124. RFC 2091                      Trigger RIP                   January 1997
  1125.  
  1126.  
  1127.    If these Update Responses are NOT acknowledged, but in the meantime
  1128.    the routing database has changed and the routes represented by route
  1129.    numbers 104, 112 - 116 and 127 have changed and been assigned new
  1130.    route numbers 131 - 137, the retransmission will look like:
  1131.  
  1132.            Sequence Number    Routes represented by Route Numbers
  1133.  
  1134.             10           101, 102, 103, 105, 106, 107, 108, 109, 110
  1135.  
  1136.             11           111, 117, 118, 119, 120
  1137.  
  1138.             12           121, 122, 123, 124, 125, 126, 128, 129, 130
  1139.  
  1140.             13           131, 132, 133, 134, 135, 136, 137
  1141.  
  1142.       To perform a retransmission it is VERY IMPORTANT that the
  1143.       retransmission contains only the SUB-SET of route numbers which
  1144.       currently apply.  If there are NO suitable routes to send, it is not
  1145.       necessary to send an empty retransmission.
  1146.  
  1147.    An alternative 'retransmission' strategy is to always use different
  1148.    sequence numbers when resending updates.  Consider transmitting
  1149.    packets with sequence numbers 10 through 20 - and responses are
  1150.    received from all packets except those with sequence numbers 14 and
  1151.    17.  In this case only the data in packets 10 through 13 can be
  1152.    considered to be acknowledged.  The data from packet 14 onwards MUST
  1153.    be re-sent and given new sequence numbers starting at 21.
  1154.  
  1155. References
  1156.  
  1157.    [1]  Hedrick. C., "Routing Information Protocol", RFC 1058, Rutgers
  1158.         University, June 1988.
  1159.  
  1160.    [2]  Malkin. G., "RIP Version 2 - Carrying Additional Information",
  1161.         RFC 1723, Xylogics, November 1994.
  1162.  
  1163.    [3]  Novell Incorporated., "IPX Router Specification", Version 1.20,
  1164.         October 1993.
  1165.  
  1166.    [4]  Meyer. G., "Extensions to RIP to Support Demand Circuits",
  1167.         Spider Systems, February 1994.
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Meyer & Sherry              Standards Track                    [Page 21]
  1179.  
  1180. RFC 2091                      Trigger RIP                   January 1997
  1181.  
  1182.  
  1183. Authors'  Address:
  1184.  
  1185.    Gerry Meyer
  1186.    Shiva
  1187.    Stanwell Street
  1188.    Edinburgh EH6 5NG
  1189.    Scotland, UK
  1190.  
  1191.    Phone: (UK) 131 554 9424
  1192.    Fax:   (UK) 131 467 7749
  1193.    Email: gerry@europe.shiva.com
  1194.  
  1195.    Steve Sherry
  1196.    Xyplex
  1197.    295 Foster St.
  1198.    Littleton, MA 01460
  1199.  
  1200.    Phone: (US) 508 952 4745
  1201.    Fax:   (US) 508 952 4887
  1202.    Email: shs@xyplex.com
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Meyer & Sherry              Standards Track                    [Page 22]
  1235.  
  1236.