路由器组播测试
路由器模拟两接口组播测试。
使用路由模拟两个接口来测试,测试过程如下:
1、网络拓补图:
2、PC机端测试工具(工具请到网上下载)
服务器端:Wsend.exe
客户端:Wlisten.exe
3、路由器内核支持
使用pimd方案还需要配置以下选项:
查看路由器eth2和ra0接口是否支持组播。
#ifconfig
接口有UP BROADCAST RUNNING MULTICAST 为支持组播。
4、应用支持
(1)SDK源里的Igmpproxy应用配置选项:
(2)Pimd应用:网上下载pimd-2.1.8.tar.bz2源码,并移植到SDK源码的应用里。
5、路由开启组播转发
使用如下其中一种方案即可:
(1)使用igmpproxy代理
配置文件生成命令:#/bin/igmpproxy.sh eth2 ra0
执行后在/etc目录下生成igmpproxy.conf配置文件,内容如下:
##------------------------------------------------------
## Enable Quickleave mode (Sends Leave instantly)
##------------------------------------------------------
quickleave
##------------------------------------------------------
## Configuration for eth0 (Upstream Interface)
##------------------------------------------------------
phyint eth2 upstream ratelimit 0 threshold 1
altnet 0.0.0.0/0
##------------------------------------------------------
## Configuration for eth1 (Downstream Interface)
##------------------------------------------------------
phyint ra0 downstream ratelimit 0 threshold 1
##------------------------------------------------------
## Configuration for eth2 (Disabled Interface)
##------------------------------------------------------
#phyint disabled
启动进程:#igmpproxy &
(2)使用pimd
在路由器系统/etc目录下创建配置文件pimd.conf,配置文件/etc/pimd.conf内容如下:
#phyint de1 disable
phyint ra0 enable
phyint eth2 enable
# Smaller value means "higher" priority
cand_rp time 30 priority 20
# Bigger value means "higher" priority
cand_bootstrap_router priority 5
# Static rendez-vous point
#rp_address 192.168.10.1 224.0.0.0 masklen 8 priority 5
# All multicast groups
group_prefix 224.0.0.0 masklen 4
#
switch_data_threshold rate 50000 interval 20 # 50kbps (approx.)
switch_register_threshold rate 50000 interval 20 # 50kbps (approx.)
启动进程:#pimd -c /etc/pimd.conf -d &
路由器打印信息以下:
# ./pimd -c /etc/pimd.conf -d
debug level 0xffffffff (dvmrp_detail,dvmrp_prunes,dvmrp_routes,dvmrp_neighbors,dvmrp_timers,igmp_proto,igmp_timers,igmp_members,trace,timeout,packets,interfaces,kernel,cache,rsrr,pim_detail,pim_hello,pim_register,pim_join_prune,pim_bootstrap,pim_asserts,pim_cand_rp,pim_routes,pim_timers,pim_rpf)
01:03:41.552 pimd version 2.1.8 starting
01:03:41.555 Got 262144 byte send buffer size in 0 iterations
01:03:41.555 Got 262144 byte recv buffer size in 0 iterations
01:03:41.555 Got 262144 byte send buffer size in 0 iterations
01:03:41.556 Got 262144 byte recv buffer size in 0 iterations
01:03:41.559 Getting vifs from kernel
01:03:41.559 Installing eth2 (192.168.1.1 on subnet 192.168.1) as vif #0-2 - rate=0
01:03:41.560 Installing ra0 (192.168.2.1 on subnet 192.168.2) as vif #1-3 - rate=0
01:03:41.560 Installing br0 (192.168.0.1 on subnet 192.168) as vif #2-6 - rate=0
01:03:41.560 Getting vifs from ./pimd.conf
01:03:41.560 Local Cand-RP address is 192.168.2.1
01:03:41.561 Local Cand-RP priority is 20
01:03:41.561 Local Cand-RP advertisement period is 30 sec.
01:03:41.561 Local Cand-BSR address is 192.168.2.1
01:03:41.561 Local Cand-BSR priority is 5
01:03:41.561 Adding prefix 224.0.0.0/4
01:03:41.561 data_rate_limit is 50000 (bits/s)
01:03:41.561 data_rate_interval is 20 (seconds)
01:03:41.561 reg_rate_limit is 50000 (bits/s)
01:03:41.561 reg_rate_interval is 20 (seconds)
01:03:41.562 Interface eth2 comes up; vif #0 now in service
01:03:41.562 SENT IGMP Membership Query from 192.168.1.1 to 224.0.0.1
01:03:41.563 SENT PIM v2 Hello from 192.168.1.1 to 224.0.0.13
01:03:41.563 Interface ra0 comes up; vif #1 now in service
01:03:41.564 SENT IGMP Membership Query from 192.168.2.1 to 224.0.0.1
01:03:41.564 SENT PIM v2 Hello from 192.168.2.1 to 224.0.0.13
01:03:41.564 Interface br0 comes up; vif #2 now in service
01:03:41.565 SENT IGMP Membership Query from 192.168.0.1 to 224.0.0.1
01:03:41.565 SENT PIM v2 Hello from 192.168.0.1 to 224.0.0.13
01:03:41.567 Interface register_vif0 comes up; vif #3 now in service
Virtual Interface Table
Vif Local-Address Subnet Thresh Flags Neighbors
0 192.168.1.1 192.168.1 1 DR NO-NBR
1 192.168.2.1 192.168.2 1 DR NO-NBR
2 192.168.0.1 192.168 1 DR NO-NBR
3 192.168.1.1 register_vif0 1
Multicast Routing Table
Source Group RP-addr Flags
--------------------------(*,*,RP)--------------------------
Number of Groups: 0
Number of Cache MIRRORs: 0
01:03:42.301 create group entry, group 239.255.255.250
01:03:43.484 create group entry, group 239.255.255.250
Virtual Interface Table
Vif Local-Address Subnet Thresh Flags Neighbors
0 192.168.1.1 192.168.1 1 DR NO-NBR
1 192.168.2.1 192.168.2 1 DR NO-NBR
2 192.168.0.1 192.168 1 DR NO-NBR
3 192.168.1.1 register_vif0 1
Multicast Routing Table
Source Group RP-addr Flags
--------------------------(*,*,RP)--------------------------
Number of Groups: 0
Number of Cache MIRRORs: 0
01:03:47.493 SENT PIM v2 Bootstrap from 192.168.1.1 to 224.0.0.13
01:03:47.493 SENT PIM v2 Bootstrap from 192.168.2.1 to 224.0.0.13
01:03:47.494 SENT PIM v2 Bootstrap from 192.168.0.1 to 224.0.0.13
---------------------------RP-Set----------------------------
Current BSR address: 192.168.2.1
RP-address Incoming Group prefix Priority Holdtime
^C01:03:48.608 pimd version 2.1.8 exiting
01:03:48.608 SENT PIM v2 Hello from 192.168.1.1 to 224.0.0.13
01:03:48.609 SENT PIM v2 Hello from 192.168.2.1 to 224.0.0.13
01:03:48.609 SENT PIM v2 Hello from 192.168.0.1 to 224.0.0.13
6、组播测试
PC1主机做为服务器端发送组播数据,PC2主机做客户端接收组播数据。
(1)服务器端
抓PC1主机网络接口发送的组播包:
路由器后台抓eth2接口收到的组播包:
# tcpdump -i eth2 udp
(2)客户端
抓PC2主机网络接口IP包:
加入组播组时向路由发送的igmp包:
接收到的组播数据包:
路由器后台tcpdump抓ra0接口的UDP包:
# tcpdump -i ra0 udp
PC2主机Wlisten.exe工具加入组播组时路由器抓ra0接口的IGMP包:
PC2主机Wlisten.exe工具离开组播组时路由器抓ra0接口的IGMP包:
7、测试结果
结论:
(1)路由器内核在支持组播的环境,客户端PC机需要加入组播组才能收到本接口内的服务器端PC机发送的组播数据,没有应用程序转发组播数据情况下本接口内PC机客户端入加组播组后收不到其它接口PC机服务器端的发送的组播数据。
(2)路由器使用pimd方式或igmpproxy代理进行转发,客户端PC机需要加入组播群就能收到其它接口的服务器端PC机发送的组播数据。
(3)使用pimd方案没有上下行接口之分,加入配置文件的两个接口无论哪个接口做为组播服务器端/客户端,路由器均可转发组播数据。
(4)使用igmpproxy代理方案,只能上行接口下挂PC做为组播服务器端、下行接口下挂PC做为组播客户端,路由器才转发组播数据。