Last commit changed the function arguments of userland version of
[dragonfly.git] / usr.sbin / mrouted / RELEASE
1 README-3.9-beta3.mrouted,v 1.1.2.1 1998/03/01 03:00:20 fenner Exp
2
3         IP Multicast Extensions for BSD-Derived Unix Systems
4         Multicast Routing Daemon
5
6         Release 3.9-beta3
7         February 28, 1998
8
9         available from parcftp.xerox.com,
10         file pub/net-research/ipmulti/beta-test/mrouted3.9-beta3.tar.Z
11         binaries:
12         pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-sparc-sunos41x.tar.Z
13         pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-sparc-solaris2.tar.Z
14         pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-i386-freebsd22.tar.Z
15         pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-alpha-osf1.tar.Z
16         pub/net-research/ipmulti/beta-test/mrouted3.9-beta3-sgi-irix6.tar.Z
17
18 Note: The 3.9 release is mrouted-only, and will run on top of a 3.5 kernel.
19 It is a drop-in replacement for mrouted 3.5, 3.6, 3.7 or 3.8.
20
21 NOTE WELL: This is a beta-test release of mrouted.  The basic
22 functionality has been extensively tested in CAIRN and other
23 testbeds, but it is expected to have bugs.  Please report bugs to Bill
24 Fenner <fenner@parc.xerox.com>.
25
26
27 The 3.9-beta3 release fixes the following bugs:
28   o There was a bug handling routing updates which caused random black
29     holes.
30
31   o There was a race condition in the timer handlers causing free'd memory
32     to sometimes get touched.
33
34   o "allow_nonpruners" wasn't allowed in the configuration file (and almost
35     nobody noticed! - probably a good sign)
36
37   o When a prune times out and the source has been active "recently",
38     mrouted now waits for further traffic instead of triggering a new
39     prune.
40
41   o mrouted now ignores unreachable routes when making a routing decision
42     (previously it would blackhole, now it can find a less-specific)
43
44 The 3.9-beta3 release has the following new features:
45   o A "blaster" keyword for mrouted.conf, to turn on handling of routers
46     (mostly ciscos) which overwhelm the socket buffers by blasting the
47     whole routing table at once.
48
49   o A "notransit" keyword; routes learned on a "notransit" vif will not be
50     readvertised onto another "notransit" vif.
51
52   o The 500kbps default rate limit on tunnels has been removed.
53
54   o An ICMP listener which logs ICMP errors which appear to be in response to
55     tunnel packets that we sent.
56
57   o A tunnel traffic encapsulator, which encapsulates control traffic
58     inside the tunnel instead of unicasting it "beside" the tunnel.
59     This is turned off by default; use "beside off" to turn it on.
60
61   o A "force_leaf" flag to ignore any potential neighbors on a given interface.
62
63
64 =========
65 3.9-beta2
66 June 11, 1997
67
68 The 3.9-beta2 release fixes the following bugs:
69   o There was a bug in 3.9-beta1's raw socket buffer processing that
70     would cause an immediate lockup on startup on some systems.
71
72   o RSRR would not clear out the group membership information if
73     further notification of changes to this route entry was not possible.
74
75 There is no need to upgrade to 3.9-beta2 if you are not experiencing
76 one of the aforementioned bugs.
77
78 =========
79 3.9-beta1
80 June 6, 1997
81
82 The 3.9-beta1 release has the following known bugs:
83
84   o The startup message doesn't print properly if you have too many
85     interfaces.
86
87 The 3.9-beta1 release fixes the following bugs:
88
89   o mrouted did not properly keep track of subordinates, and would not
90     time out subordinateness.  This caused 2 major problems:
91     1. pruning did not happen when there were equal-cost paths to
92        the same multi-access link
93     2. subordinateness which did not get cancelled by a non-poisoned
94        route (e.g. in the face of route filtering) did not time out,
95        causing traffic to continue to flow.
96
97   o mrouted's IGMPv2 processing when it is not the querier now
98     conforms to draft-ietf-idmr-igmp-v2-06.txt Thanks to Lorenzo
99     VICISANO <L.Vicisano@cs.ucl.ac.uk> for finding a problem.
100
101   o mrouted is much more careful about forgetting prunes; 3.8
102     would forget prunes whenever any route change ocurred.
103
104 The 3.9-beta1 release has the following new features:
105
106   o Longer prune lifetimes (2 hours) by default.  Prune lifetimes may
107     be configured per-vif, with the "prune_lifetime N" mrouted.conf
108     configuration file entry (where N is in seconds).  This helps to
109     work around the black holes caused on restart when you have a Cisco
110     upstream which does not handle genid's; if this is your situation
111     the recommended value is 300.
112
113   o mrouted's behavior of flooding new routes by default at startup
114     in order to speed healing of paths during startup can be turned off
115     per-vif or globally with the "noflood" configuration option.
116     Turning this option off means you are likely to experience
117     black holes for a minute or two when you restart a router.  The
118     default is to flood for a minute or two until mrouted is able to
119     learn subordinate relationships.
120
121   o mrouted now retransmits prunes by default on point-to-point links.
122     prune retransmission can be turned on or off per vif via the
123     "rexmit_prunes [on|off]" mrouted.conf command.  Prune retransmission
124     helps on lossy links, and also helps when a router has forgotten
125     about a prune (e.g. if it is out of memory and needs to shed state,
126     or due to a bug).
127
128   o The new "passive" mode causes mrouted to not actively send probes
129     looking for neighbors.  This allows a dialup link to become quiescent
130     if there is no DVMRP neighbor on the other end.  Configuring
131     "passive" on both ends of a link will cause it to never come up.
132
133   o mrouted defaults to not peering with DVMRP routers that do not
134     prune.  Use the "allow_nonpruners" mrouted.conf option on a vif
135     on which you want to allow such peerings.
136
137   o mrouted now allows route filtering.  mrouted.conf syntax:
138         accept 13/8
139
140         accepts all routes matching 13/8 (e.g. accepts
141         13.2.116/22).  If you want to accept only exactly
142         13/8, use
143
144         accept 13/8 exact
145
146         deny 10/8 64/2 130/8 exact 172/8 exact
147
148         denies some common MBone martians
149
150       Only "accept" or "deny" is allowed, no combinations.
151
152       Add "bidir" to apply the filter to output too, otherwise
153       it's input only.
154
155     Expected usage:
156     - Providers filter routes that customers send them
157     - Martian removal
158     - Topology modification (e.g. don't let the existence of
159     private tunnel foo out into the world).
160
161
162   o mrouted now malloc's the buffer it uses for SIOCGIFCONF, to allow
163     for more interfaces.  Thanks to Danny Mitzel
164
165   o mrouted now ignores multiple entries for a single interface
166     name (temporary hack until mrouted understands interface aliases)
167
168   o mrouted's "-d" flag has been modified to accept the names of the
169     systems which you would like to debug.
170     packet, prunes, routes, peers, cache, timeout, interface,
171     membership, traceroute, igmp
172
173   o mrouted now times neighbors out fater, and fully detects and
174     ignores routes from one-way peerings.
175
176   o mrouted's route processing has been sped up, especially at startup.
177
178   o mrouted uses the biggest SO_RCVBUF the operating system allows
179     (up to 256Kbytes)
180
181   o mrouted uses TOS 0xc0 ("Internet Control") for DVMRP messages.
182
183 ===========
184 Release 3.8
185 November 29, 1995
186
187 The 3.8 release fixes the following bugs:
188
189   o mrouted would fail to forget prunes when a neighbor went away,
190     thus potentially sending traffic down a tunnel after the tunnel
191     endpoint has gone down.  This was due to some research code making
192     it into the "emergency" 3.7 release, sigh.
193
194   o mrouted could send prunes with negative lifetimes.  This causes
195     slightly higher prune traffic but shouldn't be any major problem.
196
197 ===========
198 Release 3.7
199 November 28, 1995
200
201 The 3.7 release fixes the following bugs:
202
203   o mrouted now ignores route reports that include bogus netmasks.
204     There was a bug in 3.5 that would mangle default routes into
205     tens of bogus routes; this should prevent that bug from killing
206     the MBONE.
207
208     This solution can cause route flaps and black holes until the
209     3.5's are gone or all of the 3.5's neighbors are 3.7 .
210
211   o mrouted now ignores duplicate routes.  Ciscos and the above 3.5
212     bug could cause two copies of the same route to appear in a single
213     routing update; mrouted would insert two copies of the same route
214     into its routing table and wreak all sorts of havoc.
215
216   o mrouted now sends a group-specific query for both retransmissions
217     of a g-s query; previous versions sent a general query the second
218     time.
219
220   o mrouted now loops back multicasted mtrace responses and
221     group-specific membership queries
222
223   o mrouted now performs deterministic tiebreaking between two
224     neighbors on the same vif.
225
226   o mrouted now only does duplicate suppression on traceroute requests,
227     not all traceroute packets, so that a loop can be nicely detected
228     via a duplicate router instead of just a timeout.
229
230   o the buffer size that mrouted uses has been increased to allow
231     more than 16 hops in mtrace messages.
232
233   o mtrace's hop-by-hop termination is now more likely to be correct.
234
235   o mrinfo now waits for the responses to its retransmitted queries.
236
237 The 3.7 release has the following new features:
238
239   o The configuration file can accept a hostname as the other end
240     of a tunnel.  There must be a single name->ip mapping for the
241     given name, however, or mrouted will fail to start up.
242
243   o mrinfo now sends requests to all interfaces of a multihomed host.
244
245   o mtrace's passive mode has been implemented.
246
247   o The first screen of mtrace statistics is shorter and more likely
248     to fit on one screen.
249
250 ===========
251 Release 3.6
252 June 26, 1995
253
254 The 3.6 release fixes the following bugs:
255
256   o mrouted would dump core when attempting to report no routes (i.e. upon
257     startup, if you have no enabled phyint's)
258
259   o mrouted would dump core if requested to traceroute a source for which it
260     had no route
261
262   o neighbor flags were not always properly updated on probe or report
263
264   o mrouted would sometimes reply to a multicast traceroute on a disabled
265     phyint; now it uses the first configured phyint to reply to traceroutes.
266
267   o host routes (i.e. netmask 0xffffffff) works now; it was discarding
268     IGMP from the host because it was coming from the "broadcast address"
269     of the subnet.
270
271   o send_igmp() now treats the failure to send an mtrace or a neighbor
272     reply as informational, as opposed to warning.
273
274   o mrouted would go into an infinite loop trying to respond to a traceroute
275     for a source with a netmask of 0xffffffff.
276
277   o vifs_with_neighbors was not being reset if the mrouted was restarted
278     with SIGHUP
279
280   o the default route was not being properly advertised to neighbors (although
281     it was accepted if it was advertised to it)
282
283   o ANSI-fication for those who it helps, still-K&R-ish for those it doesn't.
284
285   o mtrace now attempts to trace three hops past a non-responding router,
286     in the hopes that it does support traceroute but just couldn't respond
287     (i.e. unicast didn't work and it can't source multicast because all its
288     phyints are disabled).
289
290   o mrinfo now times out even on a multicast router.
291
292
293 ===========
294 Release 3.5
295 May 8, 1995
296
297 The 3.5 release has the following new features:
298
299   o The kernel and mrouted make sure that each is the correct version, to
300     prevent problems with mismatched kernel/mrouted versions.  A too-old
301     mrouted will die with the error:
302
303     can't enable DVMRP routing in kernel: Option not supported by protocol
304
305   o mrouted can accept and propogate a default route (essential for
306     heirarchical multicast routing)
307
308   o Kernel route cache keeps source-specific routes instead of subnet routes,
309     eliminating hashing and longest-match problems.
310     (allows classless routing, longest-match and default routing)
311
312   o Cached kernel routes only get deleted if no traffic is flowing, to
313     facilitate multicast traceroute
314
315   o mrouted has a new configuration file parser, which provides better error
316     messages than before, and allows named boundaries (see man page)
317
318   o added "netmask" to phyint configuration, at the suggestion of
319     Anders Klemets
320
321   o System V and FreeBSD compatibility from John Brezak <brezak@ch.hp.com>
322
323   o phyint's can have additional subnets configured, for people with
324     multiple subnets on one physical network.  mrouted.conf syntax is
325     altnet 1.2.3.0, or altnet 1.2.3.0/24 if you need to specify
326     a different netmask.  There can be as many altnet statements
327     as you need.
328
329   o both mrouted and the kernel now support classless addresses.
330
331   o the kernel supports PIM assert processing by notifying the router
332     when a packet arrives on the wrong interface
333
334   o the kernel keeps additional counters, and mrouted can be compiled to
335     support SNMP and the Multicast MIB
336
337   o the packet classifier in the kernel now uses the following udp port
338     ranges:
339       [0, 16384) - lowest priority, unclassified
340       [16384, 32768) - highest priority, i.e. audio
341       [32768, 49152) - medium priority, i.e. whiteboard
342       [49152, 65536) - low priority, i.e. video
343     A future release of a session directory will allocate ports in these
344     ranges.
345
346   o the configuration code has been modified to default tunnels' rate_limit
347     parameters to 500kbps.  This is easily modified with a rate_limit keyword
348     in mrouted.conf, but should be a good default for the MBONE in general.
349
350   o The tunnel sending code now caches a route for ip_output(), this should
351     help performance on machines with lots of tunnels.
352
353   o Dispatching for de-capsulating packets is now via protosw[], making
354     reception of other raw protocols more efficient
355
356   o Neighbor capabilities are discovered via a bitmask as opposed to
357     version number.
358
359   o Multicast traceroute code improved
360
361   o mrouted can be compiled with Routing Support for Resource Reservation
362     (RSRR), required for RSVP.
363
364
365 The 3.5 release fixes the following bugs:
366
367   o The IGMPv2 query timeout field was interpreted as being in units of
368     200ms as opposed to 100ms, thus the maximum timeout was set to twice
369     the expected value.  This is not fatal, as mrouted always queries
370     twice in the expectation that a packet could get loss, but it does
371     make it less robust in the face of packet loss.
372
373   o IGMP could report membership in local-only groups (i.e. 224.0.0.X)
374
375   o IGMP could get confused by hearing its own new membership reports, thus
376     a router would never perform fast leave.
377
378   o IGMP could reset timers for the wrong interface.
379
380   o mrouted put a bogus value in the maximum timeout field of IGMPv2 query
381     packets.
382
383   o Non-querier mrouters would respond to IGMP leave messages
384
385   o mrouted was not performing fast leave properly
386
387   o If the last member goes away on a transit network, the upstream router
388     would stop forwarding even if there are downstream members.
389
390   o Kernel hash function improved
391
392   o Eliminated possibility of panic(): timeout in cache maintenance
393
394   o Reordered resource allocation when sending upcall to handle failure properly
395
396   o some endian-ness bugs squashed in mrouted, probably more to go.
397
398   o Multicast traceroute could send a reply on a disabled interface.
399
400
401 This release consists of the following files:
402
403
404         README-3.8.mrouted                      - this file
405         
406         mrouted/*                               - version 3.8 of mrouted,
407                                                   mrinfo, map-mbone and
408                                                   mtrace.
409
410         ifconfig/*                              - Changes to ifconfig to
411                                                   show multicast interfaces
412
413         netstat/*                               - Diffs to netstat
414
415         ping/*                                  - sources for ping
416                                                   which support
417                                                   multicasting
418
419         mtest/*                                 - utility for testing
420                                                   multicast group 
421                                                   membership
422
423 \f
424 MROUTED 3.8
425
426 Mrouted 3.8 has two optional features: SNMP and RSRR.  RSRR support
427 is required for running RSVP; the SNMP code, with the help of the
428 ISODE snmpd, implements both the Multicast MIB and the DVMRP MIB.
429
430 RSRR
431 ----
432 Routing Support for Resource Reservations (RSRR) was contributed by
433 Daniel Zappala <daniel@isi.edu>.
434
435 To enable RSRR support, uncomment the three lines starting with
436 RSRR near the top of the Makefile and "make clean; make".  Or use
437 the prebuilt binary, mrouted.rsrr .
438
439 RSRR allows RSVP to query mrouted for its routing entry for a particular
440 source-group pair.  Using the routing entry and the IP_MULTICAST_VIF
441 socket call, RSVP can forward distinct control messages out each
442 outgoing interface.  This version of mrouted supports RSRR messages
443 using a Unix datagram socket.
444
445 RSRR currently includes two pairs of query-reply messages.  RSVP sends
446 an Initial Query when it starts.  Mrouted responds with an Initial Reply
447 that includes the set of vifs it is using, flagging those that are
448 administratively disabled.  When RSVP needs the routing entry for a
449 source-group pair, it sends a Route Query.  Mrouted responds with a
450 Route Reply that includes the incoming vif and outgoing vifs for the
451 source-group pair.
452
453 RSVP may request route change notification by setting the notification
454 bit in the Route Query.  If mrouted can provide route change
455 notification for the source-group pair, it sets the notification bit in
456 its Route Reply.  When the routing entry for the source-group pair
457 changes, mrouted sends an unsolicited Route Reply containing the new
458 routing information.  The initial release of mrouted 3.5 did not support
459 route change notification and always returned a Route Reply with the
460 notification bit cleared.  This release of mrouted provides route change
461 notification when possible.
462
463 SNMP
464 ----
465 SNMP support was contributed by David Thaler <thalerd@eecs.umich.edu>.
466
467 To enable SNMP support, uncomment the six lines near the top of
468 the Makefile below the description of SNMP support, or use the
469 prebuilt binary, mrouted.snmp or mrouted.rsrr.snmp .
470
471 To link the SNMP-capable mrouted, you need the CMU libraries.
472 See http://nic.merit.edu/~mbone/ for a full mrouted-snmp distribution.
473
474 Make sure to add the "sysName", "sysContact", "sysVersion" and
475 "sysLocation" variables to your /etc/mrouted.conf if you want them
476 to provide anything other than default values.
477
478 Example:
479
480 sysName "tibia"
481 sysContact "Bill Fenner <fenner@parc.xerox.com> +1 415 812-4816"
482 sysVersion "SunOS 4.1.3 and mrouted 3.8"
483 sysLocation "MAXC room, PARC building 35"
484
485 The SNMP version of mrouted has an additional command line flag:
486
487   -P snmp_port
488  
489      Specifies a port for SNMP communication (default 161).  This option
490      should be used when another SNMP daemon already exists.  The
491      preferred alternate port in this case is port 9161.
492
493 The mstat(8) program allows querying of statistics using SNMP.