mrouted forwards a multicast datagram along a shortest (reverse) path tree. The root of the tree is the subnet where the datagram originated. The tree is a broadcast tree which has been ``pruned back'' so that it does not extend beyond those subnetworks that contain members (listeners) of the destination multicast group. The tree includes all subnets reachable by a cooperating set of mrouted routers. A multicast datagram will not be forwarded along branches of the tree which do not contain listeners of the multicast group. The IP time-to-live (TTL) of a multicast datagram can be used to limit its range and prevent it from being forwarded to the entire tree.
To support multicasting between subnets that are separated by unicast routers that do not understand IP multicasting, mrouted supports ``tunnels''. A tunnel is a virtual point-to-point link between a pair of mrouted routers located anywhere in an internet. mrouted encapsulates IP multicast packets for transmission through tunnels, so that they look like normal unicast datagrams to intermediate routers and subnets. The encapsulation is added on entering a tunnel, and removed on leaving a tunnel.
By default, multicast packets are encapsulated using the IP-in-IP protocol (IP protocol number 4). Older versions of mrouted use IP source routing, which creates heavy loading on some types of router. This version of mrouted does not support tunnels that use IP source routing.
The tunnel mechanism allows mrouted to establish a ``virtual internet'', for the purpose of multicasting only. This virtual internet is independent of the physical internet, and can span multiple Autonomous Systems. This capability is intended only for experimental support of internet multicasting, pending widespread support for multicast routing by regular unicast routers.
mrouted handles multicast routing only; a unicast router such as routed or gated can run on the same host as mrouted.
If tunnels are defined, mrouted does not need access to more than one physical subnet in order to perform multicast forwarding.
On invocation, mrouted writes its process ID to the file /etc/inet/mrouted.pid.
The following configuration statements may be specified in the configuration file:
If attached to multiple multiple IP subnets, describe each subnet using altnet.
If one boundary or more is specified, mrouted will not forward packets belonging to this address on the scoped interface.
All phyint statements must come before any tunnel statements in the configuration file.
If one boundary or more is specified, mrouted will not forward packets belonging to this address on the scoped interface.
The tunnel must be configured on the routers at both ends before it can be used.
The metric associated with a physical interface or a tunnel influences the choice of route taken. Its value defines the cost of sending a datagram via a route. The default metric 1 is normally satisfactory. A metric greater than 1 is unnecessary for a tunnel that is the only route to other subnets and tunnels. Keep metrics as small as possible; mrouted cannot route along paths where the metrics sum to a value greater than 31.
The threshold is the minimum IP time-to-live (TTL) value that a multicast datagram must have in order to be forwarded to an interface or tunnel. Every multicast router decrements the TTL in a multicast datagram by 1. The default threshold value is 1. The threshold can be used to limit the scope of multicast datagrams, and to ensure that ``lost'' datagrams disappear. You should only specify a threshold to prevent local multicast datagrams from crossing a link. For example, if the networks at two sites are connected by a tunnel with a threshold of 8, multicast datagrams that are specific to a site need a TTL of 7 to avoid crossing the tunnel. All mrouteds should define the same metric and threshold for a subnet or tunnel to which they are connected. This avoids problems such as connections that only work in one direction.
In general, all mrouteds connected to a particular subnet or tunnel should use the same metric and threshold for that subnet or tunnel.
Even though mrouted is exchanging routes correctly, multicast datagrams may fail to traverse a tunnel for the following reasons:
mrouted will log a warning if all its virtual interfaces are tunnels. Eliminate this multicast router and configure a direct tunnel instead.
DVMRP and other multicast routing algorithms are described in Multicast Routing in Internetworks and Extended LANs by S Deering, in the Proceedings of the ACM SIGCOMM '88 Conference.
mrouted suffers from the scaling problems of any distance-vector routing protocol, and does not yet support hierarchical multicast routing or inter-operation with other multicast routing protocols.
# Name the boundaries for convenience # name LOCAL 239.255.0.0/16 name EE 239.254.0.0/16 # # Do not forward datagrams from EE multicast groups on the # le1 interface that is the gateway to the Computer Science # department. # phyint le1 boundary EE # # Define the interface for the classroom network which has # four different length subnets on it. This example entry # uses the IP address rather than the name of the interface. # phyint 172.16.12.38 boundary EE altnet 172.16.15.0/26 altnet 172.16.128.0/26 altnet 172.16.48.0/24 # # Disable multicasting over an ATM interface # phyint atm0 disable # # Define an internal tunnel to another EE subnet. # tunnel 192.168.5.4 192.168.55.101 metric 1 threshold 1 # # Define the tunnel to the outside world but do not forward # LOCAL or EE multicast datagrams over this tunnel. # tunnel 192.168.5.4 10.11.12.13 metric 1 threshold 32 boundary LOCAL boundary EEAn example of a virtual interface table:
Virtual Interface TableThis shows four virtual interfaces; two to subnets, vif 0 and vif 1, and two to tunnels, vif 2 and vif 3. Other observations about this configuration are:Vif Local-Address Metric Thresh Flags ----------------------------------------------------------------------- 0 36.2.0.8 subnet: 36.2 1 1 querier groups: 224.0.2.1 224.0.0.4 pkts in: 3456 pkts out: 2322323
1 36.11.0.1 subnet: 36.11 1 1 querier groups: 224.0.2.1 224.0.1.0 224.0.0.4 pkts in: 345 pkts out: 3456
2 36.2.0.8 tunnel: 36.8.0.110 1 1 peers: 36.8.0.110 boundaries: 239.0.1 239.1.2 pkts in: 34545433 pkts out: 234342
3 36.2.0.8 tunnel: 36.8.0.77 1 1
Multicast Routing TableOrigin-Subnet From-Gateway Metric Tmr In-Vif Out-Vifs ---------------------------------------------------------------- 36.2 1 45 0 1* 2 3* 36.8 36.8.0.77 4 15 2 0* 1* 3* 36.11 1 20 1 0* 2 3*
Origin-Subnet is
the subnet from which a multicast datagram can originate.
Associated with this subnet are:
From-GatewayMetricTmrIn-VifOut-Vifs
'') appended to the vif number
denotes that the outgoing virtual interface
is connected to a leaf of the
broadcast tree rooted at the origin.
mrouted will only forward
a multicast datagram received from the
origin on this outgoing
virtual interface if members
of the destination group exist on the leaf.
Multicast Routing Cache Table (147 entries)The fields have the following meanings:Origin Mcast-group CTmr Age Ptmr IVif Forwvifs ------------------------------------------------------------------------ 13.2.116/22 224.2.127.255 3m 2m - 0 1 >13.2.116.19 >13.2.116.196 138.96.48/21 224.2.127.255 5m 2m - 0 1 >138.96.48.108 128.9.160/20 224.2.127.255 3m 2m - 0 1 >128.9.160.45 198.106.194/24 224.2.135.190 9m 28s 9m 0P >198.106.194.22
OriginMcast-groupOrigin, this
uniquely identifies an entry.
CTmrAgePtmrIvifForwvifs