组播路由pimd 2.1.8

最近工作中涉及到了组播,对基本的概念,同时在linux下面对发送和接受组播的UDP程序进行验证。

主要涉及到组播数据包的路由,linux内核中普通的路由协议是不支持组播数据包的转发,因此需要研究支持组播数据包转发的路由。因此选用了pimd 2.1.8。同时研究组播时需要设计到IGMP协议,是跟组播路由器通信的协议,主要是用来报告自己加入的组播组和响应组播路由器的查询结果。其实现可以在linux内核源代码中找得到。后面会将对其进行分析。
分析总结文档在 总结文档pind

一:pimd其调试过程中的打印信息如下:

~ # ./pimd -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)
06:54:11.716 pimd version 2.1.8 starting
06:54:11.743 Got 262144 byte send buffer size in 0 iterations
06:54:11.747 Got 262144 byte recv buffer size in 0 iterations
06:54:11.752 Got 262144 byte send buffer size in 0 iterations
06:54:11.758 Got 262144 byte recv buffer size in 0 iterations
06:54:11.765 Getting vifs from kernel
06:54:11.767 v->uv_name:eth0
06:54:11.769 Installing eth0 (10.10.106.214 on subnet 10) as vif #0-7 - rate=0
06:54:11.776 v->uv_name:br0
06:54:11.779 Installing br0 (192.168.119.7 on subnet 192.168.119) as vif #1-9 - rate=0
06:54:11.787 Getting vifs from /etc/pimd.conf
06:54:11.792 /etc/pimd.conf cand_rp 
06:54:11.794 Local Cand-RP address is 192.168.119.7
06:54:11.799 Local Cand-RP priority is 20
06:54:11.803 Local Cand-RP advertisement period is 30 sec.
06:54:11.808 /etc/pimd.conf rp_address 
06:54:11.811 Added static RP: 10.10.106.214, group 224.0.0.0/8, prioriy 5
06:54:11.818 Adding prefix 224.0.0.0/4
06:54:11.821 data_rate_limit is 50000 (bits/s)
06:54:11.826 data_rate_interval is 20 (seconds)
06:54:11.830 reg_rate_limit is 50000 (bits/s)
06:54:11.834 reg_rate_interval is 20 (seconds)
06:54:11.838 Interface eth0 comes up; vif #0 now in service
06:54:11.843 join group 224.0.0.13 on interface 10.10.106.214 (ifindex 7)
06:54:11.850 join group 224.0.0.2 on interface 10.10.106.214 (ifindex 7)
06:54:11.857 SENT IGMP Membership Query     from 10.10.106.214   to 224.0.0.1
06:54:11.863 SENT PIM v2 Hello              from 10.10.106.214   to 224.0.0.13
06:54:11.870 Interface br0 comes up; vif #1 now in service
06:54:11.875 join group 224.0.0.13 on interface 192.168.119.7 (ifindex 9)
06:54:11.882 join group 224.0.0.2 on interface 192.168.119.7 (ifindex 9)
06:54:11.888 SENT IGMP Membership Query     from 192.168.119.7   to 224.0.0.1
06:54:11.895 SENT PIM v2 Hello              from 192.168.119.7   to 224.0.0.13
06:54:11.903 Interface register_vif0 comes up; vif #2 now in service


Virtual Interface Table
 Vif  Local-Address    Subnet               Thresh   Flags          Neighbors
   0  10.10.106.214    10                   1        DR NO-NBR      
   1  192.168.119.7    192.168.119          1        DR NO-NBR      
   2  10.10.106.214    register_vif0        1       
Multicast Routing Table
 Source          Group           RP-addr         Flags
--------------------------(*,*,RP)--------------------------
Number of Groups: 0
Number of Cache MIRRORs: 0
06:54:12.160 Cache miss, src 10.10.106.119, dst 224.1.2.3, iif 0
06:54:12.164 create group entry, group 224.1.2.3
06:54:12.168 grp_mask_list is null................
06:54:12.173 create_grpentry................
06:54:12.177 mrtentry_ptr is null  iif=0.......
06:54:12.383 create group entry, group 239.255.255.250
06:54:12.387 grp_mask_list is null................
06:54:12.391 create_grpentry................
06:54:15.594 create group entry, group 224.0.1.24
06:54:15.597 grp_mask_list is null................
06:54:15.602 create_grpentry................
06:54:15.606 create group entry, group 239.255.255.254
06:54:15.611 grp_mask_list is null................
06:54:15.616 create_grpentry................
06:54:16.394 create group entry, group 224.1.1.1
06:54:16.397 grp_mask_list is null................
06:54:16.401 create_grpentry................
Virtual Interface Table
 Vif  Local-Address    Subnet               Thresh   Flags          Neighbors
   0  10.10.106.214    10                   1        DR NO-NBR      
   1  192.168.119.7    192.168.119          1        DR NO-NBR      
   2  10.10.106.214    register_vif0        1       


Multicast Routing Table
 Source          Group           RP-addr         Flags
---------------------------(S,G)----------------------------
 10.10.106.119   224.1.2.3       10.10.106.214   CACHE SG
Joined   oifs: ..j                 
Pruned   oifs: ...                 
Leaves   oifs: ...                 
Asserted oifs: ...                 
Outgoing oifs: ..o                 
Incoming     : I..                 

TIMERS:  Entry   JP   RS Assert VIFS:  0  1  2
           195    5    0    0         0 0 0
--------------------------(*,*,RP)--------------------------
Number of Groups: 1
Number of Cache MIRRORs: 1
---------------------------RP-Set----------------------------
Current BSR address: 0.0.0.0
RP-address      Incoming   Group prefix   Priority   Holdtime 
10.10.106.214   2          224/8          1          65535
enet1 port1 up
ATHR_GMAC: Enet Unit:1 PHY:1 is UP RGMii 100Mbps full duplex
ATHR_GMAC: done cfg2 0x7215 ifctl 0x0 miictrl  
WASP ----> S27 PHY MDIO
Setting Drop CRC Errors, Pause Frames and Length Error frames 


Virtual Interface Table
 Vif  Local-Address    Subnet               Thresh   Flags          Neighbors
   0  10.10.106.214    10                   1        DR NO-NBR      
   1  192.168.119.7    192.168.119          1        DR NO-NBR      
   2  10.10.106.214    register_vif0        1       


Multicast Routing Table
 Source          Group           RP-addr         Flags
---------------------------(S,G)----------------------------
 10.10.106.119   224.1.2.3       10.10.106.214   CACHE SG
Joined   oifs: ..j                 
Pruned   oifs: ...                 
Leaves   oifs: ...                 
Asserted oifs: ...                 
Outgoing oifs: ..o                 
Incoming     : I..                 

TIMERS:  Entry   JP   RS Assert VIFS:  0  1  2
           190    60    0    0         0 0 0
--------------------------(*,*,RP)--------------------------
Number of Groups: 1
Number of Cache MIRRORs: 1


---------------------------RP-Set----------------------------
Current BSR address: 0.0.0.0
RP-address      Incoming   Group prefix   Priority   Holdtime 
10.10.106.214   2          224/8          1          65535
06:55:42.946 SENT PIM v2 Hello              from 10.10.106.214   to 224.0.0.13
06:55:42.951 SENT PIM v2 Hello              from 192.168.119.7   to 224.0.0.13
Virtual Interface Table
 Vif  Local-Address    Subnet               Thresh   Flags          Neighbors
   0  10.10.106.214    10                   1        DR NO-NBR      
   1  192.168.119.7    192.168.119          1        DR NO-NBR      
   2  10.10.106.214    register_vif0        1       


Multicast Routing Table
 Source          Group           RP-addr         Flags
---------------------------(S,G)----------------------------
 10.10.106.119   224.1.2.3       10.10.106.214   CACHE SG
Joined   oifs: ..j                 
Pruned   oifs: ...                 
Leaves   oifs: ...                 
Asserted oifs: ...                 
Outgoing oifs: ..o                 
Incoming     : I..                 

TIMERS:  Entry   JP   RS Assert VIFS:  0  1  2
           205    55    0    0         0 0 0
--------------------------(*,*,RP)--------------------------
Number of Groups: 1
Number of Cache MIRRORs: 1
---------------------------RP-Set----------------------------
Current BSR address: 0.0.0.0
RP-address      Incoming   Group prefix   Priority   Holdtime 
10.10.106.214   2          224/8          1          65535
06:55:43.222 pimd version 2.1.8 exiting
06:55:43.224 SENT PIM v2 Hello              from 10.10.106.214   to 224.0.0.13

06:55:43.231 SENT PIM v2 Hello              from 192.168.119.7   to 224.0.0.13:

二:IGMP涉及到的数据包

组播路由pimd 2.1.8_第1张图片

上面的数据包中可以看到,IP:192.168.119.7为组播的客户端,其申请加入到了244.1.2.3这个组播组中,组播程序会周期性的报告自己的状态信息给组播服务端,

其数据包格式如下:

组播路由pimd 2.1.8_第2张图片

同时也会发送差送请求,其数据包格式如下:

组播路由pimd 2.1.8_第3张图片











你可能感兴趣的:(组播路由pimd 2.1.8)