smcroutectl
—
smcroutectl |
[ -bdptv ]
[-i
NAME ]
[-u
FILE ]
[COMMAND ] |
smcroutectl |
⟨help | flush | kill | reload | version⟩ |
smcroutectl |
⟨show⟩ [ groups | routes ] |
smcroutectl |
⟨add | rem⟩ IIF
[ SOURCE ] GROUP[/LEN]
OIF [OIF ... ] |
smcroutectl |
⟨join | leave⟩ IIF [ SOURCE ]
GROUP[/LEN] |
smcroutectl
is the control tool for
smcrouted(8). It
can be used to query status, debug, modify the kernel multicast forwarding
cache (MFC), manage group interface memberships, reload
smcroute.conf
, and kill a running
smcrouted
.
The following
smcroutectl
options are
available:
-b
- Batch mode, read commands from stdin.
$ sudo smcroutectl -b <<-EOF
join eth0 225.1.2.3
add eth0 192.168.1.42 225.1.2.3 eth1 eth2
rem eth1 225.3.4.5 eth3
leave eth1 225.3.4.5
EOF
-d
- Enable detailed output in show commands.
-i
NAME
- Connect to an
smcrouted
instance that
runs with another identity, NAME.
This option is required for both
smcrouted
and
smcroutectl
when running multiple
smcrouted
instances, e.g., when using
multiple routing tables, on Linux.
-p
- Use plain table headings in
show
command output. No ANSI control characters are used, not even for probing
screen width.
-t
- Skip table headings entirely in
show
command output.
-u
FILE
- UNIX domain socket path, used for the IPC between
smcrouted
and
smcroutectl
. Use this to override the
default socket path, otherwise derived from the identity,
-i
NAME. This option can be useful when
overriding the identity is not sufficient, e.g. for testing. The default
depends on how smcroutectl
is
configured at build time, see
FILES.
The
IIF and
OIF arguments in the below
smcroutectl
commands are the interface
names, or interface wildcards of the form
eth+, which matches
eth0,
eth10,
etc. Wildcards are available for both inbound and outbound interfaces.
A multicast route is defined by an input interface
IIF, the sender's unicast IP address
SOURCE, which is optional, the multicast
group
GROUP and a list of, at least one,
output interface
OIF [OIF ...].
Please refer to
smcrouted(8) for
more details on the operation and how ASM/SSM multicast works.
Commands can be abbreviated to the minimum unambiguous prefix; for example,
s g
for
show
groups
. The following commands are available:
add
IIF
[SOURCE[/LEN]] GROUP[/LEN] OIF [OIF ...]
- Add a new multicast route the the kernel MFC, or modify the outbound
interfaces (OIF) an existing route.
The arguments are, in order: IIF the
inbound interface, SOURCE originating IP
address (may need to be reachable in the unicast routing table to be
allowed by the kernel reverse-path check),
GROUP the multicast group address, and
OIF
[
OIF ...
] the
outbound network interface(s).
The interfaces provided as IIF and
OIF can be any multicast capable network
interface as listed by
‘ifconfig
’
or ‘ip link
list
’, including tunnel interfaces and loopback.
Provided smcrouted
has
"enumerated" them. See
smcrouted(8),
in particular the command line option
-N
, and the
smcroute.conf(5)
‘phyint
’
directive.
To add a (*,G) route, either omit the
SOURCE argument completely, or set it to
0.0.0.0 for IPv4, and if you want to
specify a range of groups, use the
‘GROUP/LEN
’ modifier, e.g.
‘225.0.0.0/24
’.
remove
IIF
[SOURCE[/LEN]] GROUP[/LEN] [OIF [OIF ...]]
- Remove or modify the outbound interfaces of a multicast route in the
kernel MFC.
When no OIF argument is given, this command
removes the entire route. With one or more
OIF arguments, each outbound interface
listed is removed. Skipping any unmatched or invalid interface names. When
no more outbound interfaces exist, the route will have been transformed
into a "stop filter". To remove the route entirely, the command
must be given with no OIF arguments.
flush
- Flush dynamic (*,G) multicast routes now. Similar to how
-c
SEC
works in smcrouted
, this command
initiates an immediate flush of all dynamically installed (*,G) multicast
routes. Useful when a topology change has been detected and need to be
propagated to smcrouted.
join
IIF
[SOURCE[/LEN]] GROUP[/LEN]
- Join a multicast group, with an optional prefix length, on the given
(inbound) interface. The source address is optional, but if given a source
specific (SSM) join is performed. Note, joining groups is only ever
necessary on the inbound interface, never on the outbound. Unless, two-way
routing the same group.
Note, as mentioned in
smcrouted(8),
joining a group to open up traffic in layer-2 network switches is only a
workaround to direct multicast towards SMCRoute. When routing lots of
traffic it is advised to avoid this mechanism. Instead, use multicast
router ports, or similar settings on the switches, or if they support
multicast router discovery (MRDISC), see RFC4286.
leave
IIF
[SOURCE[/LEN]] GROUP[/LEN]
- Leave a multicast group, with optional prefix length, on a given (inbound)
interface. As with the join command, above, the source address is
optional, but if the group was subscribed to with source it must be
unsubscribed with source as well.
help [cmd]
- Print a usage information message.
kill
- Tell a running
smcrouted
to exit
gracefully, same as SIGTERM.
reload
- Tell
smcrouted
to reload its
configuration and activate the changes. Same as
SIGHUP. Note, any routes or groups added
or removed with smcroutectl
will be
lost. Only the configuration set in the file
smcroute.conf is activated.
show [groups|routes]
- Show joined multicast groups or multicast routes, defaults to show routes.
Can be combined with the
-d
option to
get details for each multicast route.
version
- Show program version and support information.
smcrouted(8),
smcroute.conf(5)
SMCRoute was originally created by
Carsten
Schill
<
carsten@cschill.de>.
Initial IPv6 support by
Todd Hayton
<
todd.hayton@gmail.com>.
Initial FreeBSD support by
Micha Lenk
<
micha@debian.org>.
SMCRoute is currently maintained by
Joachim
Wiberg
<
troglobit@gmail.com>,
and
Micha Lenk
<
micha@debian.org>
at
GitHub.