Introduction
This section is still in it's early days. If you would like to contribute, please report it to the mailing list or to the authors.
Features
- Extensible modular design
- MLDv1 and MLDv2 support
- PIM-SM support (ASM and SSM)
- Bootstrap (BSR) Mechanism support
- Supports RP mode
- Static RP configuration
- Embedded-RP support
- partial MBGP support support
- Uses IPv6 Multicast SAFI prefixes announced by peers to update local MRIB
- Is able to announce local prefixes
- Prefix filter support
- Supports both native and virtual (tunnel) interfaces (tested IPv6-IPv4, IPv6-IPv6 and TUN/TAP tunnels)
- Abstract Multicast Forwarding Interface (MFA) with user-space forwarding
- CLI support (remote configuration and management) via telnet or local access
Troubleshooting
Check the Troubleshooting page for common problems and how to resolve them.
Obtaining the latest source
The source code repositories are maintained using Subversion. To obtain the latest source, you may use any SVN client to do so, the public repository address is the following
http://fivebits.net/svn/mrd6/trunk
If you are using the command-line version of the svn client, you may use the following command to obtain the latest source
svn co http://fivebits.net/svn/mrd6/trunk mrd6
Simple configuration
For most people, after having configured MRD6, it just works. However, this first step may be problematic sometimes due to the lack of information regarding the protocol variables as well as the protocol functional entities, including the PIM Rendezvous Point (RP).
We provide below a simple configuration that should work for most simple setups. The following is what you need to know about this configuration file:
- Logging is enable to /var/log/mrd6.log
- PIM BSR is disabled (check PIM Bootstrap page for further BSR details)
- The PIM RP is statically configured to all groups (2001:2002::1 in the configuration). A single PIM router in your network setup must be configured as the PIM RP. You may have distinct PIM RPs for distinct groups, for it must be the same in all routers for the same group. The PIM RP is used for initial data distribution (via PIM's shared tree) and subsequent source discovery.
log {
/* we turn on logging to /var/log/mrd6.log */
attach default "/var/log/mrd6.log" extradebug;
}
/* in this setup we are not using PIM BSR but instead have
the PIM RP address statically configured. */
pim disable bootstrap;
groups {
/* the following configuration's scope if any group
that matches the prefix ff00::/8. This means _all_
multicast groups. */
ff00::/8 {
/* We statically define the RP that should be used
for the groups that match this prefix.
2001:2002::1 should be replaced with your network's
PIM RP's address. */
pim rp 2001:2002::1;
}
}
Logging and online configuration
Being written. Please check this page later.
Will discuss:
- The several logging levels
- the telnet and mrd6sh interfaces
Multicast Routing Information Base (MRIB)
All multicast routing path information is retrieve from the MRIB. Similiar to the Unicast Routing Information Base (RIB, or simply Routing Table), it keeps prefix entries with associated exit points (next hop, interface). MRIB entries are used to perform Reverse Path Forwarding (RPF) checks and are also used to construct PIM tree state (Tree information base, TIB) that will trigger the required signalling and formation of multicast distribution trees.
By default, MRD6's MRIB is populated with directly connected routes as well as your operating system's unicast RIB entries. Most network administrators will work with a congruent network setup, that is, one where both unicast and multicast routing is the same. For them, MRD6's default behaviour will work just fine. For non-congruent setups and more complicated scenarios it does not, it may however be configured to support such scenarios.
NOTE: In Linux, by default, MRD6 won't pick kernel-originated route entries. These include default routes created by auto-configuration.
MRD6's static MRIB entries have the following syntax:
mrib {
prefix <prefix> via <nexthop> [dev <interface>] [metric <value>];
}
Bot the prefix and the nexthop are required. The output interface is optional, however if the nexthop is a link-local address it is required.
If you wish to have a default route to an upstream router (in this example 2001:2002::1) you may add for instance:
mrib {
prefix default via 2001:2002::1;
}
In this case, as the nexthop is a global address, MRD6 will pick up the proper output interface from the MRIB itself. In the common case you should have a directly connected route to the nexthop.
In order to disable the populating of the MRIB with RIB entries, use the following configuration:
rib disable populate-mrib;
For more advanced scenarios you may want to use MRD6's BGP implementation.
Advanced configuration
Multicast Listener Discovery (MLD)
Being written. Please check this page later.
Will discuss:
- mld version configuration
- timers and values
Protocol Independent Multicast (PIM)
Being written. Please check this page later.
Will discuss:
- dr-priority
- timers and values
Legacy support
Will discuss:
- cisco-old-addrlist configuration
An example: Embedded-RP configuration
Being written. Please check this page later.
Will discuss:
- example Embedded-RP configuration with source filtering
Static source configuration
Being written. Please check this page later.
Will discuss:
- How to statically define sources of a specific group
