- 积分
- 777
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 最后登录
- 1970-1-1
- 阅读权限
- 40
- 听众
- 收听
中级工程师
   
|
发表于 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查询,他们是工作在叶路由器和组成员之间,和组播流量转发无关。 |
评分
-
查看全部评分
6#
2013-7-31 03:17:20
回复(0)
收起回复
|