第十三天
BGP的路径属性及选路规则
路径属性
对于BGP而言,BGP路径属性描述了该条路由的各项特征,同时,路由所携带的路径属性也将在某些场景下影响BGP路由优选的决策
公认属性 --- 所有的BGP路由器均可以识别的属性
强制属性 --- 指当BGP路由器使用update报文通报路由更新时,必须携带的路径属性
自由决定属性 --- 指当BGP路由器使用update报文通报路由更新时不要求必须携带的路径属性
可选属性 --- 不要求所有的BGP路由器都可以识别的路径属性
传递属性 --- 如果BGP路由器不能识别该路径属性,那么也应该接受携带该路径属性的BGP路由更新报文,并且当路由器将该路由通告给其他对等体时必须携带该路径属性
非传递属性 --- 如果BGP路由器不能识别该路径属性,那么该路由器将会忽略携带该属性的BGP更新报文,并且不会将路由通告给其他BGP对等体
BGP选路的前提条件 --- 丢弃所有不可用的路由信息
属性的名称 | 传播范围 | 默认值 | 评判标准(大优还是小优 --- 大了好还是小了好) |
PV | 不传播 | 0(0-65535) | 越大越优先 |
LP | AS内部 | 100 | 越大越优先 |
AS_PATH | BGP对等体之间 | 该属性为列表,初始为空 | 记录的数量越少越优先 |
OGN | BGP对等体之间 | 根据起源类型决定 | I > e > ? |
MED | BGP对等体之间 | 默认继承全局路由表中路由的开销值 | 越小越好 |
BGP的优选规则
选路的前提条件:任何一条BGP路由在参与优选之前都必须先经过检查。设备会检查BGP路由的next-hop是否可达(在本地路由表中检查),如果不可达,则BGP路由被视为不可用,该路由将无论如何不会被优选,也不会被设备使用或通告给其他对等体。在优选规则之前,要保证所有路由的优先级相同 --- 255.
1,优选PV(Preferred-Value)值最大的路由
PV --- 华为的私有属性,可以理解为权重。这个属性是本设备上选路优先级最高的属性,这个属性越大越优 ,默认为0 --- 这个属性不能传递
因为pv值是所有选路原则中的第一条原则,所以该属性是本设备上选路最方便的一个属性 --- 该属性只有在本地生效,无法传递给任何BGP对等体
第一种方法:全局修改
[r4-bgp]peer 3.3.3.3 preferred-value 100 --- 修改优先级
该命令是全局修改方式,可能会导致R3压力过大,最终设备宕机。而希望实现的效果是负载分担
负载分担 --- 即让不同的流量通过不同的路线来走,分担单一线路的压力
第二种方法:精细化修改
1,抓取流量
[r4]ip ip-prefix pv permit 10.10.0.0 16
2,配置路由策略修改PV值
[r4]route-policy pv permit node 10
[r4-route-policy]if-match ip-prefix pv
[r4-route-policy]apply preferred-value 100
[r4-route-policy]q
[r4]route-policy pv permit node 20 --- 注:一定要添加空表放通所有,否则将拒绝其他流量
3,在BGP中进行调用
[r4-bgp]peer 10.1.34.3 route-policy PV import ----因为该属性为私有不传递属性,故调用时,
只能在本地的入方向调用,来影响本地的BGP路由表。
2,优选LP(Local-Preference)属性值最大的路由
LP --- 本地优先级 --- 在不做任何更改的情况下,默认值为100,也是越大越优。
属性:可以传递给自己的IBGP对等体关系, 但是,不能传递给EBGP对等体关系。如果路由在传递到本地时不携带LP属性,则BGP在决策时,使用缺省来计算。该属性越大越优,传递范围为本AS内部。这个属性是 IBGP对等体之间选路最常用的属性。
第一种修改方法:全局修改
[r3]bgp 234[r3-bgp]default local-preference 200 ---修改全局默认LP值,R3之后发给IBGP对等体的路由的LP属性都将被修改为200
第二种修改方法:精细化修改
1,抓取流量
[r4]ip ip-prefix LP permit 10.11.0.0 162,做路由策略
[r4]route-policy LP permit node 10[r4-route-policy]if-match ip-prefix LP[r4-route-policy]apply local-preference 200[r4]route-policy LP permit node 203,BGP进程中进行调用
[r4-bgp]peer 3.3.3.3 route-policy LP import
3,本地始发的BGP路由优于从其他对等体学习到的路由,发布路由的方法又有很多种,他们之间的优先级关系为 --- 手工聚合 > 自动聚合 > network > 重发布 > 从对等体学到的
4,优选AS_path属性值最短的路由
AS_Path属性
一台路由器将BGP路由通告给自己的EBGP对等体时,会将本地的AS号插入到该路由原有的AS_Path之前。
作用
能够实现EBGP路由的环路避免
用于BGP路由优选的决策 --- AS-Path属性越短则该路由越优,因为这条路径距离目的地所要经过的AS个数更少。
AS_Path属性最开始是空的列表,当该路由通告给一个EBGP对等体邻居时,才会被加上一个AS号,在每次经过一个AS时,都会在AS-Path属性的最前端增加新的AS号。而该属性在IBGP对等体之间传播时,这条属性是不会发生改变的。
1,在聚合路由时开启AS_SET属性时,将不同AS明细路由的AS号用大括号括起来,放到AS_PATH中。需要注意的时,不管括号中有多少个AS号,在选路时都只看作一个
2,联邦时,联邦内部也需要使用AS_path属性来进行防环,我们使用小括号括起来,这种情况下,我们选路时,不考虑小括号中的内容
第一种方法
在R1出方向修改AS_PATH
1,抓流量
[r1]ip ip-prefix AS permit 10.13.0.0 162,做策略
[r1]route-policy as permit node 10
[r1-route-policy]if-match ip-prefix as
[r1-route-policy]apply as-path 11 22 33 ?
INTEGER<1-4294967295> AS number in asplain format
(number<1-4294967295>)
STRING<3-11> AS number in asdot format
(number<1-65535>.number<0-65535>}
additive Append to original As Number 添加,在原先AS号的基础上增加配置的AS号,在最前方添加
overwrite Overwrite original As Number 覆盖,将原先的AS号清除后按配置的添加
[r1-route-policy]apply as-path 11 22 33 additive --- 建议选用添加,因为原先的AS号依旧要保证防环作用,所以,清除可能导致路由回传
[r1]route-policy as permit node 20 ---- 做空表放通所有
3,BGP进程中调用
[r1-bgp]peer 10.1.13.3 route-policy AS export
*> 10.0.0.0/24 12.0.0.1 0 0 1 11 22 33i
第二种方法
1、抓取流量[r3]ip ip-prefix AS permit 10.13.0.0 162、做策略[r3]route-policy AS permit node 10[r3-route-policy]if-match ip-prefix AS[r3-route-policy]apply as-path 11 22 33 additive[r3]route-policy AS permit node 203、调用[r3-bgp]peer 10.1.13.1 route-policy AS import
[r2-route-policy]apply as-path 1 1 1 additive --- 因为我们添加的AS号可能会影响路由信息的传入,因为AS_PATH本身防环功能的限制导致。所以,在修改这个属性时,建议添加真实离开的AS号,这样依然可以起到影响选路的效果,因为选路只看长短,不看内容,而且,可以避免防环误伤
overwrite
重写参数
|
additive
添加参数
| |
出方向
|
先重写,在添加上发出者的
AS
号
|
先添加,再增加发出者的
AS
号
|
入方向
|
直接覆盖原有的所有内容
|
直接在原本的
AS
之前添加内容
|
注:AS-Path属性是BGP非常重要的属性,EBGP路由的防环依赖于AS-Path属性的正常工作,因此,如果出于影响路由优选的目的修改AS-Path属性,操作要非常慎重,一般情况下,不建议修改AS-Path属性值,若不得不修改该参数,建议添加或覆盖的AS号为曾经出现过的AS号,这样既加长了AS-Path长度,又对网络的影响降到最小
5,根据OGN属性的优先级进行选路判断 --- 优先级关系为 I> e >?
OGN --- 起源码 ---标识BGP路由的来源
1, I --- 通过NETWORK命令发布出来的路由信息 ---表明这些路由都是起涌于IGP(包含静态和直连)协议
2, e --- 通过EGP协议(EGP指的是BGP之前使用的外部网关协议EGP)发布的路由信息
3,? ---通过除了以上两种方法学到的路由 --- 重发布的路由起源码就是?
干涉选路的方法
1,抓取流量
[r2]ip ip-prefix aa permit 10.14.0.0 162,做路由策略
[r2]route-policy aa permit node 10[r2-route-policy]if-match ip-prefix aa[r2-route-policy]apply origin ?
egp Remote EGP
igp Local GP
incomplete Unknown heritage
[r2-route-policy]apply origin egp 23[r2]route-policy aa permit node 203,在BGP进程中调用
[r2-bgp]peer 10.1.24.4 route-policy aa export
6,优选MED属性值最小的路由
MED --- 多出口鉴别属性--- 这个MED值他的初始默认值并不是0,而是继承路由表中路由条目的开销值 --- 相当于cost值,有的med值为0是因为静态和直连路由开销值为0
MED值继承了IGP协议的度量值
MED属性值可以传递给自己的EBGP对等体,并且该EBGP对等体可以将该路由传递给自己的IBGP对等体,并且因为AS-BY-AS规则,该属性在IBGP对等体之间传递时不变
MED属性可以干扰访问本地的流量的走向。--- 本AS的策略调整可以影响到别的AS对路径的判断,这是在BGP选路中唯一一个可以影响到其他AS的属性
BGP规定,非本地始发的BGP路由信息,在传递给自己的EBGP对等体时,将MED值修改为0
MED这个属性可以在本AS内部进行修改,最终影响其他AS的流量的出口的选择。相当于影响其他AS的流量如何进入本AS的一个属性
MED属性自身宣告的路由本身将会把IGP的开销值作为MED属性添加到路由信息当中。之后,在EBGP对等体之间传递时,也会携带这个值。如果是自身发布的,则发送给EBGP对等体时,也会携带这个值。如果是转发别人的路由信息,再需要发送给EBGP对等体时,将需要清除这个MED值
结论:如果存在多个边界路由器,AS内的一些网段只在部分设备上进行发布,则有可能造成选路不佳的情况,所以,建议AS内需要发布的网段在所有边界设备上都进行发布
MED值默认初始值并不为0,而是继承了路由表中该路由条目的开销值,所以,MED参数可以反映到达目的网段在本AS内部的开销大小,通过这个参数,别的AS的流量在进入本AS时可以选择开销较小的入口进入。通过修改该属性,可以影响其他AS的流量流入本AS路径。
若本地通过IBGP对等体学习到一条BGP路由,其中存在MED值,之后需要将这条路由再传递给本地的EBGP对等体时,则不再携带该属性。这种设置将有可能造成选路不佳的情况,所以,建议,如果存在多组边界设备需要将路由发送给EBGP对等体关系时,需要将所有的路由信息均发布。
MED的传播范围只能是在发布路由的AS以及他直连的AS内部
这个MED值作为多出口的鉴别属性,在比较时有一个前提条件,就是多个出口必须属于同一个AS中,即收到的路由信息AS_PATH属性最左边的AS号必须相同,如果不同,则将不比较这个属性,直接向后比较
注:MED值影响的是别的AS的流量通过多个出口进入到本AS内部,如果流入的不是同一个A,也就是说收到的路由条目中的AS-PATH属性最左边的AS号不同,则将不比较第六条,直接比较第七条
[r4-bgp]default med 200 --- 修改全局med值 --- 只对本地聚合路由和引入路由生效,并且在传递给EBGP对等体时才会携带
干涉选路的方法
在R2上做出方向的策略,影响R1选择到达R4的出口
1,抓取流量
[r2]ip ip-prefix MED permit 10.14.0.0 16
2,做路由策略
[r2]route-policy MED permit node 10
[r2-route-policy]if-match ip-prefix MED
[r2-route-policy]apply cost 20
[r2]route-policy MED permit node 20
3,在BGP进程中调用
[r2-bgp]peer 10.1.24.4 route-policy MED export
<r4>ping -r -a 10.1.24.4 10.1.12.1 --- 可以记录流量流过的路径信息
7,EBGP路由优于IBGP路由
8,优选到NEXT_HOP的IGP度量最小的路由
这条比的就是路由下一跳参数在路由表中的开销值
10,在存在路由反射器时,将比较O_ID,不存在路由反射器时,就比较RID
BGP负载分担
形成BGP等价负载分担的条件 --- BGP选择路由的策略1-8条规则需要比较的属性规则相同
[r4-bgp]maximum load-balancing ?
INTEGER<1-8> Specify maximum equal cost routes
ebgp EBGP routes as equal cost route
ibgp IBGP routes as equal cost route
[r4-bgp]maximum load-balancing 2
配置BGP最大负载均衡条目数量为2,默认情况为1,所以BGP默认情况下不存在负载均衡,而如果携带了ebgp或者ibgp参数,则代表对某种方式学习到的路由进行负载均衡,不携带该参数则代表全局负载均衡。
R4实现了负载均衡后,无论是否配置了peer next-hop-local命令,本地设备都会向自己的IBGP对等体发布路由时,将下一跳改为本地
实现负载均衡需要满足的条件
1、原始下一跳不同
2、PV值相同
3、LP值相同
4、均为聚合路由或均不是聚合路由
5、起源码类型相同
6、MED值相同
7、均为EBGP路由或者IBGP路由
8、AS内部IGP的开销值相同
9、AS_Path属性完全相同,即内容和长度均相同
[r4-bgp]load-balancing as-path-ignore --- 配置路由在形成负载分担时,不需要比较AS_Patth属性
BGP的路由过滤
1,通过路由策略过滤
R2->R3出方向的过滤
1,抓流量
[r2]ip ip-prefix aa permit 172.16.1.0 24
2,做策略
[r2]route-policy aa deny node 10
[r2-route-policy]if-match ip-prefix aa
[r2]route-policy aa permit node 20
3,在BGP中进行调用
[r2-bgp]peer 10.1.23.3 route-policy aa export
2,通过前缀列表进行过滤
1,配置前缀列表
[r3]ip ip-prefix bb deny 172.16.2.0 24
[r3]ip ip-prefix bb permit 0.0.0.0 0 less-equal 32 --- 放通所有
2,在BGP中进行调用
[r3-bgp]peer 10.1.23.2 ip-prefix bb import
3,通过过滤列表进行过滤
1,使用ACL列表抓取流量(因为BGP中调用过滤列表时,只能调用ACL抓取的流量)
[r2]acl 2000
[r2-acl-basic-2000]rule deny source 172.16.3.0 0 --- 用的动作时拒绝,因为过滤列表本身没有拒绝功能
[r2-acl-basic-2000]rule permit source any --- 放通所有
2,在BGP进程中调用过滤列表
[r2-bgp]peer 10.1.12.1 filter-policy 2000 import
BGP的社团属性
社团属性本身可以理解为是一种路由标签,所以其本质是 --- 32位的二进制。社团属性存在两种表达方式,
1,直接由十进制来标识。
2,通过前16位二进制:后16位二进制的方式来表达。--- 较为常用(前16位一般是本地AS的AS号,后16位是自定值)
在一条路由条目中,可以给标识多个社团属性
BGP中定义了几个公认的社团属性,即给路由条目打上这样的社团属性,将必须按照BGP设定的动作来执行
0X00000000 --- internet 如果通过全0的社团属性来抓取流量,则将抓取到所有BGP的流量。即BGP的所有流量缺省情况下都属于“Internet“
0XFFFFFF02 --- NO-advertise 如果给一条路由条目打上这个社团属性,则这条路由信息将无法发送给自己的IBGP对等体或EBGP对等体,仅能供路由器本地使用
0XFFFFFF01 --- no - export 如果给一条路由条目打上这个社团属性,则这条路由信息将可以发送给自己的IBGP对等体但是无法发送给自己的EBGP对等体。(不能离开这个AS),但是可以发送给自己的联邦EBGP对等体关系
0XFFFFFF03 --- no - export - subconfed 如果给一条路由条目打上这个社团属性,则这条路由信息将可以发送给自己的IBGP对等体但是无法发送给自己的EBGP对等体。包括自己的联邦EBGP对等体关系
在R1上打入社团标签
1、抓流量
[r1]ip ip-prefix aa permit 1.1.1.1 32
2、做策略
[r1]route-policy com permit node 10
[r1-route-policy]if-match ip-prefix aa
[r1-route-policy]apply community no-advertise3、调用
[r1-bgp]peer 12.0.0.2 route-policy com export
[r1-bgp]peer 12.0.0.2 advertise-community ----开启社团属性的传递性,该命令需要在所有设备上开启 --- 哪个设备需要传递,在哪个设备上配置
社团属性的应用场景---自定义社团属性标记
1、设定策略,定义社团属性标记
定义:业务A 111,业务B 222
[r1]route-policy com-1 permit node 10
[r1-route-policy]apply community 100:111
[r1]route-policy com-2 permit node 10
[r1-route-policylapply community 100:222
2、在发布路由时调用策略
[r1-bgp]network 172.16.1.0 24 route-policy com-1
[r1-bgp]network 172.16.2.0 24 route-policy com-1
[r1-bgp]network 172.16.3.0 24 route-policy com-2
[r1-bgp]network 172.16.4.0 24 route-policy com-2
3、开启社团属性传播功能
[r1-bgp]peer 10.1.12.2 advertise-community
[r2-bgp]peer 10.1.23.3 advertise-community --- 哪个设备需要传递,在哪个设备上配置
4、抓取流量
使用社团过滤器Community-Filter抓取携带社团属性的路由
[r2]ip community-filter 1 permit 100:111
[r2]ip community-filter 2 permit 100:222
5、做策略
[r2]route-policy com deny node 10
[r2-route-policy]if-match community-filter 1
[r2]route-policy com permit node 15
[r2-route-policy]if-match community-filter 2
[r2-route-policy]apply community no-export additive ----additive参数表示在之前的社团属性后直接添加,否则会直接覆盖,添加多个社团属性需要添加这个参数
[r2]route-policy com permit node 20
6、调用策略
[r2-bgp]peer 10.1.12.1 route-policy com import
AS-path-filter --- AS路径过滤器
过滤掉从AS 100始发的所有BGP路由
该过滤器与正则表达式共同搭配使用,可以完成从AS-Path属性中匹配BGP路由
目标:
一、禁止R3始发于AS 100的路由传递给R5
二、R4将始发于AS 200的路由在传递给R5时,修改开销值
一、
1、抓取流量
[r3]ip as-path-filter 1 deny _100$
[r3]ip as-path-filter 1 permit .* ----该过滤器末尾隐含拒绝所有,不管写多少次的deny,最后都要设置一次permit
2、调用
[r3-bgp]peer 10.1.35.5 as-path-filter 1 export
二、
1、抓取流量
[r4]ip as-path-filter 1 permit ^200$2、做策略
[r4]route-policy aa permit node 10[r4-route-policy]if-match as-path-filter 1[r4-route-policy]apply cost 10000[r4]route-policy aa permit node 203、调用策略
[r4-bgp]peer 10.1.45.5 route-policy aa export[r4]display ip as-path-filter ----查看过滤器详细配置
正则表达式
特殊
字
符
|
功能
|
举例
|
^
|
匹配行首位置
|
^10
匹配
10.10.10.1
,而不匹配
20.10.10.1
|
$
|
匹配行尾位置
|
1$
匹配
10.10.10.1
,不匹配
10.10.10.2
|
*
|
匹配签名的子正则表达式
0
次或多次
|
10*
可以匹配
1
、
10
、
100
、
......
|
+
|
匹配前面的子正则表达式一次或多次。
|
10+
可以匹配
10
、
100
、
1000
、
......
|
?
|
匹配前面的子正则表达式零次或一次。
|
10?
可以匹配
1
或
10
|
.
|
匹配任意单个字符。
|
0.0
可以匹配
0x0
、
020
、
.......
|
()
|
圆括号内看做一个整体
|
(10)*
可以匹配空、
10
、
1010
、
.......
|
_
|
可以匹配逗号、花括号、圆括号或空格
|
_2008_
可以匹配
2008
、空格
2008
空格、空格
2008
、
2008
空格、
,2008,
、
{2008}
、
(2008)
、
{2008)
、
(2008}
|
X|Y
|
匹配
X
或
Y
|
100|200
匹配
100
或
200
|
\
|
转义字符。将下一个字符(特殊字符或者普通字符)标记为普通
字符。
|
\*
匹配
*
|
BGP优化
缺省路由
[r1-bgp]peer 12.0.0.2 default-route-advertise ----BGP 下发缺省路由,无论本地的路由表中是否存在缺省路由,都会向对等体下发一条下一跳为本地的缺省路由,从而减少网络中路由数量,节省 对等体的设备资源
注:两台路由器在同一个AS内无意义,应该在EBGP邻居配置,且通常其中一台路由器处于AS边界
BGP协议优先级
[r2-bgp]preference 140 130 100 ---分别修改EBGP、IBGP和本地聚合路由的优先级如果只修改EBGP优先级[r2-bgp]preference 140 255 255 --- 只填EBGP,其他的用255填充
BGP连接重传定时器
[r2-bgp]timer connect-retry 10 --- 全局修改连接重传定时器时间(默认为32s)[r2-bgp]peer 23.0.0.3 timer connect-retry 20 --- 对等体修改
BGP衰减
[r1-bgp]dampening 1 10000 15000 20000 --- 分别为半衰期、再使用阈值、抑制阈值、惩罚值上限[r1]display bgp routing-table dampening parameter --- 查看 BGP 衰减参数[r1]display bgp routing-table dampened --- 查看惩罚路由
BGP存活时间和保持时间定时器
优点:可以更快的检测到链路故障,有利于 BGP 网络快速收敛缺点:导致 keepalive 报文增多,设备负担加重,并且会占用一定网络带宽
优点:减轻设备负担和网络带宽的占用缺点:不能及时检测到链路状态的变化,不利于 BGP 网络快速收敛,严重会造成流量中断
[r1-bgp]timer keepalive 1 hold 3 ---keepalive修改为1s,存活时间改为3s,建议两端均修改[r1]display bgp peer verbose ----查看BGP对等体详细信息
更新报文定时器
[r1-bgp]peer 12.0.0.2 route-update-interval 1 ---修改路由更新时间为1s
peer 12.0.0.2 password simple 123456[r2-bgp]peer 12.0.0.1 password cipher 123456
多出口BGP部署方式
通过部署 BGP 协议与 ISP 进行交互企业网内部路由有变化, ISP 侧的接入路由器会自动通过 EBGP 更新,无需手动改变BGP 具有强大的路由管理功能,可以实现更加合理的路由优选及备份。每个 ISP 只发布缺省路由每个 ISP 发布一条缺省路由和部分明细路由每个 ISP 发布全部明细路由
方式
|
优点
|
缺点
|
每个
ISP
只发布
缺省路由
|
实现简单,对路由器占用资源少,管理容易
|
不能对不同目的网段实施灵活
的策略,实现负载分担困难
|
每个
ISP
发布一
条缺省路由和
部分明细路由
|
即可以实施丰富的路由策略,还可以节省路
由器系统资源
|
但是对于大量未知的路由,不
能实现最佳路径的选路,而且
该方法配置相对复杂
|
每个
ISP
发布全
部明细路由
|
较常用的部署方式,可以实时最丰富的的路
由策略,容易实现负载分担,对于每一个目
的地都可以找到最佳路径
|
占用大量资源,对设备性能要
求高,维护困难。
|
园区网架构
1. 无限的传输距离2. 彻底解决了冲突3. 二层单播4. 提高端口密度
MAC地址表
无线网络的缺陷:1. 无线信号的穿透性较差2. 无线网传输速率和信号强度有关3. 信号强度存在波动,距离信号发射点越远,信号越弱4. 上网用户数量增多,网络卡顿
企业网三层架构
接入层
接入层可以被看做是网络的边界,主要的功能是提供终端用户接入网络的接口,并负责将终端用户产生的数据发送到外部网络。
典型设备:二层交换机
汇聚层
汇聚层是流量汇聚地,该层面也通常是终端设备的网关所在地
由于汇聚层设备是接入层设备的网关所在地,需要保障其可靠性,防止大面积网络故障产生。一般会在汇聚层放置多台设备放置冗余
典型设备:三层交换机 --- 同时具备二层交换机功能和路由功能的交换机
核心层
网络的骨干层面
负责高速转发数据,且因为其处于的网络位置及其重要,必须充分考虑其高可靠性和高容错性。
园区网设计的原则
可靠性 --- 冗余能力 --- 线路冗余、设备冗余、网关冗余、UPS冗余(大型充电宝,有电时充电,断电时反向充电)
可信任性 --- 安全能力
可管理性