什么是 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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值