mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-23 11:18:54 +00:00
ec114097dd
merge algorithm failed on several files, and the translation of the mrouted man page to mdoc didn't help...
494 lines
18 KiB
Plaintext
494 lines
18 KiB
Plaintext
README-3.9-beta3.mrouted,v 1.1.2.1 1998/03/01 03:00:20 fenner Exp
|
||
|
||
IP Multicast Extensions for BSD-Derived Unix Systems
|
||
Multicast Routing Daemon
|
||
|
||
Release 3.9-beta3
|
||
February 28, 1998
|
||
|
||
available from parcftp.xerox.com,
|
||
file pub/net-research/ipmulti/beta-test/mrouted3.9-beta3.tar.Z
|
||
binaries:
|
||
pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-sparc-sunos41x.tar.Z
|
||
pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-sparc-solaris2.tar.Z
|
||
pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-i386-freebsd22.tar.Z
|
||
pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-alpha-osf1.tar.Z
|
||
pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-sgi-irix6.tar.Z
|
||
|
||
Note: The 3.9 release is mrouted-only, and will run on top of a 3.5 kernel.
|
||
It is a drop-in replacement for mrouted 3.5, 3.6, 3.7 or 3.8.
|
||
|
||
NOTE WELL: This is a beta-test release of mrouted. The basic
|
||
functionality has been extensively tested in CAIRN and other
|
||
testbeds, but it is expected to have bugs. Please report bugs to Bill
|
||
Fenner <fenner@parc.xerox.com>.
|
||
|
||
|
||
The 3.9-beta3 release fixes the following bugs:
|
||
o There was a bug handling routing updates which caused random black
|
||
holes.
|
||
|
||
o There was a race condition in the timer handlers causing free'd memory
|
||
to sometimes get touched.
|
||
|
||
o "allow_nonpruners" wasn't allowed in the configuration file (and almost
|
||
nobody noticed! - probably a good sign)
|
||
|
||
o When a prune times out and the source has been active "recently",
|
||
mrouted now waits for further traffic instead of triggering a new
|
||
prune.
|
||
|
||
o mrouted now ignores unreachable routes when making a routing decision
|
||
(previously it would blackhole, now it can find a less-specific)
|
||
|
||
The 3.9-beta3 release has the following new features:
|
||
o A "blaster" keyword for mrouted.conf, to turn on handling of routers
|
||
(mostly ciscos) which overwhelm the socket buffers by blasting the
|
||
whole routing table at once.
|
||
|
||
o A "notransit" keyword; routes learned on a "notransit" vif will not be
|
||
readvertised onto another "notransit" vif.
|
||
|
||
o The 500kbps default rate limit on tunnels has been removed.
|
||
|
||
o An ICMP listener which logs ICMP errors which appear to be in response to
|
||
tunnel packets that we sent.
|
||
|
||
o A tunnel traffic encapsulator, which encapsulates control traffic
|
||
inside the tunnel instead of unicasting it "beside" the tunnel.
|
||
This is turned off by default; use "beside off" to turn it on.
|
||
|
||
o A "force_leaf" flag to ignore any potential neighbors on a given interface.
|
||
|
||
|
||
=========
|
||
3.9-beta2
|
||
June 11, 1997
|
||
|
||
The 3.9-beta2 release fixes the following bugs:
|
||
o There was a bug in 3.9-beta1's raw socket buffer processing that
|
||
would cause an immediate lockup on startup on some systems.
|
||
|
||
o RSRR would not clear out the group membership information if
|
||
further notification of changes to this route entry was not possible.
|
||
|
||
There is no need to upgrade to 3.9-beta2 if you are not experiencing
|
||
one of the aforementioned bugs.
|
||
|
||
=========
|
||
3.9-beta1
|
||
June 6, 1997
|
||
|
||
The 3.9-beta1 release has the following known bugs:
|
||
|
||
o The startup message doesn't print properly if you have too many
|
||
interfaces.
|
||
|
||
The 3.9-beta1 release fixes the following bugs:
|
||
|
||
o mrouted did not properly keep track of subordinates, and would not
|
||
time out subordinateness. This caused 2 major problems:
|
||
1. pruning did not happen when there were equal-cost paths to
|
||
the same multi-access link
|
||
2. subordinateness which did not get cancelled by a non-poisoned
|
||
route (e.g. in the face of route filtering) did not time out,
|
||
causing traffic to continue to flow.
|
||
|
||
o mrouted's IGMPv2 processing when it is not the querier now
|
||
conforms to draft-ietf-idmr-igmp-v2-06.txt Thanks to Lorenzo
|
||
VICISANO <L.Vicisano@cs.ucl.ac.uk> for finding a problem.
|
||
|
||
o mrouted is much more careful about forgetting prunes; 3.8
|
||
would forget prunes whenever any route change ocurred.
|
||
|
||
The 3.9-beta1 release has the following new features:
|
||
|
||
o Longer prune lifetimes (2 hours) by default. Prune lifetimes may
|
||
be configured per-vif, with the "prune_lifetime N" mrouted.conf
|
||
configuration file entry (where N is in seconds). This helps to
|
||
work around the black holes caused on restart when you have a Cisco
|
||
upstream which does not handle genid's; if this is your situation
|
||
the recommended value is 300.
|
||
|
||
o mrouted's behavior of flooding new routes by default at startup
|
||
in order to speed healing of paths during startup can be turned off
|
||
per-vif or globally with the "noflood" configuration option.
|
||
Turning this option off means you are likely to experience
|
||
black holes for a minute or two when you restart a router. The
|
||
default is to flood for a minute or two until mrouted is able to
|
||
learn subordinate relationships.
|
||
|
||
o mrouted now retransmits prunes by default on point-to-point links.
|
||
prune retransmission can be turned on or off per vif via the
|
||
"rexmit_prunes [on|off]" mrouted.conf command. Prune retransmission
|
||
helps on lossy links, and also helps when a router has forgotten
|
||
about a prune (e.g. if it is out of memory and needs to shed state,
|
||
or due to a bug).
|
||
|
||
o The new "passive" mode causes mrouted to not actively send probes
|
||
looking for neighbors. This allows a dialup link to become quiescent
|
||
if there is no DVMRP neighbor on the other end. Configuring
|
||
"passive" on both ends of a link will cause it to never come up.
|
||
|
||
o mrouted defaults to not peering with DVMRP routers that do not
|
||
prune. Use the "allow_nonpruners" mrouted.conf option on a vif
|
||
on which you want to allow such peerings.
|
||
|
||
o mrouted now allows route filtering. mrouted.conf syntax:
|
||
accept 13/8
|
||
|
||
accepts all routes matching 13/8 (e.g. accepts
|
||
13.2.116/22). If you want to accept only exactly
|
||
13/8, use
|
||
|
||
accept 13/8 exact
|
||
|
||
deny 10/8 64/2 130/8 exact 172/8 exact
|
||
|
||
denies some common MBone martians
|
||
|
||
Only "accept" or "deny" is allowed, no combinations.
|
||
|
||
Add "bidir" to apply the filter to output too, otherwise
|
||
it's input only.
|
||
|
||
Expected usage:
|
||
- Providers filter routes that customers send them
|
||
- Martian removal
|
||
- Topology modification (e.g. don't let the existence of
|
||
private tunnel foo out into the world).
|
||
|
||
|
||
o mrouted now malloc's the buffer it uses for SIOCGIFCONF, to allow
|
||
for more interfaces. Thanks to Danny Mitzel
|
||
|
||
o mrouted now ignores multiple entries for a single interface
|
||
name (temporary hack until mrouted understands interface aliases)
|
||
|
||
o mrouted's "-d" flag has been modified to accept the names of the
|
||
systems which you would like to debug.
|
||
packet, prunes, routes, peers, cache, timeout, interface,
|
||
membership, traceroute, igmp
|
||
|
||
o mrouted now times neighbors out fater, and fully detects and
|
||
ignores routes from one-way peerings.
|
||
|
||
o mrouted's route processing has been sped up, especially at startup.
|
||
|
||
o mrouted uses the biggest SO_RCVBUF the operating system allows
|
||
(up to 256Kbytes)
|
||
|
||
o mrouted uses TOS 0xc0 ("Internet Control") for DVMRP messages.
|
||
|
||
===========
|
||
Release 3.8
|
||
November 29, 1995
|
||
|
||
The 3.8 release fixes the following bugs:
|
||
|
||
o mrouted would fail to forget prunes when a neighbor went away,
|
||
thus potentially sending traffic down a tunnel after the tunnel
|
||
endpoint has gone down. This was due to some research code making
|
||
it into the "emergency" 3.7 release, sigh.
|
||
|
||
o mrouted could send prunes with negative lifetimes. This causes
|
||
slightly higher prune traffic but shouldn't be any major problem.
|
||
|
||
===========
|
||
Release 3.7
|
||
November 28, 1995
|
||
|
||
The 3.7 release fixes the following bugs:
|
||
|
||
o mrouted now ignores route reports that include bogus netmasks.
|
||
There was a bug in 3.5 that would mangle default routes into
|
||
tens of bogus routes; this should prevent that bug from killing
|
||
the MBONE.
|
||
|
||
This solution can cause route flaps and black holes until the
|
||
3.5's are gone or all of the 3.5's neighbors are 3.7 .
|
||
|
||
o mrouted now ignores duplicate routes. Ciscos and the above 3.5
|
||
bug could cause two copies of the same route to appear in a single
|
||
routing update; mrouted would insert two copies of the same route
|
||
into its routing table and wreak all sorts of havoc.
|
||
|
||
o mrouted now sends a group-specific query for both retransmissions
|
||
of a g-s query; previous versions sent a general query the second
|
||
time.
|
||
|
||
o mrouted now loops back multicasted mtrace responses and
|
||
group-specific membership queries
|
||
|
||
o mrouted now performs deterministic tiebreaking between two
|
||
neighbors on the same vif.
|
||
|
||
o mrouted now only does duplicate suppression on traceroute requests,
|
||
not all traceroute packets, so that a loop can be nicely detected
|
||
via a duplicate router instead of just a timeout.
|
||
|
||
o the buffer size that mrouted uses has been increased to allow
|
||
more than 16 hops in mtrace messages.
|
||
|
||
o mtrace's hop-by-hop termination is now more likely to be correct.
|
||
|
||
o mrinfo now waits for the responses to its retransmitted queries.
|
||
|
||
The 3.7 release has the following new features:
|
||
|
||
o The configuration file can accept a hostname as the other end
|
||
of a tunnel. There must be a single name->ip mapping for the
|
||
given name, however, or mrouted will fail to start up.
|
||
|
||
o mrinfo now sends requests to all interfaces of a multihomed host.
|
||
|
||
o mtrace's passive mode has been implemented.
|
||
|
||
o The first screen of mtrace statistics is shorter and more likely
|
||
to fit on one screen.
|
||
|
||
===========
|
||
Release 3.6
|
||
June 26, 1995
|
||
|
||
The 3.6 release fixes the following bugs:
|
||
|
||
o mrouted would dump core when attempting to report no routes (i.e. upon
|
||
startup, if you have no enabled phyint's)
|
||
|
||
o mrouted would dump core if requested to traceroute a source for which it
|
||
had no route
|
||
|
||
o neighbor flags were not always properly updated on probe or report
|
||
|
||
o mrouted would sometimes reply to a multicast traceroute on a disabled
|
||
phyint; now it uses the first configured phyint to reply to traceroutes.
|
||
|
||
o host routes (i.e. netmask 0xffffffff) works now; it was discarding
|
||
IGMP from the host because it was coming from the "broadcast address"
|
||
of the subnet.
|
||
|
||
o send_igmp() now treats the failure to send an mtrace or a neighbor
|
||
reply as informational, as opposed to warning.
|
||
|
||
o mrouted would go into an infinite loop trying to respond to a traceroute
|
||
for a source with a netmask of 0xffffffff.
|
||
|
||
o vifs_with_neighbors was not being reset if the mrouted was restarted
|
||
with SIGHUP
|
||
|
||
o the default route was not being properly advertised to neighbors (although
|
||
it was accepted if it was advertised to it)
|
||
|
||
o ANSI-fication for those who it helps, still-K&R-ish for those it doesn't.
|
||
|
||
o mtrace now attempts to trace three hops past a non-responding router,
|
||
in the hopes that it does support traceroute but just couldn't respond
|
||
(i.e. unicast didn't work and it can't source multicast because all its
|
||
phyints are disabled).
|
||
|
||
o mrinfo now times out even on a multicast router.
|
||
|
||
|
||
===========
|
||
Release 3.5
|
||
May 8, 1995
|
||
|
||
The 3.5 release has the following new features:
|
||
|
||
o The kernel and mrouted make sure that each is the correct version, to
|
||
prevent problems with mismatched kernel/mrouted versions. A too-old
|
||
mrouted will die with the error:
|
||
|
||
can't enable DVMRP routing in kernel: Option not supported by protocol
|
||
|
||
o mrouted can accept and propogate a default route (essential for
|
||
heirarchical multicast routing)
|
||
|
||
o Kernel route cache keeps source-specific routes instead of subnet routes,
|
||
eliminating hashing and longest-match problems.
|
||
(allows classless routing, longest-match and default routing)
|
||
|
||
o Cached kernel routes only get deleted if no traffic is flowing, to
|
||
facilitate multicast traceroute
|
||
|
||
o mrouted has a new configuration file parser, which provides better error
|
||
messages than before, and allows named boundaries (see man page)
|
||
|
||
o added "netmask" to phyint configuration, at the suggestion of
|
||
Anders Klemets
|
||
|
||
o System V and FreeBSD compatibility from John Brezak <brezak@ch.hp.com>
|
||
|
||
o phyint's can have additional subnets configured, for people with
|
||
multiple subnets on one physical network. mrouted.conf syntax is
|
||
altnet 1.2.3.0, or altnet 1.2.3.0/24 if you need to specify
|
||
a different netmask. There can be as many altnet statements
|
||
as you need.
|
||
|
||
o both mrouted and the kernel now support classless addresses.
|
||
|
||
o the kernel supports PIM assert processing by notifying the router
|
||
when a packet arrives on the wrong interface
|
||
|
||
o the kernel keeps additional counters, and mrouted can be compiled to
|
||
support SNMP and the Multicast MIB
|
||
|
||
o the packet classifier in the kernel now uses the following udp port
|
||
ranges:
|
||
[0, 16384) - lowest priority, unclassified
|
||
[16384, 32768) - highest priority, i.e. audio
|
||
[32768, 49152) - medium priority, i.e. whiteboard
|
||
[49152, 65536) - low priority, i.e. video
|
||
A future release of a session directory will allocate ports in these
|
||
ranges.
|
||
|
||
o the configuration code has been modified to default tunnels' rate_limit
|
||
parameters to 500kbps. This is easily modified with a rate_limit keyword
|
||
in mrouted.conf, but should be a good default for the MBONE in general.
|
||
|
||
o The tunnel sending code now caches a route for ip_output(), this should
|
||
help performance on machines with lots of tunnels.
|
||
|
||
o Dispatching for de-capsulating packets is now via protosw[], making
|
||
reception of other raw protocols more efficient
|
||
|
||
o Neighbor capabilities are discovered via a bitmask as opposed to
|
||
version number.
|
||
|
||
o Multicast traceroute code improved
|
||
|
||
o mrouted can be compiled with Routing Support for Resource Reservation
|
||
(RSRR), required for RSVP.
|
||
|
||
|
||
The 3.5 release fixes the following bugs:
|
||
|
||
o The IGMPv2 query timeout field was interpreted as being in units of
|
||
200ms as opposed to 100ms, thus the maximum timeout was set to twice
|
||
the expected value. This is not fatal, as mrouted always queries
|
||
twice in the expectation that a packet could get loss, but it does
|
||
make it less robust in the face of packet loss.
|
||
|
||
o IGMP could report membership in local-only groups (i.e. 224.0.0.X)
|
||
|
||
o IGMP could get confused by hearing its own new membership reports, thus
|
||
a router would never perform fast leave.
|
||
|
||
o IGMP could reset timers for the wrong interface.
|
||
|
||
o mrouted put a bogus value in the maximum timeout field of IGMPv2 query
|
||
packets.
|
||
|
||
o Non-querier mrouters would respond to IGMP leave messages
|
||
|
||
o mrouted was not performing fast leave properly
|
||
|
||
o If the last member goes away on a transit network, the upstream router
|
||
would stop forwarding even if there are downstream members.
|
||
|
||
o Kernel hash function improved
|
||
|
||
o Eliminated possibility of panic(): timeout in cache maintenance
|
||
|
||
o Reordered resource allocation when sending upcall to handle failure properly
|
||
|
||
o some endian-ness bugs squashed in mrouted, probably more to go.
|
||
|
||
o Multicast traceroute could send a reply on a disabled interface.
|
||
|
||
|
||
This release consists of the following files:
|
||
|
||
|
||
README-3.8.mrouted - this file
|
||
|
||
mrouted/* - version 3.8 of mrouted,
|
||
mrinfo, map-mbone and
|
||
mtrace.
|
||
|
||
ifconfig/* - Changes to ifconfig to
|
||
show multicast interfaces
|
||
|
||
netstat/* - Diffs to netstat
|
||
|
||
ping/* - sources for ping
|
||
which support
|
||
multicasting
|
||
|
||
mtest/* - utility for testing
|
||
multicast group
|
||
membership
|
||
|
||
|
||
MROUTED 3.8
|
||
|
||
Mrouted 3.8 has two optional features: SNMP and RSRR. RSRR support
|
||
is required for running RSVP; the SNMP code, with the help of the
|
||
ISODE snmpd, implements both the Multicast MIB and the DVMRP MIB.
|
||
|
||
RSRR
|
||
----
|
||
Routing Support for Resource Reservations (RSRR) was contributed by
|
||
Daniel Zappala <daniel@isi.edu>.
|
||
|
||
To enable RSRR support, uncomment the three lines starting with
|
||
RSRR near the top of the Makefile and "make clean; make". Or use
|
||
the prebuilt binary, mrouted.rsrr .
|
||
|
||
RSRR allows RSVP to query mrouted for its routing entry for a particular
|
||
source-group pair. Using the routing entry and the IP_MULTICAST_VIF
|
||
socket call, RSVP can forward distinct control messages out each
|
||
outgoing interface. This version of mrouted supports RSRR messages
|
||
using a Unix datagram socket.
|
||
|
||
RSRR currently includes two pairs of query-reply messages. RSVP sends
|
||
an Initial Query when it starts. Mrouted responds with an Initial Reply
|
||
that includes the set of vifs it is using, flagging those that are
|
||
administratively disabled. When RSVP needs the routing entry for a
|
||
source-group pair, it sends a Route Query. Mrouted responds with a
|
||
Route Reply that includes the incoming vif and outgoing vifs for the
|
||
source-group pair.
|
||
|
||
RSVP may request route change notification by setting the notification
|
||
bit in the Route Query. If mrouted can provide route change
|
||
notification for the source-group pair, it sets the notification bit in
|
||
its Route Reply. When the routing entry for the source-group pair
|
||
changes, mrouted sends an unsolicited Route Reply containing the new
|
||
routing information. The initial release of mrouted 3.5 did not support
|
||
route change notification and always returned a Route Reply with the
|
||
notification bit cleared. This release of mrouted provides route change
|
||
notification when possible.
|
||
|
||
SNMP
|
||
----
|
||
SNMP support was contributed by David Thaler <thalerd@eecs.umich.edu>.
|
||
|
||
To enable SNMP support, uncomment the six lines near the top of
|
||
the Makefile below the description of SNMP support, or use the
|
||
prebuilt binary, mrouted.snmp or mrouted.rsrr.snmp .
|
||
|
||
To link the SNMP-capable mrouted, you need the CMU libraries.
|
||
See http://nic.merit.edu/~mbone/ for a full mrouted-snmp distribution.
|
||
|
||
Make sure to add the "sysName", "sysContact", "sysVersion" and
|
||
"sysLocation" variables to your /etc/mrouted.conf if you want them
|
||
to provide anything other than default values.
|
||
|
||
Example:
|
||
|
||
sysName "tibia"
|
||
sysContact "Bill Fenner <fenner@parc.xerox.com> +1 415 812-4816"
|
||
sysVersion "SunOS 4.1.3 and mrouted 3.8"
|
||
sysLocation "MAXC room, PARC building 35"
|
||
|
||
The SNMP version of mrouted has an additional command line flag:
|
||
|
||
-P snmp_port
|
||
|
||
Specifies a port for SNMP communication (default 161). This option
|
||
should be used when another SNMP daemon already exists. The
|
||
preferred alternate port in this case is port 9161.
|
||
|
||
The mstat(8) program allows querying of statistics using SNMP.
|