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-09.txt < prev    next >
Text File  |  1997-05-20  |  51KB  |  1,485 lines

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