一个经典的组播教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IGMP
• 四:交换机处理组播:如果一台交换机有24个端口,只有一个端口加 入了一个组,那么其它的22个端口也可以收到 解决办法: • (1):手工配置交换式多播树 把相应的端口手动加上去、这种 方法非动态、不可扩展。 • (2):GMRP • (3):IGMP snooping ip igmp snooping • (4):CGMP只有路由器上产生CGMP包,交换机读取、60s发 一次 • join:路由器发出,告诉路由器将 一个成员加入到一个多播组中 • leave:路由器发出 • 信息:GDA:组目的地址 • USA:单播源地址
为什么要用组播
• 1:单播代替组播每人发一份资源消耗大, • 2:广播代替组播 增加不用收到的主机的 负担同时也不能跨越多跳
支持组播三个条件
• • • • • • • • • • • • 1:标识多播组的地址集 (1): 224.0.0.0---224.255.255.255 28个bit可变=2*28=268000000 (2): 保留:224.0.0.0--224.0.0.255 224.0.0.1本子网内的全部系统 224.0.0.13PIM路由器 224.0.0.2本子网内的全部路由器 224.0.0.15CBT路由器 224.0.0.4DVMRP路由器 224.0.1.39Cisco RP通告 224.0.1.40Cisco RP发现 (3):二层MAC为0100:5e00.0000 第8bit为1说明它为多播地址 二层MAC的前25位+三层地址的后面23位 2*5=32有32个多播 共用一个MAC 好处:源发送一份数据帧所有的成员都能收到、晓得IP就晓得 MAC就不要ARP了 坏处:会有冲突 IETF解释:发生冲突的几率很少 是完全可以接 受的
支持组播三个条件
• • • • • • • • 2:主机加入和离开组的机制 IGMP 在IP包中协议号为2 (1):加入和离开多播组: 源不知道成员有哪些、什么时候加入什么 时候离开。和收听节目一样。所以该路由器应该查询有没有组成员、谁加入 了。 (2):加入等待时间:上面的坏处是要路由器发了查询了就才能加入。 所以提出了一种新的方法:主机可以请求加入路由器收到后就发送组播流量。 (3):离开等待时间:一旦收到一个离开消息,路由器就马上发一 个查询消息如果没有成员了,我就不用再向这个网络发组播流量了。 (4):维护组:主机发送加入请求时,如果有多台路由器怎么办 了是不是都发给他们、主机收到查询时是不是每一个都发出响应了 解决办法:选一个查询路由器出来--IP地址最小的、 是抢占的 如果120s 没有收到就会接替 主机响应查询时每个人启用一个随机的定 时器,就只要一个人响应
支持组播三个条件
• IGMPv1:没有离开组消息、没有特定组查 询消息、没有最大响应时间、可能存在在 多台查询路由器。 • IGMPv3:在发展之中,只是加了一个特定 组和源的查询。
支持组播三个条件
• • • • • • • • • • • 三:有一种路由协议,把组播传给组成员 单播路由协议:路由发现和包转发、不关心数据包的来源。 多播路由协议:从单个源出来,去多个目的。数据到达一个入节口,拷贝给多个 出节口。如果有环路--所以感知数据的来源而且要远离源:如果一台路由器在不是上行 接口收到一个包就丢掉 所以要路由协议来确定上行接口、下行接口。 PIM V1放在IP包中、协议号为2、224.0.0.2 V2 协议号为103 224.0.0.13 PIM-DM (1):hello用于发现邻居、间隔30s 死亡30*3.5=105s (2):join/prune收到下游的prune后我会启动一个210s的定时器到期后又会发组
支持组播三个条件
• • • • • • • • • • • IGMPv2:主机功能: (1):Membership report表明主机希望加入哪一个组、发两条重复 的,间隔时间为10s 、作为路由器查询消息的一个响应。 (2):Vertion 1 Membership report为了向后兼容 (3):Leave Group 发送组224.0.0.2所有路由器才能收得到 路由器周期性的发送查询 这个包里面有一个最大响应时间为10s(0--25.5) 主机收到后就设置一个定时器(0---最在响应时间内的一个值)到时就响应查询。 这个响应其它的主机也能收到,因为定时器还没有到所以他们就 不发了 主机加入命令:ip igmp join-group 228.13.20.216 IGMPv2:路由器功能 (1):general query(常规组查询) 是否有成员、什么时候没有成 员 60s发一次 ip igmp query-interval 0---65535 地址为224.0.0.1 180没有收到回应就 认为没有成员了 (2):group-specific query(特定组查询) 收到离组消息后发的, 地址为组播地址 也会发两条 间隔为1s钟 但是思科只发送一条。 查询路由器选IP地址最小的 查看:sh ip igmp int f0/0
RP的选举
• (3):auto-RP--cisco私有 • RP映射代理:直接指定的、侦听 224.0.1.39 、决定了RP就发 rp-discovery 也是每隔60s 224.0.1.40 保 持时间为3倍 • C-RP:每隔60s把它发送到 224.0.1.39 RP收到后选一个IP最大的为RP • 配置:在所有的C-RP:ip pim send-rpannounce lo0 scope 5 好像也要加 • 在rp映射代理:ip pim send-rpdiscovery lo0 scope 5 而且在环回口上还要 ip pim sparse-mode • 注意:在有的时候、映射代理向 224.0.1.40发送rp-discovery 但是其他的路由器要加入这个组、就要 向rp加入连RP都没有选出来 • 所以就用sparse-dense-mode •
IGMP过程
• 路由器被激活 发一个GDA为0 USA为自己的MAC的jion包 让交换机知道哪个接口连了一台多播路由器 • 当主机希望加入时,发送一个IGMP成员关系报告消 息,交换机把它的MAC加入到表中 • 路由器收到IGMP,发一个GDA为组MAC USA为主机 IGMP, GDA MAC USA MAC 交换机感知的多播组,把这个端口加入到多播组 这 时发送多播帧时从相应的端口发送出去 • 要离开时,主机发送离开组消息路由器收到后,发送 两条特定组查询,看有没有响应?有:发送一个GDA为组 播MAC USA为离开组成员的MAC 告诉交换机删除它 无: GDA为组MAC地址 USA为0 离开包
• PIM-SM • 1:hello wenku.baidu.com 2:bootstrap • 3:candidate-rp-advertisement • 4:join/prune • 5:assert • 6:register 源的下一跳路由器向rp注册、 以单播的方式、RP收到向其发送JION/PRUNE、 形成SPT 后向其发register-stop • 7:register-stop
RP的选举
• (1):静态配置RP • 在所有的路由器 上:ip pim rp-address 3.3.3.3 最好是用环 回口:便于管理、不会失效。 •
RP的选举
• • • • • • • • • • (2):bootstrap引导协议来指定和宣告RP C-BSR候选引导路由器 C-RP候选聚合点 从C-BSR选出一个BSR 优先级(0-255) IP地址高 启动130s的引导定时器侦听BOOTSTRAP消息(宣告路由器的优 先级和地址) 如果收到的优先级比自己高?是:重置自己 的定时器继续侦听 低:宣称自己是BSR 每60s发一个消息 130到了没有收到 也认为自己是BSR bootstrap ===224.0.0.13 ttl==1 pim路由器 收到后向所有的节口发送 C-RP向BSR单播发送candidate-rpadvertisement 优先级低的+IP地址最大 配置:ip pim bsr-candidate lo0 ip pim rp-candidate lo0 它和auto-rp的不同是BSR是不选rp的,把 信息发给人
播流量
(3):graft我发了以后会等3s 如果3s后没有收到graft-ack我就重新发 (4):graft-ack (5):assert 这个时候D会收到两个组播包,B的还有C的、 选谁的了,1:AD 2:COST 3:IP地址最大的 B C会相互之间发送assert 来选择一个转发路由器
PIM-SM