卷2 第14章 IP多播选路

14.1 引言

多播选路在mroute守护程序中实现,内核支持转发。

mroute版本

版本说明
1.24.3BSD Tahoe
2.04.4BSD/Net/3
3.3SunOS 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_thresholdTTL阈值
v_lcl_addr本地地址
v_rmt_addr远端地址
v_ifp接口指针
v_lcl_grps组成员列表

多播隧道

  • 使用LSRR选项
  • 封装多播数据报

14.6 IGMP(续)

  • mroute处理IGMP报告
  • 维护组成员表

14.7 多播选路

算法

  • RPB:逆向路径广播
  • TRPB:截断RPB
  • RPM:逆向路径多播(修剪)

路由表(mrt结构)

成员说明
mrtc_origin源地址
mrtc_parent父接口
mrtc_children子接口位图
mrtc_leaves叶子位图

14.8 多播转发:ip_mforward

  • 处理隧道输入
  • 检查TTL和组
  • 转发到输出接口

14.9 小结

多播选路通过虚拟接口表管理。RPB/TRPB/RPM算法支持多播路由。