mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
Merge pull request #270 from currite/crux
multicast: add pim and igmp and append existing igmp-proxy
This commit is contained in:
commit
cec0295df1
BIN
docs/_static/images/multicast-basic.png
vendored
Normal file
BIN
docs/_static/images/multicast-basic.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
@ -1,26 +0,0 @@
|
||||
.. _igmp_proxy:
|
||||
|
||||
IGMP Proxy
|
||||
==========
|
||||
|
||||
Internet Group Management Protocol (IGMP)
|
||||
|
||||
A IGMP Proxy to send IGMP host messages on behalf of a connected client.
|
||||
The configuration must define one upstream interface, and one or more downstream interfaces.
|
||||
If multicast traffic originates outside the upstream subnet, the "alt-subnet" option can be used in order to define legal multicast sources.
|
||||
|
||||
simple example:
|
||||
---------------
|
||||
|
||||
Interface eth1 LAN is behind NAT. In order to subscribe 10.0.0.0/23 subnet multicast which is in eth0 WAN we need igmp-proxy.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
# show protocols igmp-proxy
|
||||
interface eth0 {
|
||||
alt-subnet 10.0.0.0/23
|
||||
role upstream
|
||||
}
|
||||
interface eth1 {
|
||||
role downstream
|
||||
}
|
||||
@ -18,4 +18,4 @@ BGP).
|
||||
static
|
||||
mss-clamp
|
||||
routing-policy
|
||||
igmp-proxy
|
||||
multicast
|
||||
|
||||
245
docs/routing/multicast.rst
Normal file
245
docs/routing/multicast.rst
Normal file
@ -0,0 +1,245 @@
|
||||
.. _multicast:
|
||||
|
||||
#########
|
||||
Multicast
|
||||
#########
|
||||
|
||||
VyOS facilitates IP Multicast by supporting **PIM Sparse Mode**,
|
||||
**IGMP** and **IGMP-Proxy**.
|
||||
|
||||
|
||||
************
|
||||
PIM and IGMP
|
||||
************
|
||||
|
||||
PIM (Protocol Independent Multicast) must be configured in every
|
||||
interface of every participating router. Every router must also have the
|
||||
location of the Rendevouz Point manually configured. Then,
|
||||
unidirectional shared trees rooted at the Rendevouz Point will
|
||||
automatically be built for multicast distribution.
|
||||
|
||||
Traffic from multicast sources will go to the Rendezvous Point, and
|
||||
receivers will pull it from a shared tree using IGMP (Internet Group
|
||||
Management Protocol).
|
||||
|
||||
Multicast receivers will talk IGMP to their local router, so, besides
|
||||
having PIM configured in every router, IGMP must also be configured in
|
||||
any router where there could be a multicast receiver locally connected.
|
||||
|
||||
VyOS supports both IGMP version 2 and version 3 (which allows
|
||||
source-specific multicast).
|
||||
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
In the following example we can see a basic multicast setup:
|
||||
|
||||
.. image:: /_static/images/multicast-basic.png
|
||||
:width: 90%
|
||||
:align: center
|
||||
:alt: Network Topology Diagram
|
||||
|
||||
|
||||
|
||||
**Router 1**
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
set interfaces ethernet eth2 address '172.16.0.2/24'
|
||||
set interfaces ethernet eth1 address '100.64.0.1/24'
|
||||
set protocols ospf area 0 network '172.16.0.0/24'
|
||||
set protocols ospf area 0 network '100.64.0.0/24'
|
||||
set protocols igmp interface eth1
|
||||
set protocols pim interface eth1
|
||||
set protocols pim interface eth2
|
||||
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'
|
||||
|
||||
**Router 3**
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
set interfaces dummy dum0 address '172.16.255.1/24'
|
||||
set interfaces ethernet eth0 address '172.16.0.1/24'
|
||||
set interfaces ethernet eth1 address '172.16.1.1/24'
|
||||
set protocols ospf area 0 network '172.16.0.0/24'
|
||||
set protocols ospf area 0 network '172.16.255.0/24'
|
||||
set protocols ospf area 0 network '172.16.1.0/24'
|
||||
set protocols pim interface dum0
|
||||
set protocols pim interface eth0
|
||||
set protocols pim interface eth1
|
||||
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'
|
||||
|
||||
**Router 2**
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
set interfaces ethernet eth1 address '10.0.0.1/24'
|
||||
set interfaces ethernet eth2 address '172.16.1.2/24'
|
||||
set protocols ospf area 0 network '10.0.0.0/24'
|
||||
set protocols ospf area 0 network '172.16.1.0/24'
|
||||
set protocols pim interface eth1
|
||||
set protocols pim interface eth2
|
||||
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Basic commands
|
||||
--------------
|
||||
|
||||
These are the commands for a basic setup.
|
||||
|
||||
.. cfgcmd:: set protocols pim interface <interface-name>
|
||||
|
||||
Use this command to enable PIM in the selected interface so that it
|
||||
can communicate with PIM neighbors.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols pim rp address <address> group <multicast-address/mask-bits>
|
||||
|
||||
Use this comand to manually configure a Rendevouz Point for PIM so
|
||||
that join messages can be sent there. Set the Rendevouz Point address
|
||||
and the matching prefix of group ranges covered. These values must
|
||||
be shared with every router participating in the PIM network.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols igmp interface eth1
|
||||
|
||||
Use this command to configure an interface with IGMP so that PIM can
|
||||
receive IGMP reports and query on the selected interface. By defaul
|
||||
IGMP version 3 will be used.
|
||||
|
||||
|
||||
|
||||
Tuning commands
|
||||
---------------
|
||||
|
||||
You can also tune multicast with the following commands.
|
||||
|
||||
.. cfgcmd:: set protocols pim interface <interface> dr-priority <value>
|
||||
|
||||
Use this PIM command in the selected interface to set the priority
|
||||
(1-4294967295) you want to influence in the election of a node to
|
||||
become the Designated Router for a LAN segment. The default priority
|
||||
is 1, set a higher value to give the router more preference in the
|
||||
DR election process.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols pim int <interface> hello <seconds>
|
||||
|
||||
Use this command to configure the PIM hello interval in seconds
|
||||
(1-180) for the selected interface.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols pim rp keep-alive-timer <seconds>
|
||||
|
||||
Use this PIM command to modify the the time out value (31-60000
|
||||
seconds) for an `(S,G) <https://tools.ietf.org/html/rfc7761#section-4.1>`_
|
||||
flow. 31 seconds is chosen for a lower bound as some hardware
|
||||
platforms cannot see data flowing in better than 30 second chunks.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols igmp interface <interface> join <multicast-address> source <IP-address>
|
||||
|
||||
Use this command to allow the selected interface join a multicast
|
||||
group defining the multicast address you want to join and the source
|
||||
IP address too.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols igmp interface <interface query-interval <seconds>
|
||||
|
||||
Use this command to configure in the selected interface the IGMP
|
||||
host query interval (1-1800) in seconds that PIM will use.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols igmp interface <interface query-max-response-time <deciseconds>
|
||||
|
||||
Use this command to configure in the selected interface the IGMP
|
||||
query response timeout value (10-250) in deciseconds. If a report is
|
||||
not returned in the specified time, it will be asumed the `(S,G) or
|
||||
(*,G) state <https://tools.ietf.org/html/rfc7761#section-4.1>`_ has
|
||||
timed out.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols igmp interface <interface> version <version-number>
|
||||
|
||||
Use this command to define in the selected interface whether you
|
||||
choose IGMP version 2 or 3. The default value is 3.
|
||||
|
||||
|
||||
|
||||
**********
|
||||
IGMP Proxy
|
||||
**********
|
||||
|
||||
:abbr:`IGMP (Internet Group Management Protocol)` proxy sends IGMP host messages
|
||||
on behalf of a connected client. The configuration must define one, and only one
|
||||
upstream interface, and one or more downstream interfaces.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. cfgcmd:: set protocols igmp-proxy interface <interface> role <upstream | downstream>
|
||||
|
||||
* **upstream:** The upstream network interface is the outgoing interface
|
||||
which is responsible for communicating to available multicast data sources.
|
||||
There can only be one upstream interface.
|
||||
|
||||
* **downstream:** Downstream network interfaces are the distribution
|
||||
interfaces to the destination networks, where multicast clients can join
|
||||
groups and receive multicast data. One or more downstream interfaces must
|
||||
be configured.
|
||||
|
||||
.. cfgcmd:: set protocols igmp-proxy interface <interface> alt-subnet <network>
|
||||
|
||||
Defines alternate sources for multicasting and IGMP data. The network address
|
||||
must be on the following format 'a.b.c.d/n'. By default the router will
|
||||
accept data from sources on the same network as configured on an interface.
|
||||
If the multicast source lies on a remote network, one must define from where
|
||||
traffic should be accepted.
|
||||
|
||||
This is especially useful for the upstream interface, since the source for
|
||||
multicast traffic is often from a remote location.
|
||||
|
||||
This option can be supplied multiple times.
|
||||
|
||||
.. cfgcmd:: set protocols igmp-proxy disable-quickleave
|
||||
|
||||
Disables quickleave mode. In this mode the daemon will not send a Leave IGMP
|
||||
message upstream as soon as it receives a Leave message for any downstream
|
||||
interface. The daemon will not ask for Membership reports on the downstream
|
||||
interfaces, and if a report is received the group is not joined again
|
||||
upstream.
|
||||
|
||||
If it's vital that the daemon should act exactly as a real multicast client
|
||||
on the upstream interface, this function should be enabled.
|
||||
|
||||
Enabling this function increases the risk of bandwidth saturation.
|
||||
|
||||
.. cfgcmd:: set protocols igmp-proxy disable
|
||||
|
||||
Disable this service.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
Interface `eth1` LAN is behind NAT. In order to subscribe `10.0.0.0/23` subnet
|
||||
multicast which is in `eth0` WAN we need to configure igmp-proxy.
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
set protocols igmp-proxy interface eth0 role upstream
|
||||
set protocols igmp-proxy interface eth0 alt-subnet 10.0.0.0/23
|
||||
set protocols igmp-proxy interface eth1 role downstream
|
||||
|
||||
Operation
|
||||
=========
|
||||
|
||||
.. opcmd:: restart igmp-proxy
|
||||
|
||||
Restart the IGMP proxy process.
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user