一、ebgp和ibgp
1、ebgp(external border gateway protocol):外部边界网关协议,AS之间建立的bgp邻居关系
2、ibgp(internal border gateway protocol):内部bgp协议,AS内部之间建立的bgp邻居关系
(1)IBGP路由器必须以全网状结构相连,以防止路由环路。如果使用了路由反射器或者路由联盟,则IBGP网状结构可能遭遇收敛问题,会导致路由黑洞问题。
3、两者的区别
(1)路由环路的避免措施不一样。
IBGP规定:ibgp speaker不允许把一个IBGP邻居学习到的前缀去传递给其它的IBGP邻居,因此IBGP要求逻辑全连接。
EBGP:ebgp对路由环路的避免是通过as_path属性来实现的
(2)使用的bgp属性不同。如:ibgp可以传递local_pore(本地优先性);ebgp不行。
(3)ibgp有同步的要求,而ebgp没有同步的要求。
(4)ibgp不需要ibgp邻居之间有物理连接,只需要逻辑连接即可;
ebgp一般情况下都要求ebgp邻居之间存在物理连接。
4、路由通告的传递
(1)如何将一个AS学到的路由通告给另外一个AS,要视过渡AS内部的情况而定。
(2)规则
a,bgp路由器会把从ebgp对端学到的路由通告给所有bgp邻居,包括ibgp邻居和ebgp邻居。
b,从ibgp邻居处学到的路由是否通告给自己ebgp对端,这就要视本AS内的egp和igp路由表是否同步而定,而是否需要同步——就要看本AS内的“过渡”路由器之间有没有全互联ibgp,如果是全互联的ibgp,就不需要同步。
二,十三条路由的选路原则
前提:每条路由都是最优的,也就是下一条可达,以及同步关闭
序号 | 名称 | 介绍 |
1 | weight值 | 最高有weight优先,默认是0 |
2 | local preference | 本地优先级高的优先 |
3 | next hop | 起源本路由器上的路由 |
4 | as path | as-path最短的优先 |
5 | origin | 最小的起源代码 |
6 | MED | 最低的med |
7 | EBGP>IBGP | ebgp:20;ibgp:200/255 |
8 | 度量值最小的IGP | 通过最近bgp邻居的路由 |
9 | EBGP邻居建立时间 | 最老的egbp邻居学到的路由 |
10 | 最小的BGP route ID | 更低的route-id |
11 | max-path是否配置 | 如果配置了,就负载均衡 |
12 | cluster-list短 | 始发路由器ID相同,选择cluster-list短的(每经过一个RR(路由反射器),cluster-list会加上这个RR的cluster-id) |
13 | neighbor配置小 | 优选来自于最低的邻居地址的路径,是bgp的neighbor配置中的地址 |
1、weight值(权重值)
(1)优选有最大weight的路由(0---65535),weight是Cisco私有的参数,路由器配置了weight在本地有效。
(2)缺省情况下,通过本路由器宣告、重分布或者汇总的路由的weight为32768,从bgp邻居学习到的路由的weight为0
(3)只在本地有用,影响本路由的选路。
(4)修改方法(在本路由器的入方向上做)
a,neighbor xxx weight xxx (从此xxx邻居学到的所有的路由都加)
b,router-map xxx permit 10 set weight xxx
2、local-preference(本地优先级)
(1)通过第一条选路原则不能选出最优bgp条目的情况下,优选有最大local preference值得bgp条目。
(2)local preference值只可以在ibgp邻居之间传递,在ebgp邻居之间不能传递(不能在ebgp的出方向上做,因为只在本AS内生效)
(3)对于从ebgp邻居学习到的bgp条目,local preference缺省值为100(show IP bgp中看到是空,其实也是100;show ip bgp xxx看明细的时候可以看见路由的local-preference),这个值可以通过命令bgp default local-preference修改
(4)修改方法
a,bgp default local-preference xxx //修改后,对ibgp学来的路由不起作用,只对ebgp传来的和自己产生的路由起作用。
b,route-map xxx permit 10 set local-preference xxx
c,不能在ebgp邻居关系的出方向做修改
3、起源本路由器上的路由
优选从本路由器始发的路由:包括本地network配置的重分布,或者在igp表中已经有一些需要被配置路由聚合的地址。
4、AS--PATH
若前三条选路不能选出最优bgp条目的情况下,优选as path长度短的路由条目
修改as path长度只能在ebgp邻居关系之间进行,ibgp邻居关系是不可以的
(1)as-path只可以在ebgp邻居关系的out方向和in方向去修改:
a,out方向:加在本来as号的前面/右边
b,in方向:加在本来as号的后面/左边
(2)last-as表示在离这个路由器最近的as号,重复加次数
route-map xxx permit 10
match ip address 1
set as-path prepend last as xx(xx表示加的次数)
(3)入/出方向的时候,as-path prepend与last-as同时使用,last-as先,as-path prepend后
聚合 聚合后的{ }内的as算一个。
联邦 联盟内的( )内的as一个都不算。
neighbor xxx remove-private-as删除私有as号,起源于本as无效,在出方向做。
bgp best path as-path ignore // 跳过as-path选路原则
5、起源代码origin
前四条选路原则不能选出最优bgp条目,优选最低起源类型的bgp路由
origin的顺序是igp优先egp优先incomplete(egp现在已不用)
(1)类型
i-----igp,network xxx :通过network,aggregate方式产生的bgp路由的起源属性
e-----egp:现在已不使用
?-----重分发:通过重分布产生的bgp路由的起源属性是incomplete
(2)origin在ebgp/ibgp的in和out方向都可以做。
6、MED值
前五条选路原则都不能选出最优bgp条目
(1)用途:在两个相邻as之间有多个bgp连接的情况下,MED值用于影响从相邻as到本as的路由选择(用于影响邻居as到本as的流量从哪个接口进来)
(2)MED的生成
a,本地network方式生成的bgp条目,会带上igp的metric,(同时也会带上路由的下一跳,开启汇总后会被取消)会传给所有邻居。
b,如果从ebgp邻居学习到的bgp条目的metric值传递给其它ibgp邻居,但不传给ebgp
-------------------------------a,b表示MED值只传递一次ebgp邻居--------------
c,若ibgp邻居学习到一条bgp条目的metric为0或者其它值,缺省不会传给ebgp邻居,会显示为空
d,汇总方式生成的bgp条目,metric值为空
e,重分布方式生成的bgp条目,metric值为igp的cost】metric、hop,如果开启自动汇总会被清楚
f,缺省情况下,空的metric当0看待
(3)优选最小MED值的路由(范围0到4,294,9671295)
a,只在通过两条路径得到第一个AS(对等体)是同一个AS时才进行MED比较(as序列号中第一个as号码一致,才比较MED),任何子自治域的联盟系统都会被忽略(从不同联邦学到的路由都会比较MED)
b,如果路由器上配置了bgp always-compare-med,在全部路径进行med比较(全体as都同时启用这个功能,否则有可能会发生路由环路)
c,若路由器上配置了bgp best path med confed,将进行med比较(所有包括/.AS_CONFED_SEQUENCE的路径下),默认不比较
d,如果接收到的路径没有分配med值,则将此路径分配为0,除非路由器上配置了bgp best path med missing-as-worst,将被看作MED值为4,294,967,295的路由将在注入到路由选择表之前被改为4,294,967,294。
7、ebgp > ebgp:ebgp>联盟ebgp>ibgp
8、最近的bgp邻居
指的去往bgp邻居用的igp路由的metric值,对ebgp,igbp邻居都会有效。
9、old最长的ebgp路由(存在时间最长的优先)
(1)可以把路由摆动的影响减到最小,因为新接收到的路径不会取代老的。
(2)使用bgp best path compare router id 可以关闭此步骤
(3)若路由器的标志一样,此步骤可以被屏蔽,说明路由器正在从自己那里接受路由
(4)如果当前没有最有路由器,此步骤可以被屏蔽。当提供某个路径的邻居路由器宕机,就会发生丢失
10、lowest router id (最小的ibgp邻居route-id)
在有RR(路由反射器)的情况下不比邻居的route-id,比起原id起始者表示将代替route-id在路径选择过程中起作用。