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

一个机器发送,多台机器接收,但是又不同于广播,发送端的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

什么是 Multicast|组播相关推荐

  1. Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播

    简 述: 了解Upd通信之QUdpSocket的unicast单播.broadcast广播.multicast组播,书写一个简单地例子:然后写了一个小的Qt例子,用来实现和验证它的空间的一些属性和功能 ...

  2. skynet框架应用 (八) Multicast组播

    8 Multicast组播 8.1 Multicast介绍 local mc = require "skynet.multicast" ​ 引入 multicast 模块后,你可以 ...

  3. 网工笔记(三):IP Multicast组播技术

    IP多路组播技术,英文为IP Multicast,  就是英文文档里经常说到的BUM报文里的大M.这是一门特别的技术,它从2层到3层协议mac地址到IP地址都自成一体.很多网工同行只在IE考试里学习了 ...

  4. 【PCIe】PCIe Multicast组播功能实现

    参考:<PCIe-Multicast(组播)实现> PCIe组播概念 传统 PCIe系统局限于单目标传送 ,这种传输模式以主机为中心 ,使得主机在给定的时间,在某一时刻主机只能与众多子设备 ...

  5. Multicast :: 组播学习笔记

    概念:组播 (Multicast) ------------------------------------------ 与 unicast, broadcast 类似,它是数据的一种传送方式. 与 ...

  6. android multicast(组播)发送端和接收端源代码,android multicast 多播(组播)问题

    有谁遇到过同样问题的可以探讨下,或者已经解决问题的,能够指导下我 获取组播锁 private  InetAddress   group; WifiManager  wm=(WifiManager)ge ...

  7. 分布式系统(四) 组播 Multicast

    Multicast 组播 通信模式 Unicast 一个进程向另一个进程发送消息 尽力而为:如果信息传送,就没有被破坏 可靠的:保证信息能传送 有序:信息传送(deliver)的顺序与发送的顺序一致 ...

  8. 组播IP地址到底是谁的IP?

     组播IP地址到底是谁的IP? 组播IP地址是视频网站服务器的?还是ISP某个服务器的呢?加入组播组意思是通过这个有组播IP的服务器获取数据么? 组播也是一种IP包,也有源IP地址,目的IP地址, ...

  9. 同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总

    闲言少叙,直奔主题,开说之前先做点铺垫,回顾一下网络的基础知识. D类地址划分回顾 组播是IPv4地址分类中的D类,我们回顾一下IPv4的地址划分 A类:首bit=0,0-127网段,网络掩码8,其中 ...

最新文章

  1. 某米浏览器黑名单文件破解
  2. c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
  3. Python代码这样写更优雅(转)
  4. Linux内存管理:ARM64体系结构与编程之cache(1)
  5. NeHe OpenGL教程 第四十五课:顶点缓存
  6. 职业中专计算机高考英语卷子,职业高中高考计算机专业试卷3.doc
  7. Windows软件路由器运用实例之OSPF配置
  8. 《Android开发从零开始》课程下载地址汇总
  9. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
  10. qscoj:默契值(状压DP)
  11. 更多编译器对C++11的支持比较
  12. Windows7 下载android源码
  13. STM32F103实现CMSIS-DAP
  14. SAP PM 第一节 PM后台配置
  15. Aid Learning --除了爱奇艺也可以是生产力!!!
  16. 态密度的Delta函数公式以及范霍夫奇点
  17. SQL反模式:实体-属性-值(EAV)问题(一)
  18. android 打卡统计日历表,GitHub - lw1243925457/clickApp: 一个日常事务打卡和统计的APP,用于日常任务记录、任务所需时间记录、任务花费时间统计显示...
  19. python 发送匿名邮件或无发件人
  20. 电脑硬盘中文件丢失怎样才能找回?硬盘数据丢失能恢复吗

热门文章

  1. 用postman快速学习ElasticSearch的搜索功能
  2. 65寸OLED拼接屏:打造超大画面的视觉盛宴
  3. docker02:run流程和docker原理
  4. 虚拟机开机出现dracut_安装CentOS 7的时候出现dracut:/#求解决方法!
  5. Symbian c++学习 车驰
  6. android libc.so,android – AOSP的libc.是和NDK的libc _shared.so一样吗?
  7. SQLMAP介绍及使用
  8. 生成式AI发现潜在抗癌药物;王慧文与“一流科技”达成并购意向;阿里巴巴公布六大业务集团CEO丨每日大事件...
  9. 嵌入式Linux(十四)IIC
  10. 自然语言处理(1)深度学习基础及其通用模板