HI!Проблема с mrouted
Суть:
Что имеем: сервер FreeBSD 6.1
server# ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.3.1 netmask 0xffffff00 broadcast 192.168.3.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl3: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.4.1 netmask 0xffffff00 broadcast 192.168.4.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rc.conf
defaultrouter="192.168.1.5"
gateway_enable="YES"
ifconfig_rl0="inet 192.168.1.1 netmask 255.255.255.0"
ifconfig_rl1="inet 192.168.2.1 netmask 255.255.255.0"
ifconfig_rl2="inet 192.168.3.1 netmask 255.255.255.0"
ifconfig_rl3="inet 192.168.4.1 netmask 255.255.255.0"
mrouted_enable="YES"
#natd_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
hostname="server"
kernel
options MROUTING
options TCP_DROP_SYNFIN
options IPFIREWALL
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT
options PIM
На сервере установлен vlc и запущенo 2 видеопотока в мультикасте
vlc -d /usr/local/etc/vlc/film/film.avi --sout udp:224.0.0.0 --ttl 3 --loop
vlc -d /usr/local/etc/vlc/film/film2.avi --sout udp:225.0.0.0 --ttl 3 --loop
Что получилось:
в 1-ой сети с помощью того же vlc открываем и смотрим без проблем видеопоток 224.0.0.0 и 225.0.0.0
192.168.1.100# tcpdump ip multicast
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on sk0, link-type EN10MB (Ethernet), capture size 96 bytes
20:18:46.803562 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.808601 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.810537 IP 192.168.1.1.61093 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:18:46.813581 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.817522 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.820561 IP 192.168.1.1.61093 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:18:46.822568 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.827613 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.830585 IP 192.168.1.1.61093 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:18:46.832521 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.836532 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.840539 IP 192.168.1.1.61093 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:18:46.841576 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.846554 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.850632 IP 192.168.1.1.61576 > 225.0.0.0.1234: UDP, length 1316
20:18:46.850770 IP 192.168.1.1.61093 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
если же на сервере запускаем vlc так,
vlc -d /usr/local/etc/vlc/film/film.avi --sout udp:224.0.0.1 --ttl 3 --loop
vlc -d /usr/local/etc/vlc/film/film2.avi --sout udp:224.0.0.4 --ttl 3 --loop
то так же смотрим в 1-ой сети все ОК
но вывод tcpdump'а уже другой
192.168.1.100# tcpdump ip multicast
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on sk0, link-type EN10MB (Ethernet), capture size 96 bytes
20:19:46.564826 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.572842 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.577960 IP 192.168.1.1.52906 > DVMRP.MCAST.NET.1234: UDP, length 1316
20:19:46.580790 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.587842 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.593786 IP 192.168.1.1.52906 > DVMRP.MCAST.NET.1234: UDP, length 1316
20:19:46.596828 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.603812 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.608788 IP 192.168.1.1.52906 > DVMRP.MCAST.NET.1234: UDP, length 1316
20:19:46.610792 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.619781 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
20:19:46.624757 IP 192.168.1.1.52906 > DVMRP.MCAST.NET.1234: UDP, length 1316
20:19:46.627798 IP 192.168.1.1.65321 > ALL-SYSTEMS.MCAST.NET.1234: UDP, length 1316
но при любом раскладе
во 2-ой, 3-ей и 4-ой сетях видеопотока нет
смотрим на самом сервере
server # tcpdump -i rl0 ip multicast
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rl0, link-type EN10MB (Ethernet), capture size 96 bytes
20:34:51.229039 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.230172 IP server.55865 > 225.0.0.0.1234: UDP, length 1316
20:34:51.240027 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.249034 IP server.55865 > 225.0.0.0.1234: UDP, length 1316
20:34:51.251023 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.260031 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.268021 IP server.55865 > 225.0.0.0.1234: UDP, length 1316
20:34:51.269023 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.278024 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.287046 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.287101 IP server.55865 > 225.0.0.0.1234: UDP, length 1316
20:34:51.295104 IP server.59282 > BASE-ADDRESS.MCAST.NET.1234: UDP, length 1316
20:34:51.305414 IP server.55865 > 225.0.0.0.1234: UDP, length 1316
server # tcpdump -i rl1 ip multicast
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rl1, link-type EN10MB (Ethernet), capture size 96 bytes
20:39:05.049256 IP 192.168.2.1 > DVMRP.MCAST.NET: igmp dvmrp Probe
20:39:15.059075 IP 192.168.2.1 > DVMRP.MCAST.NET: igmp dvmrp Probe
20:39:25.104905 IP 192.168.2.1 > DVMRP.MCAST.NET: igmp dvmrp Probe
аналогично и на остальных других интерфейсах rl2 и rl3
mrouted debug выдает еще интереснее
server# mrouted -d
debug level 0x2de (pruning,routing,peers,cache,interface,membership,igmp)
20:55:27.196 mrouted version 3.9-beta3+IOS12 starting
20:55:27.197 Getting vifs from kernel interfaces
20:55:27.197 installing rl0 (192.168.1.1 on subnet 192.168.1/24) as vif #0 - rate=0
20:55:27.197 installing rl1 (192.168.2.1 on subnet 192.168.2/24) as vif #1 - rate=0
20:55:27.197 installing rl2 (192.168.3.1 on subnet 192.168.3/24) as vif #2 - rate=0
20:55:27.197 installing rl3 (192.168.4.1 on subnet 192.168.4/24) as vif #3 - rate=0
20:55:27.197 Getting vifs from /etc/mrouted.conf
20:55:27.197 Installing vifs in mrouted...
20:55:27.197 vif #0, phyint 192.168.1.1
20:55:27.197 assuming querier duties on vif 0
20:55:27.197 sending query on vif 0
20:55:27.198 SENT membership query from 192.168.1.1 to 224.0.0.1
20:55:27.198 SENT neighbor probe from 192.168.1.1 to 224.0.0.4
20:55:27.198 vif #1, phyint 192.168.2.1
20:55:27.198 assuming querier duties on vif 1
20:55:27.198 sending query on vif 1
20:55:27.198 SENT membership query from 192.168.2.1 to 224.0.0.1
20:55:27.198 SENT neighbor probe from 192.168.2.1 to 224.0.0.4
20:55:27.198 vif #2, phyint 192.168.3.1
20:55:27.198 assuming querier duties on vif 2
20:55:27.198 sending query on vif 2
20:55:27.199 SENT membership query from 192.168.3.1 to 224.0.0.1
20:55:27.199 SENT neighbor probe from 192.168.3.1 to 224.0.0.4
20:55:27.199 vif #3, phyint 192.168.4.1
20:55:27.199 assuming querier duties on vif 3
20:55:27.199 sending query on vif 3
20:55:27.199 SENT membership query from 192.168.4.1 to 224.0.0.1
20:55:27.199 SENT neighbor probe from 192.168.4.1 to 224.0.0.4
vifs_with_neighbors = 0
Virtual Interface Table
Vif Name Local-Address M Thr Rate Flags
0 rl0 192.168.1.1 subnet: 192.168.1/24 1 1 0 querier
IGMP querier: 192.168.1.1 (this system)
Nbr bitmaps: 0x0000000000000000
1 rl1 192.168.2.1 subnet: 192.168.2/24 1 1 0 querier
IGMP querier: 192.168.2.1 (this system)
Nbr bitmaps: 0x0000000000000000
2 rl2 192.168.3.1 subnet: 192.168.3/24 1 1 0 querier
IGMP querier: 192.168.3.1 (this system)
Nbr bitmaps: 0x0000000000000000
3 rl3 192.168.4.1 subnet: 192.168.4/24 1 1 0 querier
IGMP querier: 192.168.4.1 (this system)
Nbr bitmaps: 0x0000000000000000
Multicast Routing Table (4 entries)
Origin-Subnet From-Gateway Metric Tmr Fl In-Vif Out-Vifs
192.168.4/24 1 0 C. 1 0* 2* 3*
192.168.3/24 1 0 C. 2 0* 1* 3*
192.168.2/24 1 0 C. 3 0* 1* 2*
192.168.1/24 1 0 C. 0 1* 2* 3*
20:55:27.200 RECV membership query from 192.168.1.1 to 224.0.0.1
20:55:27.200 ignoring query from 192.168.1.1; querier on vif 0 is still me
20:55:27.200 RECV membership query from 192.168.2.1 to 224.0.0.1
20:55:27.200 ignoring query from 192.168.2.1; querier on vif 1 is still me
20:55:27.200 RECV membership query from 192.168.3.1 to 224.0.0.1
20:55:27.200 ignoring query from 192.168.3.1; querier on vif 2 is still me
20:55:27.200 RECV membership query from 192.168.4.1 to 224.0.0.1
20:55:27.200 ignoring query from 192.168.4.1; querier on vif 3 is still me
20:55:32.204 aging forwarding cache entries
20:55:32.204 sending query on vif 0
20:55:32.204 SENT membership query from 192.168.1.1 to 224.0.0.1
20:55:32.204 sending query on vif 1
20:55:32.205 SENT membership query from 192.168.2.1 to 224.0.0.1
20:55:32.205 sending query on vif 2
20:55:32.205 SENT membership query from 192.168.3.1 to 224.0.0.1
20:55:32.205 sending query on vif 3
20:55:32.205 SENT membership query from 192.168.4.1 to 224.0.0.1
20:55:32.205 SENT neighbor probe from 192.168.1.1 to 224.0.0.4
20:55:32.205 SENT neighbor probe from 192.168.2.1 to 224.0.0.4
20:55:32.205 SENT neighbor probe from 192.168.3.1 to 224.0.0.4
20:55:32.205 SENT neighbor probe from 192.168.4.1 to 224.0.0.4
20:55:32.206 RECV membership query from 192.168.1.1 to 224.0.0.1
20:55:32.206 ignoring query from 192.168.1.1; querier on vif 0 is still me
20:55:32.206 RECV membership query from 192.168.2.1 to 224.0.0.1
20:55:32.206 ignoring query from 192.168.2.1; querier on vif 1 is still me
20:55:32.206 RECV membership query from 192.168.3.1 to 224.0.0.1
20:55:32.206 ignoring query from 192.168.3.1; querier on vif 2 is still me
20:55:32.206 RECV membership query from 192.168.4.1 to 224.0.0.1
20:55:32.206 ignoring query from 192.168.4.1; querier on vif 3 is still me
20:55:37.210 mrouted version 3.9-beta3+IOS12
20:55:37.210 Installing vifs in kernel...
20:55:37.210 vif #0, phyint 192.168.1.1
20:55:37.211 vif #1, phyint 192.168.2.1
20:55:37.211 vif #2, phyint 192.168.3.1
20:55:37.211 vif #3, phyint 192.168.4.1
20:55:37.211 aging forwarding cache entries
20:55:37.217 add cache entry (192.168.1.1 225.0.0.0) gm:0, parent-vif:0
20:55:37.713 RECV V2 member report from 192.168.4.1 to 224.0.0.4
20:55:37.713 group 224.0.0.4 joined on vif 3
20:55:37.713 RECV V2 member report from 192.168.3.1 to 224.0.0.2
20:55:37.713 group 224.0.0.2 joined on vif 2
20:55:37.713 RECV V2 member report from 192.168.3.1 to 224.0.0.4
20:55:37.713 group 224.0.0.4 joined on vif 2
20:55:40.113 RECV V2 member report from 192.168.1.1 to 224.0.0.2
20:55:40.113 group 224.0.0.2 joined on vif 0
20:55:43.116 aging forwarding cache entries
20:55:43.116 SENT neighbor probe from 192.168.1.1 to 224.0.0.4
20:55:43.116 SENT neighbor probe from 192.168.2.1 to 224.0.0.4
20:55:43.116 SENT neighbor probe from 192.168.3.1 to 224.0.0.4
20:55:43.116 SENT neighbor probe from 192.168.4.1 to 224.0.0.4
20:55:43.116 update 0 starting at 4 of 4
20:55:44.117 update 0 starting at 4 of 4
20:55:45.118 update 0 starting at 4 of 4
20:55:46.119 update 0 starting at 4 of 4
20:55:47.120 update 0 starting at 4 of 4
20:55:48.121 aging forwarding cache entries
20:55:48.121 update 0 starting at 4 of 4
20:55:49.122 update 0 starting at 4 of 4
20:55:50.123 update 0 starting at 4 of 4
20:55:51.124 update 0 starting at 4 of 4
20:55:52.125 update 0 starting at 4 of 4
20:55:53.126 aging forwarding cache entries
20:55:53.126 SENT neighbor probe from 192.168.1.1 to 224.0.0.4
20:55:53.126 SENT neighbor probe from 192.168.2.1 to 224.0.0.4
20:55:53.126 SENT neighbor probe from 192.168.3.1 to 224.0.0.4
20:55:53.126 SENT neighbor probe from 192.168.4.1 to 224.0.0.4
20:55:53.126 update 0 starting at 4 of 4
20:55:54.127 update 0 starting at 4 of 4
20:55:55.128 update 0 starting at 4 of 4
20:55:56.129 update 0 starting at 4 of 4
20:55:57.130 update 0 starting at 4 of 4
20:55:58.131 aging forwarding cache entries
20:55:58.131 update 0 starting at 4 of 4
20:55:59.132 update 0 starting at 4 of 4
20:56:00.133 update 0 starting at 4 of 4
20:56:01.134 update 0 starting at 4 of 4
20:56:02.135 update 0 starting at 4 of 4
20:56:03.136 aging forwarding cache entries
20:56:03.136 SENT neighbor probe from 192.168.1.1 to 224.0.0.4
20:56:03.136 SENT neighbor probe from 192.168.2.1 to 224.0.0.4
20:56:03.136 SENT neighbor probe from 192.168.3.1 to 224.0.0.4
20:56:03.136 SENT neighbor probe from 192.168.4.1 to 224.0.0.4
20:56:03.136 update 0 starting at 4 of 4
^C20:56:03.661 mrouted version 3.9-beta3+IOS12 exiting
server#
Откуда появляются 224.0.0.1 224.0.0.2 и 224.0.0.4 ????? Мультикаст-то ведь запускаю на 224.0.0.0 и 225.0.0.0 !!!!
Что за фигня? Как передать мультикаст в другие сети??
man mrouted ничего вразумительного не дал :((
Какие будут соображения, коллеги?