diff options
Diffstat (limited to 'doc/rfc/rfc1075.txt')
-rw-r--r-- | doc/rfc/rfc1075.txt | 1347 |
1 files changed, 1347 insertions, 0 deletions
diff --git a/doc/rfc/rfc1075.txt b/doc/rfc/rfc1075.txt new file mode 100644 index 0000000..cb06d85 --- /dev/null +++ b/doc/rfc/rfc1075.txt @@ -0,0 +1,1347 @@ + + + + + + +Network Working Group D. Waitzman +Request For Comments: 1075 C. Partridge + BBN STC + S. Deering + Stanford University + November 1988 + + Distance Vector Multicast Routing Protocol + +1. Status of this Memo + + This RFC describes a distance-vector-style routing protocol for + routing multicast datagrams through an internet. It is derived from + the Routing Information Protocol (RIP) [1], and implements + multicasting as described in RFC-1054. This is an experimental + protocol, and its implementation is not recommended at this time. + Distribution of this memo is unlimited. + +2. Introduction + + A draft standard for multicasting over IP networks now exists [2], + but no routing protocols to support internetwork multicasting are + available. This memo describes an experimental routing protocol, + named DVMRP, that implements internetwork multicasting. DVMRP + combines many of the features of RIP [1] with the Truncated Reverse + Path Broadcasting (TRPB) algorithm described by Deering [3]. + + DVMRP is an "interior gateway protocol"; suitable for use within an + autonomous system, but not between different autonomous systems. + DVMRP is not currently developed for use in routing non-multicast + datagrams, so a router that routes both multicast and unicast + datagrams must run two separate routing processes. DVMRP is designed + to be easily extensible and could be extended to route unicast + datagrams. + + DVMRP was developed to experiment with the algorithms in [3]. RIP + was used as the starting point for the development because an + implementation was available and distance vector algorithms are + simple, as compared to link-state algorithms [4]. In addition, to + allow experiments to traverse networks that do not support + multicasting, a mechanism called "tunneling" was developed. + + The multicast forwarding algorithm requires the building of trees + based on routing information. This tree building needs more state + information than RIP is designed to provide, so DVMRP is much more + complicated in some places than RIP. A link-state algorithm, which + already maintains much of the state needed, might prove a better + basis for Internet multicasting routing and forwarding. + + + +Waitzman, Partridge & Deering [Page 1] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + DVMRP differs from RIP in one very important way. RIP thinks in + terms of routing and forwarding datagrams to a particular + destination. The purpose of DVMRP is to keep track of the return + paths to the source of multicast datagrams. To make explanation of + DVMRP more consistent with RIP, the word "destination" is used + instead of the more proper "source", but the reader must remember + that datagrams are not forwarded to these destinations, but originate + from them. + + This memo is organized into the following sections: + - A description of DVMRP is presented. + - Tunnels are explained. + - The routing algorithm is shown. + - The forwarding algorithm is shown. + - The various time values are listed. + - Configuration information is specified. + + This memo does not analyze distance-vector routing, nor fully explain + the distance-vector algorithm; see [1] for more information on these + topics. The process or processes that perform the routing and + forwarding functions are called "routers" in this memo. + +3. Protocol Description + + DVMRP uses the Internet Group Management Protocol (IGMP) to exchange + routing datagrams [2]. + + DVMRP datagrams are composed of two portions: a small, fixed length + IGMP header, and a stream of tagged data. + + The fixed length IGMP header of DVMRP messages is: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |Version| Type | Subtype | Checksum | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + The version is 1. + + The type for DVMRP is 3. + + The subtype is one of: + + 1 = Response; the message provides routes to some destination(s). + 2 = Request; the message requests routes to some destination(s). + 3 = Non-membership report; the message provides non-membership + report(s). + + + +Waitzman, Partridge & Deering [Page 2] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + 4 = Non-membership cancellation; the message cancels previous + non-membership report(s). + + The checksum is the 16-bit one's complement of the one's complement + sum of the entire message, excluding the IP header. For computing + the checksum, the checksum field is zeroed. + + The rest of the DVMRP message is a stream of tagged data. The reason + for using a stream of tagged data is to provide easy extensibility + (new commands can be developed by adding new tags) and to reduce the + amount of redundant data in a message. The elements in the stream, + called commands, are multiples of 16 bits, for convenient alignment. + The commands are organized as an eight bit command numeric code, with + at least an eight bit data portion. Sixteen-bit alignment of all + commands is required. + + A message that has an error in it will be discarded at the point in + processing where the error is detected. Any state changed due to the + message contents before the error will not be restored to its + previous values. + + Certain commands have default values defined in their specification. + As the defaults may be changed as the protocol is developed further, + a cautious implementation will not send out messages that depend on + defaults. + + The length of DVMRP messages is limited to 512 bytes, excluding the + IP header. + +3.1 NULL Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 0 | | Ignored | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Description: The NULL command can be used to provide additional + alignment or padding to 32 bits. + +3.2 Address Family Indicator (AFI) Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 2 | | family | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + + + + + +Waitzman, Partridge & Deering [Page 3] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + Values for family: + + 2 = IP address family, in which addresses are 32 bits long. + + Default: Family = 2. + + Description: The AFI command provides the address family for + subsequent addresses in the stream (until a different AFI command is + given). + + It is an error if the receiver does not support the address family. + +3.3 Subnetmask Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 3 | | count | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Additional argument, with AFI = IP: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Subnet mask | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Count is 0 or 1. + + Default: Assume that following routes are to networks, and use a mask + of the network mask of each route's destination. + + Description: The Subnetmask command provides the subnet mask to use + for subsequent routes. There are some requirements on the bits in + the subnetmask: bits 0 through 7 must be 1, and all of the bits must + not be 1. + + If the count is 0, then no subnet mask applies, assume that the + following routes are to networks, and use a mask of the network mask + of each route's destination. If count is 1, then a subnet mask + should be in the data stream, of an appropriate size given the + address family. + + It is an error for count not to equal 0 or 1. + + Subnetmasks should not be sent outside of the appropriate network. + + See [6] for more information regarding IP subnetting. + + + +Waitzman, Partridge & Deering [Page 4] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + +3.4 Metric Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 4 | | value | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Value is the metric, as an unsigned value ranging from 1 to 255. + + Default: None. + + Description: The metric command provides the metric to subsequent + destinations. The metric is relative to the router that sent this + DVMRP routing update. + + It is an error for metric to equal 0. + +3.5 Flags0 Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 5 | | value | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Meaning of bits in value: + + Bit 7: Destination is unreachable. + Bit 6: Split Horizon concealed route. + + Default: All bits zero. + + Description: The flags0 command provides a way to set a number of + flags. The only defined flags, bits 6 and 7, can be used to provide + more information about a route with a metric of infinity. A router + that receives a flag that it does not support should ignore the flag. + The command is called flags0 to permit the definition of additional + flag commands in the future (flags1, etc.). + + This is an experimental command, and may be changed in the future. + +3.6 Infinity Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 6 | | value | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Value is the infinity, as an unsigned value ranging from 1 to 255. + + + +Waitzman, Partridge & Deering [Page 5] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + Default: Value = 16. + + Description: The infinity command defines the infinity for subsequent + metrics in the stream. + + It is an error for infinity to be zero, or less than the current + metric. + +3.7 Destination Address (DA) Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 7 | | count | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Array of 'count' additional arguments, with AFI = IP: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination Address1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination Address2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Count is the number of addresses supplied, from 1 to 255. The length + of the addresses depends upon the current address family. The number + of addresses supplied is subject to the message length limitation of + 512 bytes. + + Default: None. + + Description: The DA command provides a list of destinations. While + this format can express routes to hosts, the routing algorithm only + supports network and subnetwork routing. The current metric, + infinity, flags0 and subnetmask, when combined with a single + destination address, define a route. The current metric must be less + than or equal to the current infinity. + + It is an error for count to equal 0. + + + + + + + +Waitzman, Partridge & Deering [Page 6] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + +3.8 Requested Destination Address (RDA) Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 8 | | count | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Array of 'count' additional arguments, with AFI = IP: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Requested Destination Address1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Requested Destination Address2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Count is the number of addresses supplied, from 0 to 255. The length + of the addresses depends upon the current address family. The number + of addresses supplied is subject to the message length limitation of + 512 bytes. + + Default: None. + + Description: The RDA command provides a list of destinations for whom + routes are requested. A routing request for all routes is encoded by + using a count = 0. + +3.9 Non Membership Report (NMR) Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 9 | | count | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + Array of 'count' additional arguments, with AFI = IP: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Multicast Address1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + +Waitzman, Partridge & Deering [Page 7] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hold Down Time1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Multicast Address2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hold Down Time2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Count is the number of Multicast Address and Hold Down Time pairs + supplied, from 1 to 255. The length of the addresses depends upon + the current address family. The number of pairs supplied is subject + to the message length limitation of 512 bytes. + + Default: None. + + Description: The NMR command is experimental, and has not been tested + in an implementation. Each multicast address and hold down time pair + is called a non-membership report. The non-membership report tells + the receiving router that the sending router has no descendent group + members in the given group. Based on this information the receiving + router can stop forwarding datagrams to the sending router for the + particular multicast address(es) listed. The hold down time + indicates, in seconds, how long the NMR is valid. + + It is an error for count to equal 0. + + The only other commands in a message that has NMR commands can be the + AFI, flags0, and NULL commands. No relevant flags for the flags0 + command are currently defined, but that may change in the future. + +3.10 Non Membership Report Cancel (NMR Cancel) Command + + Format: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + | 10 | | count | + +-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+ + + + + + +Waitzman, Partridge & Deering [Page 8] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + Array of 'count' additional arguments, with AFI = IP: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Multicast Address1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Multicast Address2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Count is the number of Multicast Addresses supplied, from 1 to 255. + The length of the addresses depends upon the current address family. + The number of addresses supplied is subject to the message length + limitation of 512 bytes. + + Default: None. + + Description: The NMR Cancel command is experimental, and has not been + tested in an implementation. For each multicast address listed, any + previous corresponding non-membership reports are canceled. When + there is no corresponding non-membership report for a given multicast + address, the Cancel command should be ignored for that multicast + address. + + It is an error for count to equal 0. + + The only other commands in a message that has NMR Cancel commands can + be the AFI, flags0, and NULL commands. No relevant flags for the + flags0 command are currently defined, but that may change in the + future. + +3.12 Examples (with bytes in '{}'), not including the message header: + +3.12.1 Supplying a single route to the IP address 128.2.251.231 with + a metric of 2, an infinity of 16, a subnetmask of 255.255.255.0: + + Subtype 1, + AFI 2, Metric 2, Infinity 16, Subnet Mask 255.255.255.0 + {2} {2} {4} {2} {6} {16} {3} {1} {255} {255} {255} {0} + + DA Count=1 [128.2.251.231] + {7} {1} {128} {2} {251} {231} + + + + + +Waitzman, Partridge & Deering [Page 9] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + +3.12.2 Supplying a route to the IP addresses 128.2.251.231 and + 128.2.236.2 with a metric of 2, an infinity of 16, a subnetmask of + 255.255.255.0: + + Subtype 1, + AFI 2, Metric 2, Infinity 16, Subnet Mask 255.255.255.0 + {2} {2} {4} {2} {6} {16} {3} {1} 255} {255} {255} {0} + + DA Count=2 [128.2.251.231] [128.2.236.2] + {7} {1} {128} {2} {251} {231} {128} {2} {236} {2} + +3.12.3 Request for all routes to IP destinations. + + Subtype 2, AFI 2, RDA Count = 0 + {2} {2} {8} {0} + +3.12.4 Non Membership Report for groups 224.2.3.1 and 224.5.4.6 with a + hold down time of 20 seconds, and group 224.7.8.5 with a hold down + time of 40 seconds. + + Subtype 3, + AFI 2, NMR Count = 3 [224.2.3.1, 20] + {2} {2} {10} {3} {224} {2} {3} {1} {0} {0} {0} {20} + + [224.5.4.6, 20] [224.7.8.5, 40] + {224} {5} {4} {6} {0} {0} {0} {20} {224} {7} {8} {5} {0} {0} {0} {40} + +3.13 Summary of Commands + + + Value Name Other commands allowed in same message + ----- ---- --------------------------------------- + 0 Null Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA, RDA, NMR, NMR-cancel + + 2 AFI Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA, RDA, NMR, NMR-cancel + + 3 Subnetmask Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA, RDA + + 4 Metric Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA + + 5 Flags0 Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA + + + + + +Waitzman, Partridge & Deering [Page 10] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + 6 Infinity Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA + + 7 DA Null, AFI, Subnetmask, Metric, Flags0, + Infinity, DA + + 8 RDA Null, AFI, Subnetmask, Flags0, RDA + + 9 NMR Null, AFI, Flags0, NMR + + 10 NMR-cancel Null, AFI, Flags0, NMR-cancel + + +4. Tunnels + + A tunnel is a method for sending datagrams between routers separated + by gateways that do not support multicasting routing. It acts as a + virtual network between two routers. For instance, a router running + at Stanford, and a router running at BBN might be connected with a + tunnel to allow multicast datagrams to traverse the Internet. We + consider tunnels to be a transitional hack. + + Tunneling is done with a weakly encapsulated normal multicasted + datagram. The weak encapsulation uses a special two element IP loose + source route [5]. (This form of encapsulation is preferable to + "strong" encapsulation, i.e., prepending an entire new IP header, + because it does not require the tunnel end-points to know each + other's maximum reassembly buffer size. It also has the benefit of + correct behavior of the originator's time-to-live value and any other + IP options present.) + + A tunnel has a local end-point, remote end-point, metric, and + threshold associated with it. The routers at each end of the tunnel + need only agree upon the local and remote end-points. See section 8 + for information on how tunnels are configured. Because the number of + intermediate gateways between the end-points of a tunnel is unknown, + additional research is needed to determine appropriate metrics and + thresholds. + + To send a datagram on a tunnel, the following occurs: + + - A null IP option is inserted into the datagram. This provides + preferred alignment for the loose source route IP option. + + - A two element loose source route IP option is inserted into + the datagram. + + - The source route pointer is set to point to the second element + + + +Waitzman, Partridge & Deering [Page 11] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + in the source route. + + - The first element in the source route is replaced with the + address of the originating host (the original IP source + address). + + - The second element in the source route is replaced with the + multicast destination address provided by the originating host + (the original IP destination address). + + - The IP source address is replaced with the address of the + router's appropriate outgoing physical interface (the local + tunnel end-point). + + - The IP destination address is replaced with an address of the + remote router (the remote tunnel end-point). + + - The datagram is transmitted to the remote router using + non-multicast routing algorithms. + + Intermediate, non-multicast gateways will route the tunneled datagram + to the remote tunnel end-point. Because the datagram's IP source + address has been replaced with the address of the local tunnel end- + point, ICMP error messages will go to the originating multicast + router. This behavior is desired, because a host that sends a + multicast datagram, which a multicast router decides to tunnel, + should not be aware of the use of the tunnel. If the datagram's IP + source address were not changed when encapsulating the datagram, any + ICMP errors would be sent to the originating host. + + When the remote tunnel end-point receives the tunneled datagram, the + following occurs: + + - The IP source address is replaced with the first element in the + loose source route. + + - The IP destination address is replaced with the second element + in the loose source route. + + - The null option and the loose source route option are removed + from the datagram. This is needed because a host should not + be able to tell that it has received a datagram that was sent + through a tunnel. + + Because no specific network is associated with a tunnel, there are no + local group memberships to be tracked for a tunnel. The only + neighbor on a tunnel can be the remote end-point. Routing messages + should be exchanged through tunnels, but a route is not created for a + + + +Waitzman, Partridge & Deering [Page 12] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + tunnel. The routing messages should be sent as unicast datagrams + directly to the remote tunnel end-point; they should not use an IP + loose source route. + + Justification for using the loose source route and record option for + tunneling: + + We considered defining our own IP option to handle tunneling, but + we are worried that intermediate gateways do not transparently + pass IP options that are unknown to them. Datagrams using a new + option would not traverse the Internet. It would be better for us + if we could create a new IP option, but it won't work presently. + Recall that this is a transition design to allow us to experiment + in the current environment. + + The tunneled packet containing the LSRR option has the following + features: + + Field Value + ----- -------------------- + src address = src gateway address + dst address = dst gateway address + LSRR pointer = points to LSRR address 2 + LSRR address 1 = src host + LSRR address 2 = multicast destination + + Two questions raised about using the LSRR option for tunnels are + "Can intermediate gateways ignore the option?", and "Can the + destination gateway properly detect that the LSRR is used for a + tunnel?". + + When an intermediate gateway receives a datagram, it examines the + destination address. For a tunneled datagram, the destination + address will not match an address of the receiving gateway. + Therefore, the LSRR option will not be examined, and the + intermediate gateway will forward the datagram on to its next hop + for the destination address. + + When the destination gateway receives a datagram, it notes that + the datagram destination address matches one of its own address. + It will then look at the next LSRR option address, since the + source route is not exhausted. That address is a multicast + address. Since hosts are forbidden from putting multicast + addresses into source routes, the gateway can infer that the LSRR + is for tunneling. The weakness here is that perhaps there is some + other meaning for the multicast address in the LSRR. No other + meaning is currently defined. + + + + +Waitzman, Partridge & Deering [Page 13] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + If a tunneled datagram is by error addressed to a destination + gateway that does not support multicasting, then the destination + gateway will try to find a route to the multicast address. This + will fail, and an ICMP destination unreachable error message will + be sent to the tunneled datagram's source. Since the source + address in the tunneled datagram has been adjusted to be the + address of the source multicast gateway, the ICMP errors will not + go to the originating host, which has no knowledge of tunnels. + +5. Routing Algorithm + + This section provides a terse description of the distance-vector + routing algorithm. See [1] for more information. + + While DVMRP can express routes to individual hosts, the forwarding + and routing algorithms only support network and subnetwork routing. + + In the discussion below, the term "virtual interface" is used to + refer to a physical interface or a tunnel local end-point. A + physical interface is a network interface, for instance, an Ethernet + card. A route to a destination will be through a virtual interface. + The term "virtual network" is used to refer to a physical network or + a tunnel, with the qualification that routes only reference physical + networks. + + The TRPB algorithm forwards multicast datagrams by computing the + shortest (reverse) path tree from the source (physical) network to + all possible recipients of the datagram. Each multicast router must + determine its place in the tree, relative to the particular source, + and then determine which of its virtual interfaces are in the + shortest path tree. The datagram is forwarded out these virtual + interfaces. The process of excluding virtual interfaces not in the + shortest path tree is called "pruning." + + Consider a virtual network. Using Deering's terminology [3], a + router is called the "parent" of the virtual network if that router + is responsible for forwarding datagrams onto that virtual network + through its connecting virtual interface. The virtual network can + also be considered a "child" virtual network of the router. Using + the child information, routers can do Reverse Path Broadcasting + (RPB). + + Unnecessary datagrams may still be sent onto some networks, because + there might not be any recipients for those datagrams on the + networks. There are two kinds of recipients: hosts that are members + of a particular multicast group, and multicast routers. If no + multicast routers on a virtual network consider that virtual network + uptree to a given source, then that virtual network is a "leaf" + + + +Waitzman, Partridge & Deering [Page 14] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + network. If a network is a leaf for a given source, and there are no + members of a particular group on the network, then there are no + recipients for datagrams from the source to the group on that + network. That network's parent router can forgo sending those + datagrams on that network, or "truncate" the shortest path tree. The + algorithm that tracks and uses this information is the Truncated + Reverse Path Broadcasting (TRPB) algorithm. + + Determining which virtual networks are leaves is not simple. If any + neighboring router considers a given virtual network in the path to a + given destination, then the virtual network is not a leaf. + Otherwise, it is a leaf. This is a voting function. If a route, + with a metric poisoned by split horizon processing, is sent by some + router, then that router uses that virtual network as the uptree path + for that route (i.e. that router votes that the virtual network is + not a leaf relative to the route's destination). Since the number of + routers on a virtual network is dynamic, and since all received + routing updates are not kept by routers, a heuristic is needed to + determine when a network is a leaf. DVMRP samples the routing + updates on a virtual interface while a hold down timer is running, + which is for a time period of LEAF_TIMEOUT seconds. There is one + hold down timer per virtual interface. If a route is received with a + metric poisoned by split horizon processing while the hold down timer + is running, or at any other time, then the appropriate virtual + interface for that route is "spoiled"-- it is not a leaf. For every + route, any virtual interface that was not spoiled by the time the + hold down timer expires is considered a leaf. + + For a description of an even better forwarding algorithm, the Reverse + Path Multicasting algorithm, see [3]. + + A route entry should have the following in it: + - Destination address (a source of multicast datagrams) * + - Subnet mask of the destination address * + - Next-hop router to the destination address + - Virtual interface to the next-hop router * + - List of child virtual interfaces * + - List of leaf virtual interfaces * + - A dominant router address for each virtual interface + - A subordinate router address for each virtual interface + - Timer + - Set of flags that indicate the state of the entry + - Metric + - Infinity + + The lines that are marked with '*' indicate fields that are directly + used by the forwarding algorithm. + + + + +Waitzman, Partridge & Deering [Page 15] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + The lists of child and leaf interfaces can be implemented as bitmaps. + +5.1 Sending Routing Messages + + DVMRP routing messages can be used for three basic purposes: to + periodically supply all routing information, to gratuitously supply + routing information for recently changed routes, or supply some or + all routes in response to a request. + + Routing messages sent to physical interfaces should have an IP TTL of + 1. + + A number of timeouts and rates are used by the routing and forwarding + algorithms. See section 6 for their values. + + Rules for when to send routing messages: + + - Every FULL_UPDATE_RATE seconds a router should send out + DVMRP messages with all of its routing information to all of its + virtual interfaces. To prevent routers from synchronizing when + they send updates, a real-time timer must be used. + + - Whenever a route is changed, a routing update should be sent + for that route. Some delay must occur between triggered + updates to avoid flooding the network with triggered updates; + intervals of TRIGGERED_UPDATE_RATE seconds is suggested. + + - A request for all routes should be sent on all virtual + interfaces when an DVMRP router is restarted. + + - If possible, when a DVMRP router is about to terminate + execution, it should send out DVMRP messages with metrics + equal to infinity for all of its routes, on all virtual + interfaces. + + When sending to routers connected via networks that support + multicasting, the messages should be multicast to address 224.0.0.4. + Therefore, routers must listen to multicast address 224.0.0.4 on + every physical interface that supports multicasting. If multicasting + isn't supported, broadcasting can be used. As already mentioned, + routing updates to tunnels should be sent as unicast datagrams to the + remote end-point of the tunnel. + + When sending routing messages, except in response to a specific route + request (via RDA command with a non-zero count), poisoned split + horizon processing must be done. This means that given a route that + uses network X, routing updates sent to network X must include that + route with the metric equal to the infinity and should include the + + + +Waitzman, Partridge & Deering [Page 16] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + appropriate flag set in a FLAGS0 command. + + Poisoned split horizon is one way to reduce the likelihood of routing + loops. Another method, not available in RIP, is to choose a better + infinity in a route. For routes propagated in a small, but well + connected, network an infinity smaller than 16 might be better. The + smaller the infinity, the less time a counting-to-infinity event will + take. In traversing a wide internet, an infinity of 16 might be too + small. At the cost of a longer counting-to-infinity event, the + infinity can be increased. + + One concept in Internet Multicasting is to use "thresholds" to + restrict which multicast datagrams exit a network. Multicast routers + on the edge of a subnetted network or autonomous system may require a + datagram to have large TTL to exit a network. This mechanism keeps + most multicast datagrams within the network, reducing external + traffic. An application that wants to multicast outside of its + network would need to give its multicast datagrams at least a TTL of + the sum of the threshold and the distance to the edge of the network + (assuming TTL is used as a hop count within the network). A + configuration option should allow specifying the threshold for both + physical interfaces and tunnels. + + When a router is started, it must send out a request for all routes + on each of its virtual interfaces. The request is a message that has + an RDA command with a count equal to 0 in it. + +5.2 Receiving Routing Messages + + A router must know the virtual interface that a routing message + arrived on. Because the routing message may be addressed to the + all-multicast-routers IP address, and because of tunnels, the + incoming interface can not be identified merely by examining the + message's IP destination address + + For each route expressed in a routing message, the following must + occur: + + IF a metric was given for the route: + THEN add in the metric of the virtual interface that the message + arrived on. + + Lookup the route's destination address in the routing tables. + + IF the route doesn't exist in the tables: + THEN try to find a route to the same network in the routing + tables. + IF that route exists in the tables: + + + +Waitzman, Partridge & Deering [Page 17] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + THEN IF this route came from the same router as the router + that the found route came from: + THEN CONTINUE with next route. + IF route doesn't have a metric of infinity: + THEN add the route to the routing tables. + CONTINUE with next route. + + IF this route came from the same router as the router that the found + route came from: + THEN clear the route timer. + IF a metric was received, and it is different than the found + route's metric: + THEN change the found route to use the new metric and + infinity. + IF the metric is equal to the infinity: + THEN set the route timer to the + EXPIRATION_TIMEOUT. + CONTINUE with next route. + IF the received infinity does not equal the found route's + infinity: + THEN change the found route's infinity to be the received + infinity. + change the found route's metric to be the minimum of + the received infinity and the found route's metric. + ELSE IF a metric was received, and (it is less than the found + route's metric or (the route timer is at least halfway to the + EXPIRATION_TIMEOUT and the found route's metric equals the + received metric, and the metric is less than the received + infinity)): + THEN change the routing tables to use the received route. + clear the route timer. + CONTINUE with next route. + +5.3 Neighbors + + A list should be kept of the neighboring multicast routers on every + attached network. The information can be derived by the DVMRP + routing messages that are received. A neighbor that has not been + heard from in NEIGHBOR_TIMEOUT seconds should be considered to be + down. + +5.4 Local Group Memberships + + As required by [2], a multicast router must keep track of group + memberships on the multicast-capable networks attached to it. Every + QUERY_RATE seconds an IGMP membership request should be sent to the + All Hosts multicast address (224.0.0.1) on each network by a + designated router on that network. The IGMP membership request will + + + +Waitzman, Partridge & Deering [Page 18] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + cause hosts to respond with IGMP membership reports after a small + delay. Hosts will send the report for a group to the group's + multicast address. + + The membership requests should have an IP TTL of 1. + + The routers on a network elect or "designate" a single router to do + the queries. The designated router is the router with the lowest IP + address on that network. Upon startup a router considers itself to + be the designated router until it learns (presumably through routing + messages) of a router with a lower address. To learn about the group + members present on a network at startup, a router should multicast a + number of membership requests, separated by a small delay. We + suggest sending three requests separated by four seconds. + + The multicast router must receive all datagrams sent to all multicast + addresses. Upon receiving an IGMP membership report for a group from + an interface, it must either record the existence of that group on + the interface and record the time, or update the time if the group is + already recorded. The recorded group memberships must be timed-out. + If a group member report is not received for a recorded group after + MEMBERSHIP_TIMEOUT seconds, the recorded group should be deleted. + +6. Forwarding Algorithm + + The section describes the multicast forwarding algorithm and the + state that must be kept for the algorithm. + + The forwarding algorithm is applied to determine how multicast + datagrams arriving on a physical interface or a tunnel should be + handled. If multicast datagrams were flooded, a datagram received on + one virtual interface would be forwarded out of every other virtual + interface. Because of redundant paths in the internet, datagrams + would be duplicated. The child and leaf information, that the + routing algorithm supplies, is used to prune branches in the tree to + all possible destinations. + + In route entries, there is a dominant router address for each virtual + interface. This address is the address of some router that has a + route with a lower metric (and whose metric does not equal infinity) + to the destination, on that virtual interface. The dominant router + address is not set for the next-hop virtual interface. + + Also in route entries, there is a subordinate router address for each + virtual interface. This address is the address of some router that + considers this router to be the parent of the virtual network. + Therefore, the subordinate router address is not set for a virtual + interface to a leaf network. + + + +Waitzman, Partridge & Deering [Page 19] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + The algorithm for manipulating the children and leaf lists in route + entries is: + + Upon router startup: + Create a route entry for each virtual interface, with: + - all other virtual interfaces in its child list, + - an empty leaf list, + - no dominant router addresses, and + - no subordinate router addresses. + Start a hold down timer for each virtual interface, with + a value of LEAF_TIMEOUT. + + Upon receiving a new route: + Create the route entry, with: + - all virtual interfaces, other than the one on which the + new route was received, in its child list, + - empty leaf list, + - no dominant router addresses, and + - no subordinate router addresses. + Start the hold down timer for all virtual interfaces, other + than the one on which the new route was received, with a + value of LEAF_TIMEOUT. + + Upon receiving a route on virtual interface V from neighbor N with a + lower metric than the one in the routing table (or the same metric as + the one in the routing table, if N's address is less than my address + for V), for that route: + If V is in the child list, delete V from the child list. + If there is no dominant router for V and if V is not (now) the + next-hop virtual interface, record N as the dominant router. + + Upon receiving a route on virtual interface V from neighbor N with a + larger metric than the one in the routing table (or the same metric + as the one in the routing table, if N's address is greater than my + address for V), for that route: + If N is the dominant router for V, delete N as the dominant router + and add V to the child list. + + Upon receiving a route from neighbor N on virtual interface V with a + metric equal to infinity (the split horizon flag should also be set), + for that route: + If V is in the leaf list, delete V from the leaf list. + If there is no subordinate router for V, record N as the + subordinate router. + + Upon receiving a route from neighbor N on virtual interface V with a + metric other than infinity (and no split horizon flag), for that + route: + + + +Waitzman, Partridge & Deering [Page 20] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + If N is the subordinate router for V, delete N as the subordinate + router and start the hold down timer for V. + + Upon timer expiration for a virtual interface (V), for each route: + If there is no subordinate router for V, add V to the leaf list. + + Upon failure of neighbor N on virtual interface V, for each route: + If N is the dominant router for V, delete N as the dominant router + and add V to the child list. + If N is the subordinate router for V, delete N as the subordinate + router and start the hold down timer for V. + + The forwarding algorithm is: + + IF the IP TTL is less than 2: + THEN CONTINUE with next datagram. + + find the route to the source of the IP datagram. + + IF no route exists: + THEN CONTINUE with next datagram. + + IF the datagram was not received on the next-hop virtual interface + for the route: + THEN CONTINUE with next datagram. + + IF the datagram is tunneled: + THEN replace the datagram's source address with the first address + in the IP loose source route. + replace the datagram's destination address with the second + address in the IP loose source route. + delete the loose source route and the null option from the + datagram and adjust the IP header length fields to reflect + the deletion. + + If the datagram destination is group 224.0.0.0 or group 224.0.0.1: + THEN CONTINUE with next datagram. + + FOR each virtual interface V + DO IF V is in the child list for the source of the datagram: + THEN IF V is not in the leaf list for the source + OR there are members of the destination group on V: + THEN IF the IP TTL is greater then V's threshold: + THEN subtract 1 from the IP TTL + forward the datagram out V + + + + + + +Waitzman, Partridge & Deering [Page 21] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + +7. Time Values + + This section contains a list of the various rates and timeouts, their + meanings, and their values. All values are in seconds. + + How dynamic the routing environment is effects the following rates. + A lower rate will allow quicker adaptation to a change in the + environment, at the cost of wasting network bandwidth. + + FULL_UPDATE_RATE = 60 + - How often routing messages containing complete routing + tables are sent. + + TRIGGERED_UPDATE_RATE = 5 + - How often triggered routing messages may be sent out. + + Raising the following rates and timeouts may increase the time that + packets may be forwarded to a virtual interface unnecessarily. + + QUERY_RATE = 120 + - How often local group membership is queried. + + MEMBERSHIP_TIMEOUT = 2 * QUERY_RATE + 20 + - How long a local group membership is valid without + confirmation. + + LEAF_TIMEOUT = 2 * FULL_UPDATE_RATE + 5 + - How long the hold down timer is for a virtual interface. + + Increasing the following timeouts will increase the stability of the + routing algorithm, at the cost of slower reactions to changes in the + routing environment. + + NEIGHBOR_TIMEOUT = 4 * FULL_UPDATE_RATE + - How long a neighbor is considered up without confirmation. + This is important for timing out routes, and for setting + the children and leaf flags. + + EXPIRATION_TIMEOUT = 2 * FULL_UPDATE_RATE + - How long a route is considered valid without confirmation. + When this timeout expires, packets will no longer be + forwarded on the route, and routing updates will consider + this route to have a metric of infinity. + + GARBAGE_TIMEOUT = 4 * FULL_UPDATE_RATE + - How long a route exists without confirmation. When this + timeout expires, routing updates will no longer contain any + information on this route, and the route will be deleted. + + + +Waitzman, Partridge & Deering [Page 22] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + +8. Configuration options + + A router should be configurabled with the following information: + + - Tunnel descriptions: local end-point, remote end-point, metric, and + threshold. If no threshold is provided, the metric should be used + as the default threshold. + + - For a physical interface: metric, infinity, threshold and + subnetwork mask. If no threshold is provided, the metric should be + used as the default threshold. + +9. Conclusion + + This memo has presented DVMRP, an extensible distance-vector-style + routing protocol, and a TRPB routing algorithm. An implementation of + the ideas presented in this document has been done, and is being + tested. + + The added features in DVMRP, as compared to RIP, give it flexibility + at the cost of more complex processing. DVMRP still has the + disadvantages of being a distance-vector algorithm. Because link- + state algorithms maintain much of the state information that DVMRP + has to maintain in excess of what RIP needs, a multicast link-state + routing protocol should be developed. + + The TRPB algorithm can cause unneeded datagrams to be sent. The + Reverse Path Multicasting algorithm (RPM) [3] might be a better + algorithm. The NMR and NMR-cancel DVMRP messages are designed to + support RPM. Further research is needed on this topic. + +10. Acknowledgements + + We would like to thank Robb Foster, Alan Dahlbom, Ross Callon, and + the IETF Host Working Group for their ideas. + +11. Bibliography + + [1] Hedrick, C., "Routing Information Protocol", RFC 1058, Rutgers + University, June 1988. + + [2] Deering, S., "Host Extensions for IP Multicasting", RFC 1054, + Stanford University, May 1988. + + [3] Deering, S., "Multicast Routing in Internetworks and Extended + LANs", SIGCOMM Summer 1988 Proceedings, August 1988. + + [4] Callon, R., "A Comparison of 'Link State' and 'Distance + + + +Waitzman, Partridge & Deering [Page 23] + +RFC 1075 Distance Vector Multicast Routing Protocol November 1988 + + + Vector' Routing Algorithms", DEC, November 1987. + + [5] Postel, J., "Internet Protocol", RFC 791, USC/Information + Sciences Institute, September 1981. + + [6] Mills, D., "Toward an Internet Standard Scheme for + Subnetting", RFC 940, University of Delaware, April 1985. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Waitzman, Partridge & Deering [Page 24] +
\ No newline at end of file |