Multicast configuration EcoRouter Documentation / Multicast configuration
Without multicast broadcasting, for successful data transmission to users, traffic on the network must be duplicated at each node site. This duplication leads to inefficient use of network resources. Multicast-applications are much more efficient, since they transmit only one copy of the traffic. Its duplication usually occurs only in L3-devices located closer to consumers. To solve the tasks of delivering / receiving multicast data, EcoRouterOS supports the following protocols:
- IGMPv1/v2/v3,
- PIM-SM,
- PIM-SSM.
Instructions for protocol configuring are available in the documentation. This document contains brief descriptions of several specific technologies that are supported by the router to fine-tune the multicast domain in the absence of the desired functionality in equipment from other manufacturers:
- IGMP SSM Mapping for delivering / receiving multicast streams from a specific server with IGMPv2;
- IGMP proxy for IGMP domain between L2/L3 devices creating and the router operating as a multicast group client;
- PIM-DM support of an earlier multicast routing protocol;
- PIM-SDM mixed operation mode.
IGMP
IGMP is an Internet Group Management Protocol which serves for multicast management in IP networks. IGMP is used by the client computer and the local multicast router. EcoRouter supports IGMP v1 and v3.
The list of commands used to configure the IGMP protocol in EcoRouter is presented in the table below.
Command | Mode | Description |
---|---|---|
ip igmp access-group <access list number> | (config-if)# | Filter access to certain multicast groups using access lists |
ip igmp immediate-leave group-list <filter list number> | (config-if)# | Reduce the time for the last client to unsubscribe from the group / groups specified in the filter list |
ip igmp join-group <ip address> | (config-if)# | Add router's interface into multicast group |
ip igmp last-member-query-count <2-7> | (config-if)# | Specify the number of IGMP query messages sent in response to a leave message. Default value is 2 |
ip igmp last-member-query-interval <1000-25500> | (config-if)# | Specify the interval for sending IGMP query messages. Default value is 1000 ms |
ip igmp limit <1-2097152> | (config)# | Specify the limit of multicast routes number |
ip igmp mroute-proxy <interface name> | (config-if)# | Enable proxying for multicast routes for another interface |
ip igmp proxy unsolicited-report-interval <1000-25500> | (config-if)# | Specify the delay value between two IGMP join messages. Default value is 1000 ms |
ip igmp proxy-service | (config-if)# | Enable IGMP proxy mode |
ip igmp querier-timeout <60-300> | (config-if)# | Specify the time to re-select the querier router in the segment in seconds |
ip igmp query-interval <1-18000> | (config-if)# | Specify the frequency of General Query sending in seconds. Default value is 125 s |
ip igmp query-max-response-time <1-240> | (config-if)# | Specify the maximum response time for the IGMP query in seconds. Default value is 10 s |
ip igmp robustness-variable <2-7> | (config-if)# | Specify the robustness value for fine-tuning IGMP messages. Default value is 2 |
ip igmp startup-query-count <2-10> | (config-if)# | Specify the number of query messages. Default value is 2 |
ip igmp startup-query-interval <1-18000> | (config-if)# | Specify the interval for sending IGMP query messages. Default value is 31 s |
ip igmp static-group <ip-адрес> | (config-if)# | Assign the interface to listen to a specific multicast group |
ip igmp version <1-3> | (config-if)# | Specify the IGMP version |
ip igmp ssm-map {enable | static <access list number>} | (config)# | Enable the SSM mapping. Specify a static SSM using an access list |
ip igmp tos-check | (config)# | Check the TOS filed value. Default value is enable |
ip igmp vrf <virtual router name> {limit <1-2097152> | ssm-map enable | ssm-map static <access list number>} | (config)# | Configuration commands to perform on a virtual router |
p igmp ra-option | (config-if)# | Enable option checking in incoming IGMP packages |
Configuring IGMP in a segment with a configured PIM is to enable IGMP on the router interface closest to the user. Use the ip igmp version <1-3> command to enable IGMP on a configured downstream interface.
Step 1. Enable multicast general support.
ecorouter(config)#ip multicast-routing
Step 2. Configure router's interfaces.
ecorouter(config)#interface e10
ecorouter(config-if)#ip address 10.10.10.1/24
ecorouter(config)#port te0
ecorouter(config-port)#service-instance 10
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e10
Step 3. Enable IGMP on a downstream interface.
ecorouter(config-if)#ip igmp version 2
When turning PIM on the interface on, IGMPv3 turns on automatically.
Step 4. Configure protocol timers: the frequency of sending requests by the device and the waiting time for replies.
ecorouter(config-if)#ip igmp query-interval 100
ecorouter(config-if)# ip igmp query-max-response-time 20
Step 5. Disable the ToS field valie check in the IGMP messages in order to correct functioning with the entire spectrum of the OS.
ecorouter(config)#no ip igmp tos-check
IGMP SSM Mapping
The IGMP functionality required to support the SSM, but not all network equipment supports all versions of this protocol. The EcoRouterOS allows to perform multicast traffic routing from a specific source to clients which support only the IGMPv2. The example of configuration is shown below:
Step 1. Configure ports, interfaces and service instances.
ecorouter(config)#interface e1
ecorouter(config-if)#ip address 10.12.0.2/16
ecorouter(config)#interface e2
ecorouter(config-if)#ip address 10.23.0.2/16
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
Step 2. Specify the policy-filter-list for specific group.
ecorouter(config)#policy-filter-list 2 permit 235.7.7.7
Step 3. Enable SSM-mapping for a specific group.
ecorouter(config)#ip igmp ssm-map enable
ecorouter(config)#ip igmp ssm-map static 2 1.1.1.1
ecorouter(config)#ip pim ssm default
Step 4. Configure PIM-SM.
ecorouter(config)#ip pim rp-address 10.12.0.2
ecorouter(config)#interface e1
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config-if)#interface e2
ecorouter(config-if)#ip pim sparse-mode
The IP address 10.12.0.1/16 is configured on the fa0/0 interface of the other router. Now if the client requests the group 235.7.7.7 and simultaneously sends multicast traffic from the server and from the router to this group, the following result can be seen on the router:
Ecorouter#show ip mroute IP Multicast Routing Table Flags: I - Immediate Stat, T - Timed Stat, F - Forwarder installed B - BIDIR Timers: Uptime/Stat Expiry Interface State: Interface (TTL) (1.1.1.1, 235.7.7.7), uptime 00:04:24, stat expires 00:03:29 Owner PIM, Flags: TF Incoming interface: e1 Outgoing interface list: e2 (1) (10.12.0.1, 235.7.7.7), uptime 00:04:24, stat expires 00:00:09 Owner PIM, Flags: TF
Incoming interface: e1
Outgoing interface list:
From the example above it is seen that there are no interfaces in the outgoing list for the 10.12.0.1 server. When enabling PIM protocol on the interface by the ip pim sparse-mode command, the IGMPv3 is turned on by default. So the IGMPv3 could be enabled simply by the ip igmp version 3 command. Use the show ip igmp ssm-map <ip-address> command to display static mapping information.
ecorouter#show ip igmp ssm-map 235.7.7.7 Group address: 235.7.7.7 Database : Static Source list : 1.1.1.1
Proxy-IGMP
The use of this technology allows to avoid dependence on the multicast routing protocol used and to reduce the size of service traffic in the network. The router acts as a client and transmits information in form of IGMP Report messages towards the PIM domain. PIM-neighbors in this case are not needed. The device stores information about the requested groups, obtained through the downstream interfaces, in the database. The proxy service itself works on the upstream interfaces, transmitting requests from clients. Tee example of topology and configuration of the IGMP Proxy service in EcoRouterOS is shown below.
Configuration
Step 1. Specify the device name and enable multicast routing.
(config)#hostname ECO-2
(config)#ip multicast-routing
Step 2. Configure ports, interfaces, and service instances.
(config)#interface e1
(config-if)#ip address 10.23.0.2/16
(config-if)#ip igmp version 2
(config)#interface e2
(config-if)#ip address 10.24.0.2/16
(config-if)#ip igmp version 2
(config)#port ge1
(config-port)#service-instance ge1/e1
(config-service-instance)#encapsulation untagged
(config-service-instance)#connect ip interface e1
(config)#port ge2
(config-port)#service-instance ge2/e2
(config-service-instance)#encapsulation untagged
(config-service-instance)#connect ip interface e2
Step 3. Enable IGMP Proxy.
(config)#interface e2
(config-if)#ip igmp proxy-service
(config)#interface e1
(config-if)#ip igmp mrouter-proxy e2
The proxy service works with any version of IGMP. Use the show ip igmp proxy and show ip igmp proxy groups commands to check the status of the service and view the requested groups. If the service is up and running, the group's status should be "Active".
PIM-SM/SSM
Fine configuring of multicast routing protocols is rather complicated and is not considered in this document. For basic setup perform the commands state below:
Step 1. Enable the multicast routing using the ip multicast-routing command in configuration mode.
Step 2. Enable the multicast routing protocol on the required interfaces using the ip pim sparse-mode command in context mode. When this command is entered, IGMPv3 is automatically enabled on the interface.
Step 3. Statically specify the meeting point of trees from the source and clients (Rendezvous Point, further - RP) using the ip pim rp-address <IP> [<POLICY-FILTER-LIST>] [override] command. The <POLICY-FILTER-LIST> parameter associates an RP with a specific multicast group, and the [override] parameter raises the priority of the static RP entry compared to the received dynamic path. The dynamic path is described below.
These steps are sufficient for the successful delivery of multicast traffic from the server to the clients, but if the RP fails, all clients will stop receiving the requested data.
Therefore, the bootstrap protocol which dynamically informs multicast domain participants about RP is more preferable to use.
Thus, on the step 4, to inform PIM neighbors about RP, it is necessary to configure the candidate for this role using the ip pim rp-candidate <interface name> [priority <0-255>] [group-list <POLICY-FILTER-LIST> ] [Interval <1-16383>] command in configuration mode. The command parameters are described in the table below.
Parameter | Description |
---|---|
<interface name> | The candidate interface name. The interface must be created in advance |
priority | The priority value, used when there is a number of candidates. The smaller parameter value the higher candidate's priority. Value range is from 0 to 255. Default value is 192 |
group-list <POLICY-FILTER-LIST> | Groups which recieve advertisement about a candidate |
interval | The interval of message sending in seconds. Value range is from 1 to 16383 |
Next the advertising agents that will send information about the RP, so-called BSR, must be configured. Use the ip pim bsr-candidate <interface name> [<0-32>][<0-255>] command in configuration mode. The command parameters are described in the table below.
Parameter | Description |
---|---|
<interface name> | The interface assigned to be advertizing agent (BSR). The interface must be created in advance |
<0-32> | The length of the hash mask for calculating the hash value of RP. Valid range is from 0 to 32. Default value is 10 |
<0-255> | The BSR priority, if there are multiple agents on the network. The higher the value of this parameter, the higher the priority of the candidate. Valid range is from 0 to 255. The default value is 64 |
The example of scheme and routers configuration is shown below. Primarly when the Multicast-1 server does multicast broadcasting the route will be ECO-3 – ECO-2 – ECO-4 – PC1. Then after the nearest router to the client receives information about the server, there an SPT switchover will occure - the route will be changed to ECO -3 - ECO-4 - PC1.
Step 1. Specify the device name and enable multicast broadcasting.
ecorouter(config)#hostname ECO-2
ecorouter(config)#ip multicast-routing
Step 2. Configure ports, interfaces and service instances.
ecorouter(config)#interface e3
ecorouter(config-if)#ip address 10.23.0.3/16
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e4
ecorouter(config-if)#ip address 10.24.0.2/16
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#port ge3
ecorouter(config-port)#service-instance ge3/e3
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e3
ecorouter(config)#port ge4
ecorouter(config-port)#service-instance ge4/e4
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e4
Step 3. Enable routing.
ecorouter(config)#router isis
ecorouter(config-router)#net 49.0001.0000.0000.0003.00
ecorouter(config-router)#exit
ecorouter(config)#interface e3
ecorouter(config-int)#ip router isis
ecorouter(config-int)#interface e4
ecorouter(config-int)#ip router isis
ecorouter(config-int)#exit
Step 4. Specify the RP information and enable SPT-switchover function.
ecorouter(config)#ip pim bsr-candidate e3
ecorouter(config)#ip pim rp-candidate e3 priority 20
ecorouter(config)#ip pim spt-treshold
Configuring the remaining routers will be similar.
ecorouter(config)#hostname ECO-3
ecorouter(config)#ip multicast-routing
ecorouter(config)#interface e1
ecorouter(config-if)#ip address 10.13.0.3/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e2
ecorouter(config-if)#ip address 10.23.0.3/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e4
ecorouter(config-if)#ip address 10.34.0.3/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#port ge1
ecorouter(config-port)#service-instance ge1/e1
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e1
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
ecorouter(config)#port ge4
ecorouter(config-port)#service-instance ge4/e4
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e4
ecorouter(config)#router isis
ecorouter(config-router)#net 49.0001.0000.0000.0003.00
ecorouter(config)#hostname ECO-4
ecorouter(config)#ip multicast-routing
ecorouter(config)#ip pim spt-treshold
ecorouter(config)#ip pim bsr-candidate e3
ecorouter(config)#ip pim rp-candidate e3 priority 40
ecorouter(config)#interface e1
ecorouter(config-if)#ip address 10.14.0.4/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config-if)#ip igmp version 2
ecorouter(config)#interface e2
ecorouter(config-if)#ip address 10.24.0.4/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#interface e3
ecorouter(config-if)#ip address 10.34.0.4/16
ecorouter(config-if)#ip router isis
ecorouter(config-if)#ip pim sparse-mode
ecorouter(config)#port ge2
ecorouter(config-port)#service-instance ge2/e2
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e2
ecorouter(config)#port ge4
ecorouter(config-port)#service-instance ge4/e4
ecorouter(config-service-instance)#encapsulation untagged
ecorouter(config-service-instance)#connect ip interface e4
ecorouter(config)#router isis
ecorouter(config-router)#net 49.0001.0000.0000.0003.00
Read more about IGMP in the corresponding section.
Use the additional ip pim ssm {default | range} <policy-filter-list number> command to enable Source-Specific-Multicast, where default means apply to all groups, range and policy-filter-list number allows to select specific groups SSM will be used for. Read more about SSM mapping configuring and polici-filter-list in the corresponding sections.
Additional configuring commands
Command | Mode | Description |
---|---|---|
ip pim accept-register <policy-filter-list> | (conf)# | Make RP to recieve REgister messages from the specific sources |
ip pim cisco-register-checksum | (conf)# | Option to cheksum evaluating in Register messages. Is used for compatibility with the older Cisco IOS versions |
ip pim ignore-rp-set-priority | (conf)# | Allows to ignore RP priority, only hash-algorithm matters |
ip pim jp-timer <1-65535> | (conf)# | Timer for Join and Prune messages sending |
ip pim register-rate-limit <1-65535> | (conf)# | Specify the number of Register message to be send |
ip pim register-rp-reachability | (conf)# | Enable RP reachability check on the router (by default is in configuration) |
ip pim register-source <address> | (conf)# | Specify address in REgister messages |
ip pim register-suppression <1-65535> | (conf)# | Specify RP-keepalive-timer in case the ip pim rp-register-kat command is not used |
ip pim rp-register-kat <1-65535> | (conf)# | Specify timers for Register messages monitoring |
ip pim dr-priority | (conf-int)# | Set the router priotiry for DR select |
ip pim bsr-border | (conf-int)# | Mark the interface as border for bootstrap transmit/recieve cancel |
ip pim exclude-genid | (conf-int)# | Exclude generated ID option |
ip pim hello-holdtime <1-65535> | (conf-int)# | Set the holdtime timer for hello massages |
ip pim hello-interval <1-18724> | (conf-int)# | Set the interval timer for hello messages |
ip pim neighbor-filter <policy-filter-list> | (conf-int)# | Configure neighborhood for specific routers |
ip pim propagation-delay <1000-5000> | (conf-int)# | Specify message propagation delay |
ip pim unicast-bsm | (conf-int)# | Enable unicast bootstrap messages. Is used for compatibility with the older Cisco IOS versions |
ip pim sparse-mode passive | (conf-int)# | Enable passive mode |
ip multicast ttl-threshold <1-255> | (conf-int)# | Enable multicast domain TTL-scope |
ip mroute <subnet address> <rpf neighbor> | (conf)# | Static record of the subnet in which the source of the multicast is located |
Show commands
Command | Description |
---|---|
show ip mroute | Display the multicast routing table |
show ip mvif | Display information about multicast supporting virtual interfaces |
show ip rpf <source address> | Display RPF information about source |
show ip pim bsr-router | Display information of BSR routers in the domain |
show ip pim interface | Display information about interfaces where multicast routing enabled |
show ip pim local-members | Display local information about the requested groups |
show ip pim mroute [detail] | Display detailed information about multicast routing |
show ip pim neighbor | Display neighborhood information |
show ip pim nexthop | Display information about RP, multicast sources, interfaces through which data is received |
show ip pim rp mapping | Display RP information in the domain |
show ip pim rp-hash <group address> | Display specific group RP information |
show ip mroute count | Display statistics |
Data dropdown commands
clear ip mroute statistics <*/group address>
clear ip mroute <*/аgroup address>
clear ip pim sparse-mode bsr rp-set *
PIM-DM and mixed Sparse-Dense mode
The EcoRouterOS supports the earlier multicast routing protocol PIM-DM. The mechanism of its work implies the excessive filling of the domain with multicast traffic, so network engineers need to think carefully about the way the packets flow through the network. It may be necessary to separate the domains of unicast routing from multicast. In this case it is necessary to use a static route record to the source. To enable the functionality on the router, use the ip pim dense-mod command in the interface configuration mode.
In the EcoRouterOS, there is an extension which allows to specify a mixed Sparse-Dense mode on the interface. In this mode, the traffic for the group with the Dense mode will be processed according to the PIM-DM rules, and the traffic for the group with the Sparse mode will be processed according to the PIM-SM rules. Use the ip pim sparse-dense-mode command in the interface configuration mode to enable mixed Sparse-dense mode.
For certain groups, the traffic handling only with PIM-DM logic can be configured. For this purpose use the ip pim dense-group <group address> command.