FreeBSD as multicast router
Victor Gamov
vit at otcnet.ru
Mon Nov 4 17:39:47 UTC 2019
On 03/11/2019 08:22, Mike Karels wrote:
>>>>> Hi All
>>>>>
>>>>> I have (noob) questions about multicast routing under FreeBSD.
>>>>>
>>>>> I have FreeBSD box with two (or more) multicast enabled interfaces (e.x.
>>>>> vlan750 and vlan299). vlan750 connected to multicast source.
>>>>>
>>>>> Then pimd installed and only this two interfaces enabled in pimd config.
>>>>> Multicast routes successfully installed by pimd and listed by `netstat
>>>>> -g -f inet`
>>>>>
>>>>> Then client on vlan299 send IGMP-Join (this Join received by FreeBSD on
>>>>> vlan299)
>>>>>
>>>>> The question is: who will forward muilticast from one interface
>>>>> (vlan750) to another (vlan299)? Is it kernel specific job or I need
>>>>> additional software?
>>>
>>>> Please read the manpage multicast(4) "man 4 multicast",
>>>> you should need to build a custom kernel with the "options MROUTING"
>>>> to enable the multicast forwarding in the kernel.
>>>
>>> If "netstat -g" shows routes, the kernel must have been built with "options
>>> MROUTING".
>
>> Indeed.
>
>>>
>>> The kernel does the forwarding, according to those routing tables installed
>>> by pimd or another multicast routing program. Is it not working? It sounds
>>> like you are very close.
>
>> Could it be sysctl net.inet.ip.forwarding? Does that still apply to mroutes?
>
> No, they are separate. The test is just whether MROUTING is enabled, and
> whether a multicast router like pimd is active.
>
> One other thing to check would be "netstat -gs" (multicast stats).
Oops!
=====
# netstat -f inet -gs
No IPv4 MROUTING kernel support.
=====
But I have ip_mroute.ko loaded and netstat -g shows something like
=====
# netstat -f inet -g
IPv4 Virtual Interface Table
Vif Thresh Local-Address Remote-Address Pkts-In Pkts-Out
0 1 A.A.A.A 0 0
1 1 B.B.B.19 0 0
2 10 10.199.199.102 0 0
3 15 10.200.200.6 77440 0
4 1 A.A.A.A 0 77440
IPv4 Multicast Forwarding Table
Origin Group Packets In-Vif Out-Vifs:Ttls
10.200.200.5 232.232.8.33 1844 3 4:1
10.200.200.5 232.232.8.171 1843 3 4:1
10.200.200.5 232.232.8.58 4609 3 4:1
10.200.200.5 232.232.8.154 1844 3 4:1
10.200.200.5 232.232.8.170 1844 3 4:1
=====
and
=====
# pimd -r
Virtual Interface Table
======================================================
Vif Local Address Subnet Thresh Flags Neighbors
--- --------------- ------------------ ------ ---------
-----------------
0 A.A.A.A A.A.A.A/25 1 DR NO-NBR
1 B.B.B.19 B.B.B 1 DR NO-NBR
2 10.199.199.102 10.199.199.100/30 10 DR PIM
10.199.199.101
3 10.200.200.6 10.200.200/29 15 DR NO-NBR
4 A.A.A.A register_vif0 1
Vif SSM Group Sources
Multicast Routing Table
======================================================
----------------------------------- (S,G)
------------------------------------
Source Group RP Address Flags
--------------- --------------- ---------------
---------------------------
10.200.200.5 232.232.8.33 SSM CACHE SG
Joined oifs: ....j
Pruned oifs: .....
Leaves oifs: .....
Asserted oifs: .....
Outgoing oifs: ....o
Incoming : ...I.
=====
A.A.A.A is external IP-address. No multicast trafic must be sended to
this interface.
10.200.200.6 -- vlan750, multicast comes from here
10.199.199.102 -- vlan299, multicast must be forfarded here after
IGMP-Join received from 10.199.199.101/30
So, kernel with MROUTING options must be configured/installed or
ip_mroute.ko is enough?
P.S. FreeBSD 11.3-STABLE #0 r351605M
--
CU,
Victor Gamov
More information about the freebsd-net
mailing list