组播------华为

组播地址

在IP地址划分中D类地址被划分到组播地址中,即224.0.0.0-239.255.255.255,其中224.0.0.1-224.0.0.255被预留用作特殊用途。

组播管理协议
  • IGMP(英特网组管理协议),负责IPv4的组播成员管理协议,运行在与主机接入端负责将对应主机添加或剥离组播组,同时提供对上层的交互。
  • IGMP一共有三个版本:
    • IGMP V1:
      • 包含两种报文,分别是成员关系查询报文和成员关系报告报文;成员关系查询用于发现组成员,运行IGMP的接口向自己所属网段发送组播地址为224.0.0.1的组播成员关系报告(组地址字段为0.0.0.0),接收者以组播回复自己所需要加入的组播地址,目的地址为224.0.0.1且报文中的组地址字段为自己所要加入的组播地址;当然主机可以主动发起加入请求,报文内容和被动一致。
      • IGMPv1对接口下的组成员多少不关心,而只关心有没有对应的组成员因此只需要有接收者发送成员关系报告即可,因此有了成员关系报告抑制机制,每个成员都有一个本地报告延时计时器(0-10之间的随机数),计时器到时之前收到其它接收者发送的和自己同组的成员关系报告就抑制自己发送成员关系报告,以此来减少成员关系报告的发送。
      • IGMPv1没有查询者的定义,默认是由PIM的DR担任,每60S周期的发送成员关系查询报文,同时v1也没有定义成员离组报文,因此v1的成员离组是默默离开的。
    • IGMP V2:
      • 相对于IGMPv1添加了查询者选举、特定组查询和组成员离开机制,其它功能与V1类似。
      • 增加了最大响应时间(v3也有)在普遍组查询默认10s,特定组查询默认1s.
      • 查询者选举:独立选举,不需要依赖于PIM协议;在初始状态下运行v2(同一网段)的路由器均认为自己是查询者,然后发送普遍组查询报文(也就是v1中的成员关系查询)然后路由器之间收到其它路由器发送的报文之后对比对应的接口IP,较小者胜出成为查询者,其它的作为非查询者。而路由器如果在发送了第一次查询报文后的接下来60s内没有收到其它路由器的查询报文,或者其它路由器次于本身则认为自己是查询者。
      • 非查询者会为查询者设立一个“其它IGMP查询者存活时间”计时器,默认125s超时就重新选举查询者,并默认自己是查询者。其它IGMP查询者存活时间=健壮系数*普遍组发送时间间隔+1/2最大查询响应时间.
      • 查询者默认以60s为周期发送普遍组查询,初次成为查询者时前两次报文间隔15s,后期为60s;特定组查询发送的目的组播地址为所查询的组播地址,且特定组查询只有在收到离组报文后才会被触发,用于判断是否还有该组成员。
      • 离组报文:由主机主动发出目的地址为224.0.0.2的组播报文,其中组地址字段为离组的目标组播地址(此时查询者会立即发送特定组查询)。最后一个成员离组时,组播路由器在2s后停止转发对应的组播流量
    • IGMP v3:
      • v3在v2的基础上增加了特定组及源查询,即能针对特定源进行查询。
      • v3的报告报文:由于v3增加了对源的管理,因此V3的宝宝报文有着很大的改变,在报告报文中增加了组记录(Group Record),其记录格式有以下几种:
        • 当前状态记录有两种分别是:MODE_IS_INCLUDE和MODE_IS_EXCLUDE;表示为(G,INCLUDE,(S1,S2)),寓意为接受来自源S1 、S2的组播G,Exclude为除外。
        • 状态改变记录包含过滤模式记录和源列表改变记录
          • 过滤模式改变记录:
            • CHANGE_TO_INCLUDE_MODE(也就是EXCLUDE->INCLUDE)
            • CHANGE_TO_EXCLUDE_MODE (同理)
          • 源列表改变记录:
            • ALLOW_NEW_SOURCES (如果当前是INCLUDE,则添加新的源,如果是EXCLUDE则将其从EXCLUDE中删除)
            • BLOCK_OLD_SOURCES(与ALLOW相反)
        • 加入机制即通过上述的报告报文:如(G1,IS_INCLUDE,(S1))表示对于组播组G1,仅接收源S1。(G1,IS_EXCLUDE,(S2))表示退出或者说不接收源自S2的G1组播。
    • IGMP Proxy:这是运行IGMP协议中特殊的路由器,对查询者代理,对于接入端为查询者,对于查询者充当接入端,能够代理查询者对组播的加入删除做处理减轻查询者负担。
    • IGMP Snooping Proxy:
      • IGMP Snooping是交换机提供的针对IPv4组播的转发处理,解决的主要是 交换机在处理组播转发时由于交换机中没有源地址为组播的表项(组播不可能作为源地址,所以交换机学习不到)因此在对组播报文处理时以泛洪的方式转发,这样极大的浪费了交换机资源,同时存在风险的问题。当交换机开启Snooping功能后,对于二层转发设备来说会识别组播MAC头部将其交给CPU处理,而CPU如果识别失IGMP则进一步处理转发(这样增加了CPU的负担),而三层交换机则是能够识别上层协议号,是IGMP则转发给接在端口0的CPU,专门对IGMP组播转发这样极大的减轻了负担。
      • 代理Snooping功能的IGMP交换机即为IGMP Snooping Proxy,代理只有在该接口下所有成员离开后才会发送离组报文。
组播路由协议
  • PIM (Protocol Independent Multicast)协议无关组播路由协议,PIM不需要维护大量的拓扑数据库,只需要依赖于单播路由以及RPF来完成组播的转发。
  • PIM通过发送224.0.0.13组播Hello报文发现及维护邻居关系,TTL为1(同网段)。默认发送Hello时间间隔为30s,Holdtime为3.5倍的hello time;PIM路由器之间发送的Hello报文同时又协商DR的作用,优先级高者为DR(相同时IP大者为DR)
  • 组播转发树:为了避免组播转发环路将组播转发路径构建成树的形式SPT
  • PIM有两种模式 :
    • PIM-DM(Dense Mode) 密集模式,适用于接收密集的网络,推(PUSH的模式,将所有流量推出,不需要的则剪枝)。DM的主要工作机制包括扩散(Flooding)、剪枝(Prune)、嫁接(Craft)、状态刷新、断言(Assert);DM使用的转发表项为(S,G)(源,组);
      • 扩散:头一份组播报文扩散到全网,报文经过路由器时在其上创建组播表项。
      • 剪枝:扩散过程中路由器没有PIM邻居或者没有IGMP接收者或者组播下游接口为空(没有该组的接收者)时会向上游邻居发送剪枝报文,上游邻居就会将二者对应的接口从自己的下游接口列表移出。这里需要注意的是当同一源到达某一路由器有两条可达链路时,该路由器会执行RPF(Reverse Path Forwarding )反向路径转发:如果收到组播的接口不是自己IGP路由来源接口的话就向此接口连接的邻居发送剪枝报文。也就是说组播进入路由器的接口一定是源到达自己的下一跳接口。
      • 嫁接:这是剪枝的反过程,比如说路由器的接口有组成员加入,此时向上游邻居发送嫁接请求,上游邻居将对应接口加入下游接口。
      • 状态刷新:刷新计时器。。。。人生重来系列
      • 断言 :断言应用于多个路由器在同一网段,为避免接收方收到重复报文从而阻塞某些端口转发组播流量,接口IP大的成为Winner转发对应组播。
      • 剪枝否决机制计时器:有时在接口下有主机发送了剪枝报文,但是这个接口下还有组成员需要,那么这个组成员就可以发送剪枝否决,路由器为这个过程设置一个等待时间就是剪枝否决计时器。
    • PIM-SM(Sparse Mode)稀疏模式:用于组成员分布稀疏,网络规模大的场景,属于拉的模式,将需要的组播流量拉到自己上。PIM-DM中使用的组播转发树称之为SPT,而SM中的转发树称之为RPF。二者的区别在于SPF以组播源作为树根,而RPF 以汇聚点(RP)作为树根。RPT使用(*,G)转发表项来匹配组的所有源。
    • PIM主要通过RP来控制:RP(汇聚点),是转发网络中的核心,将所有的组播相关的数据等汇聚。RP有一个RP地址,所有的PIM路由器都需要知道RP路由器的地址,并且每个PIM路由器维护一张RP-info,记录组播地址和RP的对应关系;RP对于源来说是SPT树的叶子结点(源为根)。由于RP不一定处于接受路由器的最优路径上,所以这里存在次优路径问题。
    • RP可以静态指定,也可以动态指定。静态指定适用于小规模,拓扑稳定的网络。
    • 动态RP:主要的协议是BSR(自举协议)。BSR定义了两种角色的设备,一种是Candidate-RP(C-RP),一种是Candidate-BSR(C-BSR),二者都可定义多台用于提供冗余。
      • 从多台C-BSR通过Bootstrap报文协商选举BSR,(优先级大者,IP大者优先。)BSR选举为抢占式。BSR用于收集C-RP的信息,然后封装发送给PIM邻居,然后任何组播组在不同的设备上选举出相同的RP。
      • RP的选择:BSR通告的内容中有RP和组的映射关系,其中组范围可能会重叠:
        • 所以选择RP时将优先组范围最小者为RP
        • C-RP优先级较高者成为RP(越小越高)
        • 如果优先级相同则进行hash比较,hash大者
        • C-RP地址大者
      • 如果需要计算组播组G的RP,则根据最长匹配原则,匹配最精确的组范围的RP.
    • 如果多个RP则优先级小者
    • 相同优先级比较Hash值
      • 最后是IP最大者

你可能感兴趣的:(华为RS)