《IP多播网络的设计与部署(第1卷)》——2.4 多播转发

简介:

本节书摘来异步社区《IP多播网络的设计与部署(第1卷)》一书中的第2章,第2.4节,作者:【美】Beau Williamson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 多播转发

IP多播网络的设计与部署(第1卷)
在单播模型中,路由器在网络中沿着一条单一的路径从源主机向目的主机转发流量,而且目的主机的IP地址出现在IP数据包的目的地址字段。该路径上的每一个路由器使用数据包中的目的IP地址做出单播转发决策。它通过查询单播路由表中的目的地址,然后通过指示接口将数据包转发到去往目的主机的下一跳。

在多播模型中,源将流量发送到一个任意的主机组中,该主机组使用IP数据包中目的地址字段的多播组地址来表示。和单播模型不同,多播路由器不能基于数据包中的目的地址做出转发决策。通常情况下,这些路由器不得不将多播数据包从多个接口中转发出去,以到达所有的接收者。这一要求使得多播转发过程要比单播转发过程复杂得多。

本节将讲解逆向路径转发(Reverse Path Forwarding,RPF)的概念。在大多数多播路由协议中,逆向路径转发是多播转发过程的基础。本节还将讲解有关多播路径缓存、TTL阈值,以及管理范围边界的相关内容。

2.4.1 逆向路径转发

实际上,所有的IP多播路由协议利用了某些形式的RPF或者入接口校验(incoming interface check)来作为转发或丢弃到来的多播数据包的主要机制。当多播数据包到达路由器时,路由器对数据包进行RFP校验。如果RPF校验成功,则转发数据包,否则将其丢弃。

当流量沿着源树向下流动时,RPF校验机制进行如下工作。

1.路由器检查到来多播数据包的源地址,以确定此数据包是否是通过满足这样一个条件的接口到达的:该接口位于返回源主机的逆向路径上。

2.如果数据包是通过可以返回到源的接口上到达的,RPF校验成功,并将数据包转发。

3.如果RPF校验失败,则丢弃信息包。

多播路由器确定那个接口位于返回源的逆向路径上的方式,取决于所使用的路由协议。在某些情况下,多播路由协议维护一个独立的多播路由表,并使用它进行RPF校验。距离向量多播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)就是一个很好的例子。该协议将在第5章详细讲述。在其他情况下,多播路由协议使用已有的单播路由表来确定位于返回源的逆向路径上的接口。通常使用单播路由表来执行RPF校验的多播协议的例子是PIM和CBT。当然,PIM和CBT也不局限于只使用单播路由表进行RPF校验。它们可以使用来自DVMRP路由表或者多播边界网关协议(Multicast Border Gateway Protocol,MBGP)路由表的可达性信息,或者也可以静态配置RPF信息。PIM和CBT协议将在后面章节详细讲解。

图2.14所示为RPF校验的过程。本例子使用单独的多播路由表。当然,如果使用单播路由表或者其他可达性表,概念相同。

2972014060166e5827784a5bb3e50ed8a51e695f

来自源151.10.3.21的多播数据包通过接口S0被接收到。多播路由表的校验表明,返回源的逆向路径上的接口是S1,而不是S0。因此,RPF校验失败,并丢弃数据包。

图2-15是另外一个例子。在该例中,来自源151.10.3.21的多播数据包这次是通过接口S1到达路由器。

72d4ad0de2f3b336d4cdd0d9e670860d0d244ec6

在本例中,由于接口S1位于返回源的逆向路径上,所以RPF校验成功,并且数据包被转发到外出接口表(outgoing interface list)中的所有接口上(需要注意的是,外出接口没有必要包括路由器上所有的接口)。

2.4.2 多播转发缓存

在本章前面的“多播分发树”一节中,介绍了构建多播分发树,以用来将多播流量通过网络转发到所有接收者的概念。从路由器的视角来看,每一棵SPT或者共享树可以在一条多播转发缓存条目(有时也称为多播路由表条目)中表示成与零个或多个外出接口相关联的入接口(incoming interface)。注意,双向共享树对该过程进行了微调。由于流量可以沿着双向共享树向上和向下流动,所以双向共享树不需要区分入接口和外出接口。

对每一个到来的多播数据包执行RPF校验会导致显著降低路由器的性能。因此,对多播路由器来说,在创建多播转发缓存的时候确定RPF接口的方式也就更加普遍。RPF接口随后成为多播转发缓存条目的入接口。如果RPF校验过程所使用的路由表发生变化,必须重新计算RFP接口,并更新多播转发缓存条目,以反映这一变化。注意到,有多种方法可以确定外出接口,这取决于正在使用的多播路由协议。

例2-1所示为一个Cisco多播路由条目。

例2-1 Cisco多播路由表条目

001b224d5b9b1b81ba74f112fb80c4bfaf4cf644

(S,G)条目描述的是(151.10.3.21/32,224.2.127.254)SPT,与在图2.14和图2.15中的路由器看到的一样。

从本例中可以看到,条目有一个入接口Serial1,以及两个外出接口Serial2和Ethernet0。不要受本例中其他术语的影响。它们将会在第10章和第11章详细介绍。现在只要关注与入接口和外出接口的概念即可。

2.4.3 TTL阈值

还记得,每当一个多播数据包被路由器转发一次,IP数据包头部的TTL值将会减1。如果数据包的TTL值见到0,路由器将丢弃数据包。

TTL阈值可用于多播路由器上的个别接口,以防止小于TTL阈值的多播数据包在该接口上被转发出去。例如,图2.16所示为其接口上应用了不同TTL阈值的多播路由器。

027231a5df0296284794b5323d93dd9dcaf89f63

在本例中,多播数据包通过Serial0到达,其当前的TTL值为24。假设RPF校验成功,并且接口Serial1、Serial2和Ethernet0都在外出接口列表(oilist)中,因此数据包应该从这些接口中正常地转发出去。因为已经在这些接口上应用了TTL阈值,路由器在将数据包转发出去之前,必须确定数据包的TTL值(现在是23)大于或等于接口的TTL阈值。

从本例中可以看到,数据包从接口Serial1和Ethernet0转发出去。注意到TTL阈值为0则表示该接口上没有TTL阈值。由于数据包的TTL值(23)小于接口Serial2上的TTL阈值,因此数据包不能从该接口转发出去。

TTL阈值提供了一个简单的方法,以防止基于多播数据包中的TTL字段将多播流量转发到一个站点或者区域的边界之外。这一技术也被称为TTL范围(scoping)。如果多播应用必须将其流量限制在一个站点或者区域的内部,则它可以传递一个带有初始TTL值的多播流量,这样就不会跨越TTL阈值的边界了。

图2.17所示为一个TTL阈值边界的例子。该TTL阈值边界用来限制多播流量的转发。公司ABC已经在其网络周边的所有路由器接口上设置了值为128的TTL阈值。

如果多播应用想要把其流向限制在公司ABC网络内部,它必须传递初始TTL值为127的多播数据包。此外,工程和市场部门要在他们的网络周边将TTL阈值设置为16。因此,运行在这些网络内的多播应用可以防止它们的多播流量逃离其各自的网络。

660b8bc3af8682f70f98ecf814a26d0a266f4904

表2-3所示为在不同的TTL边界下,典型的初始TTL值和路由器接口TTL阈值。

d7471ddc5f93a37709478bec8510c9e6362a364b

2.4.4 管理范围边界

和TTL阈值一样,管理范围边界也可以用来限制多播流量被转发到一个域(domain)或者子域(subdomain)之外。这种方法使用一个特殊的多播地址(叫做管理范围[administratively scoped]地址)范围作为边界。如果在路由器的接口上配置一个管理范围边界,其赌博组地址落入该范围的多播流量将不会被允许进入或离开该接口,从而在这一地址范围内为多播流量提供了一个防火墙。

图2-18所示为管理范围边界的工作机制。在这里,管理范围边界在接口Serial0上被设置为239.0.0.0~239.255.255.255的多播地址范围。该机制有效地设置了一个防火墙,使得该地址范围内的多播数据包不能跨越此范围。

还记得在本章前面的“管理范围多播地址”一节中,管理范围多播地址落在239.0.0.0~239.255.255.255的范围之内,并且被认为是本地分配的。也就是说,它们不能在Internet上使用。管理范围边界机制考虑到了这一约定,并防止落入这一地址范围内的多播流量进入或离开网络。

7a59f4f8a24fd5524fc34cef7efe1f218d30f602

图2-19所示为一个使用管理范围边界的例子。在这里,公司ABC使用了不同的管理地址范围来防止多播流量转发到特定边界之外。

c6ee68e1a86a638482d8fe6bade66b31467d9c9e

在本例中,公司ABC已经在其网络周边的所有路由器接口上配置了239.0.0.0/8的管理范围边界。该范围边界可以防止落在239.0.0.0~239.255.255.255之内的任何多播流量进入或离开无网络。同样,工程部门和市场部门也在他们各自的网络周边配置了239.128.0.0/16的管理范围边界。这范围边界可以防止落在239.128.0.0~239.128.255.255之内的多播流量进入或离开其各自的网络。这也意味着239.128.0.0~239.128.255.255范围的多播地址是由工程部门和市场部门独立使用。多播地址空间的重用使得多播地址在公司ABC内部的使用更为有效。

相关文章
|
21天前
|
数据采集 监控 安全
快速部署:基于Kotlin的公司网络流量控制方案
本文介绍了使用Kotlin构建网络流量控制系统的方案,该系统包括数据采集、分析和自动提交到网站的功能。`TrafficMonitor`类负责监控网络流量,收集流量数据并进行分析,然后通过HTTP POST请求将数据安全提交到指定网站,以实现对公司网络流量的有效管理和安全优化。此方案有助于提升网络安全性和性能,支持数字化业务发展。
56 5
|
25天前
|
移动开发 网络协议 安全
网络面试题:什么是 TCP/IP?
网络面试题:什么是 TCP/IP?
43 0
网络面试题:什么是 TCP/IP?
|
1月前
|
JavaScript Linux 区块链
DApp测试网络Ganache本地部署并实现远程连接
DApp测试网络Ganache本地部署并实现远程连接
|
2月前
|
运维 网络协议 网络架构
网络技术基础(6)——IP路由基础
【2月更文挑战第10天】网络基础笔记(加班了几天,中途耽搁了,预计推迟6天)
|
2月前
|
编解码 缓存 计算机视觉
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-1
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-1
107 0
|
2月前
|
算法 PyTorch 计算机视觉
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
89 1
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
|
6天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
27天前
|
负载均衡 算法 应用服务中间件
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
Docker Swarm总结+service创建和部署、overlay网络以及Raft算法(2/5)
72 0
|
1月前
|
网络协议 Shell 网络架构
2. 搭建互联互通的 IP 网络
2. 搭建互联互通的 IP 网络
150 0
|
1月前
|
数据采集 SQL DataWorks
DataWorks常见问题之一样IP的分库只有部分网络连通如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
32 6