Index of /~bms/dump/old/ssm_phase1/
| Name | Last Modified | Size | Type |
| Parent Directory/ | | - | Directory |
| lib/ | 2007-Apr-14 02:01:00 | - | Directory |
| sys/ | 2007-Apr-14 02:01:04 | - | Directory |
| tools/ | 2007-Apr-14 02:01:14 | - | Directory |
| README.txt | 2007-Apr-14 02:07:54 | 2.3K | text/plain |
| ssm_phase1.diff | 2007-Apr-14 02:05:47 | 53.5K | text/plain |
Source-Specific Multicast for FreeBSD 7.0 -- Phase I
This change brings FreeBSD closer to the standard of multicast API
support offered by Linux 2.6 and Microsoft Windows "Longhorn". It is
mostly of interest to organizations and individuals working with
Internet multimedia applications, and IPv4/IPv6 routing, such as ISPs.
It represents several weeks of work.
The code is written to accomodate IPv6 and MLDv2 with only a little
additional work. A regression test is included under
src/tools/regression/netinet/ipmulticast in the code drop.
The code is available in the bms_netdev branch on perforce.freebsd.org,
or as a patch against -CURRENT extracted from this branch (with additional
files, relative to src) available at:
http://people.freebsd.org/~bms/ssm_phase1.tar
The work is based on Wilbert de Graaf's IGMPv3 code drop for FreeBSD 4.6,
which is available at: http://www.kloosterhof.com/wilbert/igmpv3.html
Net gains:
* IPv4 multicast socket processing is now moved out of ip_output.c
into a new module, in_mcast.c, which should be a win for maintainability.
* ip_mreqn obtained from Linux to enable an IPv4 multicast client to specify
an interface by index (deals with point-to-point and unnumbered interfaces)
* RFC 3678 API support.
Obsoleted/affected subsystems:
* The RFC 1724 hack (specify 0.0.0.0/8 addresses to IP_MULTICAST_IF
which are then interpreted as interface indexes) is now deprecated.
* A patch for the Rhyolite.com routed in the FreeBSD base system
has been written. Testing by those using IPv4 Router Discovery
and/or RIPv2 is solicited.
* The reason for this hack's existence is to do with how the BSD stack
has traditionally done lookups against interfaces by address, which
causes problems with point-to-point and unnumbered interfaces.
* The protocol-independent APIs enable groups to be joined for receive
on such interfaces; however, they do not address the issue of the
legacy API socket option IP_MULTICAST_IF.
The addition of ip_mreqn works around this limitation in the legacy API.
Work for Phase 2:
* Support SSM on raw IPv4 sockets.
* Merge of IGMPv3 host-mode protocol support for IPv4.
Work for Phase 3:
* Make IPv6 use the common multicast socket infrastructure.
* Support SSM on IPv6 UDP and raw sockets.
* Merge of MLDv2 host-mode protocol support for IPv6.