抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

基于华三网络学习笔记(理论)

组播概述

组播用于实现点到多点的传输。

  • 效率高,分布式应用,多点传输
  • 数据源仅发送一份数据包,链路仅传输一份数据包,只有组播组中接受者能收到数据包
  • 尽最大努力交付
  • 无拥塞控制
  • 数据报重复
  • 数据包无序交付

组播需求问题与相关技术:

  1. 如何标识接受者—–组播地址机制
  2. 接受者动态加入或离开组播组—–组成员关系管理
  3. 组播报文如何在网络中转发—-组播报文转发过程
  4. 组播报文转发路径(组播转发树)构建—–组播路由协议

组播地址:
组播地址范围:224.0.0.0---239.255.255.255

  • 本地协议预留组播地址:224.0.0.0---224.0.0.255,属于局部范围,不会被路由器转发
  • 用户组播地址:224.0.1.0---238.255.255.255,用户可用组播地址,全网有效
    232.0.0.0/8为 SSM 组地址,其余属于 ASM 组
  • 本地管理组地址:239.0.0.0---239.255.255.255,特定本地范围有效,属于 ASM 组
  • 组播 MAC 地址:以太网:01-00-5e-xx-xx-xx

组播地址映射:
组播 MAC 地址中高 24 位固定为0x01005E,第 25 位为 0,低 23 位来自组播 IP 地址的低 23 位。
组播 IP 地址的高 4 位为1110,标识组播,而低 28 位只有 23 位被映射到组播 MAC 地址,即有 5 位的丢失,一共会有2^5即 32 个 IP 地址公用一个组播 MAC,也就是可能会接受所在组播组外的其他组播数据。

举例:

组播IP地址为:224.231.123.14
换成二进制:11100000 11100111 01111011 00001110
组播MAC地址高24位为01005E,即
0000 0001 0000 0000 0101 1110

1110|00001|11001110111101100001110 组播IP地址,共32位
000000010000000001011110|0|11001110111101100001110 组播MAC地址,共48位
组播IP地址中第二部分,案例中00001部分,在MAC地址中没有任何对应,一共有32种可能

组播组管理协议

常用的组播组管理协议为 IGMP(Internet Group Management Protocol 因特网组管理协议)。
主机通过 IGMP 通知路由器加入或离开某个组播组,路由器通过 IGMP 周期查询组播组成员是否处于活动状态,收集成员关系并维护

IGMP 有三个版本:

  • IGMPv1:定义了基本的组成员查询和报告过程
  • IGMPv2:添加了组成员快速离开机制
  • IGMPv3:添加了成员可指定接受或拒绝组播源的报文,支持 SSM 模型

IGMPv2

IGMP 报文:

  • Type:IGMP 报文类型,包含Membership QueryReportLeave Group
  • Max Reps Time:最大响应时间,只有Membership Query使用该字段
  • checksum:校验和
  • Group Address:组地址。不同报文填的不同。普遍查询填 0,特定组查询填指定组播组地址,报告报文和离开报文填组播组地址

IGMPv2 原理:

  1. 当同一网段中有多个 IGMP 路由器时,通过查询器选举机制(最小接口 IP)选出唯一查询器。
  2. 查询器周期发送普遍查询消息General Query,目的地址224.0.0.1TTL为 1,进行组成员关系查询。主机收到后发送报告消息Report响应。也有称为Membership Report,但本篇统一为Report
  3. 主机若要加入组播组,可直接向查询器发送Report,离开组播组时,直接发送Leave,目的地址为224.0.0.2,通告所有组播路由器。查询器收到Leave后,会发送特定组查询消息Group-Specific Query确定该组所有成员是否都离开。
  4. 若是加入,查询器则会查看组播转发表项,若不存在就添加,表项为(组播源IP地址,组播组IP),若为*表示任意源。组播转发表项还包含:组播指定报文的入接口、出接口等

案例完整流程:

IGMP Snooping:解决二层组播。原因:组播数据在二层以广播发送
主机发往 IGMP 查询器的报告消息经过交换机时,交换机会监听并将组播 MAC 和端口做映射,建立表项。当交换机收到组播数据时,就按表项转发,也就只向组成员发送了

IGMPv3 概述: 1.可对源过滤 2.新的报文类型与格式 3.报告报文的组播地址为 224.0.0.22 4.取消成员报告抑制机制
IGMPv3 主机为接口上每个组播组维护一个表项(组地址,过滤模式,源列表)
过滤模式:INCLUDE:只接收来自源列表的组播源的数据包
EXCLUDE:只接收不在源列表的组播源的数据包
三种状态:当前状态,过滤模式改变状态,源列表改变状态。对应三种记录
当主机接口维护的组状态变化时,会主动发送组记录类型为过滤模型变化或源列表变化的报告报文。当接收到查询报文时,会响应记录类型为当前状态的报告报文

组播分发树模型:是组播数据的转发数据,分为最短路径树(S,G)和共享树(*,G)
组播转发机制:逆向路径转发
组播路由协议:域内:DVMRP(基于路径矢量协议)、MOSPF(基于 OSPF)、PIM 域间:MSDP、MBGP
域内协议:基于 SPT:PIM DM、DVMRP、MOSPF 基于 RPT:PIM SM
组播模型:ASM 任意信源组播:接收端只选择加入组播组,不能选择组播源
SSM 指定信源组播:接收端可以指定组播源

组播分发树:由组播路由协议建立的无环传输路径
SPT 最短路径树:组播源到接受者的最短路径。要为每个组播源建一棵最短路径树
缺点:路由器必须为每个组播源保存路由信息
RPT 共享树:以某个路由器作为树根,该路由器称为汇聚点 RP,以 RP 为树根建立到每个接收者的最短路径树。所有组播源和接收者都使用这棵树收发报文。组播源先向 RP 发数据,再由 RP 发送到所有接收者。
优点:路由器保留的路由信息很少
缺点:数据报文先要经过 RP,再到达接收者,对 RP 的可靠性和性能要求高
组播报文转发机制
RPF 逆向路径转发
原因:组播报文是发送给一组接收者的,路由器收到组播报文后,必须根据报文的源地址确定正确的入接口和下游方向,然后向下游方向转发。该过程就是 RPF。
目的:确保组播数据沿正确路径传输,避免出现环路
检查过程:在单播路由表上查找组播源(分发树为 SPT)或 RP(分发树为 RPT)对应的 RPF 接口,若数据包是在 RPF 端口接收到的,则 RPF 检查成功,转发数据包。否则检查失败,直接丢弃
PIM 协议无关组播:与单播路由无关,但仍然依靠单播路由表进行组播路由。使用 RPF 转发报文。分为两种模式:PIM-DM(密集模式),PIM-SM(稀疏模式)
PIM-DM:用于小型网络中接收者较多且密集的情况,采用“推”方式将流量泛洪。
邻居发现:路由器周期发送 PIM Hello 消息,发现其他 PIM 路由器,建立邻居关系,判断叶子网络,选举 DR(若运行的是 IGMPv1,通过 Hello 选举,其他版本就不需要选举 DR)。
扩散-剪枝:将组播数据扩散到每个节点,每个节点创建(S,G)表项(包含出接口(除 RPF 接口外所有连接 PIM-DM 邻居或组播组成员的接口)与入接口列表),若节点没有该组播组成员,就向上游发送 Prune 剪枝消息,若共享网段有路由器上有接收者,就向上游发送 Join 消息,覆盖其他路由器发送的 Prune。 扩散-剪枝过程周期进行。最终形成 SPT。
Prune 消息发送情况:1.若路由器(S,G)表中出接口表为空 2.路由器从非 RPF 接口收到组播报文,会触发断言 Assert 机制,断言失败一方会向成功一方发送 Prune 消息。
断言 Assert:若同一网段有多个组播路由器,相同报文可能会被重复发送,通过断言选取网段唯一转发组播数据的路由器。
过程:路由器在重复接收到报文的接口上发送 Assert 消息,包含 S,G,单播路由的优先级,开销 Metric。先比较路由优先级(高的胜),再比较开销(小的胜),再比较本地接口 IP 地址(大的胜)。当一台路由器上游接口故障时,该路由器将 Metric 值设为无穷大并广播 Assert,引发新一轮断言,保证流量不会长时间中断。
状态刷新机制:与组播源直连的路由器发送 State Refresh,其他路由器收到后重置剪枝超时定时器,并向所有连接 PIM-DM 邻居的路由器发送该消息,对于处于转发的接口,消息中剪枝位为 0,处于剪枝的接口,剪枝位为 1。周期发送该消息可使剪枝状态的接口维持状态,减少不必要的扩散。
嫁接:当被剪枝的节点上出现接收者时,节点会主动向上游发送嫁接 Graft 消息,上游收到后回复 Graft Ack 消息确认,节点从剪枝状态变为转发状态。两个消息都是单播发送。
PIM-SM:用于中大型网络中,组播组成员相对分散,范围较广,采用“拉”方式。核心任务是构造维护 RPT,选出 RP 作为共享树的根。
过程:组播源侧 DR 向 RP 注册,将注册报文单播发给 RP,该报文到达 RP 后触发建立 SPT,组播源把数据沿 SPT 发给 RP,再由 RP 沿 RPT 发给接收者

ASM 模型:任意源模型。任何发送者都可作为组播源向组播组发数据,接收者无法预先知道组播源位置,但可以在任意时间加入离开组播组
SSM 模型:指定信源组播模型。接收端能指定组播源。SSM 模型无需 RP,无需构建 RPT,无需组播源注册过程。