BGP知识点总结

BGP工作机制:BGP基于TCP协议。

1. BGP邻居刚建立时,发送整个BGP路由表交换路由信息,之后为了更新路由表只交换更新消息(update message)。

1. 系统在运行过程中,通过接收和发送keepalive消息来检测相互之间的连接是否正常的。

2. 一般情况下一条路由由自治系统内部的某种内部路由协议发现和计算产生,由自治系统边界路由器(ASBR)通过EBGP连接传播到其它自治系统中。

3. 路由在传播过程中可能会经过若干个自治系统,这些自治系统称为过渡自治系统(如:AS5)。若这个自治系统有多个边界路由器,这些路由器之间运行IBGP来交换路由信息。另外一种自治系统称为Stub AS(如:AS1),其内部只有一个ASBR通过EBGP连接外部,同外部其他AS的通信要靠过渡自治系统来转接。

注:启用BGP后,路由器会建立BGP路由表(即从邻居或自己的BGP协议那里学到路由表项);但实际用于转发的路由表,需要从各种渠道学习路由协议进行优选,确定最优的用以指导报文转发。

BGP 邻居的建立需要能够使用179端口建立TCP会话,并且能够正确交换Open报文

一些关于BGP的原则:

1,BGP协议只能看到用户建立TCP连接的peer地址,(一般是loopback地址)。而到该loopback地址的真实下一跳,一般是通过IGP协议迭代出来的。

2,如果BGP得到的一条路由的Original nexthop不可达,或者通过IGP无法显式的迭代出下一跳Relay Nexthop,则该路由会被标记为非valid

3,IGP协议一般根据LSDB计算出路由信息来,而BGP无法自己计算,BGP只能将IGP计算出来的或者说是大路由表中的路由通过BGP发布出去:

a)自己进行BGP发布,自己的大路由表中看到该路由从其它协议学到,此时BGP路由表中是valid,且best的

b)接收到邻居BGP发布过来的,首先对接收的多条BGP路由进行比较,选出best的,然后再和其它协议学到的路由比较,如果BGP优先,则会向邻居传递,不优先就不传递

BGP消息中的角色:

Speaker:发送BGP消息的路由器称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP Speaker。当BGP Speaker收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP Speaker。

Peer:相互交换消息的BGP Speaker之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer Group)。

BGP通告路由的方法:

BGP采用发送路由增量(Incremental)的方法,完成全部路由信息的通告和维护:

初始化时发送所有的路由给BGP对等体(发送路由协议的路由器称为BGPspeaker),同时在本地保存了已经发送给BGP对等体的路由信息。(然后依靠周期性keepalive报文校验TCP的连通性)

当本地的BGP收到了一条新路由时(如通过IGP注入了新路由或加入了新的静态路由),与保存的已发送信息进行比较:

a)如未发送过,则发送,如已发送过则与已经发送的路由进行比较;

b)如新路由花费更小,则发送此新路由,同时更新已发送信息,反之则不发送。当本地BGP发现一条路由失效时(如对应端口失效),如此路由已发送过,则向BGP对等体发送一个撤消路由消息。路由撤销只能依靠notification通知撤除,而notification靠TCP协议来保证可靠性。

BGP路由更新使用TCP协议,端口号为179。BGP发送或接收路由的单位为整个AS系统。

4种报文及6种状态机:

HELLO---BGP对等体间通过发送OPEN报文来交换各自的版本、自治系统号、保持时间、BGP标识符等信息,进行协商(用来建立BGP邻居)。

UPDATE---UPDATE报文携带的是路由更新信息。其中包括撤销路由信息和可达路由信息及其路径属性。

NOTIFICATION---当BGP检测到差错(连接中断、协商出错、报文差错等)时,发送NOTIFICATION 报文,关闭同对等体的连接。

KEEPALIVE---KEEPALIVE报文在BGP对等体间周期地发送,以确保连接保持有效。

Idle(空闲):Idle是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry),发起一条TCP连接,同时转入Connect(连接)状态。

Connect(连接):在Connect 状态,BGP发起第一个TCP连接,如果 连接重试计时器(Connect-Retry)超时,就重新发起TCP连接,并继续保持在Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就转入Active 状态。

Active(活跃):在Active状态,BGP总是在试图建立TCP 连接,如果连接重试计时器(Connect-Retry)超时,就退回到Connect 状态,如果TCP 连接成功,就转入OpenSent 状态,如果TCP 连接失败,就继续保持在Active状态,并继续发起TCP连接。

OpenSent(打开消息已发送):在OpenSent 状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open 报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive 报文,并复位Keepalive 计时器,开始计时。同时转入OpenConfirm状态。

OpenConfirm(打开消息确认)状态:在OpenConfirm状态,BGP等待一个Keepalive 报文,同时复位保持计时器,如果收到了一个Keepalive 报文,就转入Established 阶段,BGP邻居关系就建立起来了。如果TCP连接中断,就退回到Idle 状态。

Established(连接已建立):在Established 状态,BGP 邻居关系已经建立,这时,BGP将和它的邻居们交换Update 报文,同时复位保持计时器。

还有一种状态:

No neg(无须协商):如果该BGP邻居在MBGP中enable了,但是在公网中没有enable,则看公网邻居表就会显示no neg

成为BGP路由的方法:

纯动态注入是指:路由器将通过IGP路由协议动态获得的路由信息直接注入到BGP中去。纯动态注入方式没有对路由信息做任何过滤和选择,它会把路由器获得的所有IGP路由信息都引入到BGP系统中。即使用import命令引入的路由条目。

半动态注入是指:路由器有选择性的将IGP发现的动态路由信息注入到BGP系统中去。意即IGP协议发现该网段,然后BGP通过静态配置的方式引用。即由某种路由协议首先发现该路由,此时可以在路由表项中看到其精确表项,此时再用network发布。(此时bgp路由表中的优先级就是该igp路由的优先级)

静态注入是指:路由器将静态配置的某条路由注入到BGP系统中。即首先配置该条静态路由,或者是直连路由,然后使用network发布的。

注:1、执行引入或发布动作时,默认把原协议的优先级设置为该BGP路由的优先级。

2、注入路由时,相应的IGP路由必须已经通过竞争加入到总路由表了,如果总路由表中的这条路由是BGP邻居传递过来的,那么是不会触发本地生成BGP路由的


BGP路由通告原则:

1、多条路径(专指BGP邻居传递过来的)时,BGP Speaker只选最优的给自己使用(即加入到BGP路由表,但不表示一定best);(是指根据BGP选路原则选出的路由)

注:这个最优是指在BGP路由表中最优的。即在BGP路由表中多条相同路由时,按照选路原则选出一个最优的,作为BGP路由表中的最优,参与总路由表的竞争。

2、BGP Speaker只把自己使用的路由通告给相邻体(包括两种:自己发布的;邻居传递过来的);

注:“自己使用的路由”即标识为best的路由;如果该路由看到没有“best”,则可以看到该路由没有向邻居通告。

而判断该BGP路由是否“best”的依据就是在总路由表中所用的该路由是从BGP得到的(即收到邻居传递过来的路由,要参与与其它协议的路由竞争,胜出了才向邻居继续传递)。或者这条路由是自己通告的(此时也会标记为best)。此时会向邻居传递,但邻居是否会使用就难讲了。

3、BGP Speaker从EBGP获得的路由会向它所有BGP相邻体通告(包括EBGP和IBGP);

4、BGP Speaker从IBGP获得的路由不向它的IBGP相邻体通告;

5、BGP Speaker从IBGP获得的路由是否通告给它的EBGP相邻体要依IGP和BGP同步的情况来决定;所以一般都是把同步关闭的,来允许从IBGP来的路由向EBGP通告。

注:IGP协议一般根据LSDB计算出路由信息来,而BGP无法自己计算,BGP只能将IGP计算出来的或者说是大路由表中的路由通过BGP发布出去:

a)自己进行BGP发布,自己的大路由表中看到该路由从其它协议学到,此时BGP路由表中是valid,且best的

b)接收到邻居BGP发布过来的,首先对接收的多条BGP路由进行比较,选出best的,然后再和其它协议学到的路由比较,如果BGP优先,则会向邻居传递,不优先就不传递。

BGP路由优选原则:

在VRP5.30的实现中,当到达同一目的地存在多条路由时,BGP采取如下策略进行路由选择(统一选路):

1. BGP优选Preference值较低的本地始发路由(研发解释本地始发路由即本AS内BGP路由器通过network发布的路由)。这个优先级是IP路由表(管理路由表)中各个协议路由(包括直连路由和静态路由)的Preference值。(不仅包括本地IGP产生的路由,也包括通过bgp学习到的路由,会比较preference选出最优路由,如果bgp路由获胜,那么bgp路由会加入总路由表,同时bgp路由表中标记为best,并向邻居传递;否则不标记best,也不向邻居传递)

本地始发路由是指BGP通过import命令、network命令引入的路由或通过aggregate命令、summary automatic命令聚合生成的路由,是相对于BGP邻居接收的路由而言的。

2. 如果不同协议路由的Preference值相同,系统会按照如下的顺序优选一种协议路由:OSPF、IS-IS Level-1、IS-IS Level-2、EBGP(包含BGP Aggregate)、Static、RIP、OSPF_ASE、IBGP;由于直连路由的Preference是最小值0,所以在BGP本地始发路由中如果存在直连路由,BGP会优先选择直连路由。

注:使用network、import方式产生的BGP路由在本地的协议优先级为对应IGP路由的协议优先级而非BGP-Local路由的协议优先级;只有使用aggregate命令本地聚合生成的路由才使用BGP-Local协议优先级。

3. 首先丢弃下一跳(Next_Hop)不可达的路由(这个是下一跳必须是在总路由表中可以显示看到的);

4. 无条件优选带Label的IPv4路由;(是指BGP+传递过来的,同时携带label标签,一般用于optionC场景)

5. 优选协议首选值(PrefVal)最高的路由;(类似于BGP的cost值,可以通过route-policy来添加,华为特有的,仅本地有效)

6. 优选本地优先级(Local_Pref)最高的路由;

7. 优选聚合路由(聚合路由优先级高于非聚合路由);???(不仅可以聚合本地路由,ebgp传递过来的路由也可以进行聚合)当然要掩码相同,优先级相同

8. 优选AS路径(AS_Path)最短的路由;(只判断长度,不判断AS路径的实际AS是否一致)

9. 比较Origin属性,依次选择Origin类型为IGP、EGP、Incomplete的路由;

10. 优选MED值最低的路由;

11. 优选从EBGP学来的路由;是指EBGP和IBGP路由优先级相同的情况下,如果通过preferens改变优先级,那么在第一条就比较出来了。

12. 优选AS内部IGP的Metric最低的路由。(判断的依据为迭代的实际的IGP下一跳的cost值)这个是指到Original nexthop的总igp路由的cost值.作为BGP传递过来的路由,其下一跳根据配置(强制不改变或者强制为本地),有可能不相同,需要根据显示的下一跳计算总的cost值。

注:如果配置了负载分担,并且有多条As_Path完全相同的外部路由,则根据配置的路由条数选择多条路由进行负载分担;???如果不相同呢

13. 优选Cluster_List最短的路由;

14. 优选Originator_ID最小的路由;(这个专指RR反射路由时添加的属性)

15. 优选Router ID最小的路由器发布的路由;即产生路由的起始路由器。

16. 比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由。

路由迭代:在路由表中,报文转发依赖下一跳地址进行转发;如果某网段的下一跳地址不是直连的,可以在表中查找该地址的表项(该路由称为依赖路由),找出下一跳,继而进行报文的转发。如果依赖路由是负载分担的,则该路由就是负载分担的。但是针对BGP+的负载均衡不决定于路由,而是看LSP是否配置了负载均衡。

注:针对BGP+的路由优选原则,同上一致。

关于BGP的统一选路原则和独立选路原则(以V5R7C02 VRP版本为界)

1、BGP统一选路,先进行协议间选路,再进行BGP协议内选路,如果igp获胜了,那么该路由可以通过network等方式引入到bgp中,再参与bgp内选路,此时不再比较优先级。简单来说就是:刚开始把ebgp、ibgp和igp路由进行协议优先级的比较,如果igp获胜,才能发布对应的本地bgp路由,再参与到bgp协议内选路。不过如果igp比不过bgp,无法入选总路由表,那么也不会触发建立bgp本地路由。

2、BGP独立选路,不管igp的路由表是否最优,先通过network等方式生成本地bgp路由,参与到与ebgp和ibgp路由之间的协议内选路,此时bgp选路不进行考虑协议优先级条件,选举出bgp最优路由时,再与igp路由进行竞争,获胜者加入总路由表。此时就会出现两种情况:一种是bgp协议内选路时,ebgp或ibgp路由比不过引入的本地bgp路由(相同路由肯定比不过,因为本地路由优先,所有只要收到了本地IGP路由,就会导致BGP学习到的路由不生效),导致不放入bgp路由表,于是没有参与总路由表竞争的资格,此时即使igp路由优先级低于ebgp或ibgp优先级,也会被发布到bgp中。另一种是,bgp先从邻居学习到,此时igp路由过来了,但优先级低于bgp,导致无法装入总路由表,导致无法触发生成bgp本地路由,此时bgp获胜。(V8R3已经解决了该问题:BGP选路结果若BEST路由为从RM引入的路由,支持下发次优的BGP路由)

所以不管哪种选路方式,静态黑洞+network方式时,都要使静态路由优于ibgp路由,但小于igp路由,意思是让本地触发生成bgp本地路由的静态路由优先级一定要战胜ibgp这种不可靠路由(为了防环,因为ibgp容易成环,此处没有提及ebgp,因为一般其为通往as外的通道,一般都是要求信任的),但是要确保其优先级小于igp,避免将路由导入黑洞。因为黑洞路由配置了就不会消失,用以避免ibgp到来过晚或经常消失的缺陷。但其仅仅为了触发生成bgp本地路由,不能比igp这种真正传递路由协议的优先级高。

附:ibgp路由的作用,是在as内同步所有bgp路由器的bgp路由的,其实质就是一个距离矢量路由协议,所以为了防环才规定其ibgp得到的路由不能传递给其他ibgp路由,所以其可靠性比较低,一般其优先级设置为最低。其次,黑洞路由是为了触发生成bgp本地路由的(因为其比igp路由稳定),和避免环路(因为压制住了ibgp路由),其不为了指导路由转发,所以其优先级第二低。igp路由用来指导as内路由转发,需要人为保证其无环,在这个条件下由其指导转发没有问题,所以其优先级要高于ibgp和黑洞路由。ebgp路由是指导到as外的路由,理论上是as发往外部的唯一通道,且发往as外一般不会环路(即使ebgp路由有问题,我们本as也没有办法),所以其优先级要最高。当然该原则不绝对。

备注:NE5000E从V3R7到V8R3版本针对BGP选路又有变化:V3R7版本针对BGP引入的IGP路由一旦符合条件生成BGP路由,在与EBGP或IBGP路由比较时,由于属于本地路由,所以一定会优选,导致EBGP和IBGP路由不生效,即使两者的优先级比IGP协议路由高。而V8R3版本针对这一点做了调整,如果BGP引入了IGP的路由,那么生成的BGP本地引入路由,需要和EBGP和IBGP路由比较优先级,如果优先级低,那么会导致IGP路由不优选,从而撤销从IGP引入的BGP路由;而如果BGP没有配置引入IGP路由,那么EBGP和IBGP路由就参考独立选路原则,选出最优BGP路由后,参与到与IGP路由的优先级比较中,再决定出最后路由。

BGP属性详解:

Origin 起点属性:定义路径信息的来源,标记一条路由是怎样成为BGP路由的。如IGP、EGP、Incomplete等。

1)BGP把聚合路由和用直接注入到BGP路由表的具体路由看成是AS内部的(即使用network命令注入的),起点类型设置为IGP,

2)BGP把通过其它IGP协议引入的路由起点类型设置为Incomplete。(即用import命令注入的)

3)BGP把通过EGP得到的路由的起点类型设置为 EGP(最初的一种路由协议,目前基本上看不到)。

As-Path AS 路径属性:是路由经过的AS的序列,即列出在到达所通告的网络之前所经过的AS的清单。BGP发言者将自己的AS前置到接收到的AS路径的头部,它可以防止路由循环,并用于路由的过滤和选择。如果接受到的路由as属性中发现自己的as号,则拒绝接受该路由。

Next hop 下一跳属性:包含到达更新消息所列网络的下一跳边界路由器的IP地址(即Original nexthop,根据这个地址迭代出Relay Nexthop;如果迭代不出,说明下一跳不可达,路由不生效)。BGP的下一跳与IGP有所不同,它可以是通告此路由的对等体的地址,如EBGP,这同IGP是相同的。而在其它情况下,BGP使用第三方的下一跳,如IBGP对从EBGP对等体获得的下一跳不加改变的在自治系统内传递;在多路访问媒体上,BGP以路由的实际来源为下一跳,即使它不是BGP对等体。如果该路由是本地始发路由(即本地引入或发布的路由),那么传递给ibgp或ebgp邻居时,下一跳为其建立bgp邻居关系的地址(不一定是router id)。

1)BGP在向IBGP通告从其它EBGP(或反射的ibgp客户端的路由)得到的路由时,不改变路由的下一跳属性,本地BGP将从EBGP得到的路由的下一跳属性直接传递给IBGP。

2)BGP在向EBGP对等体通告路由时(无论是ibgp路由或其他ebgp的路由),下一跳属性是本地BGP与对端连接的端口地址。

3)对于可以多路访问的网络(如:以太网或帧中继),下一跳情况则可能有所不同。

注:默认若通告的路由的下一跳(即本路由器看到该路由的下一跳,即与本路由器建立邻居的地址)和通告的接口位于同一个三层网段,则不修改下一跳(一般不会遇到,因为router-id总是选择loopback接口);但可通过命令强制修改下一跳为本身(主要用于NBMA网络)。这里的“下一跳”指的是建立BGP的router id地址。??????

MED属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的邻居路由器选择一个较好的入口路径。一条路由的MED值越小,其优先级越高。在引入路由时可以设置med值,在向AS外发布该路由时,会影响EBGP邻居对路由的选择(在传多一个AS时,该值被清空,且在AS内传递时该值不生效)

注:1)BGP生成路由时会添加MED值(igp的cost),并且MED属性会在AS内的IBGP邻居中传递(可以看到),不加改变,除非用路由策略进行改变,用来指导路由优选;

2)MED值在AS内传递,在向EBGP传递时会被取消掉(因为同一个AS得到的MED,不会向另一个AS传递)当然边界路由器自身产生的BGP路由向EBGP邻居传递时就会添加默认的med值。?????ebgp传递的路由是否包含med属性

3)default med命令仅在AS边界路由器向EBGP邻居传递时才起效(自己bgp路由表中看还是0),配置该命令后,在向EBGP邻居传递任何路由(包括自己产生的或是传递邻居的)都会加上设置的med值。

4)当使用路由策略更改了med后,是可以向IBGP或EBGP邻居传递的该值的。

5)缺省情况下,如果路由属性中没有MED值,则按0处理,参与竞争。可使用命令使其作为最大值处理。

BGP知识点总结


6) 对同一个AS不同EBGP邻居过来的路由,才进行MED比较,不同AS过来的路由,不比较MED。

Local-Preference 本地优先属性:本地优先属性用于在自治系统内优选到某一个目的地的路由。在引入路由时,设置该路由的本地优先级,用以影响邻居对路由的选取(需要通过路由策略来实现)。向本地优先属性值越大,路由的优选程度就越高。只对本AS内的路由通告有效,若出了AS则该值自动取消;

注:1)路由发布给IBGP邻居时(无论是自己产生的还是传递邻居的路由),都会添加上local-preference属性,自己的BGP路由表中则看不到该属性。

2)无论有没有做local-preference的设置或路由策略来改变local-preference,在AS内都会带着该属性。

3)传递给EBGP邻居时,local-preference自动消失。

4)进行路由优选时,如果看不到localpref选项,那么默认为100,参与竞争。

Community 团体属性: 团体属性标识了一组具有相同特征的路由信息,与它所在的IP子网和自治系统无关。公认的团体属性值有:NO-EXPORT、NO-ADVERTISE、LOCAL-AS和 INTERNET。解释:可以认为团体属性类似于tag(因为BGP无法传递路由的tag属性,所以产生了团体属性,借此可以进行路由匹配并执行动作)缺省路由不带团体属性。

1)NO_EXPORT:带有这一团体值的路由在收到后,不应被通告给一个联盟之外的对等体。

2)NO_ADVERTISE:带有这一团体值的路由在收到后,不应被通告给任何的BGP对等体。

3)LOCAL-AS:带有这一团体值的路由在收到后,应该被通告给本地AS内的对等体,不应被通告给任何的EBGP对等体(包括联盟内的EBGP对等体)。

4)INTERNET: 带有这一团体值的路由在收到后,应该被通告给所有的其他路由器。

注:针对团体属性的格式定义:我们设备定义的团体属性格式为16:32模式的,没有特殊意义,可以认为就是一串数字。另外如果使用apply community 100命令为路由添加团体属性,则可以看到实际上设备路由的团体属性被加成了0:100,即apply community 100和apply community 0:100命令效果一样。

路由反射器相关知识:

路由反射器的作用:AS内部的所有路由器都运行BGP,在AS内部部署路由反射器,构建hub and spoke的IBGP(会话数为N-1), 然后关闭所有BGP路由器的同步。此方案可以使BGP路由器传递IBGP路由到EBGP, 并保证BGP路由的连通性。但是对物理拓扑有很大的限制15个路由器的AS,具有冗余的RR方案(33个IBGP会话)

路由反射器概念的基本思路是:指定一个集中路由器作为内部对话的焦点。多个BGP路由器可以与一个中心点对等化,然后多个路由反射器再进行对等化。

反射器,客户机以及非客户机:

1,路由反射器作为其他路由器的集中点,其他路由器就称为客户机。客户机与路由反射器对等并与其交换选路信息。路由反射器会依次在客户机之间传递(反射)信息。

2,路由反射器的IBGP对等体分为两类:客户机和非客户机。一个路由反射器和它的客户机构成一个群(Cluster)。在自治系统中不属于这个群的其他所有对等体就是非客户机。

3,非客户机与路由反射器之间,以及非客户机互相之间必须组成闭合网,因为它们遵循IBGP闭合网的基本规则。客户机不应与其相关群之外的IBGP建立对等。路由反射功能只在路由反射器上完成,所有的客户机和非客户机都是常规的BGP对等体,与路由反射器的功能无关。

反射原则:

1,从一个非客户机对等来的路由,反射到全部的客户对等上;

2,从一个客户对等来的路由,既反射到全部的非客户对等,也反射到所有的客户对等上。

注:RR将IBGP的路由反射给IBGP时,不改变下一跳的地址;而其它情况的反射都遵循“BGP下一跳属性”的定义。

冗余的路由反射设计,双反射器;但是带来了环路的问题(反射器把从邻居反射器得到的路由信息又反射回了该客户机),解决方案:

一,反射群组:通过4字节的Cluster_ID来标识Cluster(通常会使用LoopBack地址作为Cluster_ID),一个群组中拥有相同的标识

1,每一次路由被反射,Cluster_ID就被加入到Cluster_list属性(新的,可选的,非过渡的10号BGP属性)中;

2,如果RR发现拥有相同Cluster_ID的路由更新,就将其丢弃(因为一般都是双挂场景,所以没必要接收另一个RR传递的路由)。

3、RR只在路由从一个客户反射给另一个客户/非客户,或者从非客户反射被客户的时候,才会创建Cluster_list;

4、当RR向EBGP通告路由时,已有的Cluster_list就被清除掉;

二,Originator_ID:(可选,非过度属性,属性类型为9)

1,由第一个反射器创建(将O_id设置为通告该路由的客户机的router id),并且不被后续的反射器所更改(一个32bit长的数值,并且只应该从IBGP里接收到)

以下这些路由器的Router ID:

1)本地AS始发路由:BGP宣告者的Router ID

2)非本地AS始发路由:本地AS的边界路由器的Router ID

2,第一个反射器传递给第二个反射器,其再反射给客户机时,客户机会丢弃Originator_ID与其Router_ID一样的路由更新信息。

将Cluster_ID设置为相同与不相同,到底有什么区别呢?

首先,如果Cluster_ID设置为不相同的值,则该两台RR分别属于不同的簇,一般对于下级普通客户,会与两个RR都建立IBGP邻居关系。这样的话,两台RR彼此间都会反射从客户学习到的路由给对端;

如果Cluster_ID设置为相同的话,则该两台RR属于同一个簇,一般对于下级普通客户,会与两个RR都建立IBGP邻居关系,但是由于两个RR的簇ID一致,使得彼此不会接受并计算对端RR发来的客户路由;

综合分析,建议将RR部署在相同的簇中,既能保证冗余,而且还节省了路由器开销。

RR前缀通告原则:

RR只通告或反射它所知道的最佳路径(是否可以配置最大负载均衡数)??????

RR总是向EBGP对等体通告

RR客户在通告前缀的时候遵循常规的IBGP环路防止规则

RR从EBGP学到的会通告给所有的客户与非客户

RR从非客户学到的会通告给客户(不会通告给非客户,否则违反了第三条)

RR从客户学到的会通告给其他的客户与非客户

额外提几点设备网络规划的RR的部署:

1、针对大型网络的出口核心设备,一般有一台出口设备,就匹配一台RR设备,主要原因是,RR在对收到的路由进行优选后再反射给网内设备时,由于优选原则都一样,会造成出口路由只有一条被反射的情况。针对出口核心配置RR,然后每个RR针对每个对应出口的过来的路由分别区分打上不同的local pre优先级,就可以保证每台RR优选其对应那台核心出口的路由,这样所有出口的路由就都会被反射给网络内的设备了,再由这些设备自行配置路由的优选原则;

2、针对一个网络比较庞大的情况,一般会考虑设备二级RR设备,避免所有设备都与一级RR建立邻居过多的情况。划分多个区域,每个区域的路由器与该区域的RR设备(一般是两个互作备份的)建立IBGP邻居关系,然后每个二级RR再与一级RR建立IBGP邻居关系,以减少一级RR上的邻居数目。这样一级RR的路由反射给每个二级RR,然后每个二级RR再反射给该区域的路由器。

3、在对出口出去的路由进行优先级操作以控制优选和备份时,一般本端只能采用MED值进行控制(当然也可以用AS长度),但是MED值参数在BGP选路原则中比较靠后,容易不成功,所以还可以采用给发布的BGP路由标记团体属性的方式,然后由对端路由器针对该特定团体属性,配置对应的local pre值,来间接控制路由的优选度。


AS内部的所有路由器都运行BGP,把一个原始的AS基于网络拓扑划分为若干个sub-AS(又称联盟AS),联盟AS之间的BGP邻居叫做联盟EBGP,不需要full mesh BGP会话;在每个联盟AS内部运full mesh IBGP或者hub and spoke反射器,然后就可以关闭所有路由器的BGP同步功能.


IGP负载分担:

通过链路cost/metric规划自动形成等值路由

BGP负载分担:

(1)使用BGP路由分担命令( vrp3.3 Balance /vrp5 Maximum )改变优选策略,形成BGP等值路由。

(2)使用Loopback接口创建BGP连接,通过到Loopback的IGP等值路由迭代形成BGP路由的负载分担。

(3)虚拟下一跳:多台EBGP路由器收到相同外部路由后向RR/IBGP邻居通告时强制改变路由nexthop为一个指向对端AS的虚拟地址(本域每台EBGP路由器上均配置到此虚拟地址的静态路由指向对端EBGP邻居,并将此路由引入IGP),通过到IGP路由迭代形成EBGP路由的负载分担。(同上)

BGP FREE特性:

BGP FREE特性的主要作用是,减少transmit层设备的bgp开销及路由表开销。这个概念与BGP和IGP同步的特性有关(开启BGP同步的情况下,一台设备从另一台设备通过BGP学过来的路由,会在其IGP路由表中检查一下,如果该BGP路由迭代的实际下一跳和IGP路由表中该路由的下一跳一致,那么才认为该BGP路由有效,否则可能会出现中间路由器由于没有配置bgp,导致没有对应路由,而把流量丢弃的情况)。

BGP FREE的做法就是:通过一条命令在BGP路由器(类似于MPLS VPN的PE设备)上开启一个机制,就是在计算到该BGP路由的下一跳进行迭代时,如果传递过来的源下一跳存在LSP路径,那么就将到该路由的下一跳出口指定为该LSP,这样到该路由的流量就直接封装进行该LSP进行转发,通过中间设备时,是不需要查公网路由的,所以就可以节省中间设备的BGP和路由开销了。

附:未使能BGP FREE特性的路由器的行为,如果一条路由的下一跳不是本地直连的,那么就会进行一层层的迭代,直到迭代出本身直连的下一跳。如果该下一跳需要进行lsp,才会送到lsp隧道中。而使能了BGP FREE功能后,路由器就不再进行路由迭代了,直接查找源下一跳是否存在LSP,如果存在就进LSP通道,如果不存在,就进行普通路由迭代,走普通igp转发路径。

其实BGP FREE的行为就类似于MPLS VPN,在查找私网路由的下一跳时,如果PE的32位路由存在LSP通道,那么就不再针对PE的32位路由进行迭代了,而是直接进入LSP隧道进行转发。这个MPLS VPN的转发机制,而公网路由转发的机制,默认必须要迭代出直连的下一跳的。


分享到:


相關文章: