路由器组播测试

 

路由器模拟两接口组播测试。

使用路由模拟两个接口来测试,测试过程如下:

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做为组播客户端,路由器才转发组播数据。