什么是 Multicast|组播

一台机器和一台机器通信这是单播。
一台机器发出的数据包能被多台机器收到这就叫组播。
一台机器发出的数据包能被一个网段的机器收到这叫广播。

一个机器发送,多台机器接收,但是又不同于广播,发送端的IP设置在一个范围内都算组播,这个范围是224.0.0.0~239.255.255.255

作者:小丸子
链接:https://zhuanlan.zhihu.com/p/38150334
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

广播不安全、单播麻烦

优点:

  • 一对多
  • 有效利用带宽
  • 更少的主机工作量
  • 接受者地址未知
  • 同时性

缺点

基于udp

  • best-effort
  • 没有用塞避免机制
  • 无序
  • 重复报文

应用

  • 一对多、多对多(视频会议)、多对一(监控)
  • PIM多播路由协议、IGMP是主机和last hop路由器之间的协议

地址段

A 0-127,B 128-191 ,C 192-223, D 224-239

  • 多播地址不能配在router
  • 多播地址不能做vlsm
  • 保留地址224.0.0.0-224.0.0.255,公网组播地址224.0.1.0-238.255.255.255,私网组播地址239.0.0.0-239.255.255.255
  • 224.0.0.1所有系统,224.0.0.2所有路由器

2. IGMP Internet Group Management Protocol

IGMPv1

query、report报文

路由器发查询每60s,holddown180s,下面主机发report。协议号2

Ether|IP|IGMP|FCS

query报文:D 224.0.0.1, G 0.0.0.0

report报文:D 224.1.1.1(1.让路由器和本组组员都收到,2.抑制其他组员的report),G 224.1.1.1(组地址)

report作用:1.充当ACK 2.主动告知路由器加入哪个组

IGMPv2

比v1新增指定组查询、离组消息

没必要有两个查询者R1、R2,查询者是通过互发查询包,比较ip地址小的作为查询者

如果R2在2倍的60s内都没有收到R1的查询包,认为R1down,自己充当查询者

host离组主动发离组消息 D 224.0.0.2(发到路由器), G 224.1.1.1

路由器收到离组消息之后马上发指定组查询,2s内没收到任何消息认为此组播组没有成员

IGMPv3

报文中包含源的信息

3. 组播mac地址

共有2^28个组播地址,但是mac只有 2^23个

32个ip:1个mac

0100.5e+组播地址的后23位对应过来

4. 二层交换机多播

防止sw把组播包发给vlan所有主机,让交换机有多播地址和sw某端口映射的表项

IGMP snooping:在交换机上做,截获igmp report报文,做sw端口和组播地址的对应表项。但是要拆三层包,消耗cpu

CGMP:不拆三层包,需要路由器和交换机结合

IGMP report:源、目标mac,源、目标ip,IGMP组地址

路由器截获report,给sw发CGMP join:GDA=目标mac USA=源mac

交换机里面CAM表存

多播路由协议

单播路由表关心包怎么出去

多播路由表更关心包怎么进来:解决重复包的问题

1.反向路径转发RPF

防止来回收发组播包从而形成环路,只有一个RPF接口

收到组播流量S=151.10.3.21的端口和我去访问你151.10.0.0/16网段的出接口不是一个端口,则RPF校验失败

选RPF接口的原则:

  • 较小AD值
  • 小metric值
  • 较大ip地址

多播静态路由仅仅为了选rpf接口而不是为了多播转发,配了静态路由之后AD小

2. 基础

  • 源树SPT:一个源一棵树(S,G)(1.1.1.1,224.1.1.1),(2.2.2.2,224.1.1.1)

路径最优,到接受者metric最小

路由器消耗多,每台router都得有信息

  • 共享树RPT:找到RP,所有流量到RP集合,RP再下放多播流量到接收者

路径不是最优

但是路由器上只需要有(*,G)

3. PIM协议无关多播

  • Sparse-mode:使用拉模型,源树、共享树

1)最后一跳路由器向RP发join(*,G),下面就是一个共享树,每台路由器都有(*,G)表项

2)源给RP发单播register报文,查看RP上是否有该组组员,如果有把单播包解封装把data发给接受者;

3)如果有接收者,RP向源发(S,G)join,形成源树,然后发register-stop

RPT可以自动切换成SPT,确保路径最优,last hop router发(S,G)给源

  • Dense-mode:使用推模型、源树SPT

1)源flooding到下游所有router,(S,G)

2)没有接受者的router向源发修剪prune,以上两步每3min重复做

4. PIM过程

  • 封装在ip 协议号103 组播地址224.0.0.13
  • 建邻居30s hello,holddown 30x3.5s
  • DR选举:1.高优先级 2.接口ip大

如果产生一个(S,G),就会自动产生一个(*,G)

5. DR作用

  • Dense模式中无作用
  • DR在sparse模式中负责发送join和register报文
  • 如果运行IGMPv1,DR充当查询者

6. RP

  • 静态:手工指定
  • 动态:auto-rp candidate-RP周期性向224.0.1.39发信息,Mapping Agent选ip大的 作为rp向224.0.1.40宣告(所有路由器都加入这个组,所以都能收到)

做auto-rp规则

  • sparse-dense模式(RP down了也可以用dense模式)
  • CRP通告 进 IGP
  • MA通告 进 IGP

原文:组播Multicast - 小丸子的文章 - 知乎 https://zhuanlan.zhihu.com/p/38150334

posted on 2022-10-04 01:23  bdy  阅读(86)  评论(0编辑  收藏  举报

导航