next-hop-self在Cisco中BGP路由器的意义.

发布网友

我来回答

3个回答

热心网友

1 BGP在传递路由时 不会对路由条目进行改动
假如3台路由器 A B C A在一as BC在一as
A传一条 1.0.0.0 /8 下一条为 12.0.0.1的路由
B学到的是 1.0.0.0/8 12.0.0.1
C学到的也是 1.0.0.0/8 12.0.0.1
而C上根本不知道12.0.0.1怎么去
这时在B上做 NEXT-HOP-SELF
B传给C的时候就变成
1.0.0.0/8 下一条为 23.0.0.2 的路由
2 IBGP和EBGP的200和20不是指的METRIC 而是指的管理距离
对于去往同一目的的路由 谁的管理距离小 就先放进路由表中
3 BGP防环
BGP这个协议完全是一种策略性的路由协议,它的复杂并不是由于路由算法有多难学,最主要的是利用BGP来控制路由流向的手段多样化复杂化。
任何路由协议都要首先解决环路的问题,OSPFISIS利用了SPF算法来解决,EIGRP的算法比较新奇,是一种扩散算法,那么BGP在设计中使用了很多小手段,把精力精中在设计多样化控制属性。(IGRPRIP见鬼去吧,在中国你想找到他们都难)
1.BGP天生属性重要属性,ASPATH,BGP路由更新中,在经过的自冶域(AS)号添加到更新中,这样,当BGP发现自己所在的AS也在其中,就可以认为发生了环路。
2.EBGP可以这样考虑没有问题,在某些场景中,会有问题。
如上图,AS100的10.233.40.0/19更新传到AS200,在AS200中,不管是人工还是BGP的自动汇总属性,汇总成10.233.40.0/17传到AS300,再传回AS100中,在AS100看来,这条路由的ASPATH是(300,200)自己并未在其中!!这就会致环路的形成。
解决方法是增加ASSET值,使得在路由汇总后(聚合)也保留其原来的aspath的属性值,这样就可以防止路由环路了。
利用这种打标志的方法可以在AS间传递时不会发生环路,那么问题来了,如果在一个AS内怎么办?因为在IBGP中,至始至终都是在一个AS里打转,ASPATH也没有打的必要,所以,在BGP中,IBGP是不会添加ASPATH属性的。那么怎么解决这样问题呢?
3.开发者想到一个绝妙的思路,如果IBGP只是在邻接相互传递,即是说一对一。打个比方,我认识A,A认识B,但是我与B是互不认识的,因为A是不会把我介绍给对方的。在BGP如果这样规定的话,IBGP邻接学习来的路由不发布到其他IBGP邻接,不就可以防止环路了,因为这根本就不可能有环生成,都是一条线。
这方法很绝,但是这样一来就会要求全网二二之间建立邻接关系。
4.这个时候就可以按照OSPF啊那样的思路来考虑这个问题,找个*不就解决了,就是DR+BDR.为了表示高新科技就起个拉风的名字:路由反射器,就是RR了。这样就可以从逻辑上变成简单的hub-spoke的结构了。其实这个想法就是部分放开了上面第3说的潜规则。即是产生了中间人,使其可以把它认识的客户介绍给其他客户。为了防止环路,就要对中间人实行一定的公平法则,最重要一点,中间人不能改变客户的发出的信息,这样就算是环路信息传递回来也可以从更新中发现自己的RID(这也就是为什么配置LOOPBACK的原因了,那是多么重要的东西啊,在MPLS中还会要求必定要/32位的)不就可以发现环路了。聪明!
5.但是RR一带多的情况在大量路由器的时候也是体力而有所不支,一夫多妻,搞不了多少的,要不就会精竭人亡了。所以,还要想办法分担一下,怎么分担呢?能不能像OSPF那样,分成几个区,各管各的然后区区之间保持必要联系呢?肯定可以了,我的程序我作主,于是BGP开发人员就想到了,通过把一个AS分成几个小AS,小AS间用EBGP邻接,在小AS内部用RR,哇多好的设计。拉风的名字是少不了的--->"联盟"confederation,(我在想为什么不叫部落呢?)AS内的多个联盟,在别的AS看来是不可见的。那么这样把结构又搞复杂了一点(怎么越简化越复杂了呢?)。
在发明联盟后,怎么解决联盟间的环路问题呢?其实这个问题很好解决了,聪明的你肯定想到了,做个山寨的ASPATH不就可以了,对,正是这样,修正BGP的ASPATH的属性,让它在联盟中的场景中生效不就可以了。
环路的形成目前总结到这里,还有一个未写到,就是BGP同步规则,这个也是为了防止环路以及路由黑洞,打断这个规则的方法就是让全网建立全邻接结构。这个算不谈了,我直接写到可以更好理解。

防环具体看这里
http://network.51cto.com/art/201111/303118.htm

热心网友

EBGP路由器当把路由传给ebgp邻居,这个路由的下一跳会改成自己的更新源。把路由传给ibgp邻居,不会改变路由的下一跳。A——B——CA和B是EBGP邻居关系,B和C是IBGP邻居关系当B从A收到一条路由传给C的时候,如果不加上next-hop-self ,那么这条路由的更新源任然是A,就会照成不可达。。。所以在默认的时候,把送EBGP接收到的路由传给自己的IBGP邻居,往往会下一跳不可达。要对自己的ibgp邻居做Neighbor a.b.c.d next-hop-self 我这样解释你应该明白了吧?还不明白就加我QQ:12300335

热心网友

1.bgp邻居传递路由时下一跳是否改成自己的规则:e传e,改;i传e,改;e传i,不改。只要记住一个传给i不改就行(i不传i)。这一点 汐晨若风 讲错了。
当从ebgp对等体学到的路由,传给ibgp对等体时,不会改变原来的下一跳,而这个下一跳对于内部网络(都是ibgp对等体了,当然已经到内网了)来说,很可能不可达,这时,就用next-hop-self强制讲路由条目的下一跳改为本路由器,使其可达。
2.因为ebgp学到的路由都是外部as的路由,可以理解为是互联网上的路由,是从igp学不到的。假如说你从ebgp学到了一条路由,自己igp恰好也学到了(没有重发布),也就是说,这个网段自己内部也有,互联网上也有。你说是你自己内部出错了,还是整个互联网出错了?一般是自己出错吧,所以我们还是要相信ebgp的,ad值20。
永远记住:bgp是用来传递路由的,不是用来收敛内部网络的,内部收敛要靠igp。所以内部路由尽量采用igp,ibgp的ad为200。
3.ibgp防环,i-i不能传是最基本的,就是从ibgp对等体学到的不会传给其它ibgp对等体(不考虑反射器);反射器的cluster-id是一个;个人认为从对等体学到的路由,不会回传给该对等体,也可以算一个。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com