先引入几个用的到的名词(部分是摘抄后整理的)来熟悉一下环境,之后在看实验!
 
IP分组在网络中的几种传输方式:
单播(Unicast):发送方()和接收方(一个目的)需要独立的一个数据通道,如果有一个源和多个目的,则在源和各个目的之间是存在着多个数据通道(数据通道数和目的数相等).在单播通信方式下,IP主机向目标IP主机发送数据包,这些数据包从源主机发送到目标主机始终是在同一条独立的数据通道上传送的,即相同目的地的一组数据包通过交换机、路由器只能传送给一个目标主机。在单播方式下多个目的用户希望同时获得这个数据包是不可能的,源主机只能向各个接收此数据包的目的用户各发送一份单独的数据包拷贝,即数据内容虽然相同,但是为每个目的都要准备出一份来,这种成倍的冗余数据处理和传输,会大量消耗主机的性能和网络中的带宽,同时发送数据的源主机必须对每个要求都做出响应使得主机的响应时间会大大延长,其次网络中各个交换机和路由器也必须为处理相同的任务而成倍的增加处理时间,同时可能还要为完成这些成倍的处理任务而增加处理性能来购买新硬件和增加带宽来保证服务质量。
广播(Broadcast):发送方()和接收方(所有目的)共享一个数据通道。广播通信方式下,IP主机向广播地址发送数据包,这意味着目标网络中的所有主机不论是否需要这些数据都必须处理这些数据,因为必须处理广播数据包,这就对不需要此数据的主机增加了额外的处理负担。
组播(Multicast):发送方()和接收方(属于同一组的所有目的)共享一个独立的数据通道,即在发送者和每一接收者之间实现点对多点的逻辑连接,此时如果多个接收者需要接收同一个源发出的数据,源只需准备一份数据即可组播提高了数据传送效率,减少了骨干网络出现拥塞的可能性,同时不会对组之外(不感兴趣的)其它主机有任何影响。使用IP组播技术分发信息能从本质上降低对整个网络带宽的需求,也可有效减小对终端主机性能的影响.
任意播(anycast) anycast是指目的主机为共享同一个地址前缀的计算机的集合(它们会在不同的位置上), 数据(分组)将选择一条最短的路径到达该组,然后只交给组中的一个成员(往往是离接收者最近的成员); 任意播主要是为移动应用,如无线移动连接使用的,IPv6中有专一的任意播.
组播优势
尤其是在多媒体流应用时组播传输为最佳(目的对源数据的传送需求是非常多的重复冗余数据时带宽降低非常明显)
1> 带宽优势 IPTV、视频会议、音视频网站提供的电影、音乐下载和网络电视在线观看,访问用户来说如果使用IP单播,网络带宽的消耗就会呈线性增长(相同的信息在相同的时间里被很大规模的访问),典型的MPEG-2视频流需要大约15Mbps的带宽时才可流畅的观看, 显然用IP组播来发送IPTV节目, 单一传送替代重复数据流才是可取的,从而使网络带宽得到高效使用。
2> 服务器负载优势如果音视频网站的运营商只使用单播传送机制,随着目的用户的增长, 将要不断增加实时音视频服务器的处理能力和数量以适应用户的增长,但即使是这样,当服务器负载在瞬间增加到一定程度时依然是不能再发出信息流。而使用IP组播来发布和传输这些数据,则不需要考虑用户数的增长,因为用户数的增长对服务器的性能几乎没有直接影响,IP组播的明显优势在于通过大大减少需要转发和处理的数据量,从而降低了所需服务器的硬件性能。
3> 分布式应用优势 IP单播下随需求与应用的增长,多点应用不太可能,因为单播通信的用户数不能无限增长。
而组播几乎不受用户数量增长的限制。
 
组播重要模式:
PIM全称协议无关组播Protocol Independent Multicast,简写PIM,是一种域内组播传输协议的公认标准;
PIM是一种独立于路由协议的组播协议,能在现存IP网上传输组播数据;
协议无关是指组播路由不受所使用的单播路由协议的限制,只要单播路由协议能产生路由表项即可;
PIM可以工作在两种模式:密集模式,和稀松模式;
密集模式(pim-dense)对于集中分布的组成员效率高,但只适用于小型组播网络;
稀松模式(pim-sparse)对于分散分布的组成员效率高,适用于大型组播网络, pim-sm又分pim-sm v1 pim-sm v2
虽然pim-dmpim-sm两种算法都属于pim,且共享相似的控制消息,但它们从本质上来说是两种不同的协议;
1> 密集模式中是假设组播树上的所有端口都是组成员,缺省就会向所有属于该组的路由器端口转发组播流量,直到接收到由下游到上游发送的裁减消息才会停止,并且在一个周期后自动恢复已裁减的接口并重新发送组播流量,直道再次收到下游发送给上游的裁减消息,周而复始.
2> 稀松模式与密集模式相反,只向有请求的端口加入组才发送组播数据,而并不主动发送数据;
区别:
pim dm是使用源树(S,G).
pim sm是使用共享树(*,G),其借助汇聚点RPRendezvous Point)向接收组播报文的路由器转发组播信息。
引入RP方式减少了数据报文和控制报文占用的网络带宽,降低了路由器的处理开销.
 
组播重要机制:
反向路径转发(RPF Reverse Path Forwarding)
路由器在收到数据(分组)后必须根据源和目的地址确定出上游(指向组播源)和下游(指向接收者)方向,把数据(分组)沿着远离组播源的方向转发,这个过程称作 RPF Reverse Path Forwarding 反向路径转发;
RPF的主体是RPF检查
PIM借助RPF检查机制来实现在网络中传递组播信息.
PIM路由器收到组播数据后先对数据进行RPF检查,此过程要查看单播路由表确定上游和下游的邻接点,只有当数据(分组)是从上游邻接点对应的接口(称作RPF接口)到达的才会向下游转发,否则只是丢弃,即只有通过RPF检查的数据包才被转发;
在单播数据(分组)的转发过程中路由器只关心数据(分组)的目的地,通过目的地址决定向哪个接口转发;
在组播中数据是发送给一组接收者(组播地址),这些接收者是均用同一个逻辑地址标识,没有一个措施几乎均
会产生环路
RPF的作用主要就是避免由于各种原因造成的组播路由环路: 环路避免在组播路由中是一个非常重要的问题
避免了环路才可以正确地按照组播路由的配置转发数据.
 
组播网络中的anycast RP机制:
anycast RP MSDP(组播源发现协议) 在域内的一个特殊应用,MSDP原设计是用于域间组播应用的, 现在大型网络中组播应用配置pim sm的同时使用anycast RP,可以满足单域内的冗余容错和提供负载均衡能力;
为了增强 pim sm RP 节点的可靠性及对网络中的组播流量进行分担,在网络中选取出若干节点作为RP,并运
anycast RP,达到冗余备份和负载分担.
anycast RP 的机制:
概括讲就是多个RP都配置上同一个anycast RP地址(通常是用RP上的一个Loop),之后RP使用这个地址对
外发布组到RP的映射信息,由于使用的是anycast RP地址,所以组成员在加入时是向拓扑距离最近的一个RP发起加入请求,而在这些RP之间是使用各自不同的地址建立 MSDP 连接,利用MSDP实现数据源信息在所有RP之间的同步。
 
SSM(source specific multicast)
SSM协议可根本解决RP问题,因为其根本不需要使用RP,但其要求使用IGMPv3才能支持,此时源也是组成员,接收者只需知道源的位置,事先建立好每个源对应的SPT树即可;
 
MPLS ×××的引入、m×××的引入及简要说明:
(对组播、mpls和mpls vpn不了解的往下可能看不太懂了,需要先了解相关理论)
MPLS是当前运营商骨干IP网中应用最直接的技术,是目前唯一能实现IP网中应用QoS与流量工程的技术, 现在的用户应用和服务要求越来越高,而服务提供商对具有高要求服务质量的实时业务必须采用组播方式来传输,这就使得MPLS骨干网中的组播应用与其它的MPLS应用结合在了一起,MPLS ×××就是MPLS技术应用的一个子集,它又可以分为二层MPLS×××和三层MPLS×××两类.
二层MPLS ×××(MPLS L2 ×××)是为了能在IP网上提供类似ATMFR优势的连接,此方式服务提供商只为用户提供传统的二层链路(ATM,FR,以太网等),并将相应的链路标识(ATM VPI/VCIFR DLCI、以太网VLAN ID)映射到一条MPLS LSP,使用户数据得以穿过运营商的核心网络,用户需要在这个专有连接上自己组织路由结构。
三层MPLS ×××(MPLS L3 ×××)是一种基于MPLS技术的IPvpn,是在骨干网中的路由器和高端交换设备上使用MPLS技术来简化核心路由器的路由选择方式,并结合传统路由技术和标记交换来实现的IP虚拟私有专用网络。MPLS ×××适用于对服务质量、服务等级划分、网络资源利用率、网络可靠性有较高要求的×××业务。
     
   在传统的×××中实现组播通信的方法只有一个,就是把组播数据包封装在单播ip包中通过GRE隧道点到点的传送,该方式中同一vpn的各个站点之间必须先启用GRE隧道连接,之后才能参与组播通信,当对等站点增加时,增加的站点必须先与各站点之间均建立好点到点的多条GRE隧道连接,之后才能进行其它,这样在扩展上很是个问题,而在支持组播的MPLS ×××上应用组播就解决了这个扩展问题--MPLS ×××中应用组播即m×××(组播×××)
MPLS ×××上的组播在mbone骨干中也是用了GRE隧道,但区别在于此时的GRE隧道是自动生成的,且是多点到多点的.
m×××是通过把客户的组播路由引入mvrf,从而支持客户组播数据在multicas BACKBONE(mbone)中传输,CE路由器转发的组播数据流和组播控制信息到达PE路由器时,PE路由器查询mVRF(组播×××路由转发表)来对该组播数据流的转发做决策,这时会有两个问题,一是服务提供商网络的PE应该如何区分不同×××用户过来的的组播通信流和组播控制信息,二是PE区分出了这些信息后又如何来传递它们.
以下是我个人的理解,有不正确的地方请读友们不惜赐教!
简单讲在这个结构的每个mvpn体系中存在着两套组播系统,一个是CE端自己范围内的本地私有组播系统(是独立的),一个是mbone中的全局组播系统(所有mvpn公用,但每个mvpnMDT又都是各自的),要做的就是要在这两套组播系统之间进行无缝的衔接.
在简单讲就是这个结构的每个mvpn体系中存在的就是两棵树,一棵是私有的树,一个是公用的树,两棵树不相干,也互相看不到,但私有的那棵树又需要借助公共的那棵树来变相传递组播数据(其实组播中的一切概念和过程就是在围绕着那棵树在转,要理解的就是那棵树)
cepe的连接采用vrf解决了单播路由的引入,在这个vrf上启用本地组播也解决了cepe之间的组播路由的引入,即在pe上对应的vrf下启用本地组播后该vrf也已经可以支持组播了,但组播的转发需要有一棵组播树,这棵树可以是用源树方也可以用共享树方式,但一定是要用一个方式,这在ce私有组播中很好解决,而在pe上就需要先区分开不同的mvrf和划分开属不同mvpn的各站点之间的逻辑关系,这就引入了组播域,说白了一个mvpn就是同一个组播域,有多少个mvpn客户,pe上就会存在多少个组播域,而同一组播域中的各pe成员就是该组播域中的这棵组播树上的各节点,这就区分开了不同mvpn的组播树,也就解决了第一个问题;第二个问题是要解决这棵树的制造问题,当前在各个pe上已经存在了对应同一组播域的各个mvrf,所以最直接的就是在这些mvrf之间生成骨干网上的全局组播树,这个组播树就是MDT,即一个客户的组播域覆盖着此客户传递自己私有组播信息流的所有相关站点的边缘ce路由器,mvpn的运行中会根据配置为相应的每个组播域建立一个静态的默认组播分配树(default MDT),MDT定义了相关组播域中传送组播信息pepe之间的路径,另外对于×××量需求的组播应用如网络电视,mvpn中又提供一种专门用于数据传送的动态MDT(Date MDT),即一开始组播流只在default MDT中传送,但当流量达到并超过某一特定流量值时Date MDT会根据检测自动被建立,此时所有组播流会在一个很短的等待周期后均切换到这个Date MDT上来,这样就相当于是沿着一条优化的逻辑路径继续传送,而当组播流降到某一流量值后,又会自动切换回default MDT中传送,这个过程的完成就在同一个组播域中各个对等pe之间制造好了组播树,但沿着这棵制造好的MDT树真正的传递过程中是要一跳一跳完成的,即要经过n多个mbone中的P节点(这里犹如mpls vpn中的两个层,上层是pe直接到对等pe的逻辑连接,而下层是一跳一跳的驼着上层到达, 都是因为mp-ibgp要依靠mboneIGP才能邻接),此时就需要将pe上对应mvrf中的组播数据封装进GRE隧道里(只不过这时的GRE隧道是自动生成的,且是多点到多点的)即通过MTI(组播隧道接口) 封装好这些携带着组播mp-ibgp扩展属性的GRE数据包,mbone中的各P节点上按照骨干中的全局组播路由一跳一跳的传递到接收对等pe(此时mbone中依靠的就是那棵公共的组播树在传递,运营商和客户的组播是完全隔离的,客户ce上看不到mbone中运营商的全局组播树,P节点也仅仅知道这些包是自己全局组播树上要进行传送的数据包,而不知道,也无需知道这个包里包的是什么),这样ce端客户的一个站点的私有组播数据就穿过了mbone转发到了同一组播域里的接收对等pe,接收对等pe收到后解封装,下发到相应的mvrf,即终点ce站点收到了自己组播域过来的组播数据.
以上就是整个mvpn的工作情况简述,下面用实验来分解相关的过程,理解相关概念、并应用配置命令部署mvpn