卷2 第14章 IP多播选路
14.1 引言
多播选路在mroute守护程序中实现,内核支持转发。
mroute版本
| 版本 | 说明 |
|---|
| 1.2 | 4.3BSD Tahoe |
| 2.0 | 4.4BSD/Net/3 |
| 3.3 | SunOS 4.1.3 |
14.2 代码介绍
netinet/ip_mroute.h:多播结构
netinet/ip_mroute.c:选路函数
netinet/raw_ip.c:选路选项
14.3 多播输出处理(续)
14.4 mroute守护程序
插口选项
| 选项 | 说明 |
|---|
| DVMRP_INIT | 初始化 |
| DVMRP_DONE | 关闭 |
| DVMRP_ADD_VIF | 添加虚拟接口 |
| DVMRP_DEL_VIF | 删除虚拟接口 |
| DVMRP_ADD_LGRP | 添加组 |
| DVMRP_DEL_LGRP | 删除组 |
| DVMRP_ADD_MRT | 添加路由 |
| DVMRP_DEL_MRT | 删除路由 |
14.5 虚拟接口
vif结构
| 成员 | 说明 |
|---|
| v_flags | 标志(隧道) |
| v_threshold | TTL阈值 |
| v_lcl_addr | 本地地址 |
| v_rmt_addr | 远端地址 |
| v_ifp | 接口指针 |
| v_lcl_grps | 组成员列表 |
多播隧道
14.6 IGMP(续)
14.7 多播选路
算法
- RPB:逆向路径广播
- TRPB:截断RPB
- RPM:逆向路径多播(修剪)
路由表(mrt结构)
| 成员 | 说明 |
|---|
| mrtc_origin | 源地址 |
| mrtc_parent | 父接口 |
| mrtc_children | 子接口位图 |
| mrtc_leaves | 叶子位图 |
14.8 多播转发:ip_mforward
14.9 小结
多播选路通过虚拟接口表管理。RPB/TRPB/RPM算法支持多播路由。