1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
---
myst:
html_meta:
description: |
VyOS supports IPv6 multicast routing through PIMv6 (Protocol
Independent Multicast for IPv6) and MLD (Multicast Listener
Discovery) versions 1 and 2.
keywords: pimv6, pim6, mld, multicast, ipv6, rendezvous point
---
(pimv6)=
# PIMv6
VyOS supports IPv6 multicast routing through
{abbr}`PIMv6 (Protocol Independent Multicast for IPv6)` and
{abbr}`MLD (Multicast Listener Discovery)` versions 1 and 2.
PIMv6 operates similarly to its IPv4 counterpart: it uses the existing unicast
IPv6 routing table for path decisions, and traffic from multicast sources is
forwarded toward a {abbr}`RP (Rendezvous Point)`. IPv6 multicast receivers use
MLD to signal their local router which groups they want to receive, and the
router uses PIMv6 to pull that traffic from the RP via a shared distribution
tree.
A working PIMv6 deployment requires:
- PIMv6 enabled on every interface participating in IPv6 multicast
forwarding.
- The location of the Rendezvous Point (RP) declared identically on every
router in the PIMv6 domain.
- MLD enabled on interfaces facing multicast receivers.
## Basic commands
Use the following commands for a basic PIMv6 setup.
```{cfgcmd} set protocols pim6 interface \<interface-name\>
**Enable PIMv6 on the specified PIMv6 interface.**
This command also enables MLD, allowing the router to process MLD queries
and reports from IPv6 multicast receivers.
```
Example:
```none
set protocols pim6 interface eth0
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld disable
**Disable MLD on the specified PIMv6 interface.**
This command turns off MLD processing on the interface while keeping PIMv6
enabled.
```
Example:
```none
set protocols pim6 interface eth0 mld disable
```
## Tuning commands
You can also tune multicast with the following commands.
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld interval \<1-65535\>
**Configure the MLD Query Interval, in seconds, on the specified
interface.**
This setting determines how often the router sends MLD queries to discover
which IPv6 multicast groups have active listeners on the attached network.
The default value is 125 seconds.
```
Example:
```none
set protocols pim6 interface eth0 mld interval 100
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld join \<multicast-address\>
**Configure the interface to join a specific IPv6 multicast group.**
```
Example:
```none
set protocols pim6 interface eth0 mld join ff0e::db8:0:1234
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld join \<multicast-address\> source \<source-address\>
**Configure the interface to join a specific (S,G) channel.**
A channel is identified by the combination of a source IPv6 address (S)
and a multicast IPv6 address (G).
```
Example:
```none
set protocols pim6 interface eth0 mld join ff3e::1234 source 2001:db8::1
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld last-member-query-count \<1-255\>
**Configure the number of MLD Last Listener Queries the router sends on
the specified interface after a listener leaves a multicast group.**
The default value is 2.
```
Example:
```none
set protocols pim6 interface eth0 mld last-member-query-count 3
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld last-member-query-interval \<100-6553500\>
**Configure the MLD Last Listener Query Interval, in milliseconds, on the
specified interface.**
This setting determines how long the router waits between Last Listener
Queries.
The default value is 1000 milliseconds.
```
Example:
```none
set protocols pim6 interface eth0 mld last-member-query-interval 500
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld max-response-time \<100-6553500\>
**Configure the MLD maximum response delay, in milliseconds, on the
specified interface.**
This value is inserted in MLD queries and specifies the maximum time hosts
have to respond with a membership report. If no report is received within
the specified window, PIMv6 assumes there are no longer any active local
receivers and may time out the associated (\*,G) or (S,G) state.
```
Example:
```none
set protocols pim6 interface eth0 mld max-response-time 5000
```
```{cfgcmd} set protocols pim6 interface \<interface-name\> mld version \<1-2\>
**Configure the MLD version on the specified interface.**
The default version is 2.
```
Example:
```none
set protocols pim6 interface eth0 mld version 1
```
## Configuration example
To enable PIMv6 on interfaces eth0 and eth1 (which also enables MLD
automatically, allowing the router to process MLD queries and reports from
connected IPv6 multicast listeners):
```none
set protocols pim6 interface eth0
set protocols pim6 interface eth1
```
The following configuration explicitly joins the IPv6 multicast group
ff0e::db8:0:1234 on interface eth0, and the (S,G) channel
(2001:db8::1, ff3e::5678) on interface eth1:
```none
set protocols pim6 interface eth0 mld join ff0e::db8:0:1234
set protocols pim6 interface eth1 mld join ff3e::5678 source 2001:db8::1
```
|