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-06.txt < prev    next >
Text File  |  1996-09-24  |  91KB  |  2,417 lines

  1.  
  2. Inter-Domain Multicast Routing (IDMR)                       A. Ballardie
  3. INTERNET-DRAFT                                 University College London
  4.                                                      S.  Reeve & N. Jain
  5.                                                       Bay Networks, Inc.
  6.  
  7.                                                           September 1996
  8.  
  9.  
  10.                     Core Based Trees (CBT) Multicast
  11.  
  12.                       -- Protocol Specification --
  13.  
  14.  
  15. Status of this Memo
  16.  
  17.    This document is an Internet Draft.  Internet Drafts are working doc-
  18.    uments of the Internet Engineering Task Force (IETF), its Areas, and
  19.    its Working Groups. Note that other groups may also distribute work-
  20.    ing documents as Internet Drafts).
  21.  
  22.    Internet Drafts are draft documents valid for a maximum of six
  23.    months. Internet Drafts may be updated, replaced, or obsoleted by
  24.    other documents at any time.  It is not appropriate to use Internet
  25.    Drafts as reference material or to cite them other than as a "working
  26.    draft" or "work in progress."
  27.  
  28.    Please check the I-D abstract listing contained in each Internet
  29.    Draft directory to learn the current status of this or any other
  30.    Internet Draft.
  31.  
  32.  
  33. Abstract
  34.  
  35.    This document describes the Core Based Tree (CBT) network layer mul-
  36.    ticast protocol. CBT is a next-generation multicast protocol that
  37.    makes use of a shared delivery tree rather than separate per-sender
  38.    trees utilized by most other multicast schemes [1, 2, 3]. The CBT
  39.    architecture is described in [4a].
  40.  
  41.    This specification includes an optimization whereby unencapsulated
  42.    (native) IP-style multicasts are forwarded by CBT routers, resulting
  43.    in very good forwarding performance.  This mode of operation is
  44.    called CBT "native mode".  Native mode can only be used in CBT-only
  45.    domains (footnote 1).
  46. _________________________
  47.  
  48.  
  49.  
  50. Expires April 1997                                              [Page 1]
  51.  
  52.  
  53.  
  54. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  55.  
  56.  
  57.    This revision contains two appendices; Appendix A describes simple
  58.    CBT add-on mechanisms for dynamically migrating a CBT tree to one
  59.    whose core is directly attached to a source's subnetwork, thereby
  60.    allowing CBT to emulate shortest-path trees.  Appendix B describes a
  61.    group state aggregation scheme.
  62.  
  63.    This document is progressing through the IDMR working group of the
  64.    IETF.  CBT related documents include [4, 5]. For all IDMR-related
  65.    documents, see http://www.cs.ucl.ac.uk/ietf/idmr.
  66.  
  67.    NOTE that core placement and management is not discussed in this doc-
  68.    ument.
  69.  
  70.  
  71.  
  72. 1.  Changes since Previous Revision (05)
  73.  
  74.    This note summarizes the changes to this document since the previous
  75.    revision (revision 05).
  76.  
  77.    +o    inclusion of "first hop router" and "primary core" fields in the
  78.         CBT mode data packet header.
  79.  
  80.    +o    removal of the term "non-core" router, replaced by "on-tree"
  81.         router.
  82.  
  83.    +o    removal of the term "default DR (D-DR)", replaced simply by DR.
  84.  
  85.    +o    inclusion of T and S bits in the CBT control and data packet
  86.         headers (type of service, and security, respectively).
  87.  
  88.    +o    CBT control messages are now carried directly over IP rather
  89.         than UDP (for all implementations).
  90.  
  91.    +o    inclusion of an Appendix (A) describing extensions to the CBT
  92.         protocol to achieve dynamic source-migration of core routers for
  93.         shortest-path tree emulation.
  94.  
  95.    +o    inclusion of an Appendix (B) describing a group state aggrega-
  96.         tion scheme.
  97. _________________________
  98.   1 The term "domain" should be  considered  synonymous
  99. with "routing domain" throughout, as are the terms "re-
  100. gion" and "cloud".
  101.  
  102.  
  103.  
  104.  
  105. Expires April 1997                                              [Page 2]
  106.  
  107.  
  108.  
  109. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  110.  
  111.  
  112.    +o    editorial changes and some re-organisation throughout for extra
  113.         clarity.
  114.  
  115.  
  116.  
  117. 2.  Some Terminology
  118.  
  119.    In CBT, the core routers for a particular group are categorised into
  120.    PRIMARY CORE, and NON-PRIMARY (secondary) CORES.
  121.  
  122.    The "core tree" is the part of a tree linking all core routers of a
  123.    particular group together.
  124.  
  125.    On-tree routers are those with a forwarding database entry for the
  126.    corresponding group.
  127.  
  128.  
  129.  
  130. 3.  Protocol Specification
  131.  
  132.  
  133. 3.1.  Tree Joining Process -- Overview
  134.  
  135.    A CBT router is notified of a local host's desire to join a group via
  136.    IGMP [6].  We refer to a CBT router with directly attached hosts as a
  137.    "leaf CBT router", or just "leaf" router.
  138.  
  139.    The following CBT control messages come into play subequent to a sub-
  140.    net's CBT leaf router receiving an IGMP membership report (also
  141.    termed "IGMP join"):
  142.  
  143.    +o    JOIN_REQUEST
  144.  
  145.    +o    JOIN_ACK
  146.  
  147.    If the CBT leaf router is the subnet's designated router (see next
  148.    section), it generates a CBT join-request in response to receiving an
  149.    IGMP group membership report from a directly connected host. The CBT
  150.    join is sent to the next-hop on the unicast path to a target core,
  151.    specified in the join packet; a router elects a "target core" based
  152.    on a static configuration. If, on receipt of an IGMP-join, the
  153.    locally-elected DR has already joined the corresponding tree, then it
  154.    need do nothing more with respect to joining.
  155.  
  156.    The join is processed by each such hop on the path to the core, until
  157.  
  158.  
  159.  
  160. Expires April 1997                                              [Page 3]
  161.  
  162.  
  163.  
  164. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  165.  
  166.  
  167.    either the join reaches the target core itself, or hits a router that
  168.    is already part of the corresponding distribution tree (as identified
  169.    by the group address). In both cases, the router concerned terminates
  170.    the join, and responds with a join-ack (join acknowledgement), which
  171.    traverses the reverse-path of the corresponding join. This is possi-
  172.    ble due to the transient path state created by a join traversing a
  173.    CBT router. The ack fixes that state.
  174.  
  175.  
  176.  
  177. 3.2.  DR Election
  178.  
  179.    Multiple CBT routers may be connected to a multi-access subnetwork.
  180.    In such cases it is necessary to elect a subnetwork designated router
  181.    (DR) that is responsible for generating and sending CBT joins
  182.    upstream, on behalf of hosts on the subnetwork.
  183.  
  184.    CBT DR election happens "on the back" of IGMP [6]; on a subnet with
  185.    multiple multicast routers, an IGMP "querier" is elected as part of
  186.    IGMP.  At start-up, a multicast router assumes no other multicast
  187.    routers are present on its subnetwork, and so begins by believing it
  188.    is the subnet's IGMP querier.  It sends a small number IGMP-HOST-
  189.    MEMBERSHIP-QUERYs in short succession in order to quickly learn about
  190.    any group memberships on the subnet. If other multicast routers are
  191.    present on the same subnet, they will receive these IGMP queries; a
  192.    multicast router yields querier duty as soon as it hears an IGMP
  193.    query from a lower-addressed router on the same subnetwork.
  194.  
  195.    The CBT DR is always the subnet's IGMP querier (footnote 2).  As a
  196.    result, there is no protocol overhead whatsoever associated with
  197.    electing a CBT D-DR.
  198.  
  199.  
  200.  
  201. 3.3.  Tree Joining Process -- Details
  202.  
  203.    The receipt of an IGMP group membership report by a CBT DR for a CBT
  204.    group not previously heard from triggers the tree joining process;
  205.    the DR unicasts a JOIN-REQUEST to the first hop on the (unicast) path
  206.    to the target core specified in the CBT join packet.
  207.  
  208. _________________________
  209.   2 Or lowest addressed CBT router if the subnet's IGMP
  210. querier is non-CBT capable.
  211.  
  212.  
  213.  
  214.  
  215. Expires April 1997                                              [Page 4]
  216.  
  217.  
  218.  
  219. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  220.  
  221.  
  222.    Each CBT-capable router traversed on the path between the sending DR
  223.    and the core processes the join. However, if a join hits a CBT router
  224.    that is already on-tree, the join is not propogated further, but
  225.    acknowledged downstream from that point.
  226.  
  227.    JOIN-REQUESTs carry the identity of all the cores associated with the
  228.    group.  Assuming there are no on-tree routers in between, once the
  229.    join (subcode ACTIVE_JOIN) reaches the target core, if the target
  230.    core is not the primary core (as indicated in a separate field of the
  231.    join packet) it first acknowledges the received join by means of a
  232.    JOIN-ACK, then sends a JOIN-REQUEST, subcode REJOIN-ACTIVE, to the
  233.    primary core router.
  234.  
  235.    If the rejoin-active reaches the primary core, it responds by sending
  236.    a JOIN-ACK, subcode PRIMARY-REJOIN-ACK, which traverses the reverse-
  237.    path of the join (rejoin). The primary-rejoin-ack serves to confirm
  238.    no loop is present, and so explicit loop detection is not necessary.
  239.  
  240.    If some other on-tree router is encountered before the rejoin-active
  241.    reaches the primary, that router responds with a JOIN-ACK, subcode
  242.    NORMAL.  On receipt of the ack, subcode normal, the router sends a
  243.    join, subcode REJOIN-NACTIVE, which acts as a loop detection packet
  244.    (see section 8.3).  Note that loop detection is not necessary subse-
  245.    quent to receiving a join-ack with subcode PRIMARY-REJOIN-ACK.
  246.  
  247.    To facilitate detailed protocol description, we use a sample topol-
  248.    ogy, illustrated in Figure 1 (shown over). Member hosts are shown as
  249.    individual capital letters, routers are prefixed with R, and subnets
  250.    are prefixed with S.
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270. Expires April 1997                                              [Page 5]
  271.  
  272.  
  273.  
  274. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  275.  
  276.  
  277.  
  278.            A                               B
  279.            |   S1              S4          |
  280.    -------------------      -----------------------------------------------
  281.              |                     |               |               |
  282.            ------                 ------           ------           ------
  283.            | R1 |                 | R2 |           | R5 |           | R6 |
  284.            ------                 ------           ------           ------
  285.       C     |  |                    |                |                 |
  286.       |     |  |                    |    S2          |            S8   |
  287.    ----------  ------------------------------------------        -------------
  288.         S3                 |
  289.                          ------
  290.                          | R3 |
  291.                  |       ------                       D
  292.    | S9          |         |               S5         |
  293.    |             |      ---------------------------------------------
  294.    |  |----|     |                    |
  295.    ---| R7 |-----|                  ------
  296.    |  |----|     |------------------| R4 |
  297.    |          S7 |                  ------            F
  298.    |             |                    |         S6    |
  299.    |-E           |            ---------------------------------
  300.                       |                       |
  301.                       |                     ------
  302.              |---|    |---------------------| R8 |
  303.              |R12 ----|                     ------      G
  304.              |---|    |                       |         |  S10
  305.                       | S14                ----------------------------
  306.                       |                         |
  307.                   I --|                       ------
  308.                       |                       | R9 |
  309.                                               ------
  310.                                                 |         S12
  311.                      |             ----------------------------
  312.                  S15 |                        |
  313.                      |                      ------
  314.                      |----------------------|R10 |
  315.                 J ---|                      ------      H
  316.                      |                        |         |
  317.                      |             ----------------------------
  318.                      |                           S13
  319.  
  320.  
  321.                     Figure 1. Example Network Topology
  322.  
  323.  
  324.  
  325. Expires April 1997                                              [Page 6]
  326.  
  327.  
  328.  
  329. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  330.  
  331.  
  332.    Taking the example topology in figure 1, host A wishes to join group
  333.    G.  All subnets' routers have been configured to use core routers R4
  334.    (primary core) and R9 (secondary core) for a range of group
  335.    addresses, including G.
  336.  
  337.    Router R1 receives an IGMP host membership report, and proceeds to
  338.    unicast a JOIN-REQUEST, subcode ACTIVE-JOIN to the next-hop on the
  339.    path to R4 (R3), the target core. R3 receives the join, caches the
  340.    necessary group information (transient state), and forwards it to R4
  341.    -- the target of the join.
  342.  
  343.    R4, being the target of the join, sends a JOIN_ACK (subcode NORMAL)
  344.    back out of the receiving interface to the previous-hop sender of the
  345.    join, R3. A JOIN-ACK, like a JOIN-REQUEST, is processed hop-by-hop by
  346.    each router on the reverse-path of the corresponding join. The
  347.    receipt of a join-ack establishes the receiving router on the corre-
  348.    sponding CBT tree, i.e. the router becomes part of a branch on the
  349.    delivery tree. Finally, R3 sends a join-ack to R1.  A new CBT branch
  350.    has been created, attaching subnet S1 to the CBT delivery tree for
  351.    the corresponding group.
  352.  
  353.    For the period between any CBT-capable router forwarding (or origi-
  354.    nating) a JOIN_REQUEST and receiving a JOIN_ACK the corresponding
  355.    router is not permitted to acknowledge any subsequent joins received
  356.    for the same group; rather, the router caches such joins till such
  357.    time as it has itself received a JOIN_ACK for the original join. Only
  358.    then can it acknowledge any cached joins. A router is said to be in a
  359.    "pending-join" state if it is awaiting a JOIN_ACK itself.
  360.  
  361.    Note that the presence of asymmetric routes in the underlying unicast
  362.    routing does not affect the tree-building process; CBT tree branches
  363.    are symmetric by the nature in which they are built. Joins set up
  364.    transient state (incoming and outgoing interface state) in all
  365.    routers along a path to a particular core. The corresponding join-ack
  366.    traverses the reverse-path of the join as dictated by the transient
  367.    state, and not necessarily the path that underlying routing would
  368.    dictate. Whilst permanent asymmetric routes could pose a problem for
  369.    CBT, transient asymmetricity is detected by the CBT protocol.
  370.  
  371.  
  372.  
  373. 3.4.  Forwarding Joins on Multi-Access Subnets
  374.  
  375.    The DR election mechanism does not guarantee that the DR will be the
  376.    router that actually forwards a join off a multi-access network; the
  377.  
  378.  
  379.  
  380. Expires April 1997                                              [Page 7]
  381.  
  382.  
  383.  
  384. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  385.  
  386.  
  387.    first hop on the path to a particular core might be via another
  388.    router on the same subnetwork, which actually forwards off-subnet.
  389.  
  390.    Although very much the same, let's see another example using our
  391.    example topology of figure 1 of a host joining a CBT tree for the
  392.    case where more than one CBT router exists on the host subnetwork.
  393.  
  394.    B's subnet, S4, has 3 CBT routers attached. Assume also that R6 has
  395.    been elected IGMP-querier and CBT DR.
  396.  
  397.    R6 (S4's DR) receives an IGMP group membership report. R6's config-
  398.    ured information suggests R4 as the target core for this group.  R6
  399.    thus generates a join-request for target core R4, subcode
  400.    ACTIVE_JOIN.  R6's routing table says the next-hop on the path to R4
  401.    is R2, which is on the same subnet as R6. This is irrelevant to R6,
  402.    which unicasts it to R2.  R2 unicasts it to R3, which happens to be
  403.    already on-tree for the specified group (from R1's join). R3 there-
  404.    fore can acknowledge the arrived join and unicast the ack back to R2.
  405.    R2 forwards it to R6, the origin of the join-request.
  406.  
  407.    If an IGMP membership report is received by a DR with a join for the
  408.    same group already pending, or if the DR is already on-tree for the
  409.    group, it takes no action.
  410.  
  411.  
  412.  
  413. 3.5.  On-Demand "Core Tree" Building
  414.  
  415.    The "core tree" - the part of a CBT tree linking all of its cores
  416.    together, is built on-demand. That is, the core tree is only built
  417.    subsequent to a non-primary (secondary) core receiving a join-
  418.    request. This triggers the secondary core to join the primary core;
  419.    the primary need never join anything.
  420.  
  421.    Join-requests carry an list of core routers (and the identity of the
  422.    primary core in its own separate field), making it possible for the
  423.    secondary cores to know where to join when they themselves receive a
  424.    join. Hence, the primary core must be uniquely identified as such
  425.    across the whole group. A secondary joins the primary subsequent to
  426.    sending an ack for the first join it receives.
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435. Expires April 1997                                              [Page 8]
  436.  
  437.  
  438.  
  439. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  440.  
  441.  
  442. 3.6.  Tree Teardown
  443.  
  444.    There are two scenarios whereby a tree branch may be torn down:
  445.  
  446.    +o    During a re-configuration. If a router's best next-hop to the
  447.         specified core is one of its existing children, then before
  448.         sending the join it must tear down that particular downstream
  449.         branch. It does so by sending a FLUSH_TREE message which is pro-
  450.         cessed hop-by-hop down the branch.  All routers receiving this
  451.         message must process it and forward it to all their children.
  452.         Routers that have received a flush message will re-establish
  453.         themselves on the delivery tree if they have directly connected
  454.         subnets with group presence.
  455.  
  456.    +o    If a CBT router has no children it periodically checks all its
  457.         directly connected subnets for group member presence. If no mem-
  458.         ber presence is ascertained on any of its subnets it sends a
  459.         QUIT_REQUEST upstream to remove itself from the tree.
  460.  
  461.         The receipt of a quit-request triggers the receiving parent
  462.         router to immediately query its forwarding database to establish
  463.         whether there remains any directly connected group membership,
  464.         or any children, for the said group. If not, the router itself
  465.         sends a quit-request upstream.
  466.  
  467.    The following example, using the example topology of figure 1, shows
  468.    how a tree branch is gracefully torn down using a QUIT_REQUEST.
  469.  
  470.    Assume group member B leaves group G on subnet S4. B issues an IGMP
  471.    HOST-MEMBERSHIP-LEAVE (relevant only to IGMPv2 and later versions)
  472.    message which is multicast to the "all-routers" group (224.0.0.2).
  473.    R6, the subnet's DR and IGMP-querier, responds with a group-specific-
  474.    QUERY. No hosts respond within the required response interval, so DR
  475.    assumes group G traffic is no longer wanted on subnet S4.
  476.  
  477.    Since R6 has no CBT children, and no other directly attached subnets
  478.    with group G presence, it immediately follows on by sending a
  479.    QUIT_REQUEST to R2, its parent on the tree for group G. R2 responds
  480.    with a QUIT-ACK, unicast to R6; R2 removes the corresponding child
  481.    information. R2 in turn sends a QUIT upstream to R3 (since it has no
  482.    other children or subnet(s) with group presence).
  483.  
  484.       NOTE: immediately subsequent to sending a QUIT-REQUEST, the sender
  485.       removes the corresponding parent information, i.e. it does not
  486.       wait for the receipt of a QUIT-ACK.
  487.  
  488.  
  489.  
  490. Expires April 1997                                              [Page 9]
  491.  
  492.  
  493.  
  494. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  495.  
  496.  
  497.    R3 responds to the QUIT by unicasting a QUIT-ACK to R2. R3 subse-
  498.    quently checks whether it in turn can send a quit by checking group G
  499.    presence on its directly attached subnets, and any group G children.
  500.    It has the latter (R1 is its child on the group G tree), and so R3
  501.    cannot itself send a quit. However, the branch R3-R2-R6 has been
  502.    removed from the tree.
  503.  
  504.  
  505.  
  506. 4.  Tree Maintenance
  507.  
  508.    Once a tree branch has been created, i.e. a CBT router has received a
  509.    JOIN_ACK for a JOIN_REQUEST previously sent (or forwarded), a child
  510.    router is required to monitor the status of its parent/parent link at
  511.    fixed intervals by means of a "keepalive" mechanism operating between
  512.    them.  The "keepalive" protocol is simple, and implemented by means
  513.    of two CBT control messages: CBT_ECHO_REQUEST and CBT_ECHO_REPLY; a
  514.    child unicasts a CBT-ECHO-REQUEST to its parent, which unicasts a
  515.    CBT-ECHO-REPLY in response.
  516.  
  517.    Adjacent CBT routers only need to send one keepalive representing all
  518.    children having the same parent, reachable over a particular link,
  519.    regardless of group.  This aggregation strategy is expected to con-
  520.    serve considerable bandwidth on "busy" links, such as transit net-
  521.    work, or backbone network, links.
  522.  
  523.    For any CBT router, if its parent router, or path to the parent,
  524.    fails, the child is initially responsible for re-attaching itself,
  525.    and therefore all routers subordinate to it on the same branch, to
  526.    the tree.
  527.  
  528.  
  529.  
  530. 4.1.  Router Failure
  531.  
  532.    An on-tree router can detect a failure from the following two cases:
  533.  
  534.    +o    if the child responsible for sending keepalives across a partic-
  535.         ular link stops receiving CBT_ECHO_REPLY messages. In this case
  536.         the child realises that its parent has become unreachable and
  537.         must therefore try and re-connect to the tree for all groups
  538.         represented on the parent/child link. For all groups sharing a
  539.         common core set (corelist), provided those groups can be speci-
  540.         fied as a CIDR-like aggregate, an aggregated join can be sent
  541.         representing the range of groups.  Aggregated joins are made
  542.  
  543.  
  544.  
  545. Expires April 1997                                             [Page 10]
  546.  
  547.  
  548.  
  549. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  550.  
  551.  
  552.         possible by the presence of a "group mask" field in the CBT con-
  553.         trol packet header (footnote 3).
  554.  
  555.         If a range of groups cannot be represented by a mask, then each
  556.         group must be re-joined individually.
  557.  
  558.         CBT's re-join strategy is as follows: the rejoining router which
  559.         is immediately subordinate to the failure sends a JOIN_REQUEST
  560.         (subcode ACTIVE_JOIN if it has no children attached, and subcode
  561.         ACTIVE_REJOIN if at least one child is attached) to the best
  562.         next-hop router on the path to the elected core. If no JOIN-ACK
  563.         is received after three retransmissions, each transmission being
  564.         at PEND-JOIN-INTERVAL (5 secs) intervals, the next-highest pri-
  565.         ority core is elected from the core list, and the process
  566.         repeated.  If all cores have been tried unsuccessfully, the DR
  567.         has no option but to give up.
  568.  
  569.    +o    if a parent stops receiving CBT_ECHO_REQUESTs from a child. In
  570.         this case, if the parent has not received an expected keepalive
  571.         after CHILD_ASSERT_EXPIRE_TIME, all children reachable across
  572.         that link are removed from the parent's forwarding database.
  573.  
  574.  
  575.  
  576. 4.2.  Router Re-Starts
  577.  
  578.    There are two cases to consider here:
  579.  
  580.    +o    Core re-start. All JOIN-REQUESTs (all types) carry the identi-
  581.         ties (i.e. IP addresses) of each of the cores for a group. If a
  582.         router is a core for a group, but has only recently re-started,
  583.         it will not be aware that it is a core for any group(s). In such
  584.         circumstances, a core only becomes aware that it is such by
  585.         receiving a JOIN-REQUEST.  Subsequent to a core learning its
  586.         status in this way, if it is not the primary core it acknowl-
  587.         edges the received join, then sends a JOIN_REQUEST (subcode
  588.         ACTIVE_REJOIN) to the primary core. If the re-started router is
  589.         the primary core, it need take no action, i.e. in all
  590. _________________________
  591.   3 There  are  situations  where it is advantageous to
  592. send a single join-request that represents  potentially
  593. many  groups.  One  such  example  is provided in [11],
  594. whereby a designated border router is required to  join
  595. all groups inside a CBT domain.
  596.  
  597.  
  598.  
  599.  
  600. Expires April 1997                                             [Page 11]
  601.  
  602.  
  603.  
  604. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  605.  
  606.  
  607.         circumstances, the primary core simply waits to be joined by
  608.         other routers.
  609.  
  610.    +o    Non-core re-start. In this case, the router can only join the
  611.         tree again if a downstream router sends a JOIN_REQUEST through
  612.         it, or it is elected DR for one of its directly attached sub-
  613.         nets, and subsequently receives an IGMP membership report.
  614.  
  615.  
  616.  
  617. 4.3.  Route Loops
  618.  
  619.    Routing loops are only a concern when a router with at least one
  620.    child is attempting to re-join a CBT tree. In this case the re-
  621.    joining router sends a JOIN_REQUEST (subcode ACTIVE REJOIN) to the
  622.    best next-hop on the path to an elected core. This join is forwarded
  623.    as normal until it reaches either the specified core, another core,
  624.    or a on-tree router that is already part of the tree. If the rejoin
  625.    reaches the primary core, loop detection is not necessary because the
  626.    primary never has a parent. The primary core acks an active-rejoin by
  627.    means of a JOIN-ACK, subcode PRIMARY-REJOIN-ACK. This ack must be
  628.    processed by each router on the reverse-path of the active-rejoin;
  629.    this ack creates tree state, just like a normal join-ack.
  630.  
  631.    If an active-rejoin is terminated by any router on the tree other
  632.    than the primary core, loop detection must take place, as we now
  633.    describe.
  634.  
  635.    If, in response to an active-rejoin, a JOIN-ACK is returned, subcode
  636.    NORMAL (as opposed to an ack with subcode PRIMARY-REJOIN-ACK), the
  637.    router receiving the ack subsequently generates a JOIN-REQUEST, sub-
  638.    code NACTIVE-REJOIN (non-active rejoin). This packet serves only to
  639.    detect loops; it does not create any transient state in the routers
  640.    it traverses, other than the originating router (in case retransmis-
  641.    sions are necessary). Any on-tree router receiving a non-active
  642.    rejoin is required to forward it over its parent interface for the
  643.    specified group. In this way, it will either reach the primary core,
  644.    which unicasts, directly to the sender, a join ack with subcode PRI-
  645.    MARY-NACTIVE-ACK (so the sender knows no loop is present), or the
  646.    sender receives the non-active rejoin it sent, via one of its child
  647.    interfaces, in which case the rejoin obviously formed a loop.
  648.  
  649.    If a loop is present, the non-active join originator immediately
  650.    sends a QUIT_REQUEST to its newly-established parent and the loop is
  651.    broken.
  652.  
  653.  
  654.  
  655. Expires April 1997                                             [Page 12]
  656.  
  657.  
  658.  
  659. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  660.  
  661.  
  662.    Using figure 2 (over) to demonstrate this, if R3 is attempting to re-
  663.    join the tree (R1 is the core in figure 2) and R3 believes its best
  664.    next-hop to R1 is R6, and R6 believes R5 is its best next-hop to R1,
  665.    which sees R4 as its best next-hop to R1 -- a loop is formed. R3
  666.    begins by sending a JOIN_REQUEST (subcode ACTIVE_REJOIN, since R4 is
  667.    its child) to R6.  R6 forwards the join to R5. R5 is on-tree for the
  668.    group, so responds to the active-rejoin with a JOIN-ACK, subcode NOR-
  669.    MAL (the ack traverses R6 on its way to R3).
  670.  
  671.    R3 now generates a JOIN-REQUEST, subcode NACTIVE-REJOIN, and forwards
  672.    this to its parent, R6.  R6 forwards the non-active rejoin to R5, its
  673.    parent. R5 does similarly, as does R4. Now, the non-active rejoin has
  674.    reached R3, which originated it, so R3 concludes a loop is present on
  675.    the parent interface for the specified group. It immediately sends a
  676.    QUIT_REQUEST to R6, which in turn sends a quit if it has not received
  677.    an ACK from R5 already AND has itself a child or subnets with member
  678.    presence. If so it does not send a quit -- the loop has been broken
  679.    by R3 sending the first quit.
  680.  
  681.    QUIT_REQUESTs are typically acknowledged by means of a QUIT_ACK. A
  682.    child removes its parent information immediately subsequent to send-
  683.    ing its first QUIT-REQUEST. The ack here serves to notify the (old)
  684.    child that it (the parent) has in fact removed its child information.
  685.    However, there might be cases where, due to failure, the parent can-
  686.    not respond.  The child sends a QUIT-REQUEST a maximum of three
  687.    times, at PEND-QUIT-INTERVAL (5 sec) intervals.
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710. Expires April 1997                                             [Page 13]
  711.  
  712.  
  713.  
  714. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  715.  
  716.  
  717.  
  718.  
  719.  
  720.                    ------
  721.                    | R1 |
  722.                    ------
  723.                      |
  724.            ---------------------------
  725.                      |
  726.                    ------
  727.                    | R2 |
  728.                    ------
  729.                      |
  730.            ---------------------------
  731.                      |                             |
  732.                    ------                          |
  733.                    | R3 |--------------------------|
  734.                    ------                          |
  735.                      |                             |
  736.            ---------------------------             |
  737.                      |                             |       ------
  738.                    ------                          |       |    |
  739.                    | R4 |                          |-------| R6 |
  740.                    ------                          |       |----|
  741.                      |                             |
  742.            ---------------------------             |
  743.                      |                             |
  744.                    ------                          |
  745.                    | R5 |--------------------------|
  746.                    ------                          |
  747.                                                    |
  748.  
  749.  
  750.                       Figure 2: Example Loop Topology
  751.  
  752.    In another scenario the rejoin travels over a loop-free path, and the
  753.    first on-tree router encountered is the primary core, R1. In figure
  754.    2, R3 sends a join, subcode REJOIN_ACTIVE to R2, the next-hop on the
  755.    path to core R1. R2 forwards the re-join to R1, the primary core,
  756.    which returns a JOIN-ACK, subcode PRIMARY-REJOIN-ACK, over the
  757.    reverse-path of the rejoin-active. Whenever a router receives a PRI-
  758.    MARY-REJOIN-ACK no loop detection is necessary.
  759.  
  760.    If we assume R2 is on tree for the corresponding group, R3 sends a
  761.    join, subcode REJOIN_ACTIVE to R2, which replies with a join ack,
  762.  
  763.  
  764.  
  765. Expires April 1997                                             [Page 14]
  766.  
  767.  
  768.  
  769. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  770.  
  771.  
  772.    subcode NORMAL. R3 must then generate a loop detection packet (join
  773.    request, subcode REJOIN-NACTIVE) which is forwarded to its parent,
  774.    R2, which does similarly. On receipt of the rejoin-Nactive, the pri-
  775.    mary core unicasts a join ack back directly to R3, with subcode PRI-
  776.    MARY-NACTIVE-ACK.  This confirms to R3 that its rejoin does not form
  777.    a loop.
  778.  
  779.  
  780.  
  781. 5.  Data Packet Loops
  782.  
  783.    The CBT protocol builds a loop-free distribution tree. If all routers
  784.    that comprise a particular tree function correctly, data packets
  785.    should never traverse a tree branch more than once (footnote 4).
  786.  
  787.    CBT mode data packets from a non-member sender must arrive on a tree
  788.    via an "off-tree" interface. The CBT mode data packet's header
  789.    includes an "on-tree" field, which contains the value 0x00 until the
  790.    data packet reaches an on-tree router. The first on-tree router must
  791.    convert this value to 0xff.  This value remains unchanged, and from
  792.    here on the packet should traverse only on-tree interfaces. If an
  793.    encapsulated packet happens to "wander" off-tree and back on again,
  794.    an on-tree router will receive the CBT encapsulated packet via an
  795.    off-tree interface. However, this router will recognise that the "on-
  796.    tree" field of the encapsulating CBT header is set to 0xff, and so
  797.    immediately discards the packet.
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809. _________________________
  810.   4 The exception to this is when CBT mode is operating
  811. between CBT routers connected to a multi-access link; a
  812. data packet may traverse the link in  native  mode  (if
  813. group  members are present on the link), as well as CBT
  814. mode for sending the data between CBT  routers  on  the
  815. tree.
  816.  
  817.  
  818.  
  819.  
  820. Expires April 1997                                             [Page 15]
  821.  
  822.  
  823.  
  824. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  825.  
  826.  
  827. 6.  Data Packet Forwarding Rules
  828.  
  829.  
  830.  
  831. 6.1.  Native Mode
  832.  
  833.    In native mode, when a CBT router receives a data packet, the packet
  834.    may only be forwarded over outgoing tree interfaces (member subnets
  835.    and interfaces leading to outgoing on-tree neighbours) iff it has
  836.    been received via a valid on-tree interface (or the packet has
  837.    arrived encapsulated from a non-member, i.e. off-tree, sender).  Oth-
  838.    erwise, the packet is discarded.
  839.  
  840.    Before a packet is forwarded by a subnet's DR, provided the packet's
  841.    TTL is greater than 1, the packet's TTL is decremented.
  842.  
  843.  
  844.  
  845. 6.2.  CBT Mode
  846.  
  847.    In CBT mode, routers ignore all non-locally originated native mode
  848.    multicast data packets. Locally-originated multicast data is only
  849.    processed by a subnet's DR; in this case, the DR forwards the native
  850.    multicast data packet, TTL 1, over any outgoing member subnets for
  851.    which that router is DR. Additionally, the DR encapsulates the
  852.    locally-originated multicast and forwards it, CBT mode, over all tree
  853.    interfaces, as dictated by the CBT forwarding database.
  854.  
  855.    When a router, operating in CBT mode, receives a CBT-mode encapsu-
  856.    lated data packet, it decapsulates one copy to send, native mode and
  857.    TTL 1, over any directly attached member subnets for which it is DR.
  858.    Additionally, an encapsulated copy is forwarded over all outgoing
  859.    tree interfaces, as dictated by its CBT forwarding database.
  860.  
  861.    Like the outer encapsulating IP header, the TTL value of the encapsu-
  862.    lating CBT header is decremented each time it is processed by a CBT
  863.    router.
  864.  
  865.    An example of CBT mode forwarding is provided towards the end of the
  866.    next section.
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875. Expires April 1997                                             [Page 16]
  876.  
  877.  
  878.  
  879. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  880.  
  881.  
  882. 7.  CBT Mode -- Encapsulation Details
  883.  
  884.  
  885.    In a multi-protocol environment, whose infrastructure may include
  886.    non-multicast-capable routers, it is necessary to tunnel data packets
  887.    between CBT-capable routers. This is called "CBT mode".  Data packets
  888.    are de-capsulated by CBT routers (such that they become native mode
  889.    data packets) before being forwarded over subnets with member hosts.
  890.    When multicasting (native mode) to member hosts, the TTL value of the
  891.    original IP header is set to one. CBT mode encapsulation is as fol-
  892.    lows:
  893.  
  894.  
  895.            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  896.            | encaps IP hdr | CBT hdr | original IP hdr | data ....|
  897.            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  898.  
  899.  
  900.                    Figure 3. Encapsulation for CBT mode
  901.  
  902.  
  903.  
  904.    The TTL value of the CBT header is set by the encapsulating CBT
  905.    router directly attached to the origin of a data packet.  This value
  906.    is decremented each time it is processed by a CBT router.  An encap-
  907.    sulated data packet is discarded when the CBT header TTL value
  908.    reaches zero.
  909.  
  910.    The purpose of the (outer) encapsulating IP header is to "tunnel"
  911.    data packets between CBT-capable routers (or "islands"). The outer IP
  912.    header's TTL value is set to the "length" of the corresponding tun-
  913.    nel, or MAX_TTL (255)if this is not known, or subject to change.
  914.  
  915.    It is worth pointing out here the distinction between subnetworks and
  916.    tree branches (especially apparent in CBT mode), although they can be
  917.    one and the same. For example, a multi-access subnetwork containing
  918.    routers and end-systems could potentially be both a CBT tree branch
  919.    and a subnetwork with group member presence. A tree branch which is
  920.    not simultaneously a subnetwork is either a "tunnel" or a point-to-
  921.    point link.
  922.  
  923.    In CBT mode there are three forwarding methods used by CBT routers:
  924.  
  925.    +o    IP multicasting. This method sends an unaltered (unencapsulated)
  926.         data packet across a directly-connected subnetwork with group
  927.  
  928.  
  929.  
  930. Expires April 1997                                             [Page 17]
  931.  
  932.  
  933.  
  934. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  935.  
  936.  
  937.         member presence.  Any host originating multicast data, does so
  938.         in this form.
  939.  
  940.    +o    CBT unicasting. This method is used for sending data packets
  941.         encapsulated (as illustrated above) across a tunnel or point-to-
  942.         point link; the IP destination address of the encapsulating IP
  943.         header is a unicast address. En/de-capsulation takes place in
  944.         CBT routers.
  945.  
  946.    +o    CBT multicasting. A CBT router on a multi-access link can take
  947.         advantage of multicast in the case where multiple on-tree neigh-
  948.         bours are reachable across a single physical link; the outer
  949.         encapsulating IP header contains a multicast address as its des-
  950.         tination address.  The IP module of end-systems on the same link
  951.         subscribed to the same group will discard these multicasts since
  952.         the CBT payload type (protocol id) of the outer IP header is not
  953.         recognizable by hosts.
  954.  
  955.    CBT routers create forwarding database (db) entries whenever they
  956.    send or receive a JOIN_ACK. The forwarding database describes the
  957.    parent-child relationships on a per-group basis. A forwarding
  958.    database entry dictates over which tree interfaces, and how (unicast
  959.    or multicast) a data packet is to be sent.
  960.  
  961.    Note that a CBT forwarding db is required for both CBT-mode and
  962.    native-mode multicasting.
  963.  
  964.    Using our example topology in figure 1, let's assume the CBT routers
  965.    are operating in CBT mode.
  966.  
  967.    Member G originates an IP multicast (native mode) packet. R8 is the
  968.    DR for subnet S10. R8 therefore sends a (native mode, TTL 1) copy
  969.    over any member subnets for which it is DR - S14 and S10 (the copy
  970.    over S10 is not sent, since the packet was originally received from
  971.    S10).  The multicast packet is CBT mode encapsulated by R8, and uni-
  972.    cast to each of its children, R9 and R12; these children are not
  973.    reachable over the same interface, otherwise R8 could have sent a CBT
  974.    mode multicast.  R9, the DR for S12, need not IP multicast (native
  975.    mode) onto S12 since there are no members present there. R9 unicasts
  976.    the packet in CBT mode to R10, which is the DR for S13 and S15. R10
  977.    decapsulates the CBT mode packet and IP multicasts (native mode, TTL
  978.    1) to each of S13 and S15.
  979.  
  980.    Going upstream from R8, R8 CBT mode unicasts to R4. It is DR for all
  981.    directly connected subnets and therefore IP multicasts (native mode)
  982.  
  983.  
  984.  
  985. Expires April 1997                                             [Page 18]
  986.  
  987.  
  988.  
  989. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  990.  
  991.  
  992.    the data packet onto S5, S6 and S7, all of which have member pres-
  993.    ence. R4 unicasts, CBT mode, the packet to all outgoing children, R3
  994.    and R7 (NOTE: R4 does not have a parent since it is the primary core
  995.    router for the group). R7 IP multicasts (native mode) onto S9. R3 CBT
  996.    mode unicasts to R1 and R2, its children. Finally, R1 IP multicasts
  997.    (native mode) onto S1 and S3, and R2 IP multicasts (native mode) onto
  998.    S4.
  999.  
  1000.  
  1001.  
  1002. 8.  Non-Member Sending
  1003.  
  1004.    For a multicast data packet to span beyond the scope of the originat-
  1005.    ing subnetwork at least one CBT-capable router must be present on
  1006.    that subnetwork.  The DR for the group on the subnetwork must encap-
  1007.    sulate the (native) IP-style packet and unicast it to a core for the
  1008.    group (footnote 5).  The encapsulation required is shown in figure 3;
  1009.    CBT mode encapsulation is necessary so the receiving CBT router can
  1010.    demultiplex the packet accordingly.
  1011.  
  1012.    If the encapsulated packet hits the tree at an on-tree router, the
  1013.    packet is forwarded according to the forwarding rules of section 6.1
  1014.    or 6.2, depending on whether the receiving router is operating in
  1015.    native- or CBT mode. Note that it is possible for the different
  1016.    interfaces of a router to operate in different (and independent)
  1017.    modes.
  1018.  
  1019.    If the first on-tree router encountered is the target core, various
  1020.    scenarios define what happens next:
  1021.  
  1022.    +o    if the target core is not the primary, and the target core has
  1023.         not yet joined the tree (because it has not yet itself received
  1024.         any join-requests), the target core simply forwards the encapsu-
  1025.         lated packet to the primary core; the primary core IP address is
  1026.         included in the encapsulating CBT data packet header.
  1027.  
  1028.         if the target core is not the primary, but has children, the
  1029.         target core forwards the data according to the rules of section
  1030.         6.
  1031. _________________________
  1032.   5 It is assumed  that  CBT-capable  routers  discover
  1033. <core,  group> mappings by means of some discovery pro-
  1034. tocol. Such a protocol is outside  the  scope  of  this
  1035. document.
  1036.  
  1037.  
  1038.  
  1039.  
  1040. Expires April 1997                                             [Page 19]
  1041.  
  1042.  
  1043.  
  1044. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1045.  
  1046.  
  1047.    +o    if the target core is the primary, the primary forwards the data
  1048.         according to the rules of section 6.2.
  1049.  
  1050.  
  1051.  
  1052. 9.  Eliminating the Topology-Discovery Protocol in the Presence of Tun-
  1053. nels
  1054.  
  1055.    Traditionally, multicast protocols operating within a virtual topol-
  1056.    ogy, i.e. an overlay of the physical topology, have required the
  1057.    assistance of a multicast topology discovery protocol, such as that
  1058.    present in DVMRP [1]. However, it is possible to have a multicast
  1059.    protocol operate within a virtual topology without the need for a
  1060.    multicast topology discovery protocol. One way to achieve this is by
  1061.    having a router configure all its tunnels to its virtual neighbours
  1062.    in advance. A tunnel is identified by a local interface address and a
  1063.    remote interface address. Routing is replaced by "ranking" each such
  1064.    tunnel interface associated with a particular core address; if the
  1065.    highest-ranked route is unavailable (tunnel end-points are required
  1066.    to run an Hello-like protocol between themselves) then the next-
  1067.    highest ranked available route is selected, and so on. The exact
  1068.    specification of the Hello protocol is outside the scope of this doc-
  1069.    ument.
  1070.  
  1071.    CBT trees are built using the same join/join-ack mechanisms as
  1072.    before, only now some branches of a delivery tree run in native mode,
  1073.    whilst others (tunnels) run in CBT mode. Underlying unicast routing
  1074.    dictates which interface a packet should be forwarded over. Each
  1075.    interface is configured as either native mode or CBT mode, so a
  1076.    packet can be encapsulated (decapsulated) accordingly.
  1077.  
  1078.    As an example, router R's configuration would be as follows:
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095. Expires April 1997                                             [Page 20]
  1096.  
  1097.  
  1098.  
  1099. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1100.  
  1101.  
  1102.    intf    type    mode    remote addr
  1103.    -----------------------------------
  1104.    #1      phys    native  -
  1105.    #2      tunnel  cbt     128.16.8.117
  1106.    #3      phys    native  -
  1107.    #4      tunnel  cbt     128.16.6.8
  1108.    #5      tunnel  cbt     128.96.41.1
  1109.  
  1110.  
  1111.    core    backup-intfs
  1112.    --------------------
  1113.    A         #5, #2
  1114.    B         #3, #5
  1115.    C         #2, #4
  1116.  
  1117.  
  1118.    The CBT forwarding database needs to be slightly modified to accommo-
  1119.    date an extra field, "backup-intfs" (backup interfaces). The entry in
  1120.    this field specifies a backup interface whenever a tunnel interface
  1121.    specified in the forwarding db is down.  Additional backups (should
  1122.    the first-listed backup be down) are specified for each core in the
  1123.    core backup table. For example, if interface (tunnel) #2 were down,
  1124.    and the target core of a CBT control packet were core A, the core
  1125.    backup table suggests using interface #5 as a replacement. If inter-
  1126.    face #5 happened to be down also, then the same table recommends
  1127.    interface #2 as a backup for core A.
  1128.  
  1129.  
  1130.  
  1131. 10.  CBT Packet Formats and Message Types
  1132.  
  1133.    We distinguish between two types of CBT packet: CBT mode data pack-
  1134.    ets, and CBT control packets. CBT control packets carry a CBT control
  1135.    packet header.
  1136.  
  1137.    CBT control packets are encapsulated in IP, as illustrated below:
  1138.  
  1139.  
  1140.            +++++++++++++++++++++++++++++++
  1141.            | IP header | CBT control pkt |
  1142.            +++++++++++++++++++++++++++++++
  1143.  
  1144.  
  1145.    In CBT mode, the original data packet is encapsulated in a CBT header
  1146.    and an IP header, as illustrated below:
  1147.  
  1148.  
  1149.  
  1150. Expires April 1997                                             [Page 21]
  1151.  
  1152.  
  1153.  
  1154. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1155.  
  1156.  
  1157.            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1158.            | IP header | CBT header | original IP hdr | data .... |
  1159.            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1160.  
  1161.  
  1162.    The IP protocol field of the inner (original) IP header is used to
  1163.    demultiplex a packet correctly; CBT has been assigned IP protocol
  1164.    number 7.  The CBT module then demultiplexes based on the encapsulat-
  1165.    ing CBT header's "type" field, thereby distinguishing between CBT
  1166.    control packets and CBT mode data packets.
  1167.  
  1168.    The CBT data packet header is illustrated below.
  1169.  
  1170.  
  1171.  
  1172. 10.1.  CBT Header Format (for CBT Mode data)
  1173.  
  1174.  
  1175.     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
  1176.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1177.    |  vers |unused |      type     |   hdr length  | on-tree|unused|
  1178.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1179.    |          checksum             |      IP TTL   |     unused    |
  1180.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1181.    |                        group identifier                       |
  1182.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1183.    |                        first-hop router                       |
  1184.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1185.    |                          primary core                         |
  1186.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1187.    |  reserved     | reserved  |T|S|     Type      |     Length    |
  1188.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1189.    |                        .....Flow-id value.....                |
  1190.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1191.    |     unused    |       unused      |     Type     |   Length   |
  1192.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1193.    |                        .....Security data......               |
  1194.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1195.  
  1196.  
  1197.                           Figure 4. CBT Header
  1198.  
  1199.    Each of the fields is described below:
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205. Expires April 1997                                             [Page 22]
  1206.  
  1207.  
  1208.  
  1209. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1210.  
  1211.  
  1212.       +o    Vers: Version number -- this release specifies version 1.
  1213.  
  1214.       +o    type: indicates CBT payload; values are defined for control
  1215.            (0x00), and data (0xff). For the value 0x00 (control), a CBT
  1216.            control header is assumed present rather than a CBT header.
  1217.  
  1218.       +o    hdr length: length of the header, for purpose of checksum
  1219.            calculation.
  1220.  
  1221.       +o    on-tree: indicates whether the packet is on-tree (0xff) or
  1222.            off-tree (0x00).
  1223.  
  1224.       +o    checksum: the 16-bit one's complement of the one's complement
  1225.            of the CBT header, calculated across all fields.
  1226.  
  1227.       +o    IP TTL: TTL value corresponding to the value of the IP TTL
  1228.            value of the original multicast packet, and set in the CBT
  1229.            header by the DR directly attached to the origin host (decre-
  1230.            mented by CBT routers visited).
  1231.  
  1232.       +o    group identifier: multicast group address.
  1233.  
  1234.       +o    first-hop router: identifies the encapsulating router
  1235.            directly attached to the origin of a multicast packet. This
  1236.            field is relevant to source-migration of a core to the source
  1237.            (see Appendix A). It is set to NULL when core migration is
  1238.            disabled.
  1239.  
  1240.       +o    primary core: the primary core for the group, as identified
  1241.            by "group-id".  This field is necessary for the case where
  1242.            non-member senders happen to send to a secondary core, which
  1243.            may not yet be joined to the primary core. This field allows
  1244.            the secondary to know which is the primary for the group, so
  1245.            that the secondary can forward the (encapsulated) data
  1246.            onwards to the primary.
  1247.  
  1248.       +o    T bit: indicates the presence (1) or absence (0) of Type of
  1249.            Service/flow-id value ("type", "length", "type of ser-
  1250.            vice/flow-id") .
  1251.  
  1252.       +o    S bit: indicates the presence (1) or absence (0) of a secu-
  1253.            rity value ("type", "length", "security data").
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260. Expires April 1997                                             [Page 23]
  1261.  
  1262.  
  1263.  
  1264. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1265.  
  1266.  
  1267. 10.2.  Control Packet Header Format
  1268.  
  1269. The individual fields are described below.
  1270.  
  1271.     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
  1272.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1273.    |  vers |unused |      type     |      code     |   # cores     |
  1274.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1275.    |         hdr length            |            checksum           |
  1276.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1277.    |                        group identifier                       |
  1278.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1279.    |                           group mask                          |
  1280.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1281.    |                          packet origin                        |
  1282.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1283.    |                       primary core address                    |
  1284.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1285.    |                   target core address (core #1)               |
  1286.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1287.    |                             Core #2                           |
  1288.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1289.    |                             Core #3                           |
  1290.    |                               ....                            |
  1291.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1292.    |  reserved     | reserved  |T|S|      Type     |     Length    |
  1293.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1294.    |                      type of service/flow-id                  |
  1295.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1296.    |     unused    |       unused      |     Type     |   Length   |
  1297.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1298.    |                     .....Security data.....                   |
  1299.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1300.  
  1301.  
  1302.                   Figure 5. CBT Control Packet Header
  1303.  
  1304.       +o    Vers: Version number -- this release specifies version 1.
  1305.  
  1306.       +o    type: indicates control message type (see sections 10.3).
  1307.  
  1308.       +o    code: indicates subcode of control message type.
  1309.  
  1310.       +o    # cores: number of core addresses carried by this control
  1311.            packet.
  1312.  
  1313.  
  1314.  
  1315. Expires April 1997                                             [Page 24]
  1316.  
  1317.  
  1318.  
  1319. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1320.  
  1321.  
  1322.       +o    header length: length of the header, for purpose of checksum
  1323.            calculation.
  1324.  
  1325.       +o    checksum: the 16-bit one's complement of the one's complement
  1326.            of the CBT control header, calculated across all fields.
  1327.  
  1328.       +o    group identifier: multicast group address.
  1329.  
  1330.       +o    group mask: mask value for aggregated CBT joins/join-acks.
  1331.            Zero for non-aggregated joins/join-acks.
  1332.  
  1333.       +o    packet origin: address of the CBT router that originated the
  1334.            control packet.
  1335.  
  1336.       +o    primary core address: the address of the primary core for the
  1337.            group.
  1338.  
  1339.       +o    target core address: desired core affiliation of control mes-
  1340.            sage.
  1341.  
  1342.       +o    Core #N: IP address for each of a group's cores.
  1343.  
  1344.       +o    T bit: indicates the presence (1) or absence (0) of Type of
  1345.            Service/flow-id value ("type", "length", "type of ser-
  1346.            vice/flow-id") .
  1347.  
  1348.       +o    S bit: indicates the presence (1) or absence (0) of a secu-
  1349.            rity value ("type", "length", "security data").
  1350.  
  1351.  
  1352.  
  1353. 10.3.  CBT Control Message Types
  1354.  
  1355.    There are ten types of CBT message. All are encoded in the CBT con-
  1356.    trol header, shown in figure 5.
  1357.  
  1358.  
  1359.       +o    JOIN-REQUEST (type 1): generated by a router and unicast to
  1360.            the specified core address. It is processed hop-by-hop on its
  1361.            way to the specified core. Its purpose is to establish the
  1362.            originating CBT router, and all intermediate CBT routers, as
  1363.            part of the corresponding delivery tree. Note that all cores
  1364.            for the corresponding group are carried in join-requests.
  1365.  
  1366.       +o    JOIN-ACK (type 2): an acknowledgement to the above. The full
  1367.  
  1368.  
  1369.  
  1370. Expires April 1997                                             [Page 25]
  1371.  
  1372.  
  1373.  
  1374. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1375.  
  1376.  
  1377.            list of core addresses is carried in a JOIN-ACK, together
  1378.            with the actual core affiliation (the join may have been ter-
  1379.            minated by an on-tree router on its journey to the specified
  1380.            core, and the terminating router may or may not be affiliated
  1381.            to the core specified in the original join). A JOIN-ACK tra-
  1382.            verses the reverse path as the corresponding JOIN-REQUEST,
  1383.            with each CBT router on the path processing the ack. It is
  1384.            the receipt of a JOIN-ACK that actually "fixes" tree state.
  1385.  
  1386.       +o    JOIN-NACK (type 3): a negative acknowledgement, indicating
  1387.            that the tree join process has not been successful.
  1388.  
  1389.       +o    QUIT-REQUEST (type 4): a request, sent from a child to a par-
  1390.            ent, to be removed as a child of that parent.
  1391.  
  1392.       +o    QUIT-ACK (type 5): acknowledgement to the above. If the par-
  1393.            ent, or the path to it is down, no acknowledgement will be
  1394.            received within the timeout period.  This results in the
  1395.            child nevertheless removing its parent information.
  1396.  
  1397.       +o    FLUSH-TREE (type 6): a message sent from parent to all chil-
  1398.            dren, which traverses a complete branch. This message results
  1399.            in all tree interface information being removed from each
  1400.            router on the branch, possibly because of a re-configuration
  1401.            scenario.
  1402.  
  1403.       +o    CBT-ECHO-REQUEST (type 7): once a tree branch is established,
  1404.            this messsage acts as a "keepalive", and is unicast from
  1405.            child to parent (can be aggregated from one per group to one
  1406.            per link. See section 4).
  1407.  
  1408.       +o    CBT-ECHO-REPLY (type 8): positive reply to the above.
  1409.  
  1410.       +o    CBT-BR-KEEPALIVE (type 9): applicable to border routers only.
  1411.            See [11] for more information.
  1412.  
  1413.       +o    CBT-BR-KEEPALIVE-ACK (type 10): acknowledgement to the above.
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425. Expires April 1997                                             [Page 26]
  1426.  
  1427.  
  1428.  
  1429. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1430.  
  1431.  
  1432. 10.3.1.  CBT Control Message Subcodes
  1433.  
  1434.    The JOIN-REQUEST has three valid subcodes:
  1435.  
  1436.       +o    ACTIVE-JOIN (code 0) - sent from a CBT router that has no
  1437.            children for the specified group.
  1438.  
  1439.       +o    REJOIN-ACTIVE (code 1) - sent from a CBT router that has at
  1440.            least one child for the specified group.
  1441.  
  1442.       +o    REJOIN-NACTIVE (code 2) - generated by a router subsequent to
  1443.            receiving a join ack, subcode NORMAL, in response to a
  1444.            active-rejoin.
  1445.  
  1446.    A JOIN-ACK has three valid subcodes:
  1447.  
  1448.       +o    NORMAL (code 0) - sent by a core router, or on-tree router,
  1449.            acknowledging joins with subcodes ACTIVE-JOIN and REJOIN-
  1450.            ACTIVE.
  1451.  
  1452.       +o    PRIMARY-REJOIN-ACK (code 1) - sent by a primary core to
  1453.            acknowledge the receipt of a join-request received with sub-
  1454.            code REJOIN-ACTIVE. This message traverses the reverse-path
  1455.            of the corresponding re-join, and is processed by each router
  1456.            on that path.
  1457.  
  1458.       +o    PRIMARY-NACTIVE-ACK (code 2) - sent by a primary core to
  1459.            acknowledge the receipt of a join-request received with sub-
  1460.            code REJOIN-NACTIVE.  This ack is unicast directly to the
  1461.            router that generated the rejoin-Nactive, i.e. the ack it is
  1462.            not processed hop-by-hop.
  1463.  
  1464.  
  1465.  
  1466. 11.  CBT Protocol Number
  1467.  
  1468.    CBT has been assigned IP protocol number 7. CBT control messages are
  1469.    carried directly over IP.
  1470.  
  1471.  
  1472.  
  1473. 12.  Default Timer Values
  1474.  
  1475.    There are several CBT control messages which are transmitted at fixed
  1476.    intervals. These values, retransmission times, and timeout values,
  1477.  
  1478.  
  1479.  
  1480. Expires April 1997                                             [Page 27]
  1481.  
  1482.  
  1483.  
  1484. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1485.  
  1486.  
  1487.    are given below. Note these are recommended default values only, and
  1488.    are configurable with each implementation (all times are in seconds):
  1489.  
  1490.    +o    CBT-ECHO-INTERVAL 30 (time between sending successive CBT-ECHO-
  1491.         REQUESTs to parent).
  1492.  
  1493.    +o    PEND-JOIN-INTERVAL 5 (retransmission time for join-request if no
  1494.         ack rec'd)
  1495.  
  1496.    +o    PEND-JOIN-TIMEOUT 30 (time to try joining a different core, or
  1497.         give up)
  1498.  
  1499.    +o    EXPIRE-PENDING-JOIN 90 (remove transient state for join that has
  1500.         not been ack'd)
  1501.  
  1502.    +o    PEND_QUIT_INTERVAL 5 (retransmission time for quit-request if no
  1503.         ack rec'd)
  1504.  
  1505.    +o    CBT-ECHO-TIMEOUT 90 (time to consider parent unreachable)
  1506.  
  1507.    +o    CHILD-ASSERT-INTERVAL 90 (increment child timeout if no ECHO
  1508.         rec'd from a child)
  1509.  
  1510.    +o    CHILD-ASSERT-EXPIRE-TIME 180 (time to consider child gone)
  1511.  
  1512.    +o    IFF-SCAN-INTERVAL 300 (scan all interfaces for group presence.
  1513.         If none, send QUIT)
  1514.  
  1515.    +o    BR-KEEPALIVE-INTERVAL 200 (backup designated BR to designated BR
  1516.         keepalive interval)
  1517.  
  1518.    +o    BR-KEEPALIVE-RETRY-INTERVAL 30 (keepalive interval if BR fails
  1519.         to respond)
  1520.  
  1521.  
  1522.  
  1523. 13.  Interoperability Issues
  1524.  
  1525.    Interoperability between CBT and DVMRP has recently been defined in
  1526.    [11].
  1527.  
  1528.    Interoperability with other multicast protocols will be fully speci-
  1529.    fied as the need arises.
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535. Expires April 1997                                             [Page 28]
  1536.  
  1537.  
  1538.  
  1539. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1540.  
  1541.  
  1542. 14.  CBT Security Architecture
  1543.  
  1544.    see [4].
  1545.  
  1546.  
  1547.  
  1548. Acknowledgements
  1549.  
  1550.    Special thanks goes to Paul Francis, NTT Japan, for the original
  1551.    brainstorming sessions that brought about this work.
  1552.  
  1553.    Thanks too to Sue Thompson (Bellcore). Her detailed reviews led to
  1554.    the identification of some subtle protocol flaws, and she suggested
  1555.    several simplifications.
  1556.  
  1557.    Thanks also to the networking team at Bay Networks for their comments
  1558.    and suggestions, in particular Steve Ostrowski for his suggestion of
  1559.    using "native mode" as a router optimization, and Eric Crawley.
  1560.  
  1561.    Thanks also to Ken Carlberg (SAIC) for reviewing the text, and gener-
  1562.    ally providing constructive comments throughout.
  1563.  
  1564.    I would also like to thank the participants of the IETF IDMR working
  1565.    group meetings for their general constructive comments and sugges-
  1566.    tions since the inception of CBT.
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590. Expires April 1997                                             [Page 29]
  1591.  
  1592.  
  1593.  
  1594. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1595.  
  1596.  
  1597. APPENDICES
  1598.  
  1599. DISCLAIMER: As of writing, the mechanisms described in Appendices A and
  1600. B have not been tested, simulated, or demonstrated.
  1601.  
  1602.  
  1603. APPENDIX A
  1604.  
  1605.                    Dynamic Source-Migration of Cores
  1606.  
  1607. A.0 Abstract
  1608.  
  1609.    This appendix describes CBT protocol mechanisms that allow a CBT mul-
  1610.    ticast tree, initially constructed around a randomly-placed set of
  1611.    core router, to dynamically reconfigure itself in response to an
  1612.    active source, such that the CBT tree becomes rooted at the source's
  1613.    local CBT router. Henceforth, CBT emulates a shortest-path tree.
  1614.  
  1615.    For clarity, the mechanisms are described in the context of "flat"
  1616.    multicasting, but are transferrable to a hierarchical model with only
  1617.    minor changes.
  1618.  
  1619.  
  1620. A.1 Motivation
  1621.  
  1622.    One of the criticisms levelled against shared tree multicast schemes
  1623.    is that they potentially result in sub-optimal routes between
  1624.    receivers. Another criticism is that shared trees incur a high traf-
  1625.    fic concentration effect on the core routers. Given that any shared
  1626.    tree is likely to have two, three, or more cores which can be strate-
  1627.    gically placed in the network, as well as the fact that any on-tree
  1628.    router can act as a "branch point" (or "exploder point"), shared tree
  1629.    traffic concentration can be significantly reduced.  This note never-
  1630.    theless addresses both of these criticisms by describing new mecha-
  1631.    nisms that
  1632.  
  1633.    +o    allow a CBT to dynamically transition from a random configura-
  1634.         tion to one where any CBT router can become a core - more pre-
  1635.         cisely, that which is local to a source, and...
  1636.  
  1637.    +o    remove the traffic concentration issue completely, as a result
  1638.         of the above; traffic concentration is not an issue with source-
  1639.         rooted trees.
  1640.  
  1641.    The mechanisms described here are relevant to non-concurrent sources;
  1642.  
  1643.  
  1644.  
  1645. Expires April 1997                                             [Page 30]
  1646.  
  1647.  
  1648.  
  1649. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1650.  
  1651.  
  1652.    the concurrent-sender case is not addressed here, although experience
  1653.    with MBONE applications for the past several years suggests that most
  1654.    multicast applications are of the single, infrequently-changing
  1655.    sender type.  Also, it is not necessarily implied that the initial
  1656.    CBT tree must be transitioned. Any transition is an "all-or-nothing"
  1657.    transition, meaning that either all the tree transitions, or none of
  1658.    it does (footnote 6).
  1659.  
  1660.  
  1661. A.2 Goals & Requirements
  1662.  
  1663.    By means of the mechanisms described, this Appendix sets out to
  1664.    achieve the follwoing:
  1665.  
  1666.    +o    provide mechanisms that allow the dynamic transition from an
  1667.         initial CBT, constructed around a pre-configured set of cores,
  1668.         to a CBT that is rooted at a core attached to a sender's local
  1669.         subnetwork. This is source-rooted tree emulation.
  1670.  
  1671.    +o    ensure that these mechanisms do not impact CBT's simplicity or
  1672.         scalability.
  1673.  
  1674.    +o    eliminate completely the traffic concentration issue from CBT.
  1675.  
  1676.    +o    to eliminate the core placement/core advertisement problems.
  1677.  
  1678.    +o    ensure that the scheme is robust, such that if a source's local
  1679.         router (or link to it) should fail, the CBT self-organises
  1680.         itself and returns to its original configuration.
  1681.  
  1682.    +o    the mechanisms should provide the same even to non-member
  1683.         senders.
  1684.  
  1685.    The above incurs a few additional requirements on existing baseline
  1686.    CBT mechanisms described in this specification:
  1687.  
  1688.    +o    a new JOIN-REQUEST subcode, REVERSE-JOIN
  1689.  
  1690.    +o    a new JOIN-ACK subcode, REVERSE-ACK
  1691. _________________________
  1692.   6 This is the expected behaviour of PIM Sparse  Mode;
  1693. on  reciept  of high-bandwidth traffic, most receivers'
  1694. local routers  will  be  configured  to  transition  to
  1695. source trees.
  1696.  
  1697.  
  1698.  
  1699.  
  1700. Expires April 1997                                             [Page 31]
  1701.  
  1702.  
  1703.  
  1704. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1705.  
  1706.  
  1707.    +o    new JOIN-ACK subcode, CORE-MIGRATE
  1708.  
  1709.    +o    a "first-hop router" field needs to be included in the CBT data
  1710.         packet header.
  1711.  
  1712.    +o    a new message type:
  1713.  
  1714.         - SOURCE-NOTIFICATION
  1715.  
  1716.  
  1717.    +o    CBT-mode data encapsulation is required until the local CBT
  1718.         router connected to an active source receives a JOIN-REQUEST,
  1719.         whose "target core address" field is one of its own IP
  1720.         addresses.
  1721.  
  1722.    These new additions are explained in the next section.
  1723.  
  1724.  
  1725. A.3 Source-Tree Emulation Criteria
  1726.  
  1727.    CBT routers are configured with a lower-bound data-rate threshold
  1728.    that is the expected boundary between low- and high-bandwidth data
  1729.    rate traffic. CBT also monitors the duration each sender sends. If
  1730.    this duration exceeds a pre-configured value (global across CBT), say
  1731.    3 minutes, AND the data rate threshold is exceeded, the CBT tree
  1732.    transitions such that receivers become joined to the "core" local to
  1733.    the source's subnet, i.e. the CBT tree becomes source-rooted, but
  1734.    nevertheless remains a CBT.
  1735.  
  1736.  
  1737. A.4 Source-Migration Mechanisms
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755. Expires April 1997                                             [Page 32]
  1756.  
  1757.  
  1758.  
  1759. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1760.  
  1761.  
  1762.  
  1763.  
  1764.                                                     E o        o D
  1765.                                                        \     /
  1766.                                                         \   /
  1767.             L o                                          \ /
  1768.                \                                           o C
  1769.                 \                  N                      /
  1770.                  \                                       /
  1771.                   \A(2)                            (1)B /
  1772.                    O===================================O
  1773.                    |                                   |
  1774.           M        |                                   |
  1775.                    |                                   |
  1776.                  K o                                   o H
  1777.                   /\                                  /\
  1778.                  /  \                                /  \
  1779.                 /    \                              /    \
  1780.         s    J o      o I                        G o      o F
  1781.        ----------
  1782.  
  1783.    Key:  B = primary core
  1784.    A = secondary core
  1785.    s = sending host
  1786.    J = sending host's local DR
  1787.    M & N = network nodes not on original CBT tree
  1788.  
  1789.                        Figure A1: Original CBT Tree
  1790.  
  1791.    In figure A1, host s starts sending native mode multicast data. CBT
  1792.    router J encapsulates it as CBT mode, inserting its own IP address in
  1793.    the "first-hop router" field of the CBT mode data packet header. This
  1794.    data packet flows over the CBT tree.
  1795.  
  1796.    Note that tree migration can be disabled either by sending all pack-
  1797.    ets in native mode, or by inserting NULL value into the "first-hop
  1798.    router" field. Since the first-hop router is the original encapsulat-
  1799.    ing router (data packets are always originated from hosts in native
  1800.    mode), the first-hop router knows whether the sender's data rate war-
  1801.    rants activating the "first-hop router" field; for the purpose of the
  1802.    ensuing protocol description, we assume this is the case.
  1803.  
  1804.    Any router on the tree receiving the CBT mode data packet, inspects
  1805.    the "first-hop router" field of the CBT header, and compiles a join-
  1806.    request to send to it. In order to fully specify the join, it must
  1807.  
  1808.  
  1809.  
  1810. Expires April 1997                                             [Page 33]
  1811.  
  1812.  
  1813.  
  1814. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1815.  
  1816.  
  1817.    inspect its underlying unicast routing table(s) to find the best
  1818.    next-hop to the source's first hop router. That next hop will be
  1819.    either on or off the existing CBT tree for the group. If the next hop
  1820.    is off-tree, the join generated is given a subcode of ACTIVE-JOIN (as
  1821.    per CBT spec), and a "target core address" of the source's first hop
  1822.    router. The join is then forwarded and processed according to the CBT
  1823.    specification. The primary core, and the original core list, remain
  1824.    specified in their respective fields of the CBT control packet
  1825.    header.
  1826.  
  1827.    Using figure A1 to illustrate an example, node L's routing tables
  1828.    suggest that the best next-hop to J, the source's first hop router,
  1829.    is via node M, not yet on the tree. So, node L generates a join and
  1830.    forwards it to M, which forwards it to J. The join-ack (subcode NOR-
  1831.    MAL) returns to L via M on the reverse-path of the join. When the
  1832.    join-ack reaches L, L sends a QUIT-REQUEST to A, its old parent.  The
  1833.    shortest-path branch now exists, L-M-J.
  1834.  
  1835.    If the best next hop to the source's first hop router is via an
  1836.    existing on-tree interface, if that interface is the node's parent on
  1837.    the current tree, no further action need be taken, and no join need
  1838.    be sent towards the source, J.
  1839.  
  1840.    However, the join's best next hop may be via an existing child inter-
  1841.    face - this is where the new join type, subcode REVERSE-JOIN, comes
  1842.    in. The purpose of this join type is to simply reverse the existing
  1843.    parent-child relationship between two adjacent on-tree routers; each
  1844.    end of the link between the two routers is re-labelled.  This join
  1845.    must be acknowledged by means of a JOIN-ACK, subcode REVERSE-ACK.  A
  1846.    reverse-join is only ever sent from a child to its parent.
  1847.  
  1848.    Immediately subsequent to sending a reverse-join-ACK, the sending
  1849.    node's  old parent interface is labelled as "pending child", and a
  1850.    timer is set on that interface. This is a delay timer, set at a
  1851.    default of 5 seconds, during which time a reverse-join is expected
  1852.    over that interface from the node's old parent. Should this timer
  1853.    expire, a REVERSE-ASSERT message is sent to the old parent (new
  1854.    child) to cause it to agree to the change in the parent-child rela-
  1855.    tionship.  A REVERSE-ASSERT must be ack'd (REVERSE-ASSERT-ACK). If,
  1856.    after (say) three retransmissions (at 5 sec intervals) no reverse-
  1857.    assert-ack has been received, a QUIT-REQUEST is sent to the old par-
  1858.    ent and the corresponding interface is removed from this node's cur-
  1859.    rent forwarding database.
  1860.  
  1861.    Of course, if a node has already received a reverse-join during the
  1862.  
  1863.  
  1864.  
  1865. Expires April 1997                                             [Page 34]
  1866.  
  1867.  
  1868.  
  1869. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1870.  
  1871.  
  1872.    period one of its other interfaces was changing its parent-child
  1873.    relationship with another of its neighbours, then the pending-child
  1874.    delay timer need not be activated.
  1875.  
  1876.    Looking at figure A1 again, here's the process of how the parent-
  1877.    child relationships change on the tree when an active source, s,
  1878.    starts sending. Of course, links E-C, I-J, and L-J do not do this
  1879.    because they forge completely new paths towards the source's local
  1880.    router, J.
  1881.  
  1882.    K sends a reverse-join to J. J acks this with a join-ack, subcode
  1883.    REVERSE-ACK. At this point, J is K's parent, and I is still K's
  1884.    child.  K now sets the pending-child delay timer on its interface to
  1885.    A (K's old parent), and expects a reverse-join from A. If it weren't
  1886.    to arrive after the delay timer expires, plus several retransmissions
  1887.    of a reverse-assert control message, K can send a quit to A (it sends
  1888.    a quit because, as far as A is concerned, it thinks K is still its
  1889.    child) and removes the K-A interface from its CBT forwarding
  1890.    database.  However, assuming a reverse-join does arrive at K from A
  1891.    before the delay timer expires, K acks the reverse-join and cancels
  1892.    the delay timer on that interface.
  1893.  
  1894.    Next, let's consider CBT router (node) I. I's unicast routing table
  1895.    suggest it can reach J directly (next-hop) via a different interface
  1896.    than the I-K interface, so I sends a join-request, subcode active-
  1897.    join, to J, which acks it as normal. On receipt of the ack, I sends a
  1898.    quit to K and removes K as its parent from its database.
  1899.  
  1900.    Now let's consider node L. Like I, it finds a new path to J, via M,
  1901.    so simply sends a new join to J, via M, and on receipt of the join-
  1902.    ack, sends a quit to A, and removes A from its forwarding database.
  1903.    A new, shortest-path, branch now exists, J-M-L.
  1904.  
  1905.    Next let's consider A-B, the link between the cores. A is the sec-
  1906.    ondary, and B is the primary, so A originally joined towards B.  So,
  1907.    B sends a reverse-join to A. A sends a reverse-ack to B, so A is now
  1908.    B's parent, and B has children B-H, and B-C. Note that the role of
  1909.    primary and secondary is not affected - the target of B's join to A
  1910.    is the source's local router, J.
  1911.  
  1912.    The existing branches D-C-B, F-H-B, and G-H-B, need not change any of
  1913.    their parent-child relationships, since each of these nodes' unicast
  1914.    routing tables indicate that the best next-hop a join-request, tar-
  1915.    getted at source J, would take, is via the corresponding existing
  1916.    parent.
  1917.  
  1918.  
  1919.  
  1920. Expires April 1997                                             [Page 35]
  1921.  
  1922.  
  1923.  
  1924. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1925.  
  1926.  
  1927.    For E, it sends a new join via N to J. On receipt of the join-ack, it
  1928.    sends a quit to C. A new branch has been created, E-N-J.
  1929.  
  1930.    Each node on the tree now has a shortest-path to J, the source's
  1931.    local CBT router. Hence, J is the root ("core") of a shortest-path
  1932.    multicast tree.
  1933.  
  1934.    Note that these new mechanisms augment the CBT protocol, and the
  1935.    baseline CBT protocol engine is not affected in any way by this add-
  1936.    on mechanism.
  1937.  
  1938.  
  1939. A.5 Robustness Issues
  1940.  
  1941.    Some immediate questions might be:
  1942.  
  1943.    +o    what happens to the source-rooted tree if the source's local CBT
  1944.         router fails?
  1945.  
  1946.    +o    what happens if the source's local CBT router fails whilst the
  1947.         initial tree is transitioning?
  1948.  
  1949.    +o    what happens if the tree is partitioned, or not yet fully con-
  1950.         nected, when a source starts sending?
  1951.  
  1952.    +o    how do new receivers join an already-transitioned tree?
  1953.  
  1954.    All of these questions are now addressed:
  1955.  
  1956.  
  1957.    +o    What happens to the source-rooted tree if the source's local CBT
  1958.         router fails?
  1959.  
  1960.         A source-rooted CBT has a single point of failure - the root of
  1961.         the tree.
  1962.  
  1963.         In spite of a source being joined, the corelist (primary & sec-
  1964.         ondaries) is carried in CBT control packets, as per the CBT
  1965.         spec. However, the contents of the "target core address" field
  1966.         identifies the IP address of the source's local CBT router. So,
  1967.         in the event of a failure, the CBT routers still have all the
  1968.         information they need to rejoin the original tree, constructed
  1969.         around the corelist. Rejoining then, proceeds according to the
  1970.         rules of the CBT specification.
  1971.  
  1972.  
  1973.  
  1974.  
  1975. Expires April 1997                                             [Page 36]
  1976.  
  1977.  
  1978.  
  1979. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  1980.  
  1981.  
  1982.         Of course, rejoining the original tree happens only after sev-
  1983.         eral attempts have been made to rejoin the source's "core".
  1984.  
  1985.    +o    What happens if the source's local CBT router fails whilst the
  1986.         initial tree is transitioning?
  1987.  
  1988.         This really is no different to the above case. The parts of the
  1989.         tree that have transitioned will rejoin the original tree
  1990.         according to their corresponding corelist. Those parts of the
  1991.         tree in the process of transitioning may temporarily transition,
  1992.         but eventually those nodes will receive a FLUSH from a CBT
  1993.         router adjacent to the failed source router ("core"). They then
  1994.         rejoin the original tree.
  1995.  
  1996.    +o    What happens if the tree is partitioned, or not yet fully con-
  1997.         nected, when a source starts sending?
  1998.  
  1999.         The problem here is that some parts of the network (CBT tree)
  2000.         may not receive CBT encapsulated mode data packets before the
  2001.         source's local DR starts forwarding data in native mode, and so
  2002.         those receivers will not know the IP address of the local DR to
  2003.         join to.
  2004.  
  2005.         For example, assume a secondary core with downstream members
  2006.         cannot reach the primary. If the routers adjacent to the secon-
  2007.         daries are all functioning correctly, the secondaries themselves
  2008.         may not be aware that a partition has occurred somewhere further
  2009.         upstream. So, what if a source downstream from a secondary,
  2010.         starts sending data after the partition has happened?
  2011.  
  2012.         A new control message, the SOURCE-NOTIFICATION, is used to solve
  2013.         this problem. As soon as any core recieves CBT mode encapsulated
  2014.         data, it caches the source "core" IP address, and starts multi-
  2015.         casting (to the group) SOURCE-NOTIFICATION messages, one every
  2016.         minute. Source-notifications contain the IP address of the
  2017.         source's local DR. A core continues to multicast source-
  2018.         notications at 1 minute intervals until the source has ceased
  2019.         transmitting data for more than 20 seconds.
  2020.  
  2021.         Obviously, if a CBT is fully connected, the larger proportion of
  2022.         source-notifications will be redundant. However, this cost jus-
  2023.         tifies the robustness the scheme provides.
  2024.  
  2025.         If an off-tree source begins sending data, which first hits the
  2026.         tree at a secondary core with no receivers attached, the
  2027.  
  2028.  
  2029.  
  2030. Expires April 1997                                             [Page 37]
  2031.  
  2032.  
  2033.  
  2034. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2035.  
  2036.  
  2037.         secondary does not trigger a join towards the primary, but
  2038.         instead just unicasts the data, in CBT mode, to the primary (as
  2039.         per CBT spec). The primary then forwards the data over any con-
  2040.         nected tree branches. Receivers can then begin transitioning. In
  2041.         this way, a transitioned CBT tree extends to the first hop
  2042.         router of a non-member sender.
  2043.  
  2044.         Note that cores and on-tree routers only ever react to active
  2045.         sources iff they have an existing CBT forwarding database for
  2046.         the said group. For example, a primary core would not establish
  2047.         a shortest-path branch to a non-member sender unless it has at
  2048.         least one existing child registered for the corresponding group.
  2049.  
  2050.    +o    How do new receivers join an already-transitioned CBT?
  2051.  
  2052.         New receivers will always attempt to join one of the cores in
  2053.         the corelist for a group. Two things can happen here: firstly, a
  2054.         new join, targetted at one of the cores in the corelist eventu-
  2055.         ally reaches that target core. Secondly, the new join hits a
  2056.         router already established on-tree, but the router encountered
  2057.         is now joined to the source tree (source "core").
  2058.  
  2059.         For the first scenario, all on-tree routers and all core routers
  2060.         maintain the address of which upstream core their CBT branch
  2061.         actually emanates from (as per CBT spec). When a new join
  2062.         arrives at one of the original cores, the core checks whether
  2063.         its own current core affiliation is to a core outside the
  2064.         corelist set. If so, that core is a source "core", so the core
  2065.         responds to the new join with a JOIN-ACK, subcode CORE-MIGRATE.
  2066.         This join-ack contains the address of the active source "core".
  2067.         This join-ack causes a join-request to be issued by one of the
  2068.         routers that receives it - the router whose path to the core
  2069.         (just joined) diverges from that to the source "core"; this can
  2070.         easily be gleaned from unicast routing.  The router then simply
  2071.         directs it new join at the source "core", and on receipt of the
  2072.         join-ack, sends a quit to its now "old" parent.
  2073.  
  2074.         For the second case, the solution is trivial; any on-tree router
  2075.         receiving a join targetted either at one of the original cores
  2076.         for the group, or the active source "core", simply acks (subcode
  2077.         NORMAL) the join and includes in the ack the source "core"
  2078.         affiliation (as per CBT spec).
  2079.  
  2080.  
  2081. A.6 Loops
  2082.  
  2083.  
  2084.  
  2085. Expires April 1997                                             [Page 38]
  2086.  
  2087.  
  2088.  
  2089. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2090.  
  2091.  
  2092.    It may seem that the potential for a transitioning tree to form
  2093.    loops, especially in the presence of reverse-joins, is greatly
  2094.    increased.  This is probably NOT the case; "reversed branches" are
  2095.    those that are already part of a loop-free tree that CBT constructs
  2096.    around the original set of cores. Transitioned tree are just CBTs,
  2097.    whereby the core is simply rooted at the source. Loops are no more
  2098.    likely with these mechanisms then they are with baseline CBT. Note
  2099.    that these are assertions - formal proofs may be more appropriate.
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140. Expires April 1997                                             [Page 39]
  2141.  
  2142.  
  2143.  
  2144. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2145.  
  2146.  
  2147.    APPENDIX B
  2148.  
  2149.                           Group State Aggregation
  2150.  
  2151.  
  2152. B.1 Introduction
  2153.  
  2154.    Although the scalability of shared tree multicast schemes is attrac-
  2155.    tive now, to scale over the longer-term, a combination of hierarchy
  2156.    (support mechanisms that facilitate domain-oriented multicasting),
  2157.    and group aggregation strategies, is required.  If IP multicast is to
  2158.    have a long-term future in the Internet as a global transport mecha-
  2159.    nism, by far the most serious challenge is to address the issue of
  2160.    group state aggregation.
  2161.  
  2162.    Shared trees were developed partly to address scalability with
  2163.    regards to multicast state maintained in the network, which resulted
  2164.    in an improvement in that state by a factor of the number of active
  2165.    sources (a source being a subnetwork aggregate).  However, it is per-
  2166.    ceived that the number of sources sending to any one group will not
  2167.    grow as fast as the number of groups, indeed the latter will probably
  2168.    grow at several orders of magnitude faster [12]. Therefore, it is
  2169.    essential to contain this potential problem, particularly for the
  2170.    benefit of routers on wide-area links, by designing an effective
  2171.    group state aggregation mechanism, capable of collapsing group state.
  2172.  
  2173.    Unlike unicast addresses, multicast addresses cannot be aggregated
  2174.    according to topological locality; multicast addresses are truly
  2175.    location-independent. Thus, it would not seem obvious how the problem
  2176.    can be addressed - clearly, it must be looked at in a different way.
  2177.  
  2178.    In order to be effective, flexibility and efficiency must be facets
  2179.    of group aggregation; an aggregation scheme must be able to accommo-
  2180.    date groups with wide-ranging characteristics in the least constrain-
  2181.    ing way possible.  For example, the trend towards small, non-local
  2182.    groups (e.g. 4 or 5 person audio/video conferences between different
  2183.    user groups spread over different countries/continents); it is these
  2184.    types of groups that are likely to result in an explosive growth in
  2185.    state.  Also, these groups will, in all likelihood, utilize multicast
  2186.    addresses that are randomly spread across the multicast address
  2187.    space, making aggregation seemingly more difficult. An aggregation
  2188.    scheme must therefore account for this.
  2189.  
  2190.  
  2191. B.2 Design Overview
  2192.  
  2193.  
  2194.  
  2195. Expires April 1997                                             [Page 40]
  2196.  
  2197.  
  2198.  
  2199. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2200.  
  2201.  
  2202.    This scheme involves replacing a subset of individual tree state pre-
  2203.    sent on inter-domain links, and aggregating it over a single shared
  2204.    tree. The scheme does not yet specify how candidate groups for aggre-
  2205.    gation are arrived at, but an obvious scheme to would be to aggregate
  2206.    already-overlapping distribution trees. The pivotal idea behind this
  2207.    approach encompasses two inter-dependent strategies:
  2208.  
  2209.    +o    administratively defining a portion of the multicast address
  2210.         space for aggregate groups. For brevity, an example might be the
  2211.         range 238.0.0.0 - 238.255.255.255.
  2212.  
  2213.    +o    associated with each aggregate group address is a mask, specify-
  2214.         ing the portion of the address that it used to identify the
  2215.         aggregate group itself (the portion covered by the mask); the
  2216.         remaining address space is used as an index to an ordered list
  2217.         of groups with which the aggregate address is associated. The
  2218.         ordered list and its association with a group aggregate address
  2219.         is conveyed by means of a protocol message (TBD). The index is
  2220.         used to de-aggregate at region boundaries (border routers).
  2221.  
  2222.    The scheme subscribes to the notion of aggregation-on-demand; a bor-
  2223.    der router (BR) is configured with a threshold number of groups on a
  2224.    BRs external interface, above which it begins to solicit aggregations
  2225.    periodically, say once every hour.
  2226.  
  2227.    As an example, say BR 123 wishes to aggregate 200 groups. BR 123 ran-
  2228.    domly chooses (or by some address allocation algorithm) a group
  2229.    aggregate address.  It has been established that the number of groups
  2230.    for which aggregation is desired is 200. The nearest power of 2 value
  2231.    to 200 is 256 (2^8), and so the aggregate mask covers 24 bits, leav-
  2232.    ing 8 to specify each individual group's traffic flowing over the
  2233.    aggregate tree.
  2234.  
  2235.    So we have:
  2236.          Group aggregate address: 238.10.12.0
  2237.  
  2238.          Group aggregate mask:    238.10.12/24
  2239.  
  2240.    A data packet for the 30th listed group (listed in a protocol message
  2241.    (TBD) as described above) would be addressed to: 238.10.12.30.
  2242.  
  2243.    Similarly, a data packet pertaining to the 150th listed group would
  2244.    be addressed to: 238.10.12.150, and so on.
  2245.  
  2246.    All routers comprising the aggregate tree need only maintain the
  2247.  
  2248.  
  2249.  
  2250. Expires April 1997                                             [Page 41]
  2251.  
  2252.  
  2253.  
  2254. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2255.  
  2256.  
  2257.    group aggregate address and mask, together with the aggregate tree's
  2258.    associated interfaces. If a number of individual shared trees have
  2259.    been replaced by an aggregate tree, then the core routers (RPs) of
  2260.    each of those shared trees must additionally maintain the complete
  2261.    list of groups associated with an <aggregate address/mask-len> so as
  2262.    to be able to "re-direct" any incoming joins for already aggregated
  2263.    groups.  Similarly, border routers (BRs) are incurred the storage
  2264.    cost of maintaining the individual groups associated with an <aggre-
  2265.    gate address/mask-len>, so as to be able to aggregate and de-
  2266.    aggregate as data packets flow across a (sub)region's border.
  2267.  
  2268.  
  2269. B.3 Scaling Further
  2270.  
  2271.    The scheme described can be applied recursively (to border routers)
  2272.    to accommodate a hierarchy containing an arbitrary number of levels.
  2273.  
  2274.    The scheme described imposes two general requirements (or assump-
  2275.    tions):
  2276.  
  2277.    +o    a well defined aggregate group address space for each level of
  2278.         hierarchy (or scope levels).
  2279.  
  2280.    +o    the ability to arbitrarily create boundaries in multicast
  2281.         routers, thereby separating different hierarchical levels.
  2282.  
  2283.    The former will require consensus within the IETF and approval from
  2284.    the IANA. The latter capability is already available in multicast
  2285.    routers; boundaries are specified in a multicast routers configura-
  2286.    tion file.  This capability is currently available in the best known
  2287.    multicast routing protocols: DVMRP, M-OSPF, PIM, and CBT.
  2288.  
  2289.    Defining boundaries may require some degree of coordination; whenever
  2290.    a particular scoped level (boundary) is introduced which has multiple
  2291.    entry/exit multicast routers, these must all be configured such that
  2292.    their boundary definitions are identical, i.e. they must each be con-
  2293.    figured with the same boundary-address/mask (the range 239.0.0.0 -
  2294.    239.255.255.255 is the IANA-defined multicast boundary address
  2295.    range).
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305. Expires April 1997                                             [Page 42]
  2306.  
  2307.  
  2308.  
  2309. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2310.  
  2311.  
  2312. Author Information:
  2313.  
  2314.    Tony Ballardie,
  2315.    Department of Computer Science,
  2316.    University College London,
  2317.    Gower Street,
  2318.    London, WC1E 6BT,
  2319.    ENGLAND, U.K.
  2320.  
  2321.    Tel: ++44 (0)71 419 3462
  2322.    e-mail: A.Ballardie@cs.ucl.ac.uk
  2323.  
  2324.  
  2325.    Scott Reeve, Nitin Jain,
  2326.    Bay Networks, Inc.
  2327.    3, Federal Street,
  2328.    Billerica, MA 01821,
  2329.    USA.
  2330.  
  2331.    Tel: ++1 508 670 8888
  2332.    e-mail: {sreeve, njain}@BayNetworks.com
  2333.  
  2334.  
  2335. References
  2336.  
  2337.   [1] T. Pusateri. Distance Vector Multicast Routing Protocol.  Working
  2338.   draft, June 1996. (draft-ietf-idmr-dvmrp-v3-01.{ps,txt}).
  2339.  
  2340.   [2] J. Moy. Multicast Routing Extensions to OSPF. Communications of
  2341.   the ACM, 37(8): 61-66, August 1994. Also RFC 1584, March 1994.
  2342.  
  2343.   [3] D. Farinacci, S. Deering, D. Estrin, and V. Jacobson. Protocol
  2344.   Independent Multicast (PIM) Dense-Mode Specification. Working draft,
  2345.   July 1996.  (draft-ietf-idmr-pim-dm-spec-02.{ps,txt}).
  2346.  
  2347.   [4a] A. Ballardie. Core Based Tree (CBT) Multicast Architecture.
  2348.   Working draft, July 1996. (draft-ietf-idmr-cbt-arch-04.txt)
  2349.  
  2350.   [4] A. J. Ballardie. Scalable Multicast Key Distribution; RFC 1949,
  2351.   SRI Network Information Center, 1996.
  2352.  
  2353.   [5] A. J. Ballardie. "A New Approach to Multicast Communication in a
  2354.   Datagram Internetwork", PhD Thesis, 1995. Available via anonymous ftp
  2355.   from: cs.ucl.ac.uk:darpa/IDMR/ballardie-thesis.ps.Z.
  2356.  
  2357.  
  2358.  
  2359.  
  2360. Expires April 1997                                             [Page 43]
  2361.  
  2362.  
  2363.  
  2364. INTERNET-DRAFT         CBT Protocol Specification        September 1996
  2365.  
  2366.  
  2367.   [6] W. Fenner. Internet Group Management Protocol, version 2 (IGMPv2).
  2368.   Working draft, May 1996. (draft-idmr-igmp-v2-03.txt).
  2369.  
  2370.   [7] B. Cain, S. Deering, A. Thyagarajan. Internet Group Management
  2371.   Protocol Version 3 (IGMPv3) (draft-cain-igmp-00.txt).
  2372.  
  2373.   [8] M. Handley, J. Crowcroft, I. Wakeman. Hierarchical Rendezvous
  2374.   Point proposal, work in progress.
  2375.   (http://www.cs.ucl.ac.uk/staff/M.Handley/hpim.ps) and
  2376.   (ftp://cs.ucl.ac.uk/darpa/IDMR/IETF-DEC95/hpim-slides.ps).
  2377.  
  2378.   [9] D. Estrin et al. USC/ISI, Work in progress.
  2379.   (http://netweb.usc.edu/pim/).
  2380.  
  2381.   [10] D. Estrin et al. PIM Sparse Mode Specification.  Working draft,
  2382.   July 1996. (draft-ietf-idmr-pim-sparse-spec-04.{ps,txt}).
  2383.  
  2384.   [11] A. Ballardie. CBT - Dense Mode Interoperability: Border Router
  2385.   Specification; Working draft, July 1996. Also available from:
  2386.   ftp://cs.ucl.ac.uk/darpa/IDMR/draft-ietf-idmr-cbt-dm-interop-XX.txt
  2387.  
  2388.   [12] S. Deering. Private communication, August 1996.
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415. Expires April 1997                                             [Page 44]
  2416.  
  2417.