IP组播基础

IP组播

  • 单播:用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行,网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话。

  • 广播:主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络

  • 组播:很像缩小版的广播。比如在小屋子里面讲课,还有另外一个屋子,实际上是一个小范围的能够 听见。组播实际上在我们使用的协议里面用到过组播
    RIPv2 224.0.0.9
    ospf 所有router–》224.0.0.5 可以当做所有的路由器都在224.0.0.5这个组里面
    DR与BDR --》224.0.0.6

  • 例如现在有两台路由器
    IP组播基础
    A和B,在这种情况下,我们在ospf使用network宣告组,那么这个组宣告之后有两个作用
    ①宣告接口
    ②加入这个接口宣告了ospf以后,默认情况下就会加入一个组,这个组就像个小屋子,也就是 224.0.0.5,如果这个路由器被选成了DR-BDR,被加入到224.0.0.6,那么在这种情况下有人向这个组发 出数据,那么DR,BDR也能收到这个信息

组播的应用
IP组播基础
我们目前网络的基础架构没有办法实现完全的组播通信,但是可以使用组播技术实现某些功能。

  • 数据拷贝的例子:总部下调订单的价格,只需要分部加入到组里面,我们进行更改之后会直接发送到 在组内的各个分部之中。
  • 游戏实际上还是使用的是单播的。如果以后能够把游戏放置在组播中,那么一台服务器可以承载很多玩家了。

单播方式部署点到多点应用

  • 单播在发送的时候,实际上就是依照点到点的连接方式,如果建立了单播,那么实际上在图中看到服 务器和左边4个以及右边4个接收者发送了数据,在源发送的时候的链路上带宽的占用比较大,但是单 播有一个好处,就是能够知道具体的某一个接收者是谁

广播方式部署点到多点应用

  • 广播实际上就是将信息传送给网络中的所有用户,不管用户的意愿,直接进行发送,所有设备都能 收到广播
  • 当初说过路由器隔离广播域,不能转发广播,但是实际上这里要记清楚,路由器是不转发二层广播数 据帧,如果是三层广播报文是可以发送的,一般情况上如果说到广播包的话,那么它的帧头部肯定是个 广播帧,
  • 当我们源设备发送了广播以后,我们的任意设备收到了广播报文以后就会进行copy复制,但是有可能 不想接受的设备,但是也会被收到。
  • 广播是不能避免保障信息安全性以及有偿等服务,例如我们以前看有线电视的时候,有些节目需要我 们输入密码才能看到,这样实际上就是通过软件去避免广播不能保障有偿服务的问题。
  • 广播如果在需求量小的时候,我们发送广播所有的链路都能收到,因此效率不高

组播方式部署点到多点应用
IP组播基础

  • 这里的网络路由器实际上都叫做组播路由器了,但是默认情况下不能转发组播数据,因为我们组播功 能没有打开,因此要首先打开组播功能,打开以后我们的路由器就变成了组播路由器。
  • 下面的接收者实际上都叫做组播组成员,对于组播来说,也是一份流量转发,下面的组播路由器根据 实际情况进行复制。
  • 这都是源发的一份,但是经过复制发送,后面的组内的设备都接受到了。
  • 组播搞定了网络中数量不确定的问题,广播是没办法做到的
  • 一个信息由多个接收者
  • 相同的组播数据流在链路上最多仅有一份,实际上也是为了避免组播的环路

组播的特点
IP组播基础
大多数组播的应用都是基于UDP的,只要基于UDP,那么就会有UDP的缺点
IP组播基础

组播IP地址

  • 前提了解:组播IP地址
    IP组播基础

  • 比如我们在ospf中,ABCD路由器
    IP组播基础

A路由器被选择为DR,那么实际上会加入224.0.0.6这个组中,然后
A路由器发送数据包的时候,实际上会被BCD全部收到,原因是它们都在224.0.0.5这个组里面,
因为BCD都在这个组里面,因此它们会申明自己处于这个组里面,那么在这种情况下,A发送一个数 据,这个组播地址的设备才能接受数据包

  • 组播地址注意点
    ·D类地址不能出现在IP地址里面的源IP地址段里面
    ·IP地址分类的时候我们分了5类,ABCDE,E类不研究
    ·A,B,C,D中,第一个字节实际上0,10,110,1110
    ·因此D类地址第一个字节的高四位是不变的。
    ·A,B,C都是IPV4单播的地址,但是单播的地址有一个特点,就是一个网段里面都会有一个广播地址,以 及一个网络地址,并且对于A,B,C类来说,每个网段的这两个特殊地址都是不能使用的,因此要-2.
    但是对于224.0.0.0-239.255.255.255来说每个地址都是可用的
    IP组播基础

  • 永久组播地址
    只是仅供在本地网段的网络协议使用,不会被路由器转发出去,即使TTL值很大
    IP组播基础

  • 临时组播IP地址
    临时组播地址短暂分配的
    IP组播基础
    总结:上图是标准情况,但是我们在部署的时候实际上可能都会去用

  • 域间组播地址
    IP组播基础

·SSM组播IP地址
IP组播基础

组播MAC地址
有了组播地址以后,我们就要进行通信了。如果一个单播的IP地址要通信的时候,比如在以太网上去通信,除了单播IP地址以外还需要用mac。
因此在组播中,我们除了组播的IP地址,我还需要使用组播的MAC作为帧的封装。接下来的内容是组播mac地址。

·区分是否为组播地址,在之前HCIA-RS的时候,在以太网帧结构中,提到了第一个字节的最后一位的数字,可以用来区分是否为组播地址,如果为1,代表组播,如果为0,代表单播

·但是存在一个问题,在单播的时候,我们说首先PCA会向PCB去进行ARP请求,然后将PCB的IP和MAC获取到了之后存放在自己的ARP表里,然后再进行通信,但是在组播中,一定要明晰一个概念,就是我们的组播成员不是配置到组播里,而是加入到这个组播里,因此我们不可能在接口里面配置组播地址,一个组播地址不可能对应一个真实的实体,那么即使发ARP请求,实际上也请求不到,那么在这种情况下,所以我们找不到组播的MAC地址,因为没有实际的PC或者终端配置了一个组播地址,不能实现一个唯一对应就会导致我不能进行数据链路层的通信。因此我们用到了组播MAC地址与组播MAC地址的映射,有了MAC地址我们就能转发了。
IP组播基础

组播MAC地址
IP组播基础

·首先组播地址的第一个字节前4位固定为1110,因为它为D类地址,后面的28位都是可以变化的,那么IP地址的最后23位,可以移动下来给组播MAC地址,那么对于01-00-5E-0,实际上每一位都是16进制,使用2进制比对是每一个数字都为4个比特,因此01-00-5E实际上是23比特,下来24比特之后才47比特,还少了一个比特,那么实际上就是在移动下来的23比特的最前面加上0即可,也就是固定前缀为01-00-5E-0,刚好48比特。
0x代表的是16进制

·对于224.0.0.1这个组播地址,转换过来,实际上就是01-00-5e-00-00-00-01
但是这样的映射可能导致一个问题,就是IP地址能变的比特有28位,有23位下去了,但是还有5位没下去,那么在这种情况下,即使组播MAC地址不变化,但是实际上IP地址可能会时刻变化,很有可能会出现多个IP组播地址,结果映射到了一个MAC地址

映射导致的问题
·IP组播地址中,有5位是可以换边而且不用加入到组播地址里的,就是5位,那么就是2^5为32,那么我们需要考虑是如何导致这样的问题,并且映射关系。
·实际上在这里遗留了一个历史问题,有一个人史蒂夫帝林, 是一名博士,他所在的公司研究组播,需要跨三层去转,因此需要组播MAC地址,对于一个MAC地址48个比特,组播IP地址实际上有效位是28比特,当时他请求经理去买16个MAC地址的OUI,也就是唯一组织标识符,如果能买到,那么实际上每个位数能用的范围就是224次方,16个连续的话,那么在这种情况下,就是24*28,就能得到228,正好和组播IP地址的数量是一样的,但是当时一个OUI的价格非常昂贵,1000美金一个,经理没有同意,认为太花钱了,但是为了支持史蒂夫帝林,经理就买了一个OUI,1个OUI的空间就是2^24,并且把这个OUI空间给了史蒂夫一半,也就是23bit,那么刚好就对应了23bit的IP地址。
·这个问题实际上会影响到我们的交换网络,因为我们交换网络是看MAC地址去转发的,肯定就会出现问题,但是如果有路由器的参与,那么在这种情况下,路由器除了去看MAC地址,还会看IP地址,因此就不会出现问题,并且大部分的交换网络不可能只有一台服务器连着交换机再连到终端,而是肯定有路由器参与的,因此没有什么太大问题。