Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153726
  • 博文数量: 53
  • 博客积分: 2042
  • 博客等级: 大尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-15 21:39
文章存档

2011年(6)

2010年(47)

分类: 系统运维

2010-04-25 20:23:12

IP组播
一,组播的特点
  1,优点
        效率高(控制网络流量,减少服务器及路由器的负荷)Enhanced efficiency
        性能好(减少流量的冗余)Optimized performance
        分布式的应用 Distributed applications
  2,缺点
        基于UDP的                is UDP-based
       1) 尽力而为的传输方式 Best-effort delivery
       2) 没有 拥塞避免 机制 No congestion avoidance
       3) 重复报文                     Duplicates
       4) 乱序的传输                Out-of-sequence delivery
 
典型应用:
    One-to-many
                 Many-to-many
                 Many-to-one
   组播应用特点:所有接收方接收的数据都相同!需要网络中间设备的支持!
             因此 目前 互联网上的在线直播都 是 单播!需要整网改造!
                                           所有路由器开启组播功能,运行组播路由协议!
 
二,IP组播的编制  (Multicast) 组播, 多播
   1,三层IP地址
         D类
         224.0.0.0~239.255.255.255
  224.0.0.0~224.0.0.255           保留使用(通常用于常见的一些网络协议)
  224.0.0.1         所有支持组播的主机
  224.0.0.2         所有路由器
  224.0.0.4         所有DVMRP路由器(DVMRP:距离矢量组播路由协议)
  224.0.0.5         所有OSPF路由器
  224.0.0.6         所有OSPF DR 路由器
  224.0.0.13        所有PIMv2路由器(PIMv2:协议无关组播 version 2)
  224.0.0.9         所有RIPv2路由器
  224.0.0.10       所有EIGRP路由器
  224.0.1.39       所有映射代理所在的组(裁判)
  224.0.1.40       所有支持 AutoRP 的路由器所在的组
 
         224.0.1.0~~~238.255.255.255      全局的 组播IP 地址, 公有地址
       
         239.0.0.0~~~239.255.255.255   本地的组播IP地址(类似于单播中的私有网段)
 
  2,以太网中对应的二层地址(组播MAC地址)
      组播地址 MAC地址 映射关系

组播IP地址:        32bits
                1110        28bits
               ↓→→→5 bits Lost  
               ↓
           01-00-5e-7f-00-01
               25bits        23bits
网卡MAC地址:          48bits
      224.0.0.1 ←---→01-00-5e-00-00-01 (前25bit固定)(后23bit由IP地址映射进来)
  将IP组播地址的后23bit   →→ 映射→→ 到 01-00-5e-0xxxxxxx-xxxxxxx-xxxxxxxx的后23bit中
          因此32个组播地址 将会 对应 到 同1个MAC地址中
         
        一个主机收到一个数据帧的时候
             1)若目标MAC等于本网卡的MAC地址 →接收
             2)若目标MAC等于FFFF.FFFF.FFFF  →接收
        若一个主机 加入 一个组播组(224.1.2.3)   (该IP组播地址对应的二层MAC地址为01-00-5e-01-02-03)
                此时它的网卡将还会监听目标MAC地址等于01-00-5e-01-02-03的数据帧,
                 因此它可以接收到该组播的数据!
                                                     因此 网卡是否监听 组播MAC地址,取决于主机 加入 / 离开 组播组与否!
         由于3层组播IP与二层的组播MAC并非一一对应,
   
  如果主机收到一个发给225.1.2.3组的数据 则该主机也会接收该数据帧
  (因为组224.1.2.3和225.1.2.3所对应的二层MAC地址是一样的)       对应比例 32:1
         送往第三层进行处理,在第三层可以根据组播IP地址判断并将该数据丢弃!

    SAP 会话宣告协议 Session Announcement Protocol
                  将网络中目前存在的组播源需要播放节目的信息广播出来(辟如电视报)用户可以选择性的加入该组
   组播要点:使用组播,每个人看到的内容是一样的!
 
 
三,组播中的协议
概述:
        IGMP      (必选协议)                      Host ←←←→→→Router
      
        组播路由协议(必选协议)            Router←←←→→→Router
  CGMP (思科私有)(可选协议)      Cisco Switch←←←→→→Cisco Router
  IGMP Snooping(可选协议)                                     →→→Switch(只需要在交换机上运行)
  
1,  IGMP(Internet Group Management Protocol  --- Internet组管理协议)
            主机<------>路由器  之间,用来维护组成员的 动态 加入,离开等

1)Verson 1
    a)报文类型
      i,Member Query  (成员查询)  ---路由器定期(60s)发送
      ii,Member Report(成员报告)---主机若需要加入某个组时,将发送"成员报告"消息(只有成员报告,没有成员离开)

      缺点:1) 主机Host为"默默离开",路由器Router需要通告3次query后,没有主机应答来判断该网络中没有成员存在
                2) IGMPv1 无法自己选择 Querier(查询器),   它依靠 3层的组播路由协议 来选举(如PIM)
         例如: PIM中选择该网段中具有 [最大] 接口IP地址的路由器 成为 DR, 同时也是IGMPv1的 Querier
            IGMPv1 DR = Querier = 最大接口IP地址
      【注1】
            一个路由器是否要往某个接口转发组播数据,取决于 该接口下是否存在该组的成员
            (即组播中我们关心“有/无”的区别,而不关心组播成员的具体数量)

      【注2】
        [报告抑制机制] 
       为了避免同一个组中的主机同时对路由器Query的响应(Member Report),造成对网络的冲击,
       一个主机收到Query后,开启 随机的计时器, 等待一定延迟后,再发送Member Report消息,
        这样同一个组中将由其中一台主机首先 回应Member Report消息,以组播方式应答
        而该组的其他主机同样能够收到该消息,  它们将取消Member Report消息的发送
 
 
  2)Version 2 
                          member-report,
                          member-query  ( 通用组查询,指定组查询),
                          leave-group

      i,改进
              a) 增加"离开组"的消息--Leave-Group
              b) 增加"指定组"的查询
                  version 1 中的查询只能针对"通用组"查询
             c) IGMPv2可以自己选择Querier, 该网段中 路由器具有最小接口IP地址的路由器称为Querier、
                       PIM   中DR(负责向该网段转发数据)
     DR选举原则:具有最大IP地址!
    IGMP V1  中无法选举查询器,使用的就是DR (既要负责转发数据,又要负责查询,工作量大)
  
    IGMP V2  DR选举 还是选具有最大IP地址的路由器,而 查询器选举 使用 最小IP地址
 
    有多个出口路由器时,版本1的查询器是具有最大IP地址,版本2的查询器是具有最小IP地址
     单个出口路由器时,无此问题!
   IGMP v1 , IGMP v2 不兼容,若同时存在v1,v2,必须都工作在v1中!
     【注】在query消息中还定义了"最大响应时间"
  
       
    ii,某个主机Host离开一个组播组,
        首先发送"Leave-Group"消息到224.0.0.2(所有路由器),
     路由器收到离开消息后,将 发送"指定组" 查询  (目标IP为该特定组的组播IP地址(),
                   
                 而"通用组"查询则是发送到224.0.0.1(所有主机),)
       若本组中还有成员存在,它将回应Member Report,路由器将继续转发该组的数据;
       若无成员回应,则路由器停止转发该组的数据
                  Reduces leave latency in comparison to V1

命令:show ip igmp interface e0

     3)Version 3

         基于version 2,
增加SSM(Source-Specific Multicast:指定源的组播)方面的功能

          在IGMPv3的Member Report消息中添加 include(包含), exclude(排除) 字段
    
  接收方有选择性!
              若某个主机 想 指定 接收 哪些组播源发送的数据时,可以将这些组播源的IP地址添加到include字段中(相当于白名单)
              若某个主机 不想  接收 哪些组播源发送的数据时,可以将这些组播源的IP地址添加到exclude字段中(相当于黑名单)
   发送方发送地址:224.0.0.22
           Host----->Router:
               eg.  IGMP v3 Report           Group:224.1.1.1
                        (224.0.0.2)                    Exclude:
           Router----->Host:
                         224.0.0.22 (无抑止) 成员都在一个组(224.1.1.1)里,但接收的数据可能来自不同的源,因此都要响应!
查看IGMP相关信息命令: show ip igmp interface s0/0
 
2,Layer2组播数据帧的转发问题
  传统的二层交换机进行数据帧转发时,依赖于MAC地址表(单播的MAC地址信息)
   三种情况:
      1)---己知单播帧:  目标MAC地址在MAC-Address-Table能够查找到,精确转发,转发至某个端口
      2)---未知单播帧:  目标MAC地址在MAC-Address-Table不能查找到,泛洪
      3)---组播或广播帧:  泛 洪

   注:二层数据帧---源MAC(单播MAC),   目的MAC(单播MAC/组播MAC/广播MAC)
        三层IP报文---源IP (单播IP),            目的IP (单播IP/组播IP/广播IP)
 
 
 

Layer 2 Multicast Switching Solutions
-------------提高二层交换机 处理组播数据帧 时的 效率----------------原先是泛洪

1)CGMP(Cisco组管理协议)(思科私有)

   在Cisco的路由器 <-----> Cisco的交换机之间运行,为Cisco的私有协议
     路由器Router收到主机Host发出的"成员报告"消息后,分析IGMP的消息:
       得到的信息:   主机的MAC地址<------>该组播组的组播IP地址<------>组播MAC地址 ,   "加入"
路由器将上述分析的结果通过CGMP协议发送给交换机
    交换机可以利用这些信息,结合自己的单播MAC地址表,构造出组播MAC地址表
            通过"主机的MAC地址",查找二层交换机的单播MAC地址表, 确定该主机(即加入该组播组的主机)是在哪个端口
        
组播MAC地址表:   
         组播MAC地址     端口列表   
          组播MAC            主机所在的端口
2层交换机能维护组播MAC地址表,对于组播数据只会转到特定端口下,而不会采用传统的泛洪方式
 
  2层交换机并没有分析IGMP消息,工作量少,结果是由路由器分析完后再转发到交换机的
 
  类似于C-S 结构: 
    Router =Server, 负责解析消息,
      把结果告诉给Client,客户端进行简单处理,达到维护组播MAC地址表的目的

2) IGMP snooping(IGMP窃听)  (标准)
    同样目的:
                                维护组播MAC地址表
          实现:
           二层交换机 窃听 IGMP消息,并分析其中的内容,从而构造自己的组播MAC地址表
         
          缺点:
                 交换机的负荷变大,对性能有一定的影响
 

----------------------
在稀疏模式中,如果某个网段中存在多个出口路由器,
当PC发出igmp membership report后,将由该网段 DR负责向去往RP 上游设备发出Join/Prune消息
在组播源所在 网络中,若存在多个出口路由器,则由该网段 DR负责向RP发出PIM-Register消息
由于IGMPv1中本身无法选举查询器,因此它依赖组播路由协议选出 DR作为查询器
在PIM-SM中,DR将作为IGMP查询器。
在PIM-DM中,DR本身没有什么作用,但是为了能够让IGMPv1知道查询器,它还是要选出DR,
这个DR 目的就是给IGMPv1作为查询器使用,在PIM-DM中没有其他功能
 
阅读(1352) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~