什么是 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
什么是 Multicast|组播相关推荐
- Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播
简 述: 了解Upd通信之QUdpSocket的unicast单播.broadcast广播.multicast组播,书写一个简单地例子:然后写了一个小的Qt例子,用来实现和验证它的空间的一些属性和功能 ...
- skynet框架应用 (八) Multicast组播
8 Multicast组播 8.1 Multicast介绍 local mc = require "skynet.multicast" 引入 multicast 模块后,你可以 ...
- 网工笔记(三):IP Multicast组播技术
IP多路组播技术,英文为IP Multicast, 就是英文文档里经常说到的BUM报文里的大M.这是一门特别的技术,它从2层到3层协议mac地址到IP地址都自成一体.很多网工同行只在IE考试里学习了 ...
- 【PCIe】PCIe Multicast组播功能实现
参考:<PCIe-Multicast(组播)实现> PCIe组播概念 传统 PCIe系统局限于单目标传送 ,这种传输模式以主机为中心 ,使得主机在给定的时间,在某一时刻主机只能与众多子设备 ...
- Multicast :: 组播学习笔记
概念:组播 (Multicast) ------------------------------------------ 与 unicast, broadcast 类似,它是数据的一种传送方式. 与 ...
- android multicast(组播)发送端和接收端源代码,android multicast 多播(组播)问题
有谁遇到过同样问题的可以探讨下,或者已经解决问题的,能够指导下我 获取组播锁 private InetAddress group; WifiManager wm=(WifiManager)ge ...
- 分布式系统(四) 组播 Multicast
Multicast 组播 通信模式 Unicast 一个进程向另一个进程发送消息 尽力而为:如果信息传送,就没有被破坏 可靠的:保证信息能传送 有序:信息传送(deliver)的顺序与发送的顺序一致 ...
- 组播IP地址到底是谁的IP?
组播IP地址到底是谁的IP? 组播IP地址是视频网站服务器的?还是ISP某个服务器的呢?加入组播组意思是通过这个有组播IP的服务器获取数据么? 组播也是一种IP包,也有源IP地址,目的IP地址, ...
- 同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总
闲言少叙,直奔主题,开说之前先做点铺垫,回顾一下网络的基础知识. D类地址划分回顾 组播是IPv4地址分类中的D类,我们回顾一下IPv4的地址划分 A类:首bit=0,0-127网段,网络掩码8,其中 ...
最新文章
- 某米浏览器黑名单文件破解
- c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
- Python代码这样写更优雅(转)
- Linux内存管理:ARM64体系结构与编程之cache(1)
- NeHe OpenGL教程 第四十五课:顶点缓存
- 职业中专计算机高考英语卷子,职业高中高考计算机专业试卷3.doc
- Windows软件路由器运用实例之OSPF配置
- 《Android开发从零开始》课程下载地址汇总
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
- qscoj:默契值(状压DP)
- 更多编译器对C++11的支持比较
- Windows7 下载android源码
- STM32F103实现CMSIS-DAP
- SAP PM 第一节 PM后台配置
- Aid Learning --除了爱奇艺也可以是生产力!!!
- 态密度的Delta函数公式以及范霍夫奇点
- SQL反模式:实体-属性-值(EAV)问题(一)
- android 打卡统计日历表,GitHub - lw1243925457/clickApp: 一个日常事务打卡和统计的APP,用于日常任务记录、任务所需时间记录、任务花费时间统计显示...
- python 发送匿名邮件或无发件人
- 电脑硬盘中文件丢失怎样才能找回?硬盘数据丢失能恢复吗
热门文章
- 用postman快速学习ElasticSearch的搜索功能
- 65寸OLED拼接屏:打造超大画面的视觉盛宴
- docker02:run流程和docker原理
- 虚拟机开机出现dracut_安装CentOS 7的时候出现dracut:/#求解决方法!
- Symbian c++学习 车驰
- android libc.so,android – AOSP的libc.是和NDK的libc _shared.so一样吗?
- SQLMAP介绍及使用
- 生成式AI发现潜在抗癌药物;王慧文与“一流科技”达成并购意向;阿里巴巴公布六大业务集团CEO丨每日大事件...
- 嵌入式Linux(十四)IIC
- 自然语言处理(1)深度学习基础及其通用模板