组播技术2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组播技术II
首先要强调一下组播的环境,组播的目的是为多客户端传输数据的时候尽量节约带宽资源,只在有必要的时候才将数据帧复制,所以对于组播来讲,天生就是来对付“一对多”这样的网络环境的。
所以虽然传输模式有很多种,多对一,一对一的模式是用不着组播的,因为这里的一就是指的一个客户端,单播就可以搞定。组播要解决的传输模型是一对多和多对多。
PIM-SM可以很好的解决一对多的组播环境,因为RP和组成员之间是共享树,不管有多少成员加入,在RP那里都是维护一个(*,G)条目,建立的是一棵共享树。但是RP对于源维护的是(S,G)条目,所以一旦源增多,维护的开销会很大。
PIM-SM Bidir 可以很好的解决多对多的组播环境,因为RP与源之间,RP与组成员之间全部用RPT搞定,源有多少,成员有多少,全都不Care,再多也是两棵树。
PIM SSM 可以在一对多的组播环境中更为有效的传输数据,不存在RP,因为全部用SPT搞定,接收者一旦通过目录服务了解到某个源的信息,就能直接从该信源获得数据。
这里强调一下RP,RP的概念针对一个Group,即凡属于这个Group的成员都要知道自己组的RP是谁,RP为所有的组成员建立一棵共享树。但是一般我们在部署的时候只设一个RP地址来担当多个组的RP,实际上是超载使用了,这个实际RP就要为每个组建立一棵RPT。
PS:所谓SPT切换就是最后一跳路由收到第2个组波包的时候开始建立(S,G)条目,到向沿源RPF向上游发送(S,G)加入信息,然后逐台上游路由器将(*,G)建立一个(S,G)条目的这样一个过程。当上游路由器的(S,G)从空到非空,那么触发也会沿源的方向发送(S,G)加入信息。最后所有上游路由器将(S,G)的in接口生产,最后沿RP方向进行(S,G)RP-bit修剪。导致(*,G)条目的out接口为空。从而将前面生成的共享树删除,建立一条SPT。
PIM-DM 推的模式,该模式在设计的时候,前提是假设网络里的每个子网至少有一个(S,G)组播信息的接收者。
PIM-SM 拉的模式假定组播不被需要,除非用一个显式的加入机制来专门申请,否则不会发送。
有RP做中间人,即使没有有效信源,接收站点也能加入共享树;即使没有接收者,源也能注册成功。
注意:RP本身是每个Group一个!不过有时候几个组用一个RP也没有什么关系,共享树就相应的有几棵,只不过根相同而已。该组的成员都找自己组的RP,有流量转发到这个组的源都会到RP这里来注册。
PIM-SM用的是单向共享树,即以组播数据只能通过共享树由根到接收者。而双向共享树,可以经过也可以不经过,就近选择。
共享树是用*来代表所有的源,不管哪个信源的数据,要给组成员传输,都要通过这棵共享树(至少一开始是这样),因为一开始RP是信源唯一的联系人,只能先到它那,再通过共享树传输。
在组播实验中,我们用命令ip igmp join-group 238.1.1.1来仿真客户端主机。可以通过show ip igmp int loop 0 命令来进行验证。
运行PIM协议的接口会自动启用IGMP协议。
启用PIM协议,不管是DM还是SM,都是在接口下完成的,ip pim dense-mode 或者sparse-mode,不过能在接口启用的前提是全局支持组播路由,ip multicast-routing
在PIM-DM中,虽然(*,G)条目并不能用来转发组播数据,但是在加入组的时候,各DM路由器还是会建立(*,238.1.1.1)这样的条目。
PIM-DM从发送第一个数据包开始,全网泛洪之后伴随修剪,形成SPT,这个动作完成之后即定格,OIL接口是Forward就为Forward,是Prune就为Prune,任凭你其间有组成员的加入或退出,一律要等到3mins之后的重新修剪再改动。
PIM-DM每隔3mins都要进行一次全网泛洪+修剪的过程,只要源服务器发送数据包这个过程就不会停止。因此泛洪的间隔等于修剪掉的路由的老化时间。这和上一段的意思差不多。
PIM-SM采用拉的模式进行,RP地址一定要指定,因为是共享树的根,共享树并不是PIM-SM赖以转发的路径,只是在一开始用一下,让RP知道该组的组成员的具体位置,一旦源沿共享树到达各组成员,会切换到SPT,那会RP就不承担转发数据的任务了。
理论上而言RP可以放在网络中的任何一个位置,不过要可达,RP的位置也要显示的告知其他PIM路由器,因为他们必须得知道,通告方式有多种,比如在每一台PIM-SM路由器上手动指定ip pim rp-add,或者通过具体协议,Auto-RP 或者BSR
所以说PIM-SM开始是源到RP最短路径树,RP到组成员共享树,后来RP不介入,均为源和组成员之间的最短路径树。默认情况下,只有第一个组播数据包使用RPT,而后继的全部为SPT。
RP概念针对的是一个Group,比如238.1.1.1,RP所形成的共享树,枝叶衍生到所有属于238.1.1.1这个组的组成员,而之所以容易混淆,是因为我们在部署PIM-SM的时候,往往只指定一个RP,这个RP事实上承担着多个组的RP的角色,针对每一个组都会形成一课共享树。
224.0.0.0/4代表所有的组播地址。
在IOS中使用Ping命令发送组播报文,如果不定义源地址,那么会以所有运行PIM的接口地址为源。如果手动指定以Loopback口为源,除非在该Loopback 口启用PIM-SM,否则不会触发向RP发送源注册信息。
所以一旦发现注册有问题,排查接口是否启用PIM-SM是最关键的。
当前的IOS,允许切换至SPT之后,仍保留RPT(而不被修剪),通过全局命令ip pim spr-threshold infinity实现,但实际上在部署组播的时候没有什么意义。
PIM-SM Bidir
在PIM-SM初始的时候,RP和组成员之间建立的是(*,G)的条目,组成员这会儿还不能沿共享树向上转发流量(事实上就是那注册消息,我一接收者还要给你源传数据不成?),一来不知道给谁,二来路由器对于向上转发的流量还是凭借那个(*,G)条目,势必造成接口既in又out,这过不了RPF检查。