组播相对单播和广播有如下优势: 相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。 组播(Multicast)可以很好的解决点到多点的数据传输。IP 组播技术在 ISP 提供的互联网信息服务中已经得到了应用。例如:在线直播、网络电视、远程教育、远程医疗、网络电台和实时视/音频会议等。
问题:组播地址的范围是多少?协议组播地址有哪些?特殊的组播地址有哪些?
永久组地址:224.0.0.0--224.0.0.255
ASM组地址:224.0.1.0--231.255.255.255、233.0.0.0--238.255.255.255
SSM组地址:232.0.0.0--232.255.255.255
常见的永久组地址
224.0.0.1 所有节点 224.0.0.2 所有路由器 224.0.0.5 OSPF 224.0.0.6 OSPF(DR/BDR) 224.0.0.9 RIP 224.0.0.13 PIM 224.0.0.18 VRRP 224.0.0.22 IGMPV3
问题:什么叫ASM?什么叫 SSM?
ASM 模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合,任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。ASM 模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM 地址只能被一种组播应用使用。如果有两种不同的应用程序不能使用同一个 ASM 组地址发送数据。
SSM 模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时, 可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据。加入组播组以后, 主机只会收到指定源发送到该组的数据。SSM 模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的 SSM 地址来区分。不同的源之间可以使用相同的组地址。
问题:组播地址能配置给主机使用吗?
组播地址不能配置给主机使用。
问题:二层组播地址和三层组播地址的对应关系是什么?IPv6 的呢?
二层组播地址和三层组播地址的映射: IANA 规定,IPv4 组播 MAC 地址的高 24 位为 0x01005e,第 25 位为 0,低 23 位为 IPv4 组播地址的低 23 位,映射关系如下图所示。例如组播组地址 224.0.1.1 对应的组播 MAC 地址为 01-00-5e-00-01-01。IPv4 组播地址的前 4 位是固定的 1110, 对应组播 MAC 地址的高 25 位,后 28 位中只有 23 位被映射到 MAC 地址,因此丢失了5 位的地址信息,直接结果是有 32 个 IPv4 组播地址映射到同一 MAC 地址上。
IPv6 组播 MAC 地址的高 16 位为 0x3333,低 32 位为 IPv6 组播地址的低 32 位。下图是 IPv6 组播地址 FF01::1111:1 的 MAC 地址映射举例。
问题:IGMP 的作用是什么?哪一层的协议?
IGMP 用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP 通过在接收者主机和组播路由器之间交互 IGMP 报文实现组成员管理功能,IGMP 报文封装在 IP 报文中,协议号是2
问题:IGMPV1 工作原理是什么?
一、普遍组查询和响应机制
通过普遍组查询和响应,IGMP查询器可以了解到该网段内哪些组播组存在成员。
过程如下:
- IGMP查询器发送目的地址为224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;收到该查询报文的组成员启动定时器。普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省情况下每隔60秒发送一次。HostA和HostB是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。
- 第一个定时器超时的组成员发送针对该组的报告报文。假设HostA上的Timer-G1首先超时,HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。
- IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。
二、新组成员加入机制
过程如下:
- 主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。
- IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。
三、成员离组机制
IGMPv1没有专门定义离开组的报文。主机离开组播组后,便不会再对普遍组查询报文做出回应。
- 假设HostA想要退出组播组G1HostA收到IGMP查询器发送的普遍组查询报文时,不再发送针对G1的报告报文。由于网段内还存在G1组成员HostB,HostB会向IGMP查询器发送针对G1的报告报文,因此IGMP查询器感知不到HostA的离开。
- 假设HostC想要退出组播组G2HostC收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的组播转发表项。
问题:普遍组查询谁来发送?怎么选举出来的?多久发一次?目的地址是多少?
普通组查询是查询器发送的。
IGMPV1 的查询器是由组播路由协议 PIM 选举出唯一的组播信息转发者(Assert Winner 或 DR)。
普遍组查询报文缺省是每 60 秒发一次。报文的目的 IP 是 224.0.0.1。
问题:成员抑制功能干什么用的?最大响应时间MRT为10s 有什么不好的地方?
成员抑制功能是为了减少网络中的流量。MRT 的最大值为 10S,无法灵活控制接收者对查询报文响应的速度。
问题:主机离组会干什么?一台主机离组查询器会发删组信息吗?
主机离组不会发送任何报文,静悄悄离开。
问题:IGMPV2 中,查询器怎么选举?备查询器多久能感知到主查询器消失?
IGMPV2 中,查询器为 IP 地址小的设备。默认是 125 秒备查询器能够感知到主查询器消失。
问题:MRT 有什么变化?新增了什么功能?特定组查询多久发送一次?这样做有什么好处?
MRT 可以配置。IGMPV2 新增了离组报文和特定组查询报文。特定组查询报文每秒发一次,共发两次。这样做可以迅速确定还有没有同组的其它接收者。
问题:IGMPV2 报文有哪些?地址多少?
IGMPV2 有普遍组查询报文,报文目的 IP 为 224.0.0.1
报告报文,目的 IP 为要加入的组地址
离组报文,报文的目的 IP 是 224.0.0.2
特定组查询报文,目的 IP 为要查询的组地址
问题:Last report 机制存在的意义是什么?为何在ensp 上抓包没有效果?开启了 last report 成员抑制功能是否还存在?为什么?
路由器上记录了最后一次发送报告报文的主机,该主机就是 last repoter。在该组中,只有 last repoter 要离组时才会向路由器发送离组报文,同组的其它接收者离组时不发送离组报文,也是为了减少网络中的流量。
在具体实现中,如果主机没有足够的资源来记录谁是 last repoter,它在离组时还是会发送离组报文。eNSP 上看到就是这样的效果。有 laste report 机制, 成员抑制功能还存在,它们之间不相互影响。
问题:IGMPv1 的查询器如果发生故障,另一个组播路由器需要多久才能成为新的查询器周期性发送查询报文?
IGMPv1 的查询器如果发生故障,另一个组播路由器需要 105 秒才能成为新的查询器。由于 IGMPv1 的查询器是靠 PIM 来选取的,PIM 的邻居关系 hold time 为105 秒。
问题:运行了 IGMPv1 的接口是否一定要开启 PIM 协议?
运行了 IGMPv1 的接口一定要开启 PIM 协议才能正常工作。
问题:如果主机是组播组的最后一个成员,但是由于主机掉电,无法发送离开报文时,组播路由器怎么办?
如果主机是组播组的最后一个成员,但是由于主机掉电,无法发送离开报文时,组播路由器会等待组成员关系定时器超时,也就是最长会等 130 秒后,删除组成员关系。
问题:IGMPv3 有哪些报文?还有 leave 报文吗?为什么?主机是不是可以选择源?
IGMPv3 有普遍组查询报文、特定源组查询报文、特定组查询报文、成员报告报文。
取消了离组报文,可以使用加入的组播组为空的报告报文来实现离组。
主机在接收组播数据的时候可以选择组播源。
问题:IGMPv3 有哪些组记录格式?分别表示什么意思?
IGMPv3 组记录的格式包括:组记录的类型。共分为三大类。 一、当前状态报告,用于对查询报文进行响应,通告自己目前的状态,共两种:
- MODE_IS_INCLUDE,表示接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该报文无效;
- MODE_IS_EXCLUDE,表示不接收源地址列表包含的源发往该组的组播数据。
二、过滤模式改变报告,当组和源的关系在 INCLUDE 和 EXCLUDE 之间切换时,会通告过滤模式发生变化,共两种:
- CHANGE_TO_INCLUDE_MODE,表示过滤模式由 EXCLUDE 转换到 INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机将离开组播组;
- CHANGE_TO_EXCLUDE_MODE,表示过滤模式由 INCLUDE 转换到 EXCLUDE,拒绝源地址列表包含的新组播源发往该组的组播数据。
三、源列表改变报告,当指定源发生改变时,会通告源列表发生变化,共两种:
- ALLOW_NEW_SOURCES,表示在现有的基础上,需要接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为 INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为 EXCLUDE,则从现有阻塞源列表中删除这些组播源;
- BLOCK_OLD_SOURCES,表示在现有的基础上,不再接收源地址列表包含的组播源发往该组播组的组播数据。如果当前对应关系为 INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为 EXCLUDE,则向现有源列表中添加这些组播源。
问题:IGMPv3 还有成员抑制功能吗?为什么?
IGMPv3 取消了成员抑制功能,原因如下: 出于统计的目的,路由器可能需要跟踪每个接收主机的状态,所以不能抑制主机发送报告报文。 交换机开启了 IGMP Snooping 后,交换机不会向其它端口转发成员报告报文,所以无法实现抑制功能。 取消成员抑制功能主机需要处理的信息更少,可以简化状态机的实现。 在 V1 和 V2 版本中,一条报告消息只携带一个组记录,可以很好的实现抑制功能,而 V3 中一条报告消息里携带了多个组记录,无法针对某个组进行抑制。
问题:IPv6 中怎么实现加组的?有哪些版本?与 IPv4 的版本有什么不同?用什么报文实现的?目的地址是多少?
IPv6 使用 MLD 协议实现。组播侦听者发现协议 MLD(Multicast Listener Discovery)是负责 IPv6 组播成员管理的协议,用来在 IPv6 成员主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。
到目前为止,MLD 有两个版本:MLDv1 版本对应 IGMPv2,MLDv2 版本对应 IGMPv3。
它是通过 ICMPv6 报文实现的。MLDv1 查询报文的目的 IP 是 FF02::1,特定组查询和报告报文的目的 IP 是要加入的组地址,离组报文的目的 IP 为 FF02::2。 MLDv2 的查询报文的目的 IP 为 FF02::1,报告报文的目的 IP 为 FF02::16。
问题:IGMP Snooping 的作用是什么?没有开启 snooping 的情况交换机怎么处理组播报文?
当 Router 将组播报文转发至 Switch 以后,Switch 负责将组播报文转发给组播用户。由于组播报文的目的地址为组播组地址,在二层设备上是学习不到这一类MAC 表项的,因此组播报文就会在所有接口进行广播,和它在同一广播域内的组播成员和非组播成员都能收到组播报文。这样不但浪费了网络带宽,而且影响了网络信息安全。
问题:IGMP Snooping工作原理是什么样的?
IGMP Snooping是二层组播的基本功能,可以实现组播数据在数据链路层的转发和控制。当主机和上游三层设备之间传递的IGMP协议报文通过二层组播设备时,IGMP Snooping分析报文携带的信息,根据这些信息建立和维护二层组播转发表,从而指导组播数据在数据链路层按需转发。
问题:端口角色有哪些?怎么选举?
端口角色包括:路由器端口和成员端口。 路由端口可以手工配置,或者收到源地址不为 0.0.0.0 的 IGMP 普遍组查询报文或 PIM Hello 报文(三层组播设备的 PIM 接口向外发送的用于发现并维持邻居关系的报文)的接口动态生成。 成员端口可以手工配置或者根据收到成员报告报文的接口动态生成。
问题:IGMP Snooping设备收到普遍组查询怎么处理?为什么需要向路由器端口端口转发?收到report 报文怎么处理?需不需要向成员端口转发?为什么?收到leave 报文和特定组查询报文又怎么转发?
收到查询查询器发的普遍组查询报文会向 VLAN 内除接收接口外的其他所有接口转发
收到成员报告报文后,交换机根据报文的组地址构建或刷新二层组播表项, 同时向路由器端口转发,确保路由器收到报告报文。不需要向其它成员端口转发, 如果转发至其它成员端口,相应的接收者收到报告报文后,同组抑制功能会使接收者不再发送报告报文,从而无法正确构建二层组播转发表项。
收到 leave 报文,如果二层交换机不存在该组对应的转发表项,或者该组对应转发表项的出接口列表中不包含接收接口,二层交换机不转发该报文,将其直接丢弃。否则,二层交换机会向路由器端口转发报文。
收到特定组查询报文后向有特定组成同的端口转发。
问题:开启Snooping 功能还有成员抑制功能吗?消耗交换机性能怎么理解?对查询器会不会有什么影响?收到组播流量是不是根据 MAC 地址表转发的?
开启 snooping 功能后无法进行成员抑制。
消耗交换机性能指的是交换机要用更多的资源去读取 IGMP 报文,构建二层组播转发表项。
对查询器没有影响。 开启 snooping 功能后,交换机收到组播流量后,不是按照传统的 MAC 地址表转发的。是按照二层组播转发表项(组播 MAC 地址表或者组播 IP 地址)来转发组播数据的。
问题:有了 Snooping 为什么还需要 Snooping proxy?
二者的作用不同:IGMP Snooping 的使用是为了减轻组播数据在二层交换泛洪带来的压力,IGMP Snooping proxy 而为了减少用户主机所在网段内的 IGMP 协议报文数量,使交换机其能够代理上游三层设备向下游主机发送 IGMP 查询报文,同时代理下游主机来向上游三层设备发送成员关系报告报文。对接收者来说,它相当于查询器,对查询器来说它相当于接收者。
问题:IGMP Snooping设备收到普查报文和 snooping 处理有啥不同?报告报文呢?leave 报文呢?特定组查询报文呢?
开启了 IGMP Snooping proxy 后,交换机收到普查报文除了向本 VLAN 内除接收接口以外的所有接口发送 IGMP 普遍组查询报文外,还会根据本地维护的组成员关系向所有路由器端口发送报告报文。
收到报告报文,若不存在该组对应的转发表项,则创建转发表项,然后路由器端口发送该组的报告报文;若已存在该组对应的转发表项,则重置其老化定时器;若已存在该组对应的转发表项,但其出接口列表中不包含该接收接口,则将该接口作为动态成员端口添加到出接口列表中,并启动其老化定时器。
收到离组报文,向接收接口发送针对该组的特定组查询报文。只有当删除某组播组对应转发表项中的最后一个成员端口时,才会向所有路由器端口发送该组的离开报文。
收到特定组查询报文直接丢弃。当交换机下某个组最后一个接收者离开后,交换机会删除相应的转发表项,然后向路由器端口发送该组的离开报文,此时路由器才会发送特定组查询报文,这时交换机已经没有任何关于该组的接收者,所以它直接丢弃该特定组查询报文。
问题:交换机如何区别 IGMP 组播报文和普通报文?
设备根据 IP 头的协议号来判断,如果协议号为 2,说明里面封装的是 IGMP 报文。
问题:IGMP SSM Mapping 的作用和实现机制?
SSM(Source-Specific Multicast)称为指定源组播,要求路由器能了解成员主机加入组播组时所指定的组播源。如果成员主机上运行 IGMPv3,可以在 IGMPv3
报告报文中直接指定组播源地址。但是某些情况下,成员主机只能运行 IGMPv1 或IGMPv2,为了使其也能够使用 SSM 服务,路由器上需要提供 IGMP SSM Mapping 功能2、实现机制:通过在路由器上静态配置SSM 地址的映射规则,将IGMPv1 和IGMPv2报告报文中的(*, G)信息转化为对应的(G, INCLUDE, (S1, S2...))信息,以提供SSM 组播服务。
问题:路由器是否支持报文按组播 MAC 地址转发?
不支持
问题:组播中有哪几种流量模型?
ASM 模型: ASM 模型仅针对组地址提供组播分发。一个组播组地址作为一个网络服务的集合,任何源发布到该组地址的数据得到同样的服务。接收者主机加入组播组以后可以接收到任意源发送到该组的数据。 ASM 模型要求组地址必须整个组播网络中唯一。“唯一”指的是同一时刻一个ASM 地址只能被一种组播应用使用。如果有两种不同的应用程序不能使用同一个 ASM 组地址发送数据 SSM 模型: SSM 模型针对特定源和组的绑定数据流提供服务,接收者主机在加入组播组时, 可以指定只接收哪些源的数据或指定拒绝接收来自哪些源的数据。加入组播组以后, 主机只会收到指定源发送到该组的数据。 SSM 模型对组地址不再要求全网唯一,只需要每个组播源保持唯一。这里的“唯一”指的是同一个源上不同的组播应用必须使用不同的 SSM 地址来区分。不同的源之间可以使用相同的组地址。
问题:什么叫做PIM?PIM 的作用是什么?为何需要PIM?
PIM(Protocol Independent Multicast)称为协议无关组播。这里的协议无关指的是与单播路由协议无关,即 PIM 不需要维护专门的单播路由信息。作为组播路由解决方案,它直接利用单播路由表的路由信息,对组播报文执行 RPF(Reverse Path Forwarding,逆向路径转发)检查,检查通过后创建组播路由表项,从而转发组播报文
使用 PIM 协议构建组播转发表,转发组播数据。
问题:Hello 报文的作用是什么?多久发一次?目的地址是多少?
Hello 报文的作用:发现 PIM 邻居、协调各项 PIM 协议报文参数、维持邻居关系。
默认 30 秒发一次,目的 IP 为 224.0.0.13。
问题:什么时候开始流量扩散?
当 PIM-DM 网络中出现活跃的组播源之后,组播源发送的组播报文将在全网内扩散。
问题:触发嫁接报文的条件?
当叶子路由器发现下游有接收者要加入某个组的时候,它就会向上游发送嫁接报文。
问题:剪枝一定向上游剪枝吗?剪枝的条件是什么?
剪枝不一定是向上游剪枝,在剪枝的场景中就不是向上游剪枝。
当 PIM 路由器接收到组播报文后,RPF 检查通过,如果下游网段没有组播报文需求,也就是没有接收者,它就会向上游发送剪枝报文。
问题:触发断言loser 阻塞自己接口为何要去剪枝 winner 的下游接口?
由于断言的loser 端口不能确定本网段是否还有其它设备需要接收组播数据, 所以它会试图去剪枝 winner 的下游接口。
问题:RPF 检测的作用是什么?RPF 检测依据是什么?最长掩码匹配默认开不开启?静态组播路由的配置命令什么样?
路由器收到一份组播报文后,会根据报文的源地址通过单播路由表查找到达“报文源”的路由,查看到“报文源”的路由表项的出接口是否与收到组播报文的入接口一致。如果一致,则认为该组播报文从正确的接口到达,从而保证了整个转发路径的正确性和唯一性。这个过程就被称为 RPF 检查。RPF 的作用是防止组播数据出现环路和次优。
检查依据:除单播路由外,MBGP 路由、组播静态路由也是 RPF 检查的依据。
最长掩码匹配默认不开启。
静态组播路由的配置命令:ip rpf-route-static 10.1.8.0 255.255.255.0 (路由) 10.1.13.2(下一跳)
问题:M-BGP 和MP-BGP 有什么差别?
MP-BGP 是对 BGP-4 进行了扩展,来达到在不同网络中应用的目的,BGP-4 原有的消息机制和路由机制并没有改变。MP-BGP 在IPv6 单播网络上的应用称为BGP4 , 在 IPv4 组播网络上的应用称为 MBGP(Multicast BGP)。
问题:RPF 能不能只靠单播路由表工作?是不是收到每一份组播流量都会进行 RPF 检查?
RPF 可以只靠单播路由表工作,并不是收到每一份组播流量都会进行 RPF 检查。
问题:RP 的作用?RP 代理是什么?
汇聚点 RP 为网络中一台重要的 PIM 路由器,接收源端 DR 注册信息及组成员加入请求,网络中的所有 PIM 路由器都必须知道 RP 的地址,类似于一个供求信息的汇聚中心。
问题:什么时候开始建立 RPT 树?
当网络中有接收者加入某个组的时候,从成员端 DR 就会向 RP 建 RPT 树。
问题:知道 RP 的位置信息的方法有哪些?静态需要在哪些设备上配置?配置命令是啥?动态需要配置些啥?
静态 RP:在网络中的所有 PIM 路由器上配置相同的 RP 地址,静态指定 RP 的位置。需要在每台设备上进行配置。命令: static-rp 10.1.1.1 动态 RP:利用 BSR 机制来实现 RP 的动态通告。动态需要配置:c-bsr 和 c-rp. 4、在 PIM 进程下,分别使用命令:C-BSR loopback0,C-RP loopback0
问题:用什么报文来选举 BSR?选举的依据是什么?BSR 的报文名字是什么?多久发送一次?目的地址?以泛洪的方式发送,怎么防止环路和次优的?
使用 Bootstrap 报文来选择 BSR,Bootstrap 报文中携带 C-BSR 地址、C-BSR 的优先级。每一台 PIM 路由器都收到所有 C-BSR 发出的 Bootstrap 报文,通过比较这些 C-BSR 信息,竞选产生 BSR。竞选规则如下: (1)优先级较高者获胜(优先级数值越大优先级越高)。
(2)如果优先级相同,IP 地址较大者获胜。
Bootstrap 报文 60 秒发送一次。目的 IP 为 224.0.0.13,向所有 PIM 邻居发送,发送报文的源 IP 为出接口的 IP。
对BSR消息进行RPF校验,查看RPF接口是否是报文的接收接口以及这个BSR消息是否是自己PIM邻居发送过来的。
问题:C-RP 收到 BSR 的什么报文会怎么处理?发送什么报文?目的地址?携带哪些内容?
C-RP 收到 BSR 消息后,会向 BSR 发送 Advertisement 单播注册报文,报文中携带 C-RP 地址、服务的组范围和 C-RP 优先级,消息的目的 IP 为 BSR 的 IP 地址。BSR 将这些信息汇总为 RP-Set,封装在 Bootstrap 报文中,发布给全网的每一台PIM-SM 路由器。
问题:RP-set 封装在什么报文里?其它设备收到 RP-set 怎么选举 RP?选举依据什么?
各 PIM 路由器根据 RP-Set,使用相同的规则进行计算和比较,从多个针对特定组的 C-RP 中竞选出该组 RP。规则如下: 与用户加入的组地址匹配的 C-RP 服务的组范围掩码最长者获胜。 如果以上比较结果相同,则 C-RP 优先级较高者获胜(优先级数值越小优先级越高)。 如果以上比较结果都相同,则执行 Hash 函数,计算结果较大者获胜。
如果以上比较结果都相同,则 C-RP 的 IP 地址较大者获胜。
问题:建立 RPT 树发送什么报文?如果上游有多个邻居,怎么确定上游是哪个邻居?上游邻居收到建树报文,怎么确定这个报文是发送给自己的?
建立 RPT 树向 RP 发送(*,G)Join 报文。根据 RPF 检查确定 RPF 接口和下一跳,下一跳为自己的 RPF 邻居,如果有多个邻居,会向 IP 地址大的邻居发送(,G) Join 报文。
上游收到(*,G)Join 报文,报文中包含 Upstream-neighbor 字段,如果自己接收到报文的 Upstream-neighbor 字段中的IP 地址和自己端口的 IP 相同,说明报文是发给自己的。
问题:RP 上(*,G)表项的上游接口是什么?
RP 上(*,G)表项的上游接口是注册接口
问题:源端 DR 收到组播流量会干些什么?源端 DR 怎么知道 RP 的位置信息的?
源端 DR 收到组播流量会将组播数据封装成单播注册报文发给 RP。
源端 DR 根据静态配置或者通过接收 BSR 消息判断出谁是 RP。
问题:注册报文是广播还是组播?目的地址是多少?携带哪些信息?RP 收到注册报文怎么处理的?
注册报文是单播的,目的 IP 是 RP 的地址。最里面封装原组播数据,然后封装 PIM 的头部,外面再封装 IP 头,源 IP 为 DR 上与源相连的接口 IP,目的 IP 为 RP 的 IP。
RP 收到注册报文会向源发送(S,G)Join 报文,构建 SPT 树。
问题:源端 DR 什么时候能收到注册停止报文?单播还是组播?哪些情况会收到注册停止?
当 RP 已经建立了至组播源的 SPT 后,RP 会同时通过 SPT 树和单播的方式收到组播数据,此时它会向源端 DR 发送单播注册停止报文。
当组播源活跃后,第一次发送注册报文,源端 DR 收到注册停止报文后,源端 DR 为了向 RP 通报组播源活跃的信息,会每隔 55 秒向 RP 发送空的注册报文,这时如果 RP 不希望接收组播数据会立即回应注册停止报文。
问题:组播流量沿着 RPT 树流下来的时候会不会创建(S,G)表项?
当组播流量沿着 RPT 树流下的时候会同步创建(S,G)表项,这样的实现是为了在未来需要构建 SPT 树或者剪枝 SPT 时减少建表项的延迟。
问题:接受端 DR 收到组播流量会干些什么?触发 SPT 切换的条件是什么?SPT 切换是由谁触发的?为什么要进行 SPT 切换?
成员端 DR 接收到组播数据后会将数据转发给接收者,同时根据条件判断是否进行 SPT 切换。组成员端 DR 周期性检测组播报文的转发速率,一旦发现(S,G) 报文的转发速率超过阈值(默认是 0),则触发 SPT 切换。
如果所有组播数据都经过 RPT 树转发,数据的转发会对 RP 带来很大的负担, 所以要进行 SPT 的切换。
SPT 的切换是由成员端 DR 触发的。
问题:交叉点进行 SPT 切换时上游接口是谁?交叉点什么时候开始剪枝?剪枝剪的是 RPT 树还是 SPT 树?减到什么位置停止?RP 会继续往上减吗?
交叉点进行 SPT 切换时上游接口为去往组播的接口。当交叉点从新建的 SPT 树上收到组播数据的时候,开始向 RP 的方向剪枝。剪掉是 RPT 树上(S,G)表项的下游接口。 如果 RP 上的(S,G)表项下游列表为空,RP 会继续向组播源的方向发送剪枝报文。
问题:如果终端 DR 收不到组播流量,什么情况?
成员端 DR 静态 RP 配置错误
成员端DR 收到 BSR 消息后 RPF 检查失败,无法计算出 RP
成员端 DR 的 PIM 配置错误没有和邻居路由建立 PIM 邻居造成RPT 建立失败等
问题:PIM 单播报文不通,会影响组播吗?
如果网络中只有单播路由,如果单播路由不正常会影响 RPT 或 SPT 树建立,就会影响组播的运行。
如果网络中有组播静态或 MBGP 路由,能够正常建立 RPT 或 SPT 树,组播还可以正常工作。
问题:PIM 用了哪些报文?单播组播?地址多少?
PIM 一共有十种报文,五种单播,五种组播。
问题:为什么 IGMPv3 没有被广泛应用?
IGMPv3 用于组播的 SSM 模型中,目前现网中使用 SSM 的应用较少,所以 IGMPv3 应该也不广泛。
问题:如果网络中的 RP 设备发生故障,其他的路由器需要多久才能得知 RP 发生故障?BSR 呢?
如果网络中的 RP 设备发生故障,其他的路由器需要 150 秒会知道 RP 发生故障, BSR 如果故障,其它 BSR 需要 130 秒会知道 BSR 的故障。
问题:(*,G)prune 报文和(S,G)prune 报文的区别?
(*,G)prune 报文是发向 RP 的方向,(S,G)prune 报文是发向组播源的方向。
问题:静态 RP 的备份方式是什么?
在传统的 PIM-SM 域中,每个组播组都只能映射到一个 RP。当网络负载较大或流量过于集中时,可能导致 RP 压力过大、RP 失效后路由收敛较慢、组播转发路径非最优等问题。
在单自治域中应用基于 PIM 协议的 Anycast RP,可实现组播源就近注册和接收者就近加入。既可以缓解单个 RP 的负担,也实现了 RP 备份、优化组播数据的转发路径
问题:两个 RP 的地址配置为一致会不会冲突?接受端 DR 怎么知道找哪个 RP 建立 RPT 树?源端 DR 呢?
两个 RP 的地址配置为相同不会冲突。成员端 DR 根据路由表会找到离自己最近的RP,源端 DR 也会根据路由表找到离自己最近的 RP。
问题:第一个 RP 收到注册消息以什么方式通告给另一个 RP 的?组播还是单播报文?里面会携带组播流量吗?如果换成MSDP 和 anycast RP 有什么区别?
当 RP 收到源注册消息后,会以单播的方式将收到的注册报文发送给其它 RP,携带组播流量。
如果换成 MSDP 方式实现与基于 PIM 协议实现 AnycastRP 的区别在于它是通过发送 SA 消息传送组播源信息的。