home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-idmr-cbt-spec-07.txt < prev    next >
Text File  |  1997-03-07  |  54KB  |  1,483 lines

  1.  
  2.  
  3. Inter-Domain Multicast Routing (IDMR)                       A. Ballardie
  4. INTERNET-DRAFT                                                Consultant
  5.  
  6.                                                               March 1997
  7.  
  8.  
  9.                 Core Based Trees (CBT) Multicast Routing
  10.  
  11.                       -- Protocol Specification --
  12.  
  13.  
  14. Status of this Memo
  15.  
  16.    This document is an Internet Draft.  Internet Drafts are working doc-
  17.    uments of the Internet Engineering Task Force (IETF), its Areas, and
  18.    its Working Groups. Note that other groups may also distribute work-
  19.    ing documents as Internet Drafts).
  20.  
  21.    Internet Drafts are draft documents valid for a maximum of six
  22.    months. Internet Drafts may be updated, replaced, or obsoleted by
  23.    other documents at any time.  It is not appropriate to use Internet
  24.    Drafts as reference material or to cite them other than as a "working
  25.    draft" or "work in progress."
  26.  
  27.    Please check the I-D abstract listing contained in each Internet
  28.    Draft directory to learn the current status of this or any other
  29.    Internet Draft.
  30.  
  31.  
  32. Abstract
  33.  
  34.    This document describes the Core Based Tree (CBT) network layer mul-
  35.    ticast routing protocol. CBT builds a shared multicast distribution
  36.    tree per group, and is suited to inter- and intra-domain multicast
  37.    routing.
  38.  
  39.    CBT is protocol independent in that it makes use of unicast routing
  40.    to establish paths between senders and receivers.  The CBT architec-
  41.    ture is described in [1].
  42.  
  43.    This document is progressing through the IDMR working group of the
  44.    IETF.  CBT related documents include [1, 5, 6]. For all IDMR-related
  45.    documents, see http://www.cs.ucl.ac.uk/ietf/idmr.
  46.  
  47.  
  48.  
  49.  
  50.  
  51. Expires September 1997                                          [Page 1]
  52.  
  53.  
  54.  
  55. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  56.  
  57.  
  58. TABLE OF CONTENTS
  59.  
  60.   1. Changes Since Previous Revision............................ 3
  61.  
  62.   2. Introduction & Terminology................................. 4
  63.  
  64.   3. CBT Functional Overview.................................... 5
  65.  
  66.   4. CBT Protocol Specificiation Details........................ 8
  67.  
  68.      4.1 CBT HELLO Protocol..................................... 8
  69.  
  70.          4.1.1 Sending HELLOs................................... 9
  71.  
  72.          4.1.2 Receiving HELLOs................................. 9
  73.  
  74.      4.2 JOIN_REQUEST Processing................................ 10
  75.  
  76.          4.2.1 Sending JOIN_REQUESTs............................ 10
  77.  
  78.          4.2.2 Receiving JOIN_REQUESTs.......................... 10
  79.  
  80.      4.3 JOIN_ACK Processing.................................... 11
  81.  
  82.          4.3.1 Sending JOIN_ACKs................................ 11
  83.  
  84.          4.3.2 Receiving JOIN_ACKs.............................. 12
  85.  
  86.      4.4 QUIT_NOTIFICATION Processing........................... 12
  87.  
  88.          4.4.1 Sending QUIT_NOTIFICATIONs....................... 12
  89.  
  90.          4.4.2 Receiving QUIT_NOTIFICATIONs..................... 13
  91.  
  92.      4.5 CBT ECHO_REQUEST Processing............................ 14
  93.  
  94.          4.5.1 Sending ECHO_REQUESTs............................ 14
  95.  
  96.          4.5.2 Receiving ECHO_REQUESTs.......................... 14
  97.  
  98.      4.6 ECHO_REPLY Processing.................................. 15
  99.  
  100.          4.6.1 Sending ECHO_REPLYs.............................. 15
  101.  
  102.          4.6.2 Receiving ECHO_REPLYs............................ 15
  103.  
  104.  
  105.  
  106. Expires September 1997                                          [Page 2]
  107.  
  108.  
  109.  
  110. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  111.  
  112.  
  113.      4.7 FLUSH_TREE Processing.................................. 16
  114.  
  115.          4.7.1 Sending FLUSH_TREE Messages...................... 16
  116.  
  117.          4.7.2 Receiving FLUSH_TREE Messages.................... 16
  118.  
  119.   5. Timers and Default Values.................................. 16
  120.  
  121.   6. CBT Packet Formats and Message Types....................... 17
  122.  
  123.      6.1 CBT Common Control Packet Header....................... 18
  124.  
  125.      6.2 HELLO Packet Format.................................... 19
  126.  
  127.      6.3 JOIN_REQUEST Packet Format............................. 19
  128.  
  129.      6.4 JOIN_ACK Packet Format................................. 20
  130.  
  131.      6.5 QUIT_NOTIFICATION Packet Format........................ 21
  132.  
  133.      6.6 ECHO_REQUEST Packet Format............................. 21
  134.  
  135.      6.7 ECHO_REPLY Packet Format............................... 22
  136.  
  137.      6.8 FLUSH_TREE Packet Format............................... 23
  138.  
  139.   7. Core Router Discovery...................................... 23
  140.  
  141.      7.1  Bootstrap Message Format.............................. 25
  142.  
  143.      7.2  Candidate Core Advertisement Message Format........... 25
  144.  
  145.   8. Interoperability Issues.................................... 25
  146.  
  147.   Acknowledgements.............................................. 26
  148.  
  149.   References.................................................... 26
  150.  
  151.   Author Information............................................ 27
  152.  
  153.  
  154.  
  155. 1.  Changes since Previous Revision (05)
  156.  
  157.    This revision of the CBT protocol specification differs significantly
  158.  
  159.  
  160.  
  161. Expires September 1997                                          [Page 3]
  162.  
  163.  
  164.  
  165. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  166.  
  167.  
  168.    from the previously released revision (05). Consequently, this revi-
  169.    sion represents version 2 of the CBT protocol.  CBT version 2 is not,
  170.    and was not, intended to be backwards compatible with version 1; we
  171.    do not expect this to cause extensive compatibility problems because
  172.    we do not believe CBT is at all widely deployed at this stage. How-
  173.    ever, any future versions of CBT can be expected to be backwards com-
  174.    patible with this version.
  175.  
  176.    The most significant changes to version 2 compared to version 1
  177.    include:
  178.  
  179.    +o    new LAN mechanisms, including the incorporation of an HELLO pro-
  180.         tocol.
  181.  
  182.    +o    new simplified packet formats, with the definition of a common
  183.         CBT control packet header.
  184.  
  185.    +o    a generic intra-domain core discovery ("bootstrap") mechanism,
  186.         to be specified separately, and published soon.
  187.  
  188.    This specification revision is a complete re-write of the previous
  189.    revision.
  190.  
  191.  
  192.  
  193. 2.  Introduction & Terminology
  194.  
  195.    In CBT, a "core router" (or just "core") is a router which configured
  196.    to act as a "meeting point" between a sender and group receivers. The
  197.    term "rendezvous point (RP)" is used equivalently in some contexts
  198.    [2]. Each core router is configured to know it is a core router.
  199.  
  200.    A router that is part of a CBT distribution tree is known as an "on-
  201.    tree" router. An on-tree router maintains active state for the group.
  202.  
  203.    We refer to a broadcast interface as any interface that supports mul-
  204.    ticast transmission.
  205.  
  206.    An "upstream" interface (or router) is one which is on the path
  207.    towards the group's core router with respect to this router. A "down-
  208.    stream" interface (or router) is one which is on the path away from
  209.    the group's core router with respect to this router.
  210.  
  211.    Other terminology is introduced in its context throughout the text.
  212.  
  213.  
  214.  
  215.  
  216. Expires September 1997                                          [Page 4]
  217.  
  218.  
  219.  
  220. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  221.  
  222.  
  223. 3.  CBT Functional Overview
  224.  
  225.    The CBT protocol is designed to build and maintain a shared multicast
  226.    distribution tree that spans only those networks and links leading to
  227.    interested receivers.
  228.  
  229.    To achieve this, a host first expresses its interest in joining a
  230.    group by multicasting an IGMP host membership report [3] across its
  231.    attached link. On receiving this report, a local CBT aware router
  232.    invokes the tree joining process (unless it has already) by generat-
  233.    ing a JOIN_REQUEST message, which is sent to the next hop on the path
  234.    towards the group's core router (how the local router discovers which
  235.    core to join is discussed in section 7). This join message must be
  236.    explicitly acknowledged (JOIN_ACK) either by the core router itself,
  237.    or by another router that is on the unicast path between the sending
  238.    router and the core, which itself has already successfully joined the
  239.    tree.
  240.  
  241.    The join message sets up transient join state in the routers it tra-
  242.    verses, and this state consists of <group, incoming interface, outgo-
  243.    ing interface>. "Incoming interface" and "outgoing interface" may be
  244.    "previous hop" and "next hop", respectively, if the corresponding
  245.    links do not support multicast transmission. "Previous hop" is taken
  246.    from the incoming control packet's IP source address, and "next hop"
  247.    is gleaned from the routing table - the next hop to the specified
  248.    core address. This transient state eventually times out unless it is
  249.    "confirmed" with a join acknowledgement (JOIN_ACK) from upstream. The
  250.    JOIN_ACK traverses the reverse path of the corresponding join mes-
  251.    sage, which is possible due to the presence of the transient join
  252.    state. Once the acknowledgement reaches the router that originated
  253.    the join message, the new receiver can receive traffic sent to the
  254.    group.
  255.  
  256.    Loops cannot be created in a CBT tree because a) there is only one
  257.    active core per group, and b) tree building/maintenance scenarios
  258.    which may lead to the creation of tree loops are avoided.  For exam-
  259.    ple, if a router's upstream neighbour becomes unreachable, the router
  260.    immediately "flushes" all of its downstream branches, allowing them
  261.    to individually rejoin if necessary.  Transient unicast loops do not
  262.    pose a threat because a new join message that loops back on itself
  263.    will never get acknowledged, and thus eventually times out.
  264.  
  265.    The state created in routers by the sending or receiving of a
  266.    JOIN_ACK is bi-directional - data can flow either way along a tree
  267.    "branch", and the state is group specific - it consists of the group
  268.  
  269.  
  270.  
  271. Expires September 1997                                          [Page 5]
  272.  
  273.  
  274.  
  275. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  276.  
  277.  
  278.    address and a list of local interfaces over which join messages for
  279.    the group have previously been acknowledged. There is no concept of
  280.    "incoming" or "outgoing" interfaces, though it is necessary to be
  281.    able to distinguish the upstream interface from any downstream inter-
  282.    faces. In CBT, these interfaces are known as the "parent" and "child"
  283.    interfaces, respectively. We recommend the parent be distinguished as
  284.    such by a single bit in each multicast forwarding cache entry.
  285.  
  286.    With regards to the information contained in the multicast forwarding
  287.    cache, on link types not supporting native multicast transmission an
  288.    on-tree router must store the address of a parent and any children.
  289.    On links supporting multicast however, parent and any child informa-
  290.    tion is represented with local interface addresses (or similar iden-
  291.    tifying information, such as an interface "index") over which the
  292.    parent or child is reachable.
  293.  
  294.    When a multicast data packet arrives at a router, the router uses the
  295.    group address as an index into the multicast forwarding cache. A copy
  296.    of the incoming multicast data packet is forwarded over each inter-
  297.    face (or to each address) listed in the entry except the incoming
  298.    interface.
  299.  
  300.    Each router that comprises a CBT multicast tree, except the core
  301.    router, is responsible for maintaining its upstream link, provided it
  302.    has interested downstream receivers, i.e. the child interface list is
  303.    non-NULL. A child interface is one over which a member host is
  304.    directly attached, or one over which a downstream on-tree router is
  305.    attached.  This "tree maintenance" is achieved by each downstream
  306.    router periodically sending a CBT "keepalive" message (ECHO_REQUEST)
  307.    to its upstream neighbour, i.e. its parent router on the tree. One
  308.    keepalive message is sent to represent entries with the same parent,
  309.    thereby improving scalability on links which are shared by many
  310.    groups.  On multicast capable links, a keepalive is multicast to the
  311.    "all-cbt-routers" group (IANA assigned as 224.0.0.15); this has a
  312.    suppressing effect on any other router for which the link is its par-
  313.    ent link.  If a parent link does not support multicast transmission,
  314.    keepalives are unicast.
  315.  
  316.    The receipt of a keepalive message over a valid child interface imme-
  317.    diately prompts a response (ECHO_REPLY), which is either unicast or
  318.    multicast, as appropriate.
  319.  
  320.    The ECHO_REQUEST does not contain any group information; the
  321.    ECHO_REPLY does, but only periodically. To maintain consistent infor-
  322.    mation between parent and child,
  323.  
  324.  
  325.  
  326. Expires September 1997                                          [Page 6]
  327.  
  328.  
  329.  
  330. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  331.  
  332.  
  333.     the parent periodically reports, in an ECHO_REPLY, all groups for
  334.    which it has state, over each of its child interfaces for those
  335.    groups. This group-carrying echo reply is not prompted explicitly by
  336.    the receipt of an echo request message.  A child is notified of the
  337.    time to expect the next echo reply message containing group informa-
  338.    tion in an echo reply prompted by a child's echo request. The fre-
  339.    quency of  parent group reporting is at the granularity of minutes.
  340.  
  341.    It cannot be assumed all of the routers on a multi-access link have a
  342.    uniform view of unicast routing; this is particularly the case when a
  343.    multi-access link spans two or more unicast routing domains. This
  344.    could lead to multiple upstream tree branches being formed (an error
  345.    condition) unless steps are taken to ensure all routers on the link
  346.    agree which is the upstream router for a particular group. CBT
  347.    routers attached to a multi-access link participate in an explicit
  348.    election mechanism that elects a single router, the designated router
  349.    (DR), as the link's upstream router for all groups. Since the DR
  350.    might not be the link's best next-hop for a particular core router,
  351.    this may result in join messages being re-directed back across a
  352.    multi-access link. If this happens, the re-directed join message is
  353.    unicast across the link by the DR to the best next-hop, thereby pre-
  354.    venting a looping scenario. This re-direction only ever applies to
  355.    join messages.  Whilst this is suboptimal for join messages, which
  356.    are generated infrequently, multicast data never traverses a link
  357.    more than once (either natively, or encapsulated).
  358.  
  359.    In all but the exception case described above, all CBT control mes-
  360.    sages are multicast over multicast supporting links to the "all-cbt-
  361.    routers" group, with IP TTL 1. The IP source address of CBT control
  362.    messages is the outgoing interface of the sending router. The IP des-
  363.    tination address of CBT control messages is either the "all-cbt-
  364.    routers" group address, or the IP address of a router reachable over
  365.    one of the sending router's interfaces, depending on whether the
  366.    sender's outgoing link supports multicast transmission. All the nec-
  367.    essary addressing information is obtained as part of tree set up.
  368.  
  369.    If CBT is implemented over a tunnelled topology, when sending a CBT
  370.    control packet over a tunnel interface, the sending router uses as
  371.    the packet's IP source address the local tunnel end point address,
  372.    and the remote tunnel end point address as the packet's IP destina-
  373.    tion address.
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381. Expires September 1997                                          [Page 7]
  382.  
  383.  
  384.  
  385. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  386.  
  387.  
  388. 4.  Protocol Specification Details
  389.  
  390.  
  391.    Details of the CBT protocol are presented in the context of a single
  392.    router implementation.
  393.  
  394. 4.1.  CBT HELLO Protocol
  395.  
  396.    The HELLO protocol is used to elect a designated router (DR) on
  397.    broadcast-type links. It is also used to elect a designated border
  398.    router (BR) when interconnecting a CBT domain with other domains (see
  399.    [5]).
  400.  
  401.    A router represents its status as a link's DR by setting the DR-flag
  402.    on that interface; a DR flag is associated with each of a router's
  403.    broadcast interfaces. This flag can only assume one of two values:
  404.    TRUE or FALSE. By default, this flag is FALSE.
  405.  
  406.    HELLO messages are multicast periodically to the all-cbt-routers
  407.    group, 224.0.0.15, using IP TTL 1. The advertisement period is
  408.    [HELLO_TIMER] seconds. [HELLO_TIMER] comprises a configured
  409.    [HELLO_INTERVAL], to which is added [RND_RSP] seconds - a random
  410.    response interval.  This random response additive is required to
  411.    avoid the potential problem of synchronisation between HELLO adver-
  412.    tisements (or other control messages) from different routers. The
  413.    HELLO protocol's convergence time is set at [HELLO_CONV] seconds -
  414.    the time after which no further HELLOs are expected in any one round
  415.    of the protocol.
  416.  
  417.    Each HELLO advertising router includes the upper bound of its
  418.    [RND_RSP] timer in its HELLO advertisements. This is necessary so
  419.    that all routers attached to the link can agree on a common HELLO
  420.    convergence time [HELLO_CONV]; in any one round of the HELLO proto-
  421.    col, a router assumes the minimum of the upper bound of its config-
  422.    ured [RND_RSP] and that of any received advertisement's.  The minimum
  423.    upper bound is then used as this router's [RND_RSP] upper bound in
  424.    the next round of the protocol. [HELLO_CONV] is set to this minimum
  425.    upper bound + 2 seconds (the 2 seconds being a response "safety mar-
  426.    gin") for the next round of the protocol.
  427.  
  428.    A network manager can preference a router's DR eligibility by option-
  429.    ally configuring a HELLO preference. Valid configuration values range
  430.    from 1 to 254 (decimal), 1 representing the "most eligible" value. In
  431.    the absence of explicit configuration, a router assumes the default
  432.    HELLO preference value of 255. The elected DR uses HELLO preference
  433.  
  434.  
  435.  
  436. Expires September 1997                                          [Page 8]
  437.  
  438.  
  439.  
  440. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  441.  
  442.  
  443.    zero (0) in HELLO advertisements, irrespective of any configured
  444.    preference.  The DR continues to use preference zero for as long as
  445.    it is running.
  446.  
  447.    The DR election winner is that which advertises the lowest HELLO
  448.    preference, or the lowest-addressed in the event of a tie.
  449.  
  450.    The situation where two or more routers attached to the same broad-
  451.    cast link are advertising HELLO preference 0 should never arise. How-
  452.    ever, should this situation arise, all but the lowest addressed zero-
  453.    advertising router relinquishes its claim as DR immediately by unset-
  454.    ting the DR flag on the corresponding interface. The relinquishing
  455.    router(s) subsequently advertise their previously used preference
  456.    value in HELLO advertisements.
  457.  
  458.  
  459. 4.1.1.  Sending HELLOs
  460.  
  461.    When a router starts up, it multicasts two HELLO messages over each
  462.    of its broadcast interfaces in successsion. The DR flag is initially
  463.    unset (FALSE) on each broadcast interface.
  464.  
  465.    A router sends a HELLO message whenever its [HELLO_TIMER] expires.
  466.  
  467.    Whenever a router sends a HELLO message, it resets its [HELLO_TIMER].
  468.  
  469.  
  470. 4.1.2.  Receiving HELLOs
  471.  
  472.    On receipt of any HELLO message, a router adjusts its [RND_RSP] upper
  473.    bound to the minimum of this router's configured [RND_RSP] upper
  474.    bound and that received in the received HELLO. The router also
  475.    adjusts its [HELLO_CONV] as described above.
  476.  
  477.    A router need not respond to a HELLO message if the received HELLO is
  478.    "better" than its own. Thus, in steady state, the HELLO protocol
  479.    incurs very little traffic overhead.
  480.  
  481.    If the received HELLO message is "better" (lower preferenced, or
  482.    equally preferenced but lower addressed) than it would send itself,
  483.    it immediately unsets its DR flag on the arriving interface if the DR
  484.    flag is set on that interface. It also resets its [HELLO_TIMER].
  485.  
  486.    If the received HELLO message is not "better" than this router would
  487.    send itself, it sets its [RND_RSP] random response timer; on expiry,
  488.  
  489.  
  490.  
  491. Expires September 1997                                          [Page 9]
  492.  
  493.  
  494.  
  495. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  496.  
  497.  
  498.    the router responds with its own HELLO message . If no "better" HELLO
  499.    message is received within the current [HELLO_CONV], the router sets
  500.    the DR flag on the corresponding interface.
  501.  
  502.  
  503.  
  504. 4.2.  JOIN_REQUEST Processing
  505.  
  506.    A JOIN_REQUEST is the CBT control message used to register a member
  507.    host's interest in joining the distribution tree for the group.
  508.  
  509.  
  510. 4.2.1.  Sending JOIN_REQUESTs
  511.  
  512.    A JOIN_REQUEST can only ever be originated by a leaf router, i.e. a
  513.    router with directly attached member hosts. This join message is sent
  514.    hop-by-hop towards the core router for the group (see section 7).
  515.    The originating router caches <group, NULL, upstream interface> state
  516.    for each join it originates. This state is known as "transient join
  517.    state".  The absence of a "downstream interface" (NULL) indicates
  518.    that this router is the join message originator, and is therefore
  519.    responsible for any retransmissions of this message if a response is
  520.    not received within [JOIN_RTX_INTERVAL].  It is an error if no
  521.    response is received after [JOIN_TIMEOUT] seconds.  If this error
  522.    condition occurs, the joining process may be re-invoked by the
  523.    receipt of the next IGMP host membership report from a locally
  524.    attached member host.
  525.  
  526.    Note that if the interface over which a JOIN_REQUEST is to be sent
  527.    supports multicast, the JOIN_REQUEST is multicast to the all-cbt-
  528.    routers group, using IP TTL 1.  If the link does not support multi-
  529.    cast, the JOIN_REQUEST is unicast to the next hop on the unicast path
  530.    to the group's core.
  531.  
  532.  
  533. 4.2.2.  Receiving JOIN_REQUESTs
  534.  
  535.    On broadcast links, JOIN_REQUESTs which are multicast may only be
  536.    forwarded by the link's DR. Other routers attached to the link may
  537.    process the join (see below). JOIN_REQUESTs which are multicast over
  538.    a point-to-point link are only processed by the router on the link
  539.    which does not have a local interface corresponding to the join's
  540.    network layer (IP) source address. Unicast JOIN_REQUESTs may only be
  541.    processed by the router which has a local interface corresponding to
  542.    the join's network layer (IP) destination address.
  543.  
  544.  
  545.  
  546. Expires September 1997                                         [Page 10]
  547.  
  548.  
  549.  
  550. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  551.  
  552.  
  553.    With regard to forwarding a received JOIN_REQUEST, if the receiving
  554.    router is not on-tree for the group, and is not the group's core
  555.    router, the join is forwarded to the next hop on the path towards the
  556.    core. The join is multicast, or unicast, according to whether the
  557.    outgoing interface supports multicast.  The router caches the follow-
  558.    ing information with respect to the forwarded join: <group, down-
  559.    stream interface, upstream interface>.
  560.  
  561.    If this transient join state is not "confirmed" with a join acknowl-
  562.    edgement (JOIN_ACK) message from upstream, the state is timed out
  563.    after 1.5 times [JOIN_RTX_INTERVAL].
  564.  
  565.    If the receiving router is the group's core router, the join is "ter-
  566.    minated" and acknowledged by means of a JOIN_ACK. Similarly, if the
  567.    router is on-tree and the JOIN_REQUEST arrives over an interface that
  568.    is not the upstream interface for the group, the join is acknowl-
  569.    edged.
  570.  
  571.    If  [RND_RSP] pertaining to a JOIN_REQUEST is active (i.e. running),
  572.    if a JOIN_REQUEST is received for the same group over that group's
  573.    parent interface, cancel [RND_RSP] for the impending JOIN_REQUEST.
  574.  
  575.    If this router has a cache-deletion-timer [CACHE_DEL_TIMER] running
  576.    on the arrival interface for the group specified in a multicast join,
  577.    the timer is cancelled.
  578.  
  579.    If a multicast JOIN_REQUEST is received and the QUIT_TIME bit (see
  580.    section 4.4.1) is set on the arrival interface for the specified
  581.    group, unset the QUIT_TIME bit.
  582.  
  583.  
  584. 4.3.  JOIN_ACK Processing
  585.  
  586.    A JOIN_ACK is the mechanism by which an interface is added to a
  587.    router's multicast forwarding cache; thus, the interface becomes part
  588.    of the group distribution tree.
  589.  
  590.  
  591. 4.3.1.  Sending JOIN_ACKs
  592.  
  593.  
  594.    The JOIN_ACK is sent over the same interface as the corresponding
  595.    JOIN_REQUEST was received. The sending of the acknowledgement causes
  596.    the router to add the interface to its child interface list in its
  597.    forwarding cache for the group, if it is not already. If the router
  598.  
  599.  
  600.  
  601. Expires September 1997                                         [Page 11]
  602.  
  603.  
  604.  
  605. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  606.  
  607.  
  608.    does not yet have active state for this group, this router must be
  609.    the core router for the group; the core creates a forwarding cache
  610.    entry and includes the interface in its child interface list, and
  611.    sends the JOIN_ACK downstream.
  612.  
  613.    A JOIN_ACK is multicast or unicast, according to whether the outgoing
  614.    interface supports multicast transmission or not.
  615.  
  616.  
  617. 4.3.2.  Receiving JOIN_ACKs
  618.  
  619.    The group and arrival interface must be matched to a <group, ....,
  620.    upstream interface> from the router's cached transient state. If no
  621.    match is found, the JOIN_ACK is discarded.  If a match is found, a
  622.    CBT forwarding cache entry for the group is created, with "upstream
  623.    interface" marked as the group's parent interface.
  624.  
  625.    If "downstream interface" in the cached transient state is NULL, the
  626.    JOIN_ACK has reached the originator of the corresponding
  627.    JOIN_REQUEST; the JOIN_ACK is not forwarded downstream.  If "down-
  628.    stream interface" is non-NULL, a JOIN_ACK for the group is sent over
  629.    the "downstream interface" (multicast or unicast, accordingly). This
  630.    interface is installed in the child interface list of the group's
  631.    forwarding cache entry.
  632.  
  633.    Once transient state has been confirmed by transferring it to the
  634.    forwarding cache, the transient state is deleted.
  635.  
  636.  
  637. 4.4.  QUIT_NOTIFICATION Processing
  638.  
  639.    A CBT tree is "pruned" in the direction downstream-to-upstream when-
  640.    ever a CBT router's child interface list for a group becomes NULL.
  641.  
  642.  
  643. 4.4.1.  Sending QUIT_NOTIFICATIONs
  644.  
  645.    A QUIT_NOTIFICATION is sent to a router's parent router on the tree
  646.    whenever the router's child interface list becomes NULL.
  647.  
  648.    A QUIT_NOTIFICATION is not acknowledged; once sent, all information
  649.    pertaining to the group it represents is deleted from the forwarding
  650.    cache after a short interval.
  651.  
  652.    To ensure consistency between a child and parent router given the
  653.  
  654.  
  655.  
  656. Expires September 1997                                         [Page 12]
  657.  
  658.  
  659.  
  660. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  661.  
  662.  
  663.    potential for loss of a QUIT_NOTIFICATION, there is a QUIT_TIME bit
  664.    associated with the parent of each group entry; whenever a
  665.    QUIT_NOTIFICATION is sent for a group, the QUIT_TIME bit for that
  666.    group entry is set for a maximum of [QUIT_TIME] seconds before the
  667.    entry is deleted and the QUIT_TIME bit unset. By default, this bit is
  668.    unset.
  669.  
  670.    When the QUIT_TIME bit is set, if the router detects multicast traf-
  671.    fic for the group arriving over a to-be-deleted parent interface (one
  672.    over which a quit has recently been sent), the router sends another
  673.    QUIT_NOTIFICATION over that interface. This is multicast, or unicast,
  674.    as appropriate for the outgoing link. It continues to do so at
  675.    [QUIT_RATE] second intervals so long as data continues to arrive, and
  676.    provided  [QUIT_TIME] has not yet expired.
  677.  
  678.    If, after sending a QUIT_NOTIFICATION a multicast JOIN_REQUEST for
  679.    the specified group arrives over the interface the quit was sent, the
  680.    QUIT_TIME bit is immediately unset if it is set (any traffic arriving
  681.    over the interface will be for/from another child router attached to
  682.    the same link).
  683.  
  684.  
  685. 4.4.2.  Receiving QUIT_NOTIFICATIONs
  686.  
  687.    The group reported in the QUIT_NOTIFICATION must be matched with a
  688.    forwarding cache entry. If no match is found, the QUIT_NOTIFICATION
  689.    is ignored and discarded.  If a match is found, if the arrival inter-
  690.    face is a valid child interface in the group entry, how the router
  691.    proceeds depends on whether the QUIT_NOTIFICATION was multicast or
  692.    unicast.
  693.  
  694.    If the QUIT_NOTIFICATION was unicast, the corresponding child inter-
  695.    face is deleted from the group's forwarding cache entry, and no fur-
  696.    ther processing is required.
  697.  
  698.    If the QUIT_NOTIFICATION was multicast, and the arrival interface is
  699.    a valid child interface for the specified group, the router sets a
  700.    cache-deletion-timer [CACHE_DEL_TIMER].
  701.  
  702.    Because this router might be acting as a parent router for multiple
  703.    downstream routers attached to the arrival link, [CACHE_DEL_TIMER]
  704.    interval gives those routers that did not send the
  705.    QUIT_NOTIFICATION, but received it over their parent interface, the
  706.    opportunity to ensure that the parent router does not remove the link
  707.    from its child interface list.
  708.  
  709.  
  710.  
  711. Expires September 1997                                         [Page 13]
  712.  
  713.  
  714.  
  715. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  716.  
  717.  
  718.    Therefore, on receipt of a multicast QUIT_NOTIFICATION over a parent
  719.    interface, a receiving router starts a random response interval timer
  720.    which is set to [RND_RSP] seconds.
  721.  
  722.    If a multicast JOIN_REQUEST is received over the same interface (par-
  723.    ent) for the same group before this router's [RND_RSP] timer expires,
  724.    it suppresses the multicasting of its own similar JOIN_REQUEST.
  725.  
  726.    If a multicast JOIN_REQUEST is not received via the router's parent
  727.    link before [RND_RSP] expires, a JOIN_REQUEST is multicast over the
  728.    link for the previously quit group, with IP TTL 1.
  729.  
  730.  
  731. 4.5.  ECHO_REQUEST Processing
  732.  
  733.    The ECHO_REQUEST message allows a child to monitor reachability to
  734.    its parent router for a group (or range of groups if the parent
  735.    router is the parent for multiple groups). Group information is not
  736.    carried in ECHO_REQUEST messages.
  737.  
  738.  
  739. 4.5.1.  Sending ECHO_REQUESTs
  740.  
  741.    Whenever a router creates a forwarding cache entry due to the receipt
  742.    of a JOIN_ACK, the router begins the periodic sending of ECHO_REQUEST
  743.    messages over its parent interface. The ECHO_REQUEST is multicast to
  744.    the "all-cbt-routers" group over multicast-capable interfaces, and
  745.    unicast to the parent router otherwise.
  746.  
  747.    ECHO_REQUEST messages are sent at [ECHO_INTERVAL] second intervals.
  748.    Whenever an ECHO_REQUEST is sent, [ECHO_INTERVAL] is reset.
  749.  
  750.    If, for any echo-request sent to a parent, the expected response
  751.    (ECHO_REPLY) is not forthcoming within [ECHO_RTX_INTERVAL],  the echo
  752.    request message is retransmitted. If no response is forthcoming
  753.    within [ECHO_TIMEOUT] seconds, the router sends a FLUSH_TREE message
  754.    over each of its child interfaces for the group, then removes all
  755.    forwarding cache state for the group.
  756.  
  757.  
  758. 4.5.2.  Receiving ECHO_REQUESTs
  759.  
  760.    If a ECHO_REQUEST is received over any valid child interface, the
  761.    receiving router responds with an ECHO_REPLY message over the same
  762.    interface. This message is multicast to the "all-cbt-routers" group
  763.  
  764.  
  765.  
  766. Expires September 1997                                         [Page 14]
  767.  
  768.  
  769.  
  770. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  771.  
  772.  
  773.    over multicast-capable interfaces, and unicast otherwise.
  774.  
  775.    If a multicast ECHO_REQUEST message arrives via any valid parent
  776.    interface, the router resets its [ECHO_INTERVAL] timer for that
  777.    upstream interface, thereby suppressing the sending of  its own
  778.    ECHO_REQUEST over that upstream interface.
  779.  
  780.  
  781. 4.6.  ECHO_REPLY Processing
  782.  
  783.    ECHO_REPLY messages allow a child to monitor the reachability of its
  784.    parent, and ensure the group state information is consistent between
  785.    them.
  786.  
  787.  
  788. 4.6.1.  Sending ECHO_REPLY messages
  789.  
  790.    An ECHO_REPLY message is sent in direct response to receiving an
  791.    ECHO_REQUEST message, provided the ECHO_REQUEST is received over any
  792.    one of this router's valid child interfaces. Additionally, an
  793.    ECHO_REPLY is sent periodically by a parent router over each of its
  794.    child links, reporting all groups for which the link is its child.
  795.  
  796.    ECHO_REPLY messages are unicast or multicast, as appropriate.
  797.  
  798.  
  799. 4.6.2.  Receiving ECHO_REPLY messages
  800.  
  801.    An ECHO_REPLY message must be received via a valid parent interface.
  802.    When received, the child router resets its [ECHO_INTERVAL] timer for
  803.    this upstream interface.  The child router also caches the reported
  804.    "group report interval" (seconds) - the time at which the next group
  805.    carrying ECHO_REPLY will be sent by the parent router.  Like
  806.    [ECHO_INTERVAL], this is cached per upstream interface. If the group
  807.    carrying ECHO_REPLY does not arrive shortly after "group report
  808.    interval" has expired, a QUIT_NOTIFICATION is sent for each group for
  809.    which the non-reporting router is the parent.
  810.  
  811.    If this echo reply carries a list of groups, the child router must
  812.    match all those of its forwarding cache entries for which the arrival
  813.    interface is the upstream interface.  If the parent router does not
  814.    consider itself the parent router for group(s) which the child thinks
  815.    is its parent, the child sends a FLUSH_TREE message downstream for
  816.    each such group. If this router has directly attached members for any
  817.    of the flushed groups, the receipt of an IGMP host membership report
  818.  
  819.  
  820.  
  821. Expires September 1997                                         [Page 15]
  822.  
  823.  
  824.  
  825. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  826.  
  827.  
  828.    for any of those groups will prompt this router to rejoin the corre-
  829.    sponding tree(s).
  830.  
  831.    If the upstream router considers itself the parent for more groups
  832.    than does the receiving router, this router sends a QUIT_NOTIFICATION
  833.    for each of those groups for which the QUIT_TIME bit is set in the
  834.    forwarding cache. Otherwise, the router takes no action.
  835.  
  836.  
  837. 4.7.  FLUSH_TREE Processing
  838.  
  839.    The FLUSH_TREE (flush) message is the mechanism by which a router
  840.    invokes the tearing down of all its downstream branches for a partic-
  841.    ular group. The flush message is multicast to the "all-cbt-routers"
  842.    group when sent over multicast-capable interfaces, and unicast other-
  843.    wise.
  844.  
  845.  
  846. 4.7.1.  Sending FLUSH_TREE messages
  847.  
  848.    A FLUSH_TREE message is sent over each downstream (child) interface
  849.    when a router has lost reachability with its parent router for the
  850.    group (detected via ECHO_REQUEST and ECHO_REPLY messages). All group
  851.    state is removed from an interface over which a flush message is
  852.    sent.
  853.  
  854.  
  855. 4.7.2.  Receiving FLUSH_TREE messages
  856.  
  857.    A FLUSH_TREE message must be received over the parent interface for
  858.    the specified group, otherwise the message is discarded.
  859.  
  860.    The flush message must be forwarded over each child interface for the
  861.    specified group.
  862.  
  863.    Once the flush message has been forwarded, all state for the group is
  864.    removed from the router's forwarding cache.
  865.  
  866.  
  867.  
  868. 5.  Timers and Default Values
  869.  
  870.    This section provides a summary of the timers described above,
  871.    together with their default values.
  872.  
  873.  
  874.  
  875.  
  876. Expires September 1997                                         [Page 16]
  877.  
  878.  
  879.  
  880. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  881.  
  882.  
  883.    +o    [HELLO_INTERVAL]: a base value making up the bulk of the inter-
  884.         val between sending a HELLO message. Default: 60 seconds.
  885.  
  886.    +o    [RND_RSP]: router's random response interval. Default: 2 sec-
  887.         onds.
  888.  
  889.    +o    [HELLO_TIMER]: (variable) interval between sending HELLO mes-
  890.         sages.  [HELLO_TIMER] = [HELLO_INTERVAL + RND_RSP]
  891.  
  892.    +o    [HELLO_CONV]: convergence time of one round of the HELLO proto-
  893.         col.  [HELLO_CONV] = [min(RND_RSP) + 2 seconds].
  894.  
  895.    +o    [JOIN_RTX_INTERVAL]: retransmission time for JOIN_REQUESTs.
  896.         Default: 5 seconds.
  897.  
  898.    +o    [JOIN_TIMEOUT]: time to raise exception due to tree join fail-
  899.         ure. Default: 3.5 times [JOIN_RTX_INTERVAL].
  900.  
  901.    +o    [CACHE_DEL_TIMER]:  time to remove child interface from forward-
  902.         ing cache. Default: 2 seconds.
  903.  
  904.    +o    [QUIT_TIME]: time to remove parent interface from forwarding
  905.         cache entry.  Unset QUIT_TIME bit. Default: 60 seconds.
  906.  
  907.    +o    [QUIT_RATE]: period for sending QUIT_NOTIFICATION if traffic
  908.         persists. Default: 15 seconds.
  909.  
  910.    +o    [ECHO_INTERVAL]: interval between sending ECHO_REQUEST to parent
  911.         routers.  Default: 60 seconds.
  912.  
  913.    +o    [ECHO_RTX_INTERVAL]: retransmission time for ECHO_REQUESTs.
  914.         Default 2 seconds.
  915.  
  916.    +o    [ECHO_TIMEOUT]: time to consider parent unreachable. Default:
  917.         3.5 times [ECHO_RTX_INTERVAL].
  918.  
  919.  
  920.  
  921. 6.  CBT Packet Formats and Message Types
  922.  
  923.    CBT control packets are encapsulated in IP. CBT has been assigned IP
  924.    protocol number 7 by IANA [4].
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931. Expires September 1997                                         [Page 17]
  932.  
  933.  
  934.  
  935. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  936.  
  937.  
  938.    6.1.  CBT Common Control Packet Header
  939.  
  940.    All CBT control messages have a common fixed length header.
  941.  
  942.        0               1               2               3
  943.        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
  944.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  945.       |  vers | type  |  addr len     |         checksum              |
  946.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  947.  
  948.  
  949.                 Figure 1. CBT Common Control Packet Header
  950.  
  951.  
  952.    This CBT specification is version 2.
  953.  
  954.    CBT packet types are:
  955.  
  956.    +o    type 0: HELLO
  957.  
  958.    +o    type 1: JOIN_REQUEST
  959.  
  960.    +o    type 2: JOIN_ACK
  961.  
  962.    +o    type 3: QUIT_NOTIFICATION
  963.  
  964.    +o    type 4: ECHO_REQUEST
  965.  
  966.    +o    type 5: ECHO_REPLY
  967.  
  968.    +o    type 6: FLUSH_TREE
  969.  
  970.    +o    type 7: Bootstrap Message
  971.  
  972.    +o    type 8: Candidate Core Advertisement
  973.  
  974.  
  975.    +o    Addr Length: address length in bytes of unicast or multicast
  976.         addresses carried in the control packet.
  977.  
  978.    +o    Checksum: the 16-bit one's complement of the one's complement
  979.         sum of the entire CBT control packet.
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986. Expires September 1997                                         [Page 18]
  987.  
  988.  
  989.  
  990. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  991.  
  992.  
  993. 6.2.  HELLO Packet Format
  994.  
  995.  
  996.        0               1               2               3
  997.        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
  998.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  999.       |                    CBT Control Packet Header                  |
  1000.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1001.       | rnd response  |  Preference   |  reserved  |   option type    |
  1002.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1003.       | option len   |               option value                     |
  1004.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1005.  
  1006.                        Figure 2. HELLO Packet Format
  1007.  
  1008.  
  1009.    HELLO Packet Field Definitions:
  1010.  
  1011.    +o    rnd response: random response interval in seconds.
  1012.  
  1013.    +o    preference: sender's HELLO preference.
  1014.  
  1015.    +o    option type: the type of option present in the "option value"
  1016.         field.  One option type is currently defined: option type 0
  1017.         (zero) = BR_HELLO; option value 0 (zero); option length 0
  1018.         (zero). This option type is used with HELLO messages sent by a
  1019.         border router (BR) as part of designated BR election (see [5]).
  1020.  
  1021.    +o    option len: length of the "option value" field in bytes.
  1022.  
  1023.    +o    option value: variable length field carrying the option value.
  1024.  
  1025.  
  1026.  
  1027. 6.3.  JOIN_REQUEST Packet Format
  1028.  
  1029.  
  1030.  
  1031.    JOIN_REQUEST Field Definitions
  1032.  
  1033.    +o    group address: multicast group address of the group being
  1034.         joined.  For a "wildcard" join (see [5]), this field contains
  1035.         the value of INADDR_ANY.
  1036.  
  1037.    +o    originating router: router that originated this JOIN_REQUEST.
  1038.  
  1039.  
  1040.  
  1041. Expires September 1997                                         [Page 19]
  1042.  
  1043.  
  1044.  
  1045. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1046.  
  1047.  
  1048.  
  1049.        0               1               2               3
  1050.        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
  1051.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1052.       |                    CBT Control Packet Header                  |
  1053.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1054.       |                          group address                        |
  1055.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1056.       |                        originating router                     |
  1057.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1058.       |                           target router                       |
  1059.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1060.       |  option type  |  option len   |         option value          |
  1061.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1062.  
  1063.                    Figure 3. JOIN_REQUEST Packet Format
  1064.    +o    target router: target (core) router for the group.
  1065.  
  1066.    +o    option type: allows the specification of a variety of
  1067.         JOIN_REQUEST options.  One option is currently defined: option
  1068.         type 0 (zero) = BR_JOIN; option length 0 (zero); option value 0
  1069.         (zero). This option is used by a CBT domain border router to
  1070.         join an internal core for all groups that map to that core. The
  1071.         state instantiated by a JOIN_REQUEST with this option set is
  1072.         represents (*, core). For further details, see [5].
  1073.  
  1074.  
  1075.  
  1076. 6.4.  JOIN_ACK Packet Format
  1077.  
  1078.  
  1079.        0               1               2               3
  1080.        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
  1081.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1082.       |                    CBT Control Packet Header                  |
  1083.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1084.       |                          group address                        |
  1085.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1086.       |                           target router                       |
  1087.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1088.       |  option type  |  option len   |         option value          |
  1089.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1090.  
  1091.                      Figure 4. JOIN_ACK Packet Format
  1092.  
  1093.  
  1094.  
  1095.  
  1096. Expires September 1997                                         [Page 20]
  1097.  
  1098.  
  1099.  
  1100. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1101.  
  1102.  
  1103.    JOIN_ACK Field Definitions
  1104.  
  1105.    +o    group address: multicast group address of the group being
  1106.         joined.
  1107.  
  1108.    +o    target router: router (DR) that originated the corresponding
  1109.         JOIN_REQUEST.
  1110.  
  1111.  
  1112.  
  1113. 6.5.  QUIT_NOTIFICATION Packet Format
  1114.  
  1115.  
  1116.        0               1               2               3
  1117.        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
  1118.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1119.       |                    CBT Control Packet Header                  |
  1120.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1121.       |                          group address                        |
  1122.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1123.       |                    originating child router                   |
  1124.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1125.  
  1126.                  Figure 5. QUIT_NOTIFICATION Packet Format
  1127.  
  1128.  
  1129.    QUIT_NOTIFICATION Field Definitions
  1130.  
  1131.    +o    group address: multicast group address of the group being
  1132.         joined.
  1133.  
  1134.    +o    originating child router: address of the router that originates
  1135.         the QUIT_NOTIFICATION.
  1136.  
  1137.  
  1138.  
  1139. 6.6.  ECHO_REQUEST Packet Format
  1140.  
  1141.  
  1142.  
  1143.    ECHO_REQUEST Field Definitions
  1144.  
  1145.    +o    originating child router: address of the router that originates
  1146.         the ECHO_REQUEST.
  1147.  
  1148.  
  1149.  
  1150.  
  1151. Expires September 1997                                         [Page 21]
  1152.  
  1153.  
  1154.  
  1155. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1156.  
  1157.  
  1158.  
  1159.        0               1               2               3
  1160.        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
  1161.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1162.       |                    CBT Control Packet Header                  |
  1163.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1164.       |                    originating child router                   |
  1165.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1166.  
  1167.                    Figure 6. ECHO_REQUEST Packet Format
  1168. 6.7.  ECHO_REPLY Packet Format
  1169.  
  1170.  
  1171.        0               1               2               3
  1172.        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
  1173.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1174.       |                    CBT Control Packet Header                  |
  1175.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1176.       |                    originating parent router                  |
  1177.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1178.       |     group report interval     |        num groups             |
  1179.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1180.       |                       group address #1                        |
  1181.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1182.       |                       group address #2                        |
  1183.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1184.       |                           ......                              |
  1185.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1186.       |                       group address #n                        |
  1187.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1188.  
  1189.                     Figure 7. ECHO_REPLY Packet Format
  1190.  
  1191.  
  1192.    ECHO_REPLY Field Definitions
  1193.  
  1194.    +o    oringinating parent router: address of the router originating
  1195.         this ECHO_REPLY.
  1196.  
  1197.    +o    group report interval: number of seconds until the sending
  1198.         router will send its next ECHO_REPLY containing a list of group
  1199.         addresses.
  1200.  
  1201.    +o    num groups: the number of groups being reported by this
  1202.         ECHO_REPLY.
  1203.  
  1204.  
  1205.  
  1206. Expires September 1997                                         [Page 22]
  1207.  
  1208.  
  1209.  
  1210. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1211.  
  1212.  
  1213.    +o    group address: a list of multicast group addresses for which
  1214.         this router considers itself a parent router w.r.t. the link
  1215.         over which this message is sent.
  1216.  
  1217.  
  1218.  
  1219. 6.8.  FLUSH_TREE Packet Format
  1220.  
  1221.  
  1222.        0               1               2               3
  1223.        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
  1224.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1225.       |                    CBT Control Packet Header                  |
  1226.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1227.       |                         group address                         |
  1228.       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1229.  
  1230.  
  1231.                     Figure 8. FLUSH_TREE Packet Format
  1232.  
  1233.  
  1234.    FLUSH_TREE Field Definitions
  1235.  
  1236.    +o    group address: multicast group address of the group being
  1237.         "flushed".
  1238.  
  1239.  
  1240.  
  1241. 7.  Core Router Discovery
  1242.  
  1243.    For intra-domain core discovery, CBT has decided to adopt the "boot-
  1244.    strap" mechanism currently specified with the PIM sparse mode proto-
  1245.    col [2]. This bootstrap mechanism is scalable, robust, and does not
  1246.    rely on underlying multicast routing support to deliver core router
  1247.    information; this information is distributed via traditional unicast
  1248.    hop-by-hop forwarding.
  1249.  
  1250.    It is expected that the bootstrap mechanism will be specified inde-
  1251.    pendently as a "generic" RP/Core discovery mechanism in its own sepa-
  1252.    rate document. It is unlikely at this stage that the bootstrap mecha-
  1253.    nism will be appended to a well-known network layer protocol, such as
  1254.    IGMP [3], though this would facilitate its ubiquitous (intra-domain)
  1255.    deployment. Therefore, each multicast routing protocol requiring the
  1256.    bootstrap mechanism must implement it as part of the multicast rout-
  1257.    ing protocol itself.
  1258.  
  1259.  
  1260.  
  1261. Expires September 1997                                         [Page 23]
  1262.  
  1263.  
  1264.  
  1265. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1266.  
  1267.  
  1268.    A summary of the operation of the bootstrap mechanism follows
  1269.    (details are provided in [7]). It is assumed that all routers within
  1270.    the domain implement the "bootstrap" protocol, or at least forward
  1271.    bootstrap protocol messages.
  1272.  
  1273.    A subset of the domain's routers are configured to be CBT candidate
  1274.    core routers. Each candidate core router periodically (default every
  1275.    60 secs) advertises itself to the domain's Bootstrap Router (BSR),
  1276.    using  "Core Advertisement" messages.  The BSR is itself elected
  1277.    dynamically from all (or participating) routers in the domain.  The
  1278.    domain's elected BSR collects "Core Advertisement" messages from can-
  1279.    didate core routers and periodically advertises a candidate core set
  1280.    (CC-set) to each other router in the domain, using traditional hop-
  1281.    by-hop unicast forwarding. The BSR uses "Bootstrap Messages" to
  1282.    advertise the CC-set. Together, "Core Advertisements" and "Bootstrap
  1283.    Messages" comprise the "bootstrap" protocol.
  1284.  
  1285.    When a router receives an IGMP host membership report from one of its
  1286.    directly attached hosts, the local router uses a hash function on the
  1287.    reported group address, the result of which is used as an index into
  1288.    the CC-set. This is how local routers discover which core to use for
  1289.    a particular group.
  1290.  
  1291.    Note the hash function is specifically tailored such that a small
  1292.    number of consecutive groups always hash to the same core. Further-
  1293.    more, bootstrap messages can carry a "group mask", potentially limit-
  1294.    ing a CC-set to a particular range of groups. This can help reduce
  1295.    traffic concentration at the core.
  1296.  
  1297.    If a BSR detects a particular core as being unreachable (it has not
  1298.    announced its availability within some period), it deletes the rele-
  1299.    vant core from the CC-set sent in its next bootstrap message. This is
  1300.    how a local router discovers a group's core is unreachable; the
  1301.    router must re-hash for each affected group and join the new core
  1302.    after removing the old state. The removal of the "old" state follows
  1303.    the sending of a QUIT_NOTIFICATION upstream, and a FLUSH_TREE message
  1304.    downstream.
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316. Expires September 1997                                         [Page 24]
  1317.  
  1318.  
  1319.  
  1320. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1321.  
  1322.  
  1323. 7.1.  Bootstrap Message Format
  1324.  
  1325.  
  1326.         0               1               2               3
  1327.         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
  1328.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1329.        |             CBT common control packet header                  |
  1330.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1331.        |      For full Bootstrap Message specification, see [7]        |
  1332.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1333.  
  1334.                     Figure 9. Bootstrap Message Format
  1335.  
  1336.  
  1337.  
  1338. 7.2.  Candidate Core Advertisement Message Format
  1339.  
  1340.  
  1341.         0               1               2               3
  1342.         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
  1343.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1344.        |              CBT common control packet header                 |
  1345.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1346.        |   For full Candidate Core Adv. Message specification, see [7] |
  1347.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1348.  
  1349.           Figure 10. Candidate Core Advertisement Message Format
  1350.  
  1351.  
  1352.  
  1353. 8.  Interoperability Issues
  1354.  
  1355.    Interoperability between CBT and DVMRP is specified in [5].
  1356.  
  1357.    Interoperability with other multicast protocols will be fully speci-
  1358.    fied as the need arises.
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371. Expires September 1997                                         [Page 25]
  1372.  
  1373.  
  1374.  
  1375. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1376.  
  1377.  
  1378. Acknowledgements
  1379.  
  1380.    Special thanks goes to Paul Francis, NTT Japan, for the original
  1381.    brainstorming sessions that brought about this work.
  1382.  
  1383.    Others that have contributed to the progress of CBT include Ken Carl-
  1384.    berg, Eric Crawley, Nitin Jain, Steven Ostrowsksi, Radia Perlman,
  1385.    Scott Reeve, Clay Shields, Sue Thompson, Paul White.
  1386.  
  1387.    The participants of the IETF IDMR working group have provided useful
  1388.    feedback since the inception of CBT.
  1389.  
  1390.  
  1391.    References
  1392.  
  1393.   [1] Core Based Trees (CBT) Multicast Routing Architecture;
  1394.   A. Ballardie; ftp://ds.internic.net/internet-drafts/draft-ietf-idmr-
  1395.   cbt-arch-**.txt.  Working draft, 1997.
  1396.  
  1397.   [2] Protocol Independent Multicast (PIM) Sparse Mode/Dense Mode; D.
  1398.   Estrin et al; ftp://netweb.usc.edu/pim   Working drafts, 1996.
  1399.  
  1400.   [3] Internet Group Management Protocol, version 2 (IGMPv2); W. Fenner;
  1401.   ftp://ds.internic.net/internet-drafts/draft-ietf-idmr-igmp-v2-**.txt.
  1402.   Working draft, 1996.
  1403.  
  1404.   [4] Assigned Numbers; J. Reynolds and J. Postel; RFC 1700, October
  1405.   1994.
  1406.  
  1407.   [5] CBT Border Router Specification for Interconnecting a CBT Stub
  1408.   Region to a DVMRP Backbone; A. Ballardie;
  1409.   ftp://ds.internic.net/internet-drafts/draft-ietf-idmr-cbt-
  1410.   dvmrp-**.txt.  Working draft, March 1997.
  1411.  
  1412.   [6] Scalable Multicast Key Distribution; A. Ballardie; RFC 1949, July
  1413.   1996.
  1414.  
  1415.   [7] A Dynamic Bootstrap Mechanism for Rendezvous-based Multicast Rout-
  1416.   ing; D. Estrin et al.; Technical Report; ftp://catarina.usc.edu/pim
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426. Expires September 1997                                         [Page 26]
  1427.  
  1428.  
  1429.  
  1430. INTERNET-DRAFT         CBT Protocol Specification             March 1997
  1431.  
  1432.  
  1433. Author Information:
  1434.  
  1435.    Tony Ballardie,
  1436.    Research Consultant,
  1437.  
  1438.    e-mail: ABallardie@acm.org
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481. Expires September 1997                                         [Page 27]
  1482.  
  1483.