一、路由引入背景
BGP协议本身不发现路由,因此需要将其他协议路由(如IGP路由等)引入到BGP路由表中,从而将这些路由在AS之内和AS之间传播。
BGP协议支持通过以下两种方式引入路由:
-
Import方式:按协议类型将RIP、OSPF、IS-IS、静态路由和直连路由等协议的路由引入到BGP路由表中。
-
Network方式:将指定前缀和掩码的一条路由引入到BGP路由表中,该方式比Import更精确。
1、network引入
1)主类引入(A\B\C段)该方式为聚合路由,为防止环路,需增加一条黑洞路由防环
AR1BGP as-numbernetwork ipv4-address [ mask | mask-length ] [ route-policy route-policy-name ]ip route-static 10.0.0.0 255.0.0.0 NULL 0
2)无类引入(指定掩码),默认产生黑洞路由
AR1BGP as-numbernetwork ipv4-address [ mask | mask-length ] [ route-policy route-policy-name ]
2、import-route引入
1)无类引入
AR1BGP as-numberimport-route { direct | isis process-id | ospf process-id | rip process-id | static } [ med med | route-policy route-policy-name ] *当引入RIP、OSPF、IS-IS等动态路由协议发现的路由时,需要指定协议进程号。
2)主类引入
AR1BGP as-numberimport-route { direct | isis process-id | ospf process-id | rip process-id | static } [ med med | route-policy route-policy-name ] *summary automatic 自动聚合当引入RIP、OSPF、IS-IS等动态路由协议发现的路由时,需要指定协议进程号。
二、路由表项参数
[AR5]dis bgp routing-tableBGP Local router ID is 5.5.5.5Status codes: * - valid, > - best, d - damped,h - history, i - internal, s - suppressed, S - StaleOrigin : i - IGP, e - EGP, ? - incompleteTotal Number of Routes: 7Network NextHop MED LocPrf PrefVal Path/Ogn*>i 10.1.1.0/24 10.1.123.1 0 100 0 1?* i 10.1.1.1 0 100 0 1?*>i 10.1.111.0/24 10.1.123.1 0 100 0 1?* i 10.1.1.1 0 100 0 1?*>i 10.1.123.0/24 10.1.1.1 0 100 0 1?*> 55.5.5.0/24 0.0.0.0 8 0 ?*> 55.5.5.5/32 0.0.0.0 8 0 ?
1、Status codes
状态代码(标识BGP路由的状态)
1)*(valid):下一跳可达,如不可达则没有*
2)>(best):最优路径,下一跳可达的前提下,通过十二条选路原则比较产生,最优的放入路由表
3)d(damped):路由衰减,路由惩罚,路由发生抖动会标识为d,多次抖动不会放入路由表,主要针对EBGP
4)h(history):抖动记录,抖动一次就会被标记为h
5)i(internal):IBGP的路由标识,从IBGP邻居来的路由标记为i
6)s(suppressed):抑制,当产生聚合路由,明细被抑制时,产生该标识
7)S(stale):陈旧,老化路由标识
2、Origin
路由的起源代码
1)i:network的方式引入进来的
2)e:import-route egp
3)?:incomplete, import-route 其他路由协议
注:上图的55.5.5.0 的网段是通过import-route direct引入的
三、BGP 组网方式
1、全互联场景
1)全互联场景下IBGP路由信息默认不改变下一跳
去往AR1的路由信息通过IBGP的邻居关系学习到,此时下一跳不改变
可以同通过配置使得学习到的路由修改下一跳
<AR5>dis bgp routing-table | inc 10.1.1.0BGP Local router ID is 5.5.5.5Status codes: * - valid, > - best, d - damped,h - history, i - internal, s - suppressed, S - StaleOrigin : i - IGP, e - EGP, ? - incompleteTotal Number of Routes: 7Network NextHop MED LocPrf PrefVal Path/Ogn*>i 10.1.1.0/24 10.1.123.1 0 100 0 1?
<AR5>
2)EBGP路由默认修改下一跳
表项可知AR4与AR5之间建立EBGP的邻居关系,学习到的EBGP路由下一跳改变
<AR4>dis bgp routing-table | inc 10.1.1.0BGP Local router ID is 4.4.4.4Status codes: * - valid, > - best, d - damped,h - history, i - internal, s - suppressed, S - StaleOrigin : i - IGP, e - EGP, ? - incompleteTotal Number of Routes: 4Network NextHop MED LocPrf PrefVal Path/Ogn*> 10.1.1.0/24 10.1.5.5 0 235 1?
<AR4>
3)优缺点
优点:路由传递正常,转控平面正常
缺点:资源消耗大,成本较高
2、部分互联场景(联盟)
注:图片为产品文档当参考图片,仅供联盟拓扑理解使用
1)部分互联场景下,在AS内部的IBGP邻居关系会产生水平分割的现象,导致路由传递失败,业务中断,可使用联盟(Confederation),与路由反射器相比,BGP联盟更便于实现IGP扩展。
2)配置
system-viewbgp as-numberconfederation id as-numberconfederation peer-as as-number &<1-32>peer xx.xx.xx.xx as-number xxxx配置属于联盟的子自治系统时使用的as-number在联盟内部有效。
为了提升安全性,推荐部署BGP安全性措施(参见“配置BGP认证”)。其中,以配置Keychain认证方式为例,详细配置方法请参见“举例:配置BGP使用Keychain认证”
3、部分互联场景(路由反射器)
1)配置路由反射器时,必须具备反射器和客户端之间的IBGP邻居关系,该方式主要为打破IBGP之间的水平分割问题
2)角色
RR:route-reflector 路由反射器(服务器端)
RR-C:client 路由反射器的客户端
cluster:路由反射簇(列表)
Non-Client:不是反射器也不是客户机的BGP设备被称为非客户机
3)配置
bgp 235router-id 5.5.5.5peer 10.1.2.2 as-number 235peer 10.1.2.2 connect-interface LoopBack1
#ipv4-family unicastundo synchronizationimport-route direct route-policy loop55peer 10.1.2.2 enablepeer 10.1.2.2 reflect-clientpeer 10.1.4.4 enablepeer 10.1.234.3 enable
#
return
4)表项
根据表项可知,从2.2.2.2 来的路由通过RR(5.5.5.5)反射过来使得3.3.3.3学习到了,虽然此路由没有被优选
<AR3>dis bgp routing-table 10.1.1.1BGP routing table entry information of 10.1.1.0/24:From: 10.1.45.5 (5.5.5.5)Route Duration: 00h02m30sRelay IP Nexthop: 0.0.0.0Relay IP Out-Interface: GigabitEthernet0/0/0Original nexthop: 10.1.123.1Qos information : 0x0AS-path 1, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for Cluster ListOriginator: 2.2.2.2Cluster list: 5.5.5.5Not advertised to any peer yet
5)路由反射器的规则
来自client的路由可以向客户端、EBGP邻居、非客户端进行传递
来自EBGP邻居的路由信息可以向客户端、EBGP邻居、非客户端进行传递
来自非客户端的的路由信息可以向客户端、EBGP邻居进行传递,但是不可以向非客户端传递路由
配置RR指定客户端后,客户端的路由器设备并不清楚自己为客户端,只有RR设备知道
4、路由反射器防环
因为路由反射器打破了IBGP之间的水平分割规则,可能产生环路。
1)Originator_ID属性
由路由的始发路由器产生,携带了本地AS内部路由发起者的Router ID
#
bgp 1router-id 1.1.1.1peer 10.1.3.3 as-number 235peer 10.1.3.3 ebgp-max-hop 255peer 10.1.3.3 connect-interface LoopBack1peer 10.1.123.2 as-number 235#ipv4-family unicastundo synchronizationimport-route direct route-policy loop111peer 10.1.3.3 enablepeer 10.1.123.2 enable
#<AR3>dis bgp routing-table 10.1.111.0BGP routing table entry information of 10.1.111.0/24:From: 10.1.45.5 (5.5.5.5)Route Duration: 00h19m14sRelay IP Nexthop: 0.0.0.0Relay IP Out-Interface: GigabitEthernet0/0/0Original nexthop: 10.1.123.1Qos information : 0x0AS-path 1, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for Cluster ListOriginator: 2.2.2.2Cluster list: 5.5.5.5Not advertised to any peer yet<AR3>
从路由表中可以看到,AR3从AR5那里学到了AR1通告的路由,而且还可以看到该路由的Originator和Cluster_ID属性。因为AR2和AR1之间为EBGP邻居关系,所以在AS235内默认2.2.2.2为路由始发路由器。
当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID。
当其他BGP Speaker接收到这条路由的时候,将比较收到的Originator_ID和本地的Router ID,如果两个ID相同,BGP Speaker会忽略掉这条路由,不做处理。
2)Cluster_List属性
经过一个路由反射器反射的路由,会把路由反射器cluster-id记录下俩,形成cluster-list
默认cluster-id= router-id
但是可以修改成不是router-id
#
bgp 235ipv4-family unicastreflector cluster-id 55.5.5.5
#
<AR3>dis bgp routing-table 10.1.111.0BGP routing table entry information of 10.1.111.0/24:From: 10.1.45.5 (5.5.5.5)Route Duration: 00h00m47sRelay IP Nexthop: 0.0.0.0Relay IP Out-Interface: GigabitEthernet0/0/0Original nexthop: 10.1.123.1Qos information : 0x0AS-path 1, origin incomplete, MED 0, localpref 100, pref-val 0, valid, internal, pre 255, not preferred for Cluster ListOriginator: 2.2.2.2Cluster list: 55.5.5.5Not advertised to any peer yet<AR3>
关于RR还有其他类似备份RR等等其他应用,路由引入也可以修改许多的属性,本文仅作基本的使用了解,后续文章会慢慢深入了解。