您的BGP报文学习笔记(五)已抄送完毕,请查收!
BGP选路:华为到这
1.路径属性:
BGP路径属性是一组描述BGP前缀特性的参数,由于各个厂商制定的属性参数较多,有的属性为私有属性,有的为国际标准属性,各个厂商的设备不一定都支持所有的属性,而有的属性的作用可以在每台路由器上生效,也可以在一个AS内部生效,也可以在所有的AS设备上生效,所以将属性进行分类。
BGP路径属性可以被分为四大类:
① well-known mandatory 公认必遵
② well-known discretionary 公认任意
③ Optional transitive 可选过渡
④ Optional non-transitive 可选非过渡
(1)well-known mandatory:
公认必遵属性,所有的BGP路由器都可以识别,且必须存在于Update消息中,如果缺少这种属性,路由信息就会出错。
类型协议:
① Originator
② Next-Hop
③ As-Path
注:在IPv4单播BGP报文中,三个属性必须都要存在,而在AFI不等于1的其他BGP网络类型中,下一跳属性存放在MP-REACH-NLRI(多协议网络可达性信息)中
(2)well-known discretionary:
公认任意 ,所有BGP路由器都可以识别,但不要求必须存在Update消息中,可以根据具体情况来决定是否增加到Update消息中。
类型协议:
① Local preference
② ATOMIC_Aggregate原子聚合
(3)Optional transitive:
可选过渡,BGP路由器可以选择是否在Update消息中携带这种属性。接收的路由器如果不识别这种属性,可以转发给邻居路由器,邻居路由器可能会识别并且使用到这种属性
协议类型:
① Aggregator手动聚合
② community团体属性
可选过渡属性中,在传递过程中如果有的设备不支持此属性,但是会继续传递此属性值,在继续传递报文之前,会将Flag中的Partial置位,后续设备接收到Partial置位的报文,得知有设备不支持此属性
(4)Optional non-transitive:
可选非过渡,BGP路由器可以选择是否在Update消息中携带这种属性,在整个路由发布的路径上,如果部分路由器不能识别这种属性,可能会导致该属性无法正常发挥效用,因此在接收的路由器如果不识别这种属性,应当丢弃这种属性,不必再转发给邻居路由器
协议类型:
① Originator ID
② Cluster List
③ MED
2. BGP选路规则:
① 丢弃下一跳(NEXT_Hop)不可达的路由
② 优选Preferred_value值最大的路由
③ 优选本地优先级(Local_PREF)最高路由
④ Aggregate>Summary>Network>Import
⑤ 优选AS路径(AS_PATH)最短的路由
⑥ ORIGIN属性(I>E>?)
⑦ 优选MED值最低的路由
⑧ 依次选择从EGP、联盟、IBGP学来的路由
⑨ 优选下一跳度量值最低的路由
⑩ 优选Cluster_list长度最短路由
⑪ 优选Originator_id最小路由
⑫ 优选Router-id最小路由
⑬ 优选地址最小的对等体发布的路由
注:默认情况下,BGP不会进行负载均衡,比较到第10条选路规则下一跳度量值一致时,此时可以使用附载均衡命令。
(1)丢弃下一跳不可达的路由:
当路由器的下一跳不可达时,display ip routing-table将无法看到此条路由,bgp路由器已将下一跳不可达的路由直接丢弃。
NEXT_Hop属性规则:
Ø BGP Speaker在向EBGP对等体发布某条路由时,NEXT_Hop值为空,会把路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址
Ø BGP Speaker在向IBGP对等体发布某条路由时,NEXT_Hop值为空,会把路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址
Ø BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
① 命令[Huawei-bgp]peer 192.168.2.2 next-hop-invariable保持NEXT_Hop的原属性值传递
② 命令[Huawei-bgp]peer 192.168.2.2 next-hop-local修改下一跳为自身接口IP
next-hop-invariable应用场景:
① AR5、AR6、AR7之间运行IGP路由协议
② AR7将7.7.7.7/32的路由条目通过IBGP邻居关系传递给AR6,如果下一跳属性为Local,则IP地址为192.168.2.2
③ AR6收到路由后,将路由条目传递给RBGP邻居AR5,下一跳属性为Local,则IP地址为192.168.1.2
④ AR6访问7.7.7.7,下一跳属性为192.168.2.2,根据IGP迭代查询下一跳地址为192.168.1.1,将数据包送给AR5
⑤ AR5收到数据包后,BGP路由表中7.7.7.7的下一跳属性IP地址为192.168.1.2,将数据包又送回AR6,形成路由环路
⑥ 如果AR6将NEXT_Hop模式改为Invariable,则在将路由传递给AR5时,下一跳属性IP为192.168.2.2,AR5收到数据后,直接将数据包送给AR7,解除环路
(2)优选Preferred_value值最大的路由:
协议首先值PrefVal:(华为私有,默认为0),数值高者优先,此属性值不会发送给任何BGP邻居,仅本地有效
PrefVal主要用于路由器从哪个端口送出数据包。
配置命令:
①宣告对等体,将对等体全部发送过来的路由Pref-value属性改为100
[Huawei-bgp]peer 10.0.13.1 preferred-value 100—将10.0.13.1发送过来的路由中pref-value属性值全部改为100
②使用Router-Policy,实现负载分担:
[Huawei]ip ip-prefix 1 permit 10.0.44.44 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply preferred-value 100
[Huawei]route-policy 1 permit node 10
[Huawei-bgp]peer 10.0.1.1 route-policy 1 import----R1发送过来的10.0.44.44的路由条目的Pref-Value值为100
[Huawei]ip ip-prefix 2 permit 10.0.55.55 32
[Huawei]route-policy 2 permit node 5
[Huawei-route-policy]if-match ip-prefix 2
[Huawei-route-policy]apply preferred-value 100
[Huawei]route-policy 2 permit node 10
[Huawei-bgp]peer 10.0.2.2 route-policy 2 import----R2发送过来的10.0.55.55的路由条目的Pref-Value值为100
实现负载平衡。
(3)优选Local_Preference值最大的路由:
本地优先级Local_PREF:缺省值为100,数值高者优先。本地优先级(Local_PREF)属性仅在
IBGP对等体之间交换,不通告给其他AS。
Local_PREF主要用于控制流量离开AS时的最佳路由,也就是从哪个边界路由器离开AS
配置命令:
①BGP试图下,使用命令将本路由器的Local-Pref改为200
[Huawei-ospf-1]bgp 100
[Huawei-bgp]default local-preference 200
②使用Router-Plicy实现负载均衡:
R2:
[Huawei]ip ip-prefix 1 permit 44.44.44.44 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply local-preference 200
[Huawei]route-policy 1 permit node 10
[Huawei]bgp 100
[Huawei-bgp]peer 1.1.1.1 route-policy 1 export
R3:
[Huawei]ip ip-prefix 1 permit 55.55.55.55 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply local-preference 200
[Huawei]route-policy 1 permit node 10
[Huawei]bgp 100
[Huawei-bgp]peer 1.1.1.1 route-policy 1 export
实现负载均衡。
注:Local_PREF不会在联盟子AS中传递
(4)A>S>N>I>L:
根据路由生成方式进行对比,路由生成方式:
A(aggregate)>S(summary)>N(network)>I(import-route)>L(从邻居学习来的路由)
(5)AS-PATH:
公认必遵属性,优选AS路径(AS_PATH)最短的路由,BGP路由器在向EBGP对等体宣告路由时,会在该路由的AS_Path最左端增加本地自制系统的AS编号,长度短者优先。AS_PATH属性值会在所有的自制系统内修改as编号,修改AS-Path的长度可以控制BGP的选路,AS-Path会在所有的路径中携带。
AS-Path主要用于整体上控制数据经过AS的路径。
注:在路由器BGP试图下使用命令bestroute as-path-ignore,此时不再比较AS—PATH属性
AS-PATH Segment Type:
① AS Sequence
② AS Set
③ AS Confed Sequence
④ AS Confed SET
① AS Sequence:
有序的AS排列,AS-Path的Type为2,如果存在AS Set,总是在AS Set前面存在,没经过一个AS,AS Sequence会记录此AS ID,用于防止路由环路。
② AS Set:
无序的AS排列,AS-Path的Type为1,如果使用了路由聚合功能,而且开启了AS-Set参数选项,则聚合路由会将所有顺序明确的使用AS Sequence表示,顺序不明确的使用AS Set表示,一个AS Set为一个长度的AS ID
子路由一:1 2 3 4 5
子路由二:1 2 3 6 7
聚合后的路由属性:1 2 3 {4 5 6 7}
配置命令:
① Router-Policy实现负载均衡:
R15:
[Huawei]ip ip-prefix 1 permit 22.22.22.22 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply as-path 20 30 additive—在源路由AS-Path属性上增加20,30(如果为overwrite覆盖源AS-Path)
注:如果增加的AS号码存在网络AS上,则收到路由器后,属性中的AS ID和自身的AS ID一致,会拒绝此路由,所以建议后面使用本AS ID,如 apply as-path 20 20 20 20
[Huawei]route-policy 1 permit node 10
[Huawei]bgp 500
[Huawei-bgp]peer 10.0.15.1 route-policy 1 export
AS-path号已增加。
(6)ORIGINATOR属性:
ORIGIN为起源属性,公认必遵属性,表示这条路由产生方式,对于BGP起源属性来说:
IGP优于EGP优于?
Ø I为路由始发AS的Network得到的路由信息
Ø E为古老的EGP协议
Ø ?为Incomplete,不完整属性,当使用Import命令引入IGP路由时,为此数值
使用Route-policy修改起源属性:
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply origin incomplete
(7)优选MED值最低的路由:
Multi Exit Discriminator,多出口区分符,MED属性只会影响相邻两个AS,当一个AS收到另一个AS路由条目后,不会在将此条目的MED属性传递给EBGP邻居(除非手工配置传递给EBGP邻居MED值),MEDS缺省值为0,数值小者优先。在BGP选择最佳路径时,MED值为空实际上值为0,当使用Import命令将IGP路由引入到BGP路由表中,BGP协议直接将IGP的cost值作为MED值放入BGP路由表中
MED属性的主要作用是用来控制来自邻居AS的流量从哪个口进入本AS中
注1:只有相同的AS中的邻居路由器传递的路由携带MED属性值才会进行比较,否则跳过MED选路属性,使用命令[Huawei-bgp]compare-different-as-med可以对不同的AS上进行MED值比较
注2:默认比较的顺序为从时间最老的两条路由条目进行比较,如果使用命令[Huawei-bgp]deterministic-med之后,会将每条路由以AS为单位进行分类,同等AS之间进行比较,各个AS中最优的路由在进行比较
注3:默认BGP协议引入(Network、Import)会将IGP中的cost复制到BGP路由中的MED中,并传递给IBGP邻居,当传递给EBGP邻居时,MED属性值消失
注4:如果存在联盟,由于联盟内的路由携带子网AS ID,所以不会比较MED属性
配置命令:
①使用命令修改路由器的MED值:
[Huawei-bgp]default med 100-----此命令只对本设备import的IGP路由med值起作用
②使用Router-Policy实现负载均衡:
R2:
[Huawei]ip ip-prefix 1 permit 11.11.11.11 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply cost 100
[Huawei]route-policy 1 permit node 10
[Huawei]bgp 100
[Huawei-bgp]peer 192.168.3.2 route-policy 1 export
R3:
[Huawei]ip ip-prefix 1 permit 10.10.10.10 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply cost 100
[Huawei]route-policy 1 permit node 10
[Huawei]bgp 100
[Huawei-bgp]peer 192.168.4.2 route-policy 1 export
实现负载均衡。
注:默认在比较MED值时只会比较通AS中的MED值,如果来自不同AS中相同的路由不会比较MED。
可以使用以下命令比较来自不同AS中的路由的MED值:
[Huawei-bgp]compare-different-as-med
(8)EBGP>联盟>IBGP>Local Cross>Remote Cross:
依次选择从EGP、联盟、IBGP学来的路由、Local Cross、Remote Cross
Ø Local Cross:VPNv4路由同PE传递过来的VPnv4路由
Ø Remote Cross:VPNv4路由对端PE传递过来的VPNv4路由
(9)选择IGP下一跳度量值最低的路由:
比较两条路由对应的下一跳的开销值
开启附载均衡:
注:当前面九条全部相同,并且AS_PARH序列号ID一模一样,此时可以使用命令开启附载均衡:
[Huawei-bgp]maximum load-balancing bgp 8-----开启BGP附载分担,负载分担的
最大路径为8条
(10)优选Cluster_list长度最短路由:
当AS内部存在多个集群时,优先现则路由条目总Cluster List长度短者优先的路径。
(11)优选Originator_id最小路由:
当路由条目中存在Originator Id时,优先选择Id小的路由条目。
(12)优选Router-id最小路由:
存在到达同一目的地址的多条路由时,BGP优选Router ID最小的设备发布的路由。
注:如果路由属性中存在Originator-ID属性,而无法比较出最优路由,此时不会比较Router-ID,而是直接比较IP地址,如果没有Originator-ID,会比较Router-ID
(13)优选IP地址最小路由:
优选从具有较小IP地址的对等体学来的路由,如果BGP在比较对等体地址之前还没有选出最优路由,则表明本设备和另外一台设备之间通过等价链路建立了多个BGP邻居关系。一般情况下,在两台设备之间存在用于备份的物理链路时,我们推荐使用Loopback接口来建立BGP邻居,但是实际上,两台设备之间通过多个物理链路建立多个BGP邻居关系也不违反协议规定。
为了方便广大网络爱好学习者一起学(聚)习(众)交(搞)流(基),特开设华为干货交流群,里面已经上传大量学习资料,欢迎广大网络工程师进群学习!
扫描下方二维码 进群交流学习!