BGP总结

BGP—外部网关协议

1.AS

自治系统,一整套归自己管理的设备集合,重点在于产权

AS号:类似于IP地址,分为公网和私网,BGP路由器只能属于一个AS

        在长度为16bit的AS号表示方式中:64512-65534为私有AS号

        在长度为32bit的AS号表方式中:4200000000-4294967294为私有AS号

2.BGP特点

(1)能承载大量的路由——BGP协议不计算只传,是触发式更新(不动就不更新,消耗资源少)

(2)BGP是应用层协议,基于TCP连接,即可靠

(3)BGP可以跨设备建邻居,两种邻居关系分别为EBGP(AS之间)和IBGP(AS内部)

(4)端口号:179

(5)丰富的路由策略,13条选路原则,每条BGP路由都携带多种路径属性,BGP可以通过这些路径属性控制路径选择,不像OSPF或者ISIS只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式

(6)可以支撑MPLS/VPN的应用,传递客户VPN路由

(7)提供了路由聚合和路由衰减功能用于防止路由振荡,可以提高网络稳定性

        路由衰减:路由衰减使用惩罚值(Penalty value)来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如所示,路由每发生一次振荡,BGP便会给此路由增加1000的惩罚值,其余时间惩罚值会慢慢下降。当惩罚值超过抑制阈值(suppress value)时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(half-life)。当惩罚值降到再使用阈值(reuse value)时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。从路由被抑制到路由恢复可用的时间称为抑制时间(suppress time)。

(8)BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)

(9)BGP默认没有等价路由概念,如果有去往同一目的网段的多条路由,BGP会选择最优的一条理由传输出去,查看表时,有“>”为最优

(10)选路功能强大,有大量的路由属性,IGP靠开销

3.BGP工作原理

第一步,建邻居peer

1.BGP是应用层协议,传输层对应TCP,进行三次握手

2.发送OPEN,进行协商,邻居是EBGP还是IBGP

3.keepalive,维持邻居关系,默认60s,180s断开

第二步,传路由network,import

4.对等体(邻居)建立

在三次握手完成后

(1)发送Open报文,其中Open报文中携带:

        My Autonomous System:自身AS号

        Hold Time:用于协商后续Keepalive报文发送时间,默认是60s,达到180s就噶掉了

        BGP ldentifer:自身Router ID(支持手动配置和自动配置)

                OSPF修改Router ID——OSPF重启        BGP修改Router ID——不需要重启

(2)参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接

(3)BGP对等体关系建立之后,BGP路由器发送BGPUpdate(更新)报文通告路由到对等体

5.连接源地址

BGP是接口建立邻居

默认是直连口,修改为Loopback作为更新源地址(Loopback接口非常稳定)

IBGP没什么事情,EBGP要考虑多跳问题

6.BGP报文

BGP存在5种类型的报文,不同类型的报文拥有相同的头部(header)

报文头格式:

(1)Marker:16Byte,用于标明BGP报文边界,所有bit为“1”

(2)Length:2Byte,BGP报文总长度(包括报文头在内以Byte为单位

(3)Type:1Byte,BGP报文的类型。

        其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh 报文

报文格式: 

报文名称作用发送时刻主要字段
Open协商BGP对等体参数,建立对等体关系BGP TCP连接建立成功之后

Version:版本号。

My As:本地A5号。

Hold Time:保持时间
BGP ldentifier:BGP标识符

Update发送BGP路由更新、撤销路由BGP对等体关系建立之后有路由需要发送路由变化时向对等体发送Update报文

Withdrawn Routes Length:标明长度

Withdrawn routes:不可达路由的列表,告知对方撤销路由
Total path attribute length:字段长度
Path attributes:TLV附加功能
NLRI:网络层可达信息,要发布内容

Notification报告错误信息,中止对等体关系当BGP在运行中发现错误时,发送Notfcation报文将错误通告给BGP对等体Error Code、Error subcode:差错码、差错子码,用于告知对端具体的错误类型
Data:用于辅助描述详细的错误内容,长度并不固定
Keepalive标志对等体建立,维持BGP对等体关系BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送报文用于保持连接

Marker:固定值

Length:长度

Type:类型

Route-refresh用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

AF1:地址族标识,如IPv4

Res.:保留,8个bit必须置

SAFl:子地址族标识。

7.BGP状态

OSPF有7个状态,ISIS有3个状态,BGP有6个状态

状态名称用途粗略理解
idle开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源开始准备建立
Connect正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的。如果TCP连接建立失败则进入Active状态,反复尝试连接建立连接,TCP三次握手
ActiveTCP连接没建立成功,反复尝试TCP连接连接失败,重新失败,5次
OpensentTCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立连接成功,发送Open
Openconfirm参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包收到Open,发自己的Keepalive,等对方回应
Established已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息

邻居建好了,传路由信息

具体流程如下图所示:

详细理解一下:

1.Idle状态是BGP初始状态。在ldle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态

2.在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接

(1)如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态

(2)如果TCP连接失败,那么BGP转至Active状态

(3)如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态

3.在Active状态下,BGP总是在试图建立TCP连接

(1)如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态

(2)如果TCP连接失败,那么BGP停留在Active状态

(3)如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态

4.在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查

(1)如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态

(2)如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态

5.在OpenConfirmn状态下,BGP等待Keepalive或Notifcation报文。如果收到Keepalive报文,则转至Estalblished状态,如果收到Notification报文,则转至ldle状态

6.在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文

(1)如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接

(2)如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至ldle状态

(3)Route-refresh报文不会改变BGP状态。

(4)如果收到Notification报文,那么BGP转至ldle状态

(5)如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态

8.优先级

OSPF内部是10,外部150

ISIS没有内部外部,都是15,直连是0,静态是60

BGP是最不优的,优先级为最大值255

9.BGP路由来源

BGP没有算法,不会自己计算路由,也不会发现路由,只会传递路由

路由来源:Network(逐条注入)、import-route(批量操作—直连、静态、OSPF、ISIS路由)

建立BGP,双方都要配置,有延迟,需要稍等一会,成功后会更新一条日志,最后一个单词是Up,表示成功,可以通过 display bgp peer查看,当State为Established时为成功

<Huawei>sys
[Huawei]bgp 自己的AS号
[Huawei-bgp]peer 对方端口ip地址 as 对方的AS号

当使用network进行引入时,使用network 网段 网段相应的掩码(和OSPF不同,OSPF使用的是反掩码)

EBGP一般直连建邻居,如果非要用loopback口建邻居,注意多跳的问题

IBGP一般loopback口建邻居,要修改连接源地址,使用命令:peer 1.1.1.1 connect-interface lo0

10.BGP聚合路由

手工聚合 aggregate 10.1.0.0 22 detail-suppressed

自动聚合 summary automatic

手动聚合优于自动聚合

11.核心—通告原则(基本原则)

(1)第一条原则:只发布最优且有效(即下一跳地址可达)路由

        通过display bgp routing-table命令可以查看BGP路由表

                * :代表有效          > : 代表最优

(2)第二条原则:从EBGP对等体获取的路由,会发布给所有对等体

(3)第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体,该条原则也被称为“IBGP水平分割”

如图所示,如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体:R2将一条路由传递给了IBGP对等体R3,R3收到路由之后传递给IBGP对等体R1,R1继续传递给IBGP对等体R2,至此路由环路形成了

               

第三条原则可能会带来新的问题,当BGP路由器R2将路由传递给BGP路由器R1时,由于第三条原则限制,R1无法将BGP路由传递给R3,R3将无法学习到路由

为解决该问题可以采用AS内IBGP全互联的方式,即R2、R3之间建立非直连的IBGP对等体关系,以此让BGP路由器R2将路由传递给BGP路由器R3

(4)第四条原则:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则,华为不支持同步原则

        同步原则---IGP跟EGP同步,同步了才能往下发,没同步就不能

  • 没有同步原则,会发生路由黑洞,如果发生路由黑洞,有别的技术去解决(MPLS)
  • 有同步原则,会发生路由震荡,即路由衰减功能,危害太大

华为认为震荡问题远远大于黑洞问题,所以不支持同步原则

总结※:

  • 从E到I,下一跳默认不是本地---next-hop-local
  • 从E到E,默认可以,自动防环--检查AS_Path
  • 从I到I,有水平分割机制,默认不会传递(1.路由反射器    2.联邦联盟)
  • 从I到E,默认可以传,同步原则(华为不支持)

12.network(宣告)命令:

(1)OSPF:宣告网段,计算路由,简单来说就是,OSPF通过network这条命令,把需要参与到路由计算的网段宣告到OSPF里,宣告之后可以计算路由,实现通网

[Huawei]ospf
[Huawei]area 区域号
[Huawei]network 网段 反掩码

(2)ISIS:宣告所在的AS号+设备自己的route id+00,不要忘记进入接口输入命令isis enable,开启ISIS

[Huawei]isis
//区域号以49.0000为例
[Huawei-isis-1]network-entity 49.0000.0000.0001.00

(3)BGP:宣告网段

①建邻居——peer

②传网段——需要谁通网就network谁

13.BGP路由属性

1.任何一条BGP路由都拥有多个路径属性

2.当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路径属性

3.BGP的路径属性将影响路由优选

4.每个属性可以实现BGP部分功能

属性分类:

1.公认:所有BGP必须识别

(1)公认必遵:Origin、AS_Path、Next hop——必须包括在每个Update消息里

(2)公认任意:Local_Preference、Atomic_aggregate——可能包括在某些Update消息里

2.可选:可以不识别

(1)可选过渡:Aggregator、Community——BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体

(2)可选非过渡:MED、Cluster-List、Originator-ID——BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体

在BGP Update报文中,存在路径属性:

Path attributes
    Path Attribute - ORlGIN: IGP
    Path Attribute - AS PATH: 65536 1 2 3
    Path Attribute - NEXT HOP: 172.16.1.1

公认必遵!!!!———————————————————————————————————

1.AS_Path:AS号的路径,即经过了哪些AS,确保EBGP对等体之间传递无环,也是路由优选的衡量标准之一,路由离开AS是添加本地的AS号,后续向前添加

①防环:在传递过程(从EBGP到EBGP)中会增加AS号,判断存的AS号中是否有自身AS号,有的话就不通

②路由优选:通过判断AS号的个数来判断哪一个更优(越少越优),去往同一个地方的不同路径才有可比性

③AS_Path类型:AS_SEQENCE、AS_SET、AS_Confed_Sequence、AS_Confed_Set

R3将R1和R2路由聚合后,AS_Path属性丢失,存在产生环路的风险,为此可以通过AS_SET类型的AS_Path属性携带聚合前的AS路径信息,可以把默认类型AS_SEQENCE改成AS_SET

        AS_Confed_Sequence、AS_Confed_Set应用于BGP联邦联盟中,已经淘汰了

④使用Route-Policy修改BGP路由的AS_Path属性时,可以使用以下三种方式:追加、覆盖、删除

2.Origin:起源,三种方式,可以通过命令display bgp routing-table查看,最后一列Ogn即为Origin

起源名称标记描述
IGPi如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该BGP路由的Origin属性为IGP
EGPe

如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP(这种方式不存在了)

Incomplete如果路由是通过其他方式学习到的,则Orgin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由

路由优选:当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP>EGP>Incomplete(i>?)

3.Next hop:下一跳

当路由器接收到BGP路由后,需对BGP路由的Next_Hop属性值进行检查,该属性值(IP地址)必须在本地路由可达如果不可达,则这条BGP路由不可用

在不同的场景中,设备对BGP路由的缺省Next Hop属性值的设置规则如下:

①BGP路由器在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址(EBGP自己会改)

②BGP路由器将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址(IBGP自己会改)

③路由器在收到EBGP对等体所通告的BGP路由后,在将路由传递给自己的IBGP对等体时,会保持路由的Next_Hop属性值不变(EBGP到IBGP不改变,需要配置next-hop-local)——修改Next hop,可以使用peer next-hop-local命令可以在设置向IBGP对等体(组)通告路由时,把下一跳属性设为自身的TCP连接源地址

④如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体

公认任意!!!!———————————————————————————————————

1.Local_Preference:本地优先级,可以通过命令display bgp routing-table查看——LocPrf

来源:AS外的路由进入到本AS时,由边界路由自动添加,默认Local_Preference值为100

作用:边界路由器通知AS内部的其他路由器,哪条路由时离开本AS的首选路径,数值越大越优先

特点:

        ①EBGP邻居之间不会发送,IBGP之间传递会携带

        ②通过命令bgp default local-preference 200 可以修改或者通过路由策略修改

2.Atomic_aggregate

作用:路由聚合后才会出现,用于通知其他路由器,传递的路由是危险的,因为路由聚合会导致明细的路由携带的路径属性丢失

可选过渡!!!!———————————————————————————————————

1.Aggregator

作用:路由聚合后才会出现,用于标记路由聚合行为发生在哪个AS及哪台BGP路由器上

该属性会携带着聚合路由器所在的AS号,以及该路由器的router-id

2.Community:团体属性

本质上是路由的标记,可以直接针对标记做一些操作或者策略

1.可以简化操作,提升效率        2.可以实现复杂的路由传递的需求

公认团体属性:有固定含义的团体属性

团体属性名称团体属性号说明
Internet0(0x00000000 )设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省情况下,所有的路由都属于Internet团体,默认的
No_Advertise4294967042(0xFFFFFF02)设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由
No_Export4294967041(0xFFFFFF01)设备收到具有此属性的路由后,将不向AS外发送该路由
No_Export_Subconfed4294967043(0xFFFFFF03)设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由

可选非过渡!!!———————————————————————————————————

1.MED

BGP没有cost的概念,MED类似于BGP的开销

来源:由AS内部运行的IGP协议开销继承而来

作用:通知其他AS的路由器,那条路由是进入本地AS的首先路径,路由优选数值越小越优先

传递原则:不会跨AS传递,其他情况都可以

———————————————————————————————————————————

反射器--RR

作用:打破水平分割(水平分割是一个机制),实现把路由从IBGP发给IBGP(联邦联盟)

角色:1.反射器RR    2.客户端client

特点:

1.只有反射器知道自己是反射器,以及自己的客户端是谁,客户端全程闭眼玩家

2.反射器该干的事得干(I到E,E到E,E到I)

3.非客户不能反射给另一个非客户,其他都可以(客户面子大)

———————————————————————————————————————————
2.Originator-ID:起源者ID

作用:反射器防环

只有一台反射器不会环路的,因为水平分割,只有多台会环路

原理:由第一台接收到路由的反射器添加,添加路由产生者的router-id,当路由产生者的又一次接收到了这条路由,会检查该字段,发现跟自己的router-id一致,所以不接收

3.Cluster-List:反射器列表

作用:反射器防环

原理:每台反射器都会把自己的router-id,添加到该属性,接收到路由后会检查该属性,有没有自己的router-id,如果有则不接收

Preferred-Value!!!————————————————————————————————

Preferred-Value(协议首选值)是华为设备的特有属性,华为的亲儿子

Preferred-Value优先级最高的,最优的!!!

特点:

1.本地有效,不会对其他设备传递

2.越大越优先,默认0,取值范围是0~65535

3.通过命令或者路由策略可以调整该属性,用于控制路由优选,Preferred-Value只能在路由器本地配置,而且只影响本设备的路由优选。该属性不会传递给任何BGP对等体

14.BGP路由优选!!!!!!!!!!!!!!!!!!!!!!!

13条选路原则:(小口诀:“漂亮老男人”)

“漂亮”比谁大,“老男人”比谁小——0~8条规则

        漂——P——Prefered-Value

        亮——L——Local_Preference

        老 ——L——本地始发优于其他

            ——A——AS_Path  比小

            ——O——Origin  network>import

        男人——M——MED  比小

               ——E——EBGP路由优先级高于IBGP路由

               ——N——Next_Hop的IGP度量值最小的路由

0.丢弃下一跳不可达的路由(默认规则)

1.优选Prefered-Value属性值最的路由(亲儿子)

peer 10.0.3.3 preferred-value 100

2.优选Local_Preference属性值最的路由(本地优先级)

3.本地始发的BGP路由优于从其他对等体学习到的路由

        本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的

手动聚合:人为去计算

R3上配置两条静态路由,将静态路由通过import-route注入到BGP,并通过aggregate命令进行手动聚合,同时增加关键字detail-suppressed抑制明细路由的对外通告

R3上执行如下操作:
ip route-static 10.0,45.0 255,255.255.128 null0
ip route-static 10.0.45.128 255,255.255.128 null0
bgp 200
aggregate 10.0.45.0 255.255,255.0 detail-suppressed
import-route static

自动聚合:不建议使用,会聚合成 / 8 ,聚合不精准,使用summary automatic触发

R3上执行如下操作:
ip route-static 10.0.45.0 255,255.255.128 null0
ip route -static 10.0.45.128 255.255.255.128 null0

bgp 200
summary automatic
import-route static

4.优选AS_Path个数最少的路由

5.优选Orgin属性最优的路由

Origin属性信按优先级从高到低的排列是IGP、EGP及Incomplete

6.优选MED属性值最小的路由

7.优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)

8.优选到Next_Hop的IGP度量值最小的路由

        OSPF开销越小越优先

R1通过display bgp routing-table 10.0.45.0 24 查看BGP路由的详细信息,下一跳10.0.2.2的BGP路由其IGPcost值变为了10,而下一跳为10.0.3.3的BGP路由其IGP cost为默认值1,所以R1优选下一跳为10.0.3.3的路由
在R1的路由详细信息中可以看到如下内容:not preferred for lGP cost。表明该路由因为IGP cost未被优选

9.优选Cluster_List最短的路由

R2看到的从R3过来的Cluster_List为0,从R1过来的为R1的router id,越少越优先,上面空的为优

10.优选Router_ID最小的设备R3通告的路由

11.优选Orginator_ID最小的设备通告的路由

router_id一致,比较起源者id

12.优选具有最小!P地址的对等体通告的路由

BGP默认没有等价路由,根据选路原则一定能选出一条最优,满足“漂亮老男人”的时候可以做等价,使用一条命令:maximum load-balsndng lbgp 2最多支持16条路径

OK了,短暂的先结束一下咯~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pedestrians74

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值