rfc3077.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,404 行 · 第 1/4 页

TXT
1,404
字号
   the IP address of a feed bidirectional interface (f1b or f2b).  This
   destination address is also called the tunnel end-point.  The
   mechanism for a receiver to learn these addresses and to choose the
   feed is explained in Section 7.  The type of encapsulation is
   described in Section 8.

   In all cases the packet is encapsulated, but the tunnel end-point (an
   IP address) depends on the encapsulated packet's destination MAC
   address.  If the destination MAC address is:

      1) the MAC address of a feed interface connected to the
         unidirectional link (Scenario 1).  The datagram is
         encapsulated, the destination address of the encapsulating
         datagram is the feed tunnel end-point (f1b referring to Figure
         2).

      2) a MAC broadcast/multicast address (Scenario 2).  The datagram
         is encapsulated, the destination address of the encapsulating
         datagram is the default feed tunnel end-point.  See Section 7.4
         for further details on the default feed.

      3) a MAC address that belongs to the unidirectional network but is
         not a feed address (Scenario 3).  The datagram is encapsulated,
         the destination address of the encapsulating datagram is the
         default feed tunnel end-point.

   The encapsulated datagram is passed to the network layer which
   forwards it according to its destination address.  The destination
   address is a feed bidirectional interface which is reachable via the
   Internet.  In this case, the encapsulated datagram is forwarded via
   the receiver bidirectional interface (r1b).

6.2. Tunneling mechanism on the feed

   A feed processes unidirectional link related packets in two different
   ways:






Duros, et al.               Standards Track                     [Page 7]

RFC 3077            LL Tunneling Mechanism for UDLs           March 2001


   -  packets generated by a local application or packets routed as
      usual by the IP layer may have to be forwarded over the
      unidirectional link (Section 6.2.1)

   -  encapsulated packets received from another receiver or feed need
      tunnel processing (Section 6.2.2).

   A feed cannot directly send a packet to a send-only feed over the
   unidirectional link (Scenario 4).  In order to emulate this type of
   communication, feeds have to tunnel packets to send-only feeds.  A
   feed MUST maintain a list of all other feed tunnel end-points.  This
   list MUST indicate which are send-only feed tunnel end-points.  This
   is configured manually at the feed by the local administrator, as
   described in Section 7.

6.2.1. Forwarding packets over the unidirectional link

   When a datagram is delivered to the link-layer of the unidirectional
   interface of a feed for transmission, its treatment depends on the
   packet's destination MAC address.  If the destination MAC address is:

      1) the MAC address of a receiver or a receive capable feed
         (Scenario 6).  The packet is sent over the unidirectional link.
         This is classical "forwarding".

      2) the MAC address of a send-only feed (Scenario 4).  The packet
         is encapsulated and sent to the send-only feed tunnel end-
         point.  The type of encapsulation is described in Section 8.

      3) a broadcast/multicast destination (Scenario 5).  The packet is
         sent over the unidirectional link.  Concurrently, a copy of
         this packet is encapsulated and sent to every feed of the list
         of send-only feed tunnel end-points.  Thus the
         broadcast/multicast will reach all receivers and all send-only
         feeds.

6.2.2. Receiving encapsulated packets

   Feeds listen for incoming encapsulated datagrams on their tunnel
   end-points.  Encapsulated packets will have been received on a
   bidirectional interface, and traversed their way up the IP stack.
   They will then enter a decapsulation process (See Figure 2).

   Decapsulation reveals the original link-layer packet.  Note that this
   has not been modified in any way by intermediate routers; in
   particular, the original MAC header will be intact.





Duros, et al.               Standards Track                     [Page 8]

RFC 3077            LL Tunneling Mechanism for UDLs           March 2001


   Further actions depend on the destination MAC address of the link-
   layer packet, which can be:

      1) the MAC address of the feed interface connected to the
         unidirectional link, i.e., own MAC address (Scenarios 1 and 4).
         The packet is passed to the link-layer of the interface
         connected to the unidirectional link which can then deliver it
         up to higher layers.  As a result, the datagram is processed as
         if it was coming from the unidirectional link, and being
         delivered locally.  Scenarios 1 and 4 are now feasible, a
         receiver or a feed can send a packet to a feed.

      2) a receiver address (Scenario 3).  The packet is passed to the
         link-layer of the interface connected to the unidirectional
         link.  It is directly sent over the unidirectional link, to the
         indicated receiver.  Note, the packet must not be delivered
         locally.  Scenario 3 is now feasible, a receiver can send a
         packet to another receiver.

      3) a broadcast/multicast address, this corresponds to Scenarios 2
         and 5.  We have to distinguish two cases, either (i) the
         encapsulated packet was sent from a receiver or (ii) from a
         feed (encapsulated broadcast/multicast packet sent to a send-
         only feed).  These cases are distinguished by examining the
         source address of the encapsulating packet and comparing it
         with the configured list of feed IP addresses.  The action then
         taken is:

         i) the feed was designated as a default feed by a receiver to
            forward the broadcast/multicast packet.  The feed is then in
            charge of sending the multicast packet to all nodes.
            Delivery to all nodes is accomplished by executing all 3 of
            the following actions:

            -  The packet is encapsulated and sent to the list of send-
               only feed tunnel end-points.
            -  Also, the packet is passed to the link-layer of the
               interface which forwards it directly over the
               unidirectional link (all receivers and receive capable
               feeds receive it).
            -  Also, the link-layer delivers it locally to higher
               layers.

            Caution: a receiver which sends an encapsulated
            broadcast/multicast packet to a default feed will receive
            its own packet via the unidirectional link.  Correct
            filtering as described in [RFC1112] must be applied.




Duros, et al.               Standards Track                     [Page 9]

RFC 3077            LL Tunneling Mechanism for UDLs           March 2001


        ii) the feed receives the packet and keeps it for local
            delivery.  The packet is passed to the link-layer of the
            interface connected to the unidirectional link which
            delivers it to higher layers.

         Scenario 2 is now feasible, a receiver can send a
         broadcast/multicast packet over the unidirectional link and it
         will be heard by all nodes.

7. Dynamic Tunnel Configuration Protocol (DTCP)

   Receivers and feeds have to know the feed tunnel end-points in order
   to forward encapsulated datagrams (e.g., Scenarios 1 and 4).

   The number of feeds is expected to be relatively small (Section 3),
   so at every feed the list of all feeds is configured manually.  This
   list should note which are send-only feeds, and which are receive
   capable feeds.  The administrator sets up tunnels to all send-only
   feeds.  A tunnel end-point is an IP address of a bidirectional link
   on a send-only feed.

   For scalability reasons, manual configuration cannot be done at the
   receivers.  Tunnels must be configured and maintained dynamically by
   receivers, both for scalability, and in order to cope with the
   following events:

      1) New feed detection.
         When a new feed comes up, every receiver must create a tunnel
         to enable bidirectional communication with it.

      2) Loss of unidirectional link detection.
         When the unidirectional link is down, receivers must disable
         their tunnels.  The tunneling mechanism emulates bidirectional
         connectivity between nodes.  Therefore, if the unidirectional
         link is down, a feed should not receive datagrams from the
         receivers.  Protocols that consider a link as operational if
         they receive datagrams from it (e.g., the RIP protocol
         [RFC2453]) require this behavior for correct operation.

      3) Loss of feed detection.
         When a feed is down, receivers must disable their corresponding
         tunnel.  This prevents unnecessary datagrams from being
         tunneled which might overload the Internet.  For instance,
         there is no need for receivers to forward a broadcast message
         through a tunnel whose end-point is down.






Duros, et al.               Standards Track                    [Page 10]

RFC 3077            LL Tunneling Mechanism for UDLs           March 2001


   The DTCP protocol provides a means for receivers to dynamically
   discover the presence of feeds and to maintain a list of operational
   tunnel end-points.  Feeds periodically announce their tunnel end-
   point addresses over the unidirectional link.  Receivers listen to
   these announcements and maintain a list of tunnel end-points.

7.1. The HELLO message

   The DTCP protocol is a 'unidirectional protocol', messages are only
   sent from feeds to receivers.

   The packet format is shown in Figure 3.  Fields contain binary
   integers, in normal Internet order with the most significant bit
   first.  Each tick mark represents one bit.

   0                   1                   2                   3
   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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Vers  |  Com  |    Interval   |           Sequence            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | res |F|IP Vers|  Tunnel Type  |   Nb of FBIP  |    reserved   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                   Feed  BDL IP addr (FBIP1)    (32/128 bits)  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             .....                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                   Feed  BDL IP addr (FBIPn)    (32/128 bits)  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Figure 3: Packet Format

   Every datagram contains the following fields, note that constants are
   written in uppercase and are defined in Section 7.5:

   Vers (4 bit unsigned integer): DTCP version number.  MUST be
      DTCP_VERSION.

   Com (4 bit unsigned integer): Command field, possible values are
      1 - JOIN   A message announcing that the feed sending this message
           is up and running.
      2 - LEAVE  A message announcing that the feed sending this message
           is being shut down.

   Interval (8 bit unsigned integer): Interval in seconds between HELLO
      messages for the IP protocol in "IP Vers".  Must be > 0.  The
      recommended value is HELLO_INTERVAL.  If this value is increased,
      the feed MUST continue to send HELLO messages at the old rate for
      at least the old HELLO_LEAVE period.



Duros, et al.               Standards Track                    [Page 11]

RFC 3077            LL Tunneling Mechanism for UDLs           March 2001


   Sequence (16 bit unsigned integer): Random value initialized at boot
      time and incremented by 1 every time a value of the HELLO message
      is modified.

   res (3 bits): Reserved/unused field, MUST be zero.

   F (1 bit): bit indicating the type of feed:
      0 = Send-only feed
      1 = Receive-capable feed

   IP Vers (4 bit unsigned integer): IP protocol version of the feed
      bidirectional IP addresses (FBIP):
      4 = IP version 4
      6 = IP version 6

   Tunnel Type (8 bit unsigned integer): tunneling protocol supported by
      the feed.  This value is the IP protocol number defined in
      [RFC1700] [iana/protocol-numbers] and their legitimate
      descendents.  Receivers MUST use this form of tunnel encapsulation
      when tunneling to the feed.
      47 = GRE [RFC2784] (recommended)
      Other protocol types allowing link-layer encapsulation are
      permitted.  Obtaining new values is documented in [RFC2780].

   Nb of FBIP (8 bit unsigned integer): Number of bidirectional IP feed
      addresses which are enumerated in the HELLO message

   reserved (8 bits): Reserved/unused field, MUST be zero.

   Feed BDL IP addr (32 or 128 bits).  The bidirectional IP address feed
      is the IP address of a feed bidirectional interface (tunnel end-
      point) reachable via the Internet.  A feed has 'Nb of FBIP' IP
      addresses which are operational tunnel end-points.  They are
      enumerated in preferred order.  FBIP1 being the most suitable
      tunnel end-point.

7.2. DTCP on the feed: sending HELLO packets

   The DTCP protocol runs on top of UDP.  Packets are sent to the "DTCP
   announcement" multicast address over the unidirectional link on port
   HELLO_PORT with a TTL of 1.  Due to existing deployments a feed
   SHOULD also support the use of the old DTCP announcement address, as
   described in Appendix B.

   The source address of the HELLO packet is set to the IP address of
   the feed interface connected to the unidirectional link.  In the rest
   of the document, this value is called FUIP (Feed Unidirectional IP
   address).



Duros, et al.               Standards Track                    [Page 12]

RFC 3077            LL Tunneling Mechanism for UDLs           March 2001


   The process in charge of sending HELLO packets fills every field of
   the datagram according to the description given in Section 7.1.

   As long as a feed is up and running, it periodically announces its
   presence to receivers.  It MUST send HELLO packets containing a JOIN
   command every HELLO_INTERVAL over the unidirectional link.

   Referring to Figure 1 in Section 3, Feed 1 (resp. Feed 2) sends HELLO
   messages with the FBIP1 field set to f1b (resp. f2b).

   When a feed is about to be shut down, or when routing over the
   unidirectional link is about to be intentionally interrupted, it is
   recommended that feeds:

      1) stop sending HELLO messages containing a JOIN command.

      2) send a HELLO message containing a LEAVE command to inform
         receivers that the feed is no longer performing routing over
         the unidirectional link.

7.3. DTCP on the receiver: receiving HELLO packets

   Based on the reception of HELLO messages, receivers discover the
   presence of feeds, maintain a list of active feeds, and keep track of

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?