mirror of
				https://github.com/vyos/vyos-documentation.git
				synced 2025-10-26 08:41:46 +01:00 
			
		
		
		
	* order workflows and add submodule * rename gitmodules file * delete docs/.gitignore * add vyos custom linter * correct __pycache__ in gitignore * add test-coverage.py * move draw.io folder * arrange changelog, install history and about * arrange: firewall * arrange: highavailability * arrange: loadbalancing * arrange: nat * arrange: services * sort configexamples and configuration interfaces * wireles: rename wireless * rearrange: Protocols and Policy * rearrange: Firewall and Zone Policy * rearrange: Interfaces * rearrange: Interfaces * rearrange: dynamic DNS * hostinfo: add page to index * rearrange: appendix * venv: add Pipfile * rearrange: contributing * index: remove debugging * rearrange: fix all figure and refs * rearrange: commandtree * fix: cli, openvpn, install headline level * protocols: change headline * firewall: move mss clamping * ip: separate ipv4 and ipv6 * arp: move to static page * igmp: rename multicast page * Update to year 2021
		
			
				
	
	
		
			247 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. _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.
 | |
| 
 | |
| 
 | |
| 
 |