草庐IT

IP组播基础

就挺兔然的 2023-08-16 原文

IP组播基础

背景

  • 单播承载点到多点业务,会造成源端负担过大,大量重复的单播数据流占用链路带宽等问题
  • 广播承载点到多点业务,能减轻源端负担,但是会带来新的问题
    1. 广播数据无法跨网段传递,传播范围受地域限制
    2. 数据的安全性无法保障,接入该二层网络中的终端都可以接收到该数据
    3. 无法计费
  • 组播:组播数据会沿着组播分发树发送给同一组的用户,相同的数据流在每一条转发路径上只会存在一份
    • 相对于单播:减轻了源端负担,和对链路带宽资源的占用
    • 相对于广播:组播数据可以跨网段传递,能提高数据传输的安全性,且能实现计费

IP组播地址

  • 范围224.0.0.0~239.255.255.255
  • IANA对组播地址进行了进一步的细分
    • 224.0.0.0~224.0.0.255:为其他协议预定的永久地址
      • 224.0.0.1:代表所有节点(路由器和PC)
      • 224.0.0.2:代表所有路由器
      • 224.0.0.5:所有OSPF路由器都侦听
      • 224.0.0.6:OSPF中的DR和BDR侦听
      • 224.0.0.9:RIPv2路由器
      • 224.0.0.13:PIM路由器(协议无关组播)
      • 224.0.0.18:VRRP路由器
      • 224.0.0.22:IGMPv3组播地址
    • 公网的IP组播地址:全局有效
      • 224.0.1.0~231.255.255.255
      • 233.0.0.0~238.255.255.255
        • ASM服务模型下的临时组播地址(任意源)
      • 232.0.0.0~232.255.255.255
        • SSM服务模型下的临时组播组地址(特定源)
    • 私网IP组播地址:本地有效
      • 239.0.0.0~239.255.255.255

组播报文的格式

  • 组播报文格式与单播报文格式基本类似
    • SMAC+DMAC+SIP+DIP+载荷+FCS
      • SMAC+SIP必须是单播地址
      • DMAC+DIP必须是组播地址
      • 目的组播IP地址通常已知
      • 目的MAC地址通过目的IP地址映射得到
        • IP组播MAC地址:
          • MAC地址48bit,前24bit由OUI提供,后24bit厂商任意分配
          • 单播MAC:第一字节第八比特位为0
          • 组播MAC:第一字节第八比特位为1
          • IPV4组播MAC地址
            • IANA规定:
              1. 前24bit固定为02-00-5e
              2. 第25bit固定为0
              3. 后23bit从IVP4组播地址后23bit映射过来
          • 问题:
            • 因为ipv4组播地址前4bit固定1110,后23bit映射给IP组播MAC地址,中间5bit丢失,造成2^5(32)个IP组播地址映射成同一个IP组播MAC地址
        • 预留给协议使用的组播MAC地址:前24bit固定为01-80-c2
          • 01-80-c2-00-00-00:RSTP
          • 01-80-c2-00-00-14:ISIS
          • 01-80-c2-00-00-15:ISIS
        • 预留给IP组播MAC地址:前24bit固定为01-00-5e

IP组播网络架构

  • 源端网络:组播源到第一跳组播路由器之间的网络,将组播流量发送到组播转发网络
  • 组播转发网络:第一跳路由器到最后一跳路由器之间的网络,将组播流量从源端转发到相对应的接收者,运行了组播路由器协议(如:PIM、MSDP)的路由器的集合
  • 接收者端网络:最后一跳路由器到组播接收者之间的网络,运行IGMP

两种组播服务模型

  • ASM:组成员加入组播组后,接收任意源朝该组播组发送的组播数据
  • SSM:组成员加入组播组后,只接受指定源朝该组播组发送的组播数据

RPF:反向路径转发

  • 作用:解决组播转发发出的环路、次优、重复报文的问题
  • 工作原理:
    1. 接收到组播数据流后,根据组播数据流的源IP地址查找单播路由表(RPF路由)
    2. 根据查找到的单播路由的而出接口和接收到该组播数据流的入接口进行比较
    3. 一致,则将该接口认定为RPF接口,添加到组播路由表的上游接口中,后续对于该组播流量,只会接收从该RPF接口接收到的组播流;如果不一致,则丢弃该组播数据

RPF路由的优选规则:

  • ​ 在依据组播源IP地址查找单播路由表时,该路由可能从IP单播路由、MBGP、组播静态路由表都学习到,选举成RPF路由的规则如下:
    1. 优选掩码最长的
    2. 优选优先级最高的(prefernce值);
    3. 组播静态路由>MBGP>单播路由

RPF接口

  • 指的是接收到组播流的如接口与优选出的RPF路由的出接口一致的接口

组播路由表相的组成

  • 用于指定组播数据流的转发
    1. 组表项
      • (*,G):任意源组播路由表项
      • (S,G):特定源组播路由表项
    2. 上游接口:每一个组播路由表项中有且只有一个,其实就是RPF接口,去往组播源最近的接口,用来接收组播流量
    3. 下游接口:连接存在组播接收者的接口,用来转发组播流量可以存在多个

组播分发树:MDT

  • 是一棵无环、无次优且无重复保温的单向最短路径树
  • 是通过RPF和组播路由协议计算生成的,以组播源为树根,组播组成员为叶子,组播路由器为节点的组播流量转发路径树

组播路由协议介绍

  • PIM:协议无关组播,用于AS内生成组播分发树
  • MBGP:组播BGP协议,用于AS间进行RPF检查
  • MSDP:组播源发现协议,用于帮助生成AS间组播分发树

有关IP组播基础的更多相关文章

  1. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby - 在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC? - 2

    我想在Ruby的TCPServer中获取客户端的IP地址。以及(如果可能的话)MAC地址。例如,Ruby中的时间服务器,请参阅评论。tcpserver=TCPServer.new("",80)iftcpserverputs"Listening"loopdosocket=tcpserver.acceptifsocketThread.newdoputs"Connectedfrom"+#HERE!HowcanigettheIPAddressfromtheclient?socket.write(Time.now.to_s)socket.closeendendendend非常感谢!

  6. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  7. ruby - 没有 nginx 的 Puma - 同一 IP 上的多个 ruby​​ 应用程序 :PORT - 2

    Nginx在生产中的重要性通常基于它为慢速客户端提供服务的能力;在RESTfulAPI的设置中,它似乎是生产堆栈的一个不必要的层,尤其是Puma(不像广泛使用的unicorn可以处理nginx工作)。Pumacanallowmultipleslowclientstoconnectwithoutrequiringaworkertobeblockedontherequesttransaction.Becauseofthis,Pumahandlesslowclientsgracefully.HerokurecommendsPumaforuseinscenarioswhereyouexpect

  8. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

  9. Java IP归属地查询(离线方式+在线方式,内附查询IP方法) - 2

    一、离线方式1.1.下载ip2region.xdbGitHub项目地址:https://github.com/lionsoul2014/ip2region我们首先需要下载一个ip2region.xdb的文件下载地址:https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.xdb打开后点击如图的Download图标即可下载。下载完成后,需要将该文件放到我们的项目中。ps:我是直接放到服务器的,因为放在项目的资源文件夹下,当我们调试的时候使用JavaSpring自带的工具去获取该文件的绝对路径时,没有任何问题,能够正

  10. IP数据报格式 - 2

    1、报文格式前几篇总结过较多网络层的知识,ARP,ip地址、子网掩码等等。这次总结一下IP数据报的报文格式IP数据报的格式能够说明IP协议都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(4字节)为单位来描述的。wireshark中IP数据报文呈现一个IP数据报文由首部和数据两部分组成。首部的前一部分是固定长度,共20字节。是所有IP数据报文必须具有的。在首部的固定部分的后面是一些可选字段,其长度可变。2、首部个字段意义  1、版本占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。版本号为6(即IPv6)  2、首部

随机推荐