组播路由pimd 2.1.8

本文详细介绍了组播的基本概念及其在Linux系统中的应用,包括支持组播数据包转发的路由协议pimd的调试过程、组播时涉及到的IGMP协议的实现与分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近工作中涉及到了组播,对基本的概念,同时在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涉及到的数据包


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

其数据包格式如下:


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












### 回答1pimd-2.1.8.tar.bz2是一款在Linux系统上运行的路由协议软件。该软件可以帮助实现在网络中的传输,使网络中的多个终端可以同步收听、观看同一个广节目或数据包。下载该软件需要先到官方网站或其他可信的软件下载站点,然后在下载页面上找到pimd-2.1.8.tar.bz2的下载链接,点击链接即可下载。下载完成后,需要解压缩并将文件放置于系统路径之下,然后通过命令行启动该软件即可使用。在使用该软件时,需要对网络拓扑结构和路由表进行一定的配置和调整,以确保数据的正确传输和接收。pimd-2.1.8.tar.bz2软件具有高效、稳定的路由协议算法,能够与各种网络设备、交换机等硬件设备兼容,非常适合于搭建高性能的应用系统。 ### 回答2pimd-2.1.8.tar.bz2是一个文件压缩包,其中包含PIMD软件的源代码和相关文件。PIMD是一种用于IPv4多协议的路由协议,它可以负责将多数据包从发送端路由到接收端。 要下载这个文件,可以在网上搜索pimd-2.1.8.tar.bz2,并在相应的网站上进行下载。下载完成后,使用适当的文件解压工具将文件进行解压缩。解压缩后,可以进入所解压的目录,找到源代码文件,并根据需要进行修改和编译。 使用PIMD路由协议可以实现高效的多传输,尤其是在广域网环境下。因此,对于需要进行多传输的网络应用,PIMD是一个非常重要的路由协议。通过下载、安装和配置PIMD软件,可以轻松实现多传输功能,提高网络应用的性能和效率。 ### 回答3: pimd-2.1.8.tar.bz2是一个网络协议软件的压缩包,主要用于网络通信。如果需要使用该软件,则可以通过网络下载该压缩包,并解压缩到本地计算机环境中。在下载过程中,需要注意下载源的安全性和可靠性,以免下载到病毒或恶意软件。解压缩后,可以参考软件的在线帮助文档或者官方文档,根据需要进行配置和使用。在使用过程中,也需要注意保持软件的更新和安全性,以及及时处理软件的错误和异常情况。对于不熟悉该软件的用户而言,可以寻求专业人员的帮助和建议。因此,对于需要使用pimd-2.1.8软件的用户而言,下载和使用前需要全面了解软件的性质和操作步骤,以免造成不必要的损失和问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家有工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值