一、BGP路由选路原则(13条)
1、首先丢弃下一跳(NEXT_HOP)不可达的路由;
2、优选Preferred-value值最大的路由;默认为0;
Preferred-value:定义:首选项。
属性值:默认为0,取值范围是 0~65535,取值越大,优先级越高。
注意:H3C和华为的私有属性,
3、优选本地优先级(LOCAL_PREF)最高的路由;
4、依次选择network命令生成的路由、import-route命令引入的路由、聚合路由;
5、优选AS路径(AS_PATH)最短的路由;
6、依次选择ORIGIN属性为IGP、EGP、Incomplete的路由;
7、优选MED值最低的路由;
8、依次选择从EBGP、联盟EBGP、联盟IBGP、IBGP学来的路由;
9、优选下一跳度量值最低的路由;
度量值:一般指通过IGP协议到达下一跳地址的度量值
10、优选CLUSTER_LIST长度最短的路由;
11、优选ORIGINATOR_ID最小的路由;
12、优选Router ID最小的路由器发布的路由。
13、优选IP地址最小的对等体发布的路由。
记忆:PLLAOMEICORI
二、BGP负载分担时的选路
1、背景:BGP协议本身一定能选出唯一 一条到达目的网段的最优路由,通过手动配置路由策略可以允许BGP实现负载分担的功能。
2、BGP的负载分担与IGP的负载分担有所不同:
IGP是通过协议自身定义的路由算法,对到达同一目的地址的不同路由,将度量值(metric)相等的路由进行负载分担
BGP本身并没有路由计算的算法,但BGP有丰富的选路规则,可以在对路由进行一定的选择后,有条件地进行负载分担
三、BGP路由的发布策略
只将最优路由发布给对等体。如果配置了active-route-advertise命令,则BGP发布IP路由表中的最优路由;否则,发布BGP路由表中的最优路由;
举例:
一个路由既通过BGP学到10.1.1.0/24:
10.1.1.0/24 1.1.1.1 优 BGP路由表优先
10.1.1.0/24 2.2.2.2
又通过OSPF也学到了10.1.1.0/24 :
10.1.1.0/24 3.3.3.3 IP路由表优先
最终在我的IP路由表中,应选择哪一条?
比较优先级:OSPF 优先级:10和150 ,BGP优先级255。在整个IP路由表中,选择通过OSPF学到的路由
只把自己使用的路由发布给对等体(自己选的最优路由);
从EBGP获得的路由会向它所有BGP对等体发布;
从IBGP获得的路由不向它的IBGP对等体发布;(IBGP水平分割)
从IBGP获得的路由发布给它的EBGP对等体;
BGP连接一旦建立,BGP发言者将把满足上述条件的所有BGP路由发布给新对等体。之后,BGP发言者只在路由变化时,向对等体发布更新的路由。
四、BGP路由过滤
1、通过路由策略过滤
2、通过前缀列表过滤
3、通过filter-policy来进行过滤
五、BGP属性(属性越多,控制BGP路由选路的方法越多)-----实验演示
属性:描述一个对象的特征的一些信息
1、公认属性:所有路由器都必须识别的属性
公认必遵属性:BGP发布的路由必须携带,所有路由器必须识别的属性;AS_path、next-hop、origin
(1)AS_path
定义:AS路径属性,记录路由传递过程中经过的AS编号
作用:AS防环;
路由优选:AS_path短(AS编号的数量)的优先;
注:AS_path属性增加AS编号是在路由从一个AS传出的时候;
增加AS_path长度来控制选路时,建议增加真实经过的AS编号,防止AS防环机制导致路由无法学习;
实验演示:bgp选路属性(AS_path)
(1)R1到达192.168.1.0的路径:R1-R3-R4
做法1:在R2上修改路由的AS_path(在R2到R1的出方向修改)
配置ACL,抓取192.168.1.0网段的路由
acl 2000
rule 5 permit source 192.168.1.0 0.0.0.255
配置路由策略,修改AS_path,增长其路径
route-policy 1.0 permit node 10
if-match acl 2000
apply as-path 300 400 additive
保持良好习惯,放空节点,允许其他网段通过
route-policy 1.0 permit node 20
在出方向应用路由策略
peer 100.1.1.1 route-policy 1.0 export
测试:修改AS_path成功
做法2:在R1上修改路由的AS_path(在R2到R1的进方向修改)
配置ACL,抓取192.168.1.0网段的路由
[R1]acl 2000
[R1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255
配置路由策略,修改AS_path,增长其路径
[R1]route-policy 1.0 permit node 10
[R1-route-policy]if-match acl 2000
[R1-route-policy]apply as-path 500 600 additive
保持良好习惯,放空节点,允许其他网段通过
[R1]route-policy 1.0 permit node 20
在进方向应用路由策略
peer 100.1.1.2 route-policy 1.0 import
additive:在原来的AS编号基础上,加入新增加的AS编号
overwrite:覆盖原来的AS编号
思考:假设一条路由的AS_path=(1,2,3),另外一条路由AS_path=(10000,20000),请问谁的路由更优?
答案:不管AS编号多大多小,AS_PATH编号数量少的路径,永远优先。
(2)next-hop:下一跳
注意:如果一个路由器同时拥有EBGP和IBGP邻居:
路由发布给EBGP邻居,下一跳变更为指定的EBGP邻居地址;
路由发布给IBGP邻居,下一跳不变,仍然保持为指定的上个AS的EBGP邻居地址;
对IBGP邻居发布的路由通告命令更改下一跳为本机。
(3)origin:路由来源属性(描述一条BGP路由的来源)
属性值:
IGP:来源于network宣告,聚合的路由,显示为i;
EGP:来源于引入的EGP协议路由,显示为e(一般见不到了);
incomplete :未完成,来源于引入IGP协议或静态路由,显示为?
优选顺序:IGP>EGP>incomplete
在R1增加一个环回口:192.168.2.1,宣告进BGP,查看R4路由表,发现去往192.168.1.0网段的下一跳是R2。
现在我们可以通过更改OGN属性,让去往192.168.2.0网段的下一跳是R3。
方法1:在R2对R4上改出方向
方法2:在R4对42上改入方向
抓取流量
[R4]acl 2000
[R4-acl-basic-2000]rule permit source 192.168.2.0 0.0.0.255
配置路由策略,修改origin 为incomplete
[R4]route-policy 2.0 permit node 10
[R4-route-policy]if-match acl 2000
[R4-route-policy]apply origin incomplete
保持良好习惯,放空节点,允许其他网段通过
[R4]route-policy 2.0 permit node 20
在进方向应用路由策略
[R4-bgp]peer 2.2.2.2 route-policy 2.0 import
测试:查看R4路由表,发现去往192.168.1.0网段的下一跳已经是R3
公认可选:所有路由都识别,但不是必须携带的属性;local-perference、Atomic-aggregate
(1)local-perference:
定义:本地优先级,同一个AS内也可以看到这个属性值,表明了BGP路由器的优先级。
注意:默认值100,值大的优先;
在R4上通过更改local-perference,让R4重新选择走R2的2.2.2.2
方法1:把到2.2.2.2的路由local-perference值改大于100
方法2:把到3.3.3.3的路由local-perference值改小于100
在R3上配:在R3的出方向或者R4的入方向都可以
出方向:
抓取流量
[R3]acl 2000
[R3-acl-basic-2000]rule permit source 192.168.2.0 0.0.0.255
配置路由策略,修改local-perference为80
[R3]route-policy 2.0 permit node 10
[R3-route-policy]if-match acl 2000
[R3-route-policy]apply local-preference 80
保持良好习惯,放空节点,允许其他网段通过
[R3]route-policy 2.0 permit node 2
在出方向应用路由策略
[R3-bgp-af-ipv4]peer 4.4.4.4 route-policy 2.0 export
测试:查看R4路由表,发现去往192.168.2.0网段的下一跳已经是R2
(2)Atomic-aggregate:自动聚合
注:BGP可以自动聚合,也可以手动聚合
2、可选属性
(1)可选传递属性
定义:路由器可以不识别该属性,但是会继续向下传递该属性
属性:aggregator:手动聚合
community:团体属性
(2)可选非传递属性
定义:路由器可以不识别该属性,但是也不会继续向下传递该属性
属性:
clustor_list:集群列表
originator_id:集群ID
MED:多出口鉴别器:当一个AS有多个入口点时,用于判断流量进入AS时的最优路径。
属性值:network的路由,默认值为0;
引入的路由,默认值为原IGP协议的cost;
值小的优先;
实验演示:
演示1:在R4上通过路由策略对2.0网段路由改MED值,这样R4能将192.168.2.0的MED传给R5。
抓取流量
[R4]acl 2000
[R4-acl-basic-2000]rule permit source 192.168.2.0 0.0.0.255
配置路由策略,修改MED为133
[R4]route-policy med permit node 10
[R4-route-policy]if-match acl 2000
[R4-route-policy]apply cost 133
保持良好习惯,放空节点,允许其他网段通过
[R4]route-policy med permit node 20
在出方向应用路由策略
[R4]bgp 200
[R4-bgp]ipv4-family unicast
[R4-bgp-af-ipv4]peer 100.5.5.5 route-policy med export
测试:查看R5路由表,发现R4能将192.168.2.0的MED传给R5
六、属性控制的选择建议
1.如果希望影响下游所有路由器的路由选择,建议使用AS-PATH
2.如果只希望影响本AS内部的路由器选择,建议使用Local-preference
3.如果希望只影响下游某一个AS的路由器选择,建议使用MED
4.如果希望只影响某一台路由器的路由选择,建议使用preferred-value
七、属性控制方法
路由策略