前言:
为了方便管理不断扩大的网络,网络园区被分为不同的AS的自治系统,在早期的时候,EGP(内部网关协议)被用于不同的AS之间的动态路由的交换信息,但是EGP的设计比较简单,只发布网路路由可达的信息,而不对路由信息进行优选.
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
bgp的概述:
BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。
1.bgp基于tcp,只要可以建立tcp的连接就可以建立bgp
2.只传递路由信息,不会暴露as内的拓扑消息
3.触发式更新,而不是周期性的更新
bgp的特点:
1.BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。
2.BGP能够承载大批量的路由信息,能够支撑大规模网络。
3.BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。
4.BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
5.BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。
BGP的特征:
bgp使用TCP为传输层协议,TCP端口号179,路由器之间的bgp会话基于TCP连接而建立
运行bgp的路由器被称为BGP的发言者,或者BGP路由器
两个建立BGP会话的路由器互为对等体,bgp对等体之间交换bgp路由表
BGP路由器只发送增量的bgp路由更新,或进行触发式更新(不会周期性更新)
BGP能够承载大批量路由前缀,可在大规模网络中应用
BGP通常被称为路由矢量路由协议
每条BGP路由都携带多种路由属性,BGP可以通过这些控制路由的选择。而不像IS-IS,ospf 只能通过过cost控制路由控制,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择做最合适下选择最合适的路径控制的方法
bgp的对等体的关系:
EBGP:
邻居之间不同的AS号
1、EBGP邻居关系的建立一般使用物理接口建立即可。因为BGP规定EBGP只能直连建立(TTL=1),如果EBGP之间需要使 用环回建立的话,需要设置额外的参数
2、[AR4-bgp]peer 2.2.2.2 ebgp-max-hop 2-----配置EBGP 建立的最大跳数
环回建立的条件:因为bgp使用的是TCP传输层协议,就必须建立三次握手,前提实现路由可达
IBGP :
邻居之间相同的AS号
1、如果IBGP邻居之间使用直连来建立,那么当接口或者链路发生故障的时候,邻居就会中断。我们可以使用逻辑接口 来建立IBGP的邻居
2、如果使用逻辑接口环回口来建立邻居关系,需要使用[AR3-bgp]peer 2.2.2.2 connect-interface LO 0,来告诉邻居使用环回口的IP地址来建立邻居
TCP连接源地址:
缺省情况下,bgp使用报文出接口作为TCP连接的本地接口作为TCP连接的本地接口
在部署IBGP对等体关系的,通常使用loopback地址作为更新源地址。loopback接口非常稳定。而且可以借助AS内IGP和冗余拓扑来保证可靠性
在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用loopback接口建立EBGP对等体关系,测注意BGP的多跳的关系。
BGP存在5种类型的报文;
五种报文
Open :用来建立BGP邻居关系。和OSPF hello类似,不一样open报文没有维护邻居机制。
Update:当BGP有路由更新的时候(路由增加或者减少),BGP路由器就会发送update报文。 Notification:中断BGP的邻居关系。
Keepalive:用于维护BGP 邻居关系,每过一定的时间就会发送一次,60s发送一次,180s还没收到邻居的报文,认为邻 居失效了,主动断开。
Route-refresh:当我们使用路由策略修改路由之后,路由器就会发送这个报文,用来更新BGP 路由的属性。
bgp状态机:
六种状态
Idle:是BGP的初始状态,这个状态下不能建立TCP三次握手,给我们准备足够的资源。如果没有到达邻居的路由,就会一 直停留在这个状态下
Connect:表示已经开始建立三次握手,如果三次握手建立成功,就进入opensent状态,如果建立三次握手失败,就进 入active
Active:一直尝试建立三次握手,建立成功就进入opensent状态。如果一直没有建立起来三次握手,就会进入idle.
opensent:tcp三次握手建立完成之后,发生open报文建立对等体关系,此时进入opensent状态,收到对端回应的 open 报文,检查参数吗,无误后,在发生keepalive报文进入OpenConfirm状态 OpenConfirm:在OpenConfirm状态下,BGP等待keepalive报文或者Notification。收到keepalive报文,进入到最后状态 Established,如果收到Notification报文,就会回到初始的状态。 Established:BGP可以和对等体交换报文,代表已经建立成功。 BGP和IGP不一样,建立邻居后并不会发布路由过来,需要手动宣告路由
路由表
*----表示路由是有效路由,如果没有这个*就是无效路由
>---表示路由已经被BGP优选
i----表示路由通过IBGP邻居传递过来的
BGP的路由属性:
公认属性
公认必遵:必须封装在bgp的update报文里,路由器收到之后必须识别并处理
公认任意:不一定会封装在update报文里,但是如果路由器收到update的报文,报文出现公认任意,那么路由器必须 识别处理。
可选属性
可选过渡:路由器不认识这个属性,但是会把这个属性发布给其他BGPl邻居
可选非过渡:不认识这个属性,也不会发布给其他对等体
AS-path:
1、一个路由所经过的AS号列表
2、路由器在发送路由给EBGP对等体的时候,会加上本路由器所在的AS 号,邻居收到之后看到里面的as号就知道这条路 由传递过来,而且也知道经过那些路由器
3、如果路由器接收到某条EBGP的路由,发现里面as列表包含自己的as号,那么就不接收这条路由
4、先经过AS号放在右边,as号比较并不是比较as号数字大小,而且比较长度(个数)100i> 300 100i
Origin IGP:
i----表示路由通过宣告network方式学习
EGP:e ----表示EGP学习而来
Incomplete: ? ---表示路由通过引入的方式学习的
Next_Hop
1、当路由器收到路由的时候会检查路由的下一跳是否在IP路由表里,如果不在这条路由就为无效路由
[AR3-bgp]peer 4.4.4.4 next-hop-local---强制修改下一跳
团体属性
1、Internet:路由器收到这个团体属性后,会向所有的BGP 路由器发送路由。默认这个属性
2、No_Advertise:BGP路由器收到这种属性,不会向IBGP或者EBGP对等体发布路由
3、No_Export:BGP路由器收到这一属性,不会向AS外发布路由,但是AS 内部的路由还可以收到
4、No_Export_Subconfed:设备收到具有此属性的路由后,将不会向AS外发送路由,也不向as内发布路由
Preferred-Value:华为路由私有属性,只能用于import,不能export。因为这个私有属性,如果其他厂商接收到这种属 性,也无法识别。该值越大,则路由越优先。
Originator ID:起源ID ,表示路由器的发出ID
1、作用:在RR反射器上防止环路 如果路由收到BGP 路由,Originator ID与自己的是否一致,如果一样的话就接收此路由
BGP路由优选:
一、 丢弃下一跳不可达的路由。
第一:在AR5宣告5.5.5.5
[AR5]int lo 0
[AR5-LoopBack0]ip address 5.5.5.5 32
[AR5-LoopBack0]bgp 500
[AR5-bgp]network 5.5.5.5 32
发现AR2为无效路由
第二:强制修改下一跳
[AR3]bgp 200
[AR3-bgp]peer 2.2.2.2 next-hop-local
[AR3-bgp]peer 4.4.4.4 next-hop-local
二、优选Preferred-Value属性值最大的路由。
让路由优选10.1.14.4
[AR1]route-policy per permit node 10
[AR1-route-policy]if-match ip-prefix net14
[AR1-route-policy]apply preferred-value 10
[AR1]ip ip-prefix net14 permit 5.5.5.5 32
[AR1]bgp 100
[AR1-bgp]pe
[AR1-bgp]peer 10.1.14.4 preferred-value 10
三、优选Local_Preference属性值最大的路由。
优选路由10.1.14.4
[AR1-bgp]UNDO peer 10.1.14.4 preferred-value ---删除原先配置
[AR1]route-policy local permit node 10
[AR1-route-policy]if-match ip-prefix net14
[AR1-route-policy]apply local-preference 200
[AR1]route-policy local permit node 20
[AR1-route-policy]q
[AR1]bgp 100
[AR1-bgp]peer 10.1.14.4 route-policy local import
四、本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network> import>从 对等体学来的
自动聚合:只能聚合引入路由
第一步: [AR1-bgp]undo peer 10.1.14.4 route-policy local import ---保存配置一样
先创建环回口
interface LoopBack1
ip address 4.4.4.1 255.255.255.255
ip address 4.4.4.2 255.255.255.255 sub
ip address 4.4.4.3 255.255.255.255 sub
因为自动聚合不能聚合宣告路由,只能聚合引入的 [AR4-bgp]import-route direct [AR4-bgp]summary automatic ---自动聚合
S代表已经聚合成功
手动聚合
1、可以聚合宣告路由,也可以聚合引入的路由
第一:创建环回口,并且宣告
[AR2]int lo 1
[AR2-LoopBack1]ip address 4.4.4.1 32
[AR2-LoopBack1]ip address 4.4.4.2 32 sub
[AR2-LoopBack1]ip address 4.4.4.3 32 sub
[AR2]bgp 200 [AR2-bgp]network 4.4.4.1 32
[AR2-bgp]network 4.4.4.2 32
[AR2-bgp]network 4.4.4.3 32
第二、手动聚合
[AR2-bgp]aggregate 4.4.4.0 30
[AR2-bgp]aggregate 4.4.4.0 30 detail-suppressed ----抑制明细路由
[AR2-bgp]aggregate 4.0.0.0 8 detail-suppressed ----修改掩码,并且在AR1查看到手动优于自动聚合
五、优选AS_Path属性值最短的路由。
第一,保持路由的原先
[AR2-bgp]undo aggregate 4.0.0.0 8 detail-suppressed
[AR2-bgp]undo aggregate 4.4.4.0 30 detail-suppressed
第二
[AR1]route-policy as permit node 10
[AR1-route-policy]if-match ip-prefix net14
[AR1-route-policy]apply as-path 1 overwrite Warning: The AS-Path lists of routes to which this route-policy is applied will be overwritten. Continue? [Y/N]y [AR1]route-policy as permit node 20 [AR1]bgp 100
[AR1-bgp]peer 10.1.14.4 route-policy as import
六、优选Origin属性最优的路由。
Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。
第一:[AR1-bgp]undo peer 10.1.14.4 route-policy as import
第二:修改路径
[AR1-bgp]peer 10.1.12.2 route-policy ogn import
[AR1]route-policy ogn permit node 10
[AR1-route-policy]if-match ip-prefix net14
[AR1-route-policy]apply origin incomplete
[AR1]route-policy ogn permit node 20
第七:优选MED属性值最小的路由。
第一步: [AR1-bgp]undo peer 10.1.12.2 route-policy ogn import
第二:修改MED ,让路由走10.1.14.4
[AR1-bgp]peer 10.1.12.2 route-policy med import
[AR1]route-policy med permit node 10
[AR1-route-policy]if-match ip-prefix net14
[AR1-route-policy]apply cost 100
[AR1]route-policy med permit node 20
第八:优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)
第一:
[AR1-bgp]undo peer 10.1.12.2 route-policy med import 在AR1上创建回环口,并且宣告
[AR1]int lo 2
[AR1-LoopBack2]ip address 100.1.1.1 32 [AR1-LoopBack2]bgp 100 [AR1-bgp]network 100.1.1.1 32
第二,AR2和AR4IBGP全互联,并且AR2的有下一跳是AR4
[AR2]bgp 200
[AR2-bgp]peer 4.4.4.4 as 200
[AR2-bgp]peer 4.4.4.4 connect-interface lo 0
[AR2-bgp]peer 4.4.4.4 next-hop-local
[AR4]bgp 200
[AR4-bgp]peer 2.2.2.2 as 200
[AR4-bgp]peer 2.2.2.2 connect-interface lo 0
第九、优选到Next_Hop的IGP度量值最小的路由。
第一步:AR2,删除peer 4.4.4.4,AR4也删除peer2.2.2.2
第二步:AR1和AR2/AR4使用环回口建立
[AR1]int lo 0
[AR1-LoopBack0]ip address 1.1.1.1 32
[AR1-LoopBack0]bgp 100
[AR1-bgp]peer 2.2.2.2 as 200
[AR1-bgp]peer 2.2.2.2 connect-interface lo 0
[AR1-bgp]peer 2.2.2.2 ebgp-max-hop 2
[AR1-bgp]peer 4.4.4.4 as 200
[AR1-bgp]peer 4.4.4.4 connect-interface lo 0
[AR1-bgp]peer 4.4.4.4 ebgp-max-hop 2
[AR1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0
[AR1-ospf-1-area-0.0.0.0]network 10.1.14.1 0.0.0.0
[AR1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[AR2-bgp]peer 1.1.1.1 as 100
[AR2-bgp]peer 1.1.1.1 co lo 0
[AR2-bgp]peer 1.1.1.1 ebgp-max-hop 2
[AR2-ospf-1-area-0.0.0.0]network 10.1.12.2 0.0.0.0
[AR4-bgp]peer 1.1.1.1 as 100
[AR4-bgp]peer 1.1.1.1 co lo 0
[AR4-bgp]peer 1.1.1.1 ebgp-max-hop 2
[AR4-bgp]undo peer 10.1.14.1
[AR4-ospf-1-area-0.0.0.0]network 10.1.14.4 0.0.0.0
最后修改接口cost值:[AR1-GigabitEthernet0/0/0]ospf cost 100
让路由走4.4.4.4
第十:优选Router ID(Orginator_ID)最小的设备通告的路由
[AR1]dis bgp routing-table 5.5.5.5 --查看router id值
路由的负载分担:
[AR1]bgp 100
[AR1-bgp]maximum load-balancing 2