Manual:Routing/Multicast: Difference between revisions
(92 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Versions| v4.x | {{Versions| v3.x, v4.x}} | ||
== | ==Summary== | ||
Protocol Independent Multicast - Sparse Mode (PIM-SM or PIM) | Protocol Independent Multicast - Sparse Mode (PIM-SM or PIM) enables RouterOS to support multicast streaming over network area where routers have PIM set up. Several configured PIM routers together will make multicast cloud where client devices can use IGMP to manage subscriptions to streams. PIM should be used when network topology is complex or stream sources are connected to multicast cloud. Continuous cloud must have configured unique rendezvous point for multicast group or groups used in it and other participants should know how to reach rendezvous point. In simple case when in part of cloud reside only potential clients and no stream sources [[IGMP-Proxy|IGMP proxy]] can be used instead to conserve resources. | ||
==Requirements== | ==Requirements== | ||
Line 19: | Line 12: | ||
* ''multicast'' | * ''multicast'' | ||
{{ Note|v3.x ''routing-test'' | {{ Note|v3.x ''routing-test'' and ''multicast '' packages are incompatible. In case when both are present one of them will be disabled }} | ||
{{Note| To get the package you have to download all-packages archive and upload/install multicast package separately on the router}} | |||
==Protocol independent multicast (PIM) == | ==Protocol independent multicast (PIM) == | ||
Line 26: | Line 21: | ||
General PIM protcol settings. | General PIM protcol settings. | ||
{| cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''switch-to-spt''' (<em>yes|no, default: ''yes''</em>) | |||
|style="border-bottom:1px solid gray;"| whether to switch to Shortest Path Tree (SPT) phase if multicast data bandwidth threshold is reached. For routers upstream from RP, if this option is disabled, it means that the router will not proceed from protocol phase one (register encapsulation) to native multicast traffic flow. It is recommended to enable this option. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''switch-to-spt-bytes''' (<em>integer, default: ''0''</em>) | |||
|style="border-bottom:1px solid gray;" | multicast data bandwidth threshold. If this threshold is reached in the specified time interval, switching to Shortest Path Tree (SPT) happens. If value 0 is configured, switching will happen immediately. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''switch-to-spt-interval''' (<em>time, default: ''100s''</em>) | |||
|style="border-bottom:1px solid gray;" | time interval in which to account multicast data bandwidth, used in conjunction with '''switch-to-spt-bytes''' to determine if switching threshold is reached. | |||
|} | |||
==Interfaces== | ==Interfaces== | ||
Line 35: | Line 39: | ||
'''Menu:''' <em>/routing pim interface</em> | '''Menu:''' <em>/routing pim interface</em> | ||
Configuration of interface of the router that will participate in multicast network. Interfaces that are not configured here (or in [[IGMP-Proxy]]) will discard multicast packets. | Since RouterOS v4.6 it is possible to specify source address interface will use to participate in multicast cloud. Previously one of interface addresses was chosen without any particular order. | ||
Configuration of interface of the router that will participate in multicast network. Interfaces that are not configured here (or in [[IGMP-Proxy]]) will discard multicast packets. | |||
When deploying multicast configuration over wireless links one should be cautious how and what works. For details about [[Manual:Multicast_and_wireless|multicast and wireless links]]. | |||
{{Note|There is no interface count limitation in this menu other than how much hardware can handle}} | |||
<br> | |||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''alternative-subnets''' (<em>IP address/mask Default: nil</em>) : | |||
|style="border-bottom:1px solid gray;" valign="top"| if router can receive multicast streams over groups that are not in standard Class-D section then you have to set up this field, so these groups are recognised as multicast groups and will not be discarded. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-override-interval''' (<em>time Default: ''3s''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| time that is subtracted by assert winner from assert-time field, to ensure, that assert winner will always send its assert messages before everyone else. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-time''' (<em>time Default: ''3m''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| Time interval when assert-winner will send out repeated assert. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''comment''' (<em>text</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| text information for the entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''copy-from''' (<em>number</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| use other, already configured entry as stencil for this new one | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''disabled''' (<em>yes | no; Default: ''no''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| state of the entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''dr-priority''' (<em>integer Default: ''1''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| if for stream source more than one router with multicast support is available, then one with highest priority will become Designated router of that multicast stream and will handle stream delivery to RP. Higher value means higher priority. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''hello-holdtime''' (<em>time Default: ''1m45s''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| how long consider sender of hello packet received on interface in neighbour list. (usually 3.5 times of hello-period) | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''hello-period''' (<em>time Default: ''30s''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| how often hello packet will be sent over this interface. | |||
|- | |||
|valign="top"|'''hello-trigerred-delay''' (<em>time Default: ''5s''</em>) | |||
| when interface starts to participate in multicast cloud then this value is max time interface will wait before sending hello packet. That period of waiting is random from 0 to value set in this field. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''igmp-version''' (<em>IGMPv1 | '' IGMPv2'' | IGMPv3 Default: ''IGMPv2''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| what IGMP protocol version to support on the interface. | |||
|- | |||
|valign="top"|'''interface''' (<em>interface name</em>) | |||
| interface name that will participate in multicast cloud with these settings. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''join-prune-holdtime''' (<em>time Default: ''3m30s''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| how long save join or prune status before discard it | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''join-prune-period''' (<em>time Default: ''1m''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| time interval between sending out join or prune messages | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''preferred-source-address''' (<em>IP address Default: ''0.0.0.0''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| address that should be used to send out IGMP/PIM packets. Address used should be already assigned to interface. (introduced in 4.6) | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''propagation-delay''' (<em>integer in milliseconds Default: ''50''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| expected propagation delay between PIM routers on this network or link. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''protocols''' (<em>pim, igmp; Default: 'pim,igmp''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| what protocols to support on the interface | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''require-hello''' (<em>yes|no Default:''yes''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| if sending PIM router have to be neighbour to receiving (this) router to work with those packets. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''tracking-support''' (<em>yes | no Default: ''yes''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| if propagation-delay is not negotiated or is not set then that value will be suppressed, if one of PIM neighbours has set false in this field, then propagation-delay will be suppressed. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''override-interval''' (<em>integer in milliseconds Default: ''250''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| will override propagation-delay negotiated value if set delay time is smaller than this. | |||
|} | |||
==Rendezvous point== | ==Rendezvous point== | ||
Line 70: | Line 118: | ||
Rendezvous point configuration. Rendezvous point (RP) is a distribution point for multicast group, source provides its data to it, and if there are any subscribers, then RP will provide data to client. Note, that RP will always receive data stream if that exists. | Rendezvous point configuration. Rendezvous point (RP) is a distribution point for multicast group, source provides its data to it, and if there are any subscribers, then RP will provide data to client. Note, that RP will always receive data stream if that exists. | ||
{| border="0" style="background:white; cellpadding=2 valign=top" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''comment''' (text) | |||
|style="border-bottom:1px solid gray;" valign="top"| add comment to static RP entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''copy-from''' (number) | |||
|style="border-bottom:1px solid gray;" valign="top"| creates another RP just like one you pointed to with number you used. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''disabled''' (yes, no) | |||
|style="border-bottom:1px solid gray;" valign="top"| used to change status of RP entry effectively disabling or enabling it. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''group''' (multicast group address Default: ''224.0.0.0/4'') | |||
|style="border-bottom:1px solid gray;" valign="top"| sets what group this RP will be assigned to. Values accepted are class D ip addresses with mask, thus effectively marking multiple groups to this RP entry e.g. 224.10.10.0/24 will add 256 groups starting with 224.10.10.0 till 224.10.10.255. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''hash-mask-length''' (number 4..32 Default: ''30'') | |||
|style="border-bottom:1px solid gray;" valign="top"|when multicast group have multiple RPs, and they are same scope and same priority, then this value is compared. and so you can load balance this way. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''priority''' (number Default: ''192'') | |||
|style="border-bottom:1px solid gray;" valign="top"| if several RPs are available for multicast group, and they are both with same scope, then RP with highest priority is chosen. Smaller non-negative value is considered of higher priority. Example: priority of 100 is higher than priority of 101. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''address''' (IP address) | |||
|style="border-bottom:1px solid gray;" valign="top"|at what address you have to look for RP for multicast group specified in group field. If group is set to one of routers interfaces, it should be reachable through whole multicast network, if it not, you will have to set up rules in MRIB (multicast routing information base). | |||
|} | |||
==Rendezvous point candidates== | ==Rendezvous point candidates== | ||
Line 82: | Line 148: | ||
'''Menu:''' <em>/routing pim rp-candidates</em> | '''Menu:''' <em>/routing pim rp-candidates</em> | ||
Rendezvous point candidate configuration, when RP is elected for | Rendezvous point candidate configuration, when RP is elected for multicast group | ||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''comment''' (text) | |||
|style="border-bottom:1px solid gray;" valign="top"| additional textual information about entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''copy-from''' (number) | |||
|style="border-bottom:1px solid gray;" valign="top"| create this entry using other entry as a stencil | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''disabled''' (<em>yes | no Default: ''no''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| state of entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''group''' (<em>multicast group address Default: ''224.0.0.0/4''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|routes with will be chosen to be a group RP if no other RP will not participate with higher priority | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''holdtime''' (<em>time Default: ''2m30s''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"| after what time next election will be initiated | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''is-scope-zone''' (<em>yes|''no'' Default: ''no''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|if set to yes, scope-zone setting is obeyed, if set to no, then scope-zone just represents range of groups that it will function as RP | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''priority''' (<em>number Default: ''192''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|value is used when RP is elected, lower value mean higher priority | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''interface''' (interface) | |||
|style="border-bottom:1px solid gray;" valign="top"|to what interface to bind to if this router is elected as multicast groups RP | |||
|} | |||
==Bootstrap router candidates== | ==Bootstrap router candidates== | ||
Line 97: | Line 183: | ||
bootstrap router candidate configuration | bootstrap router candidate configuration | ||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''comment''' (<em>text</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|set text describing bsr-candidate list entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''disabled''' (<em>yes|no Default: ''no''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|set state of the list entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''hash-mask-length''' (<em>number 4..32 Default: ''30''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|to how much first bits of multicast group should be hashed to reduce protocol overhead | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''is-scope-zone''' (<em>yes|no Default: ''no''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|if set to yes, scope-zone setting is obeyed, if set to no, then scope-zone just represents range of groups that it will function as BSR | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''priority''' (<em>number Default: ''1''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|priority of the router in bsr election | |||
|- | |||
|'''scope-zone''' (<em>IP address/mask Default: ''224.0.0.0/4''</em>) | |||
|multicast group range that this router will function as BSR | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''interface''' (<em>interface</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|interface of the router that bsr-candidate will be attached to and if elected BSR | |||
|} | |||
==Multicast route information base== | ==Multicast route information base== | ||
Line 109: | Line 213: | ||
'''Menu:''' <em>/routing pim mrib</em> | '''Menu:''' <em>/routing pim mrib</em> | ||
MRIB routes are used for reverse path forwarding check. In a way, they perform opposite function that FIB (''Forwarding Information Base'') routes: FIB is used to find the right By default, MRIB is populated by FIB routes. Use "multicast" routing filter chanin to control that or set specific parameters for imported FIB routes (e.g. you can change the distance of the route). In addition, you can specify static MRIB routes. This is useful only if you are using multihoming and multicast packet flow will be different from unicast packet flow. | |||
Active MRIB entries that are imported from FIB are shown with "dynamic" flag. | |||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''comment''' (<em>text</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|textual note to entry can be added to static entries only. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''copy-from''' (<em>number</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|use other entry as a template to create new one. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''destination''' (<em>IP address/mask Default: ''0.0.0.0/0''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|hosts that will be reachable through gateway | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''disabled''' (<em>yes|no Default: ''no''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|status of entry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''metric''' (<em>integer Default: ''1''</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|value of cost of the route. Route with least weight will be used if available. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''gateway''' (IP address) | |||
|style="border-bottom:1px solid gray;" valign="top"|address through where hosts listed in destination field will be reachable. | |||
|} | |||
==IGMP group status== | ==IGMP group status== | ||
Line 121: | Line 244: | ||
'''Menu:''' <em>/routing pim igmp-group</em> | '''Menu:''' <em>/routing pim igmp-group</em> | ||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''interface''' (<em>interface</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|group join request received/sent on this interface | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''group''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|IGMP group of interest | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''source''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|source of IGMP request | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''state''' (<em>exclude | forward | don't forward</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|state of IGMP group membership | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''version''' (<em>IGMPv1|IGMPv2|IGMPv3</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|version of IGMP protocol used | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''timeout''' (<em>time</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|time when entry will expire if not refreshed | |||
|} | |||
==Multicast neighbors== | ==Multicast neighbors== | ||
Line 132: | Line 271: | ||
'''Menu:''' <em>/routing pim neighbors</em> | '''Menu:''' <em>/routing pim neighbors</em> | ||
This menu only allows to see information about multicast routers that are reachable within one | This menu only allows to see information about multicast routers that are reachable within one Ethernet from all interfaces participating in multicast routing. This list is created and updated automatically according to state of multicast network. | ||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''address''' (<em>ip address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|IP address of neighbour multicast router that router have received hello packet. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''interface''' (<em>text</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|on what interface hello packet was received | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''priority''' (<em>number 1..255</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|priority of the neighbour router | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''holdtime''' (<em>time</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|how long entry will be held in neighbour list (configured in interface menu ''hello-holdtime'') | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''timeout''' (<em>time</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|how much time left when entry will be dropped from list if no hello packets are received. Every time hello packet is received this entry will be refreshed. | |||
|} | |||
==Bootstrap router status== | ==Bootstrap router status== | ||
'''Menu:''' <em>/routing pim bsr</em> | '''Menu:''' <em>/routing pim bsr</em> | ||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''zone-type''' (<em>active | expiring | configured </em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|type of the zone | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|valign="top"|'''bsr-address''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|address of BSR router | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''scope-zone''' (<em>IP address/mask</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|multicast group range this router is a BSR | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''bsr-priority''' (<em>integer</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|priority of BSR router | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''local-address''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|local BSR candidate address in scope zone | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''local-priority''' (<em>integer</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|local BSR candidate priority in scope zone | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"| '''state''' (<em>init | candidate | pending | elected | no-info | accept-any | accept-preferred</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|state of BSR router | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''timeout''' (<em>time | -1</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|time-out when this entry will be removed | |||
* -1 : never expire | |||
* time value : time remaining to expiry | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''sz-timeout''' (<em>time | -1</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|in what time when sope zone will time out. | |||
* -1 : never expire | |||
* time value : time remaining to expiry | |||
|} | |||
==Multicast forwarding cache status== | ==Multicast forwarding cache status== | ||
Line 165: | Line 336: | ||
Multicast forwarding cache - this section only provides information about current state of multicast cloud at given router, showing states of joins for multicast groups. | Multicast forwarding cache - this section only provides information about current state of multicast cloud at given router, showing states of joins for multicast groups. | ||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''group''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|name of multicast group | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''source''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|source of multicast group data | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''rp''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|address of RP for that multicast group | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''incoming-interface''' (<em>interface</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|interface that is used to receive multicast data stream | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''outgoing-interface''' (<em>interface</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|interface that is used to transmit multicast data stream | |||
|} | |||
==Multicast group joins status== | ==Multicast group joins status== | ||
Line 177: | Line 361: | ||
Group join list of all the group joins that are registered by PIM-SM | Group join list of all the group joins that are registered by PIM-SM | ||
Multicast forwarding cache - this section only provides information about current state of multicast cloud at given router, showing states of joins for multicast groups. | |||
{| border="0" style="background:white" cellpadding="2" | |||
!width="300px" style="background:#cccccc; border-bottom:1px solid gray;"| Property | |||
!width="450px" style="background:#cccccc; border-bottom:1px solid gray;"| Desciption | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''group''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|multicast group that has at least one registered join request | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''source''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|data provider for that group | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''rp''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|rendezvous point for multicast group | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''upstream-interface-source''' (<em>interface</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|router interface receives data stream of the multicast group | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''upstream-interface-rp''' (<em>interface</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|router interface that is toward the rendezvous point | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''upstream-mrib-nexthop''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|address of the next router towards RP | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''upstream-pim-nexthop''' (<em>IP address</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|address of next router towards RP according to PIM RP tree | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''join-state''' (<em>joined | not-joined | rpt-not-joined | rpt-pruned | rpt-not-pruned</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|state of this entry towards RP | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''join-register-state''' (<em>joined | pruned | join-pending | unknown</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|join status on register interface | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''timeout''' (<em>time</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|time-out when entry will be removed from the list. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''keepalive-timer''' (<em>yes|no</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|how long entry will be kept in the list | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''i-am-designated-router''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|interface name list on which router is chosen as designated router | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''local-receivers''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|interfaces where are clients registered with (*.G) join | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''joined-rp''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that have clients that originated (*,*,RP) join | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''joined-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that have clients that originated (*.G) join | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''joined''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are in joined state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''pruned''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are in prune state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''prune-pending''' (<em></em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are in prune-pending state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-winner''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are in assert-winner state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-looser''' (<em>interface list</em>) | |||
|list of interfaces that are assert-lost state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-winner-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that have (*,G) join and have assert-winner state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-looser-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that have (*,G) join and have assert-lost state | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''assert-tracking-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that have (*,G) join and will track assert | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''could-assert-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that have (*,G) join and could trigger assert | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''immediate-rp''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are included in the immediate outgoing interfaces for the corresponding (*,*,RP) entry. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''immediate-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are included in the immediate outgoing interfaces for the corresponding (*,RP) entry. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''immediate-sg''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are included in the immediate outgoing interfaces for the corresponding (S,G) entry. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''immediate-sg-rpt''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces that are included in the immediate outgoing interfaces for the corresponding (S,G,rpt) entry. | |||
|- | |||
|style="border-bottom:1px solid gray;" valign="top"|'''include-wc''' (<em>interface list</em>) | |||
|style="border-bottom:1px solid gray;" valign="top"|list of interfaces to which traffic might be forwarded because of hosts that are local members on that interface. | |||
|} | |||
==See also== | ==See also== | ||
[[Multicast | * [[Multicast_detailed_example| Multicast detailed example]] | ||
* [[Manual:Multicast_and_wireless| multicast over wireless links]] | |||
[[Category:Manual]] | [[Category:Manual|Multicast]] | ||
[[Category: | [[Category:Routing|Multicast]] | ||
[[Category:Internetworking|Multicast]] | |||
[[Category:Multicast|Multicast]] |
Latest revision as of 15:31, 16 November 2016
Applies to RouterOS: v3.x, v4.x
Summary
Protocol Independent Multicast - Sparse Mode (PIM-SM or PIM) enables RouterOS to support multicast streaming over network area where routers have PIM set up. Several configured PIM routers together will make multicast cloud where client devices can use IGMP to manage subscriptions to streams. PIM should be used when network topology is complex or stream sources are connected to multicast cloud. Continuous cloud must have configured unique rendezvous point for multicast group or groups used in it and other participants should know how to reach rendezvous point. In simple case when in part of cloud reside only potential clients and no stream sources IGMP proxy can be used instead to conserve resources.
Requirements
Multicast is available on all architectures supported by RouterOS. Packages required:
- system
- multicast
Note: v3.x routing-test and multicast packages are incompatible. In case when both are present one of them will be disabled
Note: To get the package you have to download all-packages archive and upload/install multicast package separately on the router
Protocol independent multicast (PIM)
Menu: /routing pim
General PIM protcol settings.
Property | Desciption |
---|---|
switch-to-spt (yes|no, default: yes) | whether to switch to Shortest Path Tree (SPT) phase if multicast data bandwidth threshold is reached. For routers upstream from RP, if this option is disabled, it means that the router will not proceed from protocol phase one (register encapsulation) to native multicast traffic flow. It is recommended to enable this option. |
switch-to-spt-bytes (integer, default: 0) | multicast data bandwidth threshold. If this threshold is reached in the specified time interval, switching to Shortest Path Tree (SPT) happens. If value 0 is configured, switching will happen immediately. |
switch-to-spt-interval (time, default: 100s) | time interval in which to account multicast data bandwidth, used in conjunction with switch-to-spt-bytes to determine if switching threshold is reached. |
Interfaces
Menu: /routing pim interface
Since RouterOS v4.6 it is possible to specify source address interface will use to participate in multicast cloud. Previously one of interface addresses was chosen without any particular order.
Configuration of interface of the router that will participate in multicast network. Interfaces that are not configured here (or in IGMP-Proxy) will discard multicast packets.
When deploying multicast configuration over wireless links one should be cautious how and what works. For details about multicast and wireless links.
Note: There is no interface count limitation in this menu other than how much hardware can handle
Property | Desciption |
---|---|
alternative-subnets (IP address/mask Default: nil) : | if router can receive multicast streams over groups that are not in standard Class-D section then you have to set up this field, so these groups are recognised as multicast groups and will not be discarded. |
assert-override-interval (time Default: 3s) | time that is subtracted by assert winner from assert-time field, to ensure, that assert winner will always send its assert messages before everyone else. |
assert-time (time Default: 3m) | Time interval when assert-winner will send out repeated assert. |
comment (text) | text information for the entry |
copy-from (number) | use other, already configured entry as stencil for this new one |
disabled (yes | no; Default: no) | state of the entry |
dr-priority (integer Default: 1) | if for stream source more than one router with multicast support is available, then one with highest priority will become Designated router of that multicast stream and will handle stream delivery to RP. Higher value means higher priority. |
hello-holdtime (time Default: 1m45s) | how long consider sender of hello packet received on interface in neighbour list. (usually 3.5 times of hello-period) |
hello-period (time Default: 30s) | how often hello packet will be sent over this interface. |
hello-trigerred-delay (time Default: 5s) | when interface starts to participate in multicast cloud then this value is max time interface will wait before sending hello packet. That period of waiting is random from 0 to value set in this field. |
igmp-version (IGMPv1 | IGMPv2 | IGMPv3 Default: IGMPv2) | what IGMP protocol version to support on the interface. |
interface (interface name) | interface name that will participate in multicast cloud with these settings. |
join-prune-holdtime (time Default: 3m30s) | how long save join or prune status before discard it |
join-prune-period (time Default: 1m) | time interval between sending out join or prune messages |
preferred-source-address (IP address Default: 0.0.0.0) | address that should be used to send out IGMP/PIM packets. Address used should be already assigned to interface. (introduced in 4.6) |
propagation-delay (integer in milliseconds Default: 50) | expected propagation delay between PIM routers on this network or link. |
protocols (pim, igmp; Default: 'pim,igmp) | what protocols to support on the interface |
require-hello (yes|no Default:yes) | if sending PIM router have to be neighbour to receiving (this) router to work with those packets. |
tracking-support (yes | no Default: yes) | if propagation-delay is not negotiated or is not set then that value will be suppressed, if one of PIM neighbours has set false in this field, then propagation-delay will be suppressed. |
override-interval (integer in milliseconds Default: 250) | will override propagation-delay negotiated value if set delay time is smaller than this. |
Rendezvous point
Menu: /routing pim rp
Rendezvous point configuration. Rendezvous point (RP) is a distribution point for multicast group, source provides its data to it, and if there are any subscribers, then RP will provide data to client. Note, that RP will always receive data stream if that exists.
Property | Desciption |
---|---|
comment (text) | add comment to static RP entry |
copy-from (number) | creates another RP just like one you pointed to with number you used. |
disabled (yes, no) | used to change status of RP entry effectively disabling or enabling it. |
group (multicast group address Default: 224.0.0.0/4) | sets what group this RP will be assigned to. Values accepted are class D ip addresses with mask, thus effectively marking multiple groups to this RP entry e.g. 224.10.10.0/24 will add 256 groups starting with 224.10.10.0 till 224.10.10.255. |
hash-mask-length (number 4..32 Default: 30) | when multicast group have multiple RPs, and they are same scope and same priority, then this value is compared. and so you can load balance this way. |
priority (number Default: 192) | if several RPs are available for multicast group, and they are both with same scope, then RP with highest priority is chosen. Smaller non-negative value is considered of higher priority. Example: priority of 100 is higher than priority of 101. |
address (IP address) | at what address you have to look for RP for multicast group specified in group field. If group is set to one of routers interfaces, it should be reachable through whole multicast network, if it not, you will have to set up rules in MRIB (multicast routing information base). |
Rendezvous point candidates
Menu: /routing pim rp-candidates
Rendezvous point candidate configuration, when RP is elected for multicast group
Property | Desciption |
---|---|
comment (text) | additional textual information about entry |
copy-from (number) | create this entry using other entry as a stencil |
disabled (yes | no Default: no) | state of entry |
group (multicast group address Default: 224.0.0.0/4) | routes with will be chosen to be a group RP if no other RP will not participate with higher priority |
holdtime (time Default: 2m30s) | after what time next election will be initiated |
is-scope-zone (yes|no Default: no) | if set to yes, scope-zone setting is obeyed, if set to no, then scope-zone just represents range of groups that it will function as RP |
priority (number Default: 192) | value is used when RP is elected, lower value mean higher priority |
interface (interface) | to what interface to bind to if this router is elected as multicast groups RP |
Bootstrap router candidates
Menu: /routing pim bsr-candidates
bootstrap router candidate configuration
Property | Desciption |
---|---|
comment (text) | set text describing bsr-candidate list entry |
disabled (yes|no Default: no) | set state of the list entry |
hash-mask-length (number 4..32 Default: 30) | to how much first bits of multicast group should be hashed to reduce protocol overhead |
is-scope-zone (yes|no Default: no) | if set to yes, scope-zone setting is obeyed, if set to no, then scope-zone just represents range of groups that it will function as BSR |
priority (number Default: 1) | priority of the router in bsr election |
scope-zone (IP address/mask Default: 224.0.0.0/4) | multicast group range that this router will function as BSR |
interface (interface) | interface of the router that bsr-candidate will be attached to and if elected BSR |
Multicast route information base
Menu: /routing pim mrib
MRIB routes are used for reverse path forwarding check. In a way, they perform opposite function that FIB (Forwarding Information Base) routes: FIB is used to find the right By default, MRIB is populated by FIB routes. Use "multicast" routing filter chanin to control that or set specific parameters for imported FIB routes (e.g. you can change the distance of the route). In addition, you can specify static MRIB routes. This is useful only if you are using multihoming and multicast packet flow will be different from unicast packet flow.
Active MRIB entries that are imported from FIB are shown with "dynamic" flag.
Property | Desciption |
---|---|
comment (text) | textual note to entry can be added to static entries only. |
copy-from (number) | use other entry as a template to create new one. |
destination (IP address/mask Default: 0.0.0.0/0) | hosts that will be reachable through gateway |
disabled (yes|no Default: no) | status of entry |
metric (integer Default: 1) | value of cost of the route. Route with least weight will be used if available. |
gateway (IP address) | address through where hosts listed in destination field will be reachable. |
IGMP group status
Menu: /routing pim igmp-group
Property | Desciption |
---|---|
interface (interface) | group join request received/sent on this interface |
group (IP address) | IGMP group of interest |
source (IP address) | source of IGMP request |
state (exclude | forward | don't forward) | state of IGMP group membership |
version (IGMPv1|IGMPv2|IGMPv3) | version of IGMP protocol used |
timeout (time) | time when entry will expire if not refreshed |
Multicast neighbors
Menu: /routing pim neighbors
This menu only allows to see information about multicast routers that are reachable within one Ethernet from all interfaces participating in multicast routing. This list is created and updated automatically according to state of multicast network.
Property | Desciption |
---|---|
address (ip address) | IP address of neighbour multicast router that router have received hello packet. |
interface (text) | on what interface hello packet was received |
priority (number 1..255) | priority of the neighbour router |
holdtime (time) | how long entry will be held in neighbour list (configured in interface menu hello-holdtime) |
timeout (time) | how much time left when entry will be dropped from list if no hello packets are received. Every time hello packet is received this entry will be refreshed. |
Bootstrap router status
Menu: /routing pim bsr
Property | Desciption |
---|---|
zone-type (active | expiring | configured ) | type of the zone |
valign="top"|bsr-address (IP address) | address of BSR router |
scope-zone (IP address/mask) | multicast group range this router is a BSR |
bsr-priority (integer) | priority of BSR router |
local-address (IP address) | local BSR candidate address in scope zone |
local-priority (integer) | local BSR candidate priority in scope zone |
state (init | candidate | pending | elected | no-info | accept-any | accept-preferred) | state of BSR router |
timeout (time | -1) | time-out when this entry will be removed
|
sz-timeout (time | -1) | in what time when sope zone will time out.
|
Multicast forwarding cache status
Menu: /routing pim mfc
Multicast forwarding cache - this section only provides information about current state of multicast cloud at given router, showing states of joins for multicast groups.
Property | Desciption |
---|---|
group (IP address) | name of multicast group |
source (IP address) | source of multicast group data |
rp (IP address) | address of RP for that multicast group |
incoming-interface (interface) | interface that is used to receive multicast data stream |
outgoing-interface (interface) | interface that is used to transmit multicast data stream |
Multicast group joins status
Menu: /routing pim join
Group join list of all the group joins that are registered by PIM-SM Multicast forwarding cache - this section only provides information about current state of multicast cloud at given router, showing states of joins for multicast groups.
Property | Desciption |
---|---|
group (IP address) | multicast group that has at least one registered join request |
source (IP address) | data provider for that group |
rp (IP address) | rendezvous point for multicast group |
upstream-interface-source (interface) | router interface receives data stream of the multicast group |
upstream-interface-rp (interface) | router interface that is toward the rendezvous point |
upstream-mrib-nexthop (IP address) | address of the next router towards RP |
upstream-pim-nexthop (IP address) | address of next router towards RP according to PIM RP tree |
join-state (joined | not-joined | rpt-not-joined | rpt-pruned | rpt-not-pruned) | state of this entry towards RP |
join-register-state (joined | pruned | join-pending | unknown) | join status on register interface |
timeout (time) | time-out when entry will be removed from the list. |
keepalive-timer (yes|no) | how long entry will be kept in the list |
i-am-designated-router (interface list) | interface name list on which router is chosen as designated router |
local-receivers (interface list) | interfaces where are clients registered with (*.G) join |
joined-rp (interface list) | list of interfaces that have clients that originated (*,*,RP) join |
joined-wc (interface list) | list of interfaces that have clients that originated (*.G) join |
joined (interface list) | list of interfaces that are in joined state |
pruned (interface list) | list of interfaces that are in prune state |
prune-pending () | list of interfaces that are in prune-pending state |
assert-winner (interface list) | list of interfaces that are in assert-winner state |
assert-looser (interface list) | list of interfaces that are assert-lost state |
assert-winner-wc (interface list) | list of interfaces that have (*,G) join and have assert-winner state |
assert-looser-wc (interface list) | list of interfaces that have (*,G) join and have assert-lost state |
assert-tracking-wc (interface list) | list of interfaces that have (*,G) join and will track assert |
could-assert-wc (interface list) | list of interfaces that have (*,G) join and could trigger assert |
immediate-rp (interface list) | list of interfaces that are included in the immediate outgoing interfaces for the corresponding (*,*,RP) entry. |
immediate-wc (interface list) | list of interfaces that are included in the immediate outgoing interfaces for the corresponding (*,RP) entry. |
immediate-sg (interface list) | list of interfaces that are included in the immediate outgoing interfaces for the corresponding (S,G) entry. |
immediate-sg-rpt (interface list) | list of interfaces that are included in the immediate outgoing interfaces for the corresponding (S,G,rpt) entry. |
include-wc (interface list) | list of interfaces to which traffic might be forwarded because of hosts that are local members on that interface. |