设为首页收藏本站language 语言切换
查看: 2348|回复: 9
收起左侧

[已解决] 来个组播哥

[复制链接]
发表于 2013-7-23 10:39:54 | 显示全部楼层 |阅读模式
11111111111.jpg   
MA网段R3 :50.1.1.3   R4:50.1.1.4
一、底层OSPF,并且是PIM-DM模式!

二、R1是组播源 ,R5是组成员, R1发组播到R2 ,R2选前转器 ,选的R4作为前转器,所以组播流量会从R4走!R3会请求R2把连自己的接口PRUNE!
三、DM模式下是路由器主动发查询,R3 R4得选一个查询器,因为是IGMPV2版本,选出来的查询器是R3,由于R3发查询包!
那么现在有个问题,R1 R5之间的组播流量到底走的是哪边? 查询是R3发的,可是R2把连R3的接口给PRUNE了!走R4?R4                          

发表于 2013-7-23 11:19:39 | 显示全部楼层
PIM-DM 可以使用由任意底层单播路由协议产生的路由表执行反向路径转发(RPF)检查。
所以走R4.不知道是不是
沙发 2013-7-23 11:19:39 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-7-26 00:19:45 | 显示全部楼层
查询器是R3,因为R3 IP地址小.  R3周期性查询R5上有木有用户...
R2-R3上prune掉的是流量.不是表项...而且周期性3分钟刷新表项.
单播路由表R2-R4-R5开销比较小,肯定组播流量从R4走.
又不冲突.我看不明白你哪里不明白.有神马问题吗?
板凳 2013-7-26 00:19:45 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-7-29 09:49:04 | 显示全部楼层
本帖最后由 Cranky 于 2013-7-29 10:47 编辑

pim-dm dense-mode  的组播一开始是R1发组播地址为224.0.0.1的查询包 ,然后R2接收查询包自己没有成员,所以继续向下发送查询包,R3和R4接收查询包,但是下面是一个MA网络,使用的是IGMP V2为了节约流量所以选出查询器,R3的IP地址最小,所以选R3为查询器,然后R3发送查询包 ,R5是成员 所以会回应组播地址为:224.0.0.2的报告消息,224.0.0.2代表网络中所有路由器的组播地址,所以对R4而言R4都能收的到,R4收到R5的回应包向上发给R2,R2然后发给R1,这样建立了R1-R2-R4-R5的源树。 而R3被R2修剪了,但是修剪的组播流量是224.2.2.2的流量,而查询报文和报告报文的组播地址不是224.2.2.2.所以R3也会向R2回应报告报文。而真正224.2.2.2的流量下发的时候会选举R4为前转器,因为R4的AD相同的情况下到源的metric值比R3的小。所以224.2.2.2组播的流量就是R1 R2 R4 R5 ,当R4DOWN了后就会走R3了。 我表达能力有限 不知道这样说清不清楚


注: 查询包 组播地址224.0.0.1 代表所有的路由器和主机设备 他们自动加入到这个组里面
        报告包 组播地址224.0.0.2 只代表了路由器,所有的路由器都加入到这个组里面


另外发现楼主有句话错了:关于下面这句
二、R1是组播源 ,R5是组成员, R1发组播到R2 ,R2选前转器 ,选的R4作为前转器,所以组播流量会从R4走!R3会请求R2把连自己的接口PRUNE!

选举前转器是路由层面的事情,从上到下只是代表数据层面,从成员到源的路径才是路由层面。所以真正选举 前转器的路由器是R5 ,而在数据层面去验证前转的路由器是在R2上去验证。

评分

参与人数 1鸿鹄币 +5 收起 理由
616390573 + 5 很给力!

查看全部评分

地板 2013-7-29 09:49:04 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-29 23:28:02 | 显示全部楼层
Cranky 发表于 2013-7-29 09:49
pim-dm dense-mode  的组播一开始是R1发组播地址为224.0.0.1的查询包 ,然后R2接收查询包自己没有成员,所以 ...

5# 2013-7-29 23:28:02 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-7-31 03:17:20 | 显示全部楼层
Cranky 发表于 2013-7-29 09:49
pim-dm dense-mode  的组播一开始是R1发组播地址为224.0.0.1的查询包 ,然后R2接收查询包自己没有成员,所以 ...

三楼的回答有两个明显的错误:1、dense模式下,数据源根本不知道接受者在哪,也不关心在哪,它只会发送给第一跳路由器,第一跳路由器会向外泛洪,根本没有什么向下查询一说。2、PIM和IGMP概念不清,这两者有自己的作用。所谓的查询者是工作在IGMP这边的,对于一个接受者来说,如有有两个叶路由器,这个时候他们会通过比较ip地址来决定,小的为查询者,只有查询者会执行general query和specified query。所以这里出现的问题就好解释了,第一,谁是查询者并不影响最后组播数据包的走向,要清楚IGMP的工作范围是接受者和叶路由器之间。至于他们后面要向R2进行泛红修剪是PIM干的活。第二,为什么会选择R4而不选择R3,首先dense模式不关心接受者在哪,对于R2来说,它收到源发来的数据,通过RPF检测后,它就直接泛红,R3和R4收到后,首先也是RPF检测,对于R4来说,它对于源12.1.1.1进行RPF检测,检测接口为f0/0,通过,所以它继续转发下去,而对于R3来说,R3去往R1R2网段从走R3的cost值为74,而从R4的接口为20,所以R3对于12网段的RPF接口为f0/0,而不是s2/2,所以对于R2泛红过来的组播流量会直接丢弃。但是RPF检测通过,R3红接受R4发过来的流量,这个时候它又向R2泛红,这个时候R2和R3之间会进行assert比较,就是比较谁离源比较近一点,失败方将停止发送流量。这里应该是R2胜出,虽然R2胜出,可以继续发送流量,但是对于R2R3这个网段来说,R2并没有接受过任何的report报文,所以就会prune掉这个端口。这里先说下assert的现象,在第三种在详细讲解。第三,楼主可能没注意到R3去往R1R2网段的路由是走R4,认为流量从R2泛红后,R3,R4都会向下泛红,这也好办。只要在f0/0下执行ip ospf cost 100,这个时候R3对于R1R2网段的RPF接口就是S2/2了,这个时候也会出现R2prune掉R3的接口,下面是解释:现在R3,R4都向下泛红流量了,同样,对于这种情况也会assert比较,assert会比较什么呢?R3,R4会互发去往源的路由的AD和metric,首先AD值都是110,不分胜负,再比较metric值,R3去往R1R2的metric为74,而R4的metric为20,所以R4胜出,R3失败prune掉f0/0,这个时候R3会发现对于(12.1.1.1,224.2.2.2)这条(S,G)路由的所有出接口都是prune掉了(12.1.1.1是源地址),R3就会认为自己没有连接任何组成员,然后就会向上游路由器发送一个(S,G)prune,来进行泛洪修剪,R2收到后就会在自己的(S,G)路由中将连接R3的接口也PRUNE掉。这个时候你就会发现流量是从R1-R2-R4-R5往下走。总结:对于R3,R4来说,他们选出查询者是为了谁来执行GQ和SQ查询,他们是工作在叶路由器和组成员之间,和组播流量转发无关。

评分

参与人数 1鸿鹄币 +10 收起 理由
616390573 + 10 一级战报

查看全部评分

6# 2013-7-31 03:17:20 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-7-31 10:28:37 | 显示全部楼层
horsetornado 发表于 2013-7-31 03:17
三楼的回答有两个明显的错误:1、dense模式下,数据源根本不知道接受者在哪,也不关心在哪,它只会发送给 ...

pim-dm模式是 路由器主动的发查询包发现成员的存在,而PIM-SD是成员主动的发报告报文主动的告诉路由器要加入组。我想问你一个问题  是先接入了成员才发IGMP,还是通用过IGMP知道是否有成员接入??  PIM-DM路由器泛红的过程不就是发IGMP查询包的过程吗。
7# 2013-7-31 10:28:37 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-7-31 11:50:51 | 显示全部楼层
Cranky 发表于 2013-7-31 10:28
pim-dm模式是 路由器主动的发查询包发现成员的存在,而PIM-SD是成员主动的发报告报文主动的告诉路由器要加 ...

IGMPv2中,如果组成员是第一次加入组,它会主动向叶路由器发送report报文,表示加入这个组了。所以叶路由器就算不发查询也会知道组成员的存在。还有就是通过查询来知道是否有组成员,一种是通过general query,它向224.0.0.1发送给所有组来判断是否有成员,还有一种specified query,这个是当一个组成员离组后,查询者会以该组的组地址来当目的地址,来查询指定组里是否还有成员。你要清楚查询者的作用就是为了发送GQ和SQ,来判断组成员是否存在,虽然备份者不会发这两种查询,它也是知道下面也组成员的,它只是不发而已,还是能监听的,不信你可以通过show ip igmp interface e0/0来查看,它也会显示下面有几个组成员加入。至于向上游报告它这是否有组成员,则是通过PIM,prune和join去执行了的。没有组成员了,它就会向上游发送prune消息,还有就是虽然有组成员了,但是还有另外一个叶路由器发送流量,这个时候他们会进行assert比较,失败者也会prune掉端口
8# 2013-7-31 11:50:51 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-10-4 02:09:55 | 显示全部楼层
9# 2013-10-4 02:09:55 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-31 10:19:55 | 显示全部楼层
horsetornado 发表于 2013-7-31 03:17
三楼的回答有两个明显的错误:1、dense模式下,数据源根本不知道接受者在哪,也不关心在哪,它只会发送给 ...

10# 2013-12-31 10:19:55 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-28 07:08 , Processed in 0.105418 second(s), 30 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表