引入

为啥会有BGP呢,既然OSPF这么强大,只用OSPF不就可以了吗,因为在以前网络规模不大的时候,OSPF、RIP这种简单路由协议就够用了,但是随着网络发展越来越快,路由信息也越来越多,这种

简单的路由协议就不能很好的运行了

------比如一般OPSF能承载最大的路由信息条目差不多就是9000左右,但是如果这个路由条目上万之后,因为OSPF的路由算法是SPF以自己为根生成树计算 ,会耗费大量的资源,路由器就支持不了,而BGP做了距离矢量协议,就能运行几十万条

路由引入的时候一般情况都是单向引入到BGP,因为BGP能容纳很多的路由,其他的IGP不行


什么是BGP

BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议;

前身是EGP,因为EGP过于简单就被BGP替代了;

 

特性:

BGP是自治系统外部路由协议,用来在AS之间传递路由信息;

路径矢量路由协议,从设计上避免了环路的发生;

由TCP协议承载,端口号是179;

支持CIDR和路由聚合;

路由附带丰富的属性;

只发送增量路由更新;

路由过滤和路由策略;

 

 

角色内容:

BGP发言者(BGP speaker)---运行了BGP的路由器或者三层交换机就叫BGP发言者;

Route-ID------在同一个AS标识唯一的路由器,运行BGP一定要Route-ID,可手动可协议自动生成;

BGP对等体(BGP Peer)-----相互之间建立的TCP连接、相互交换路由信息的BGP发言者;

IBGP对等体(Internal BGP Peer)------在同一个AS自治区域的BGP对等体;

EBGP对等体(External BGP Peer)-------在不同AS自治区域的BGP对等体;

 

 

补充说明:

 

如图,对等体也叫邻居,一般情况下,EBGP邻居之间上是物理直连,因为网络IP报文有个TTL跳数

EBGP建立的时TTL值是1,所以一般情况是物理直连,也不能用回环接口Loopback去相互建立

邻居,因为TTL1,两个Loopback是两条,当然,可以人工配置TTL值,这样就可以更远一点的距离

建立EBGP邻居了;

 

EBGP邻居收到的路由,BGP发言者会向其他所有邻居发送(EBGP邻居、IBGP邻居);

为什么要重启OSPF进程 为什么有ospf还要用bgp_路由协议

 

 

如图,IBGP邻居建立是在同一个AS里面,默认情况下,IBGP在建立邻居的时候TTL值为255,而且一般

建立IBGP邻居不用物理直连,但一定要能互通,因为这样才能建立TCP连接,而且一般用本地回环接口Loopback,因为Loopback接口是虚拟接口,在一台设备上面,只要有一个物理接口是UP的,那么Loopback就是打开的,所以Loopback接口就相对更稳定;

 

IBGP邻居收到的路由,BGP发言者不会向IBGP邻居发送,例如,RTA收到RTBBGP路由,RTA不会发给RTC,如果RTC想要RTB发送的路由,得让RTC和RTB在建立连接,这也是BGP的一种防环机制;

为什么要重启OSPF进程 为什么有ospf还要用bgp_TCP_02

 

 

 

 

BGP的报文消息:

 

BGP一共有五种报文消息,采用的报文格式是“报文头+报文体”



消息类型

消息作用

Open

建立邻居关系,有验证功能

Keepalive

周期给对等体发送Keepalive消息,确认连接有效性,只有消息头,默认60s

Update

携带路由的更新消息

Notification

检测到错误的时候,发送Notification报文,然后立即关闭BGP连接,Notification报文有很多种类型

Route-refresh

指定对等体从新发送指定地址族的消息



 

 

 

BGP状态机:

 

如图

1、Idle状态(空闲状态):

BGP协议初始时是处于Idle状态。在这个状态时,系统不分配任何资源,也拒绝所有进入的BGP连接。默认两个路由器之间两端都能主动建立TCP连接,也可以配置只被动建立,只有收到Start事件产生时,才分配BGP资源,启动ConnectRetry计时器,启动对其它BGP对等体的传输层连接,同时也侦听是否有来自其它对等体的连接请求;

2、Connect状态(连接状态):

这个状态下,BGP等待TCP完成连接。若连接成功,本地清空ConnectRetry计时器,并向对等体发送OPEN报文,然后状OpenSent状态;否则,本地重置ConnectRetry计时器,侦听是否有对等体启动连接,并移至Active状态;

3、Active状态(活跃状态):

有start时间,但未TCP建立成功,就处于Active状态。这个状态下, BGP初始化TCP连接来获得一个对等体。如果连接成功,本地清空ConnectRetry计时器,并向对等体发送OPEN报文,并转至OpenSent状态;

为什么要重启OSPF进程 为什么有ospf还要用bgp_路由协议_03

 

4、Open-sent(Open消息以发送):

这个状态已经发送了Open到对等体这个状态下,BGP等待对等体的OPEN报文。收到报文后对报文进行检查,如果发现错误,本地发送NOTIFICATION报文给对等体,并改变状态为IDLE。如果报文正确,BGP发送KEEPALIVE报文,并转至OpenConfirm状态;

5、Open-Confgirm状态(Open消息确认):

表示自己已经发送Keepalive报文,这个状态下,BGP等待KEEPALIVE或NOTIFICATION报文。如果收到KEEPALIVE报文,则进入Established状态,如果收到NOTIFICATION报文,则变为Idle状态;

6.Established状态(建立连接)

这个状态下, BGP可以和其他对等体交换UPDATE,NOTIFICATION,KEEPALIVE报文。如果收到了正确的UPDATE或KEEPALIVE报文,就认为对端处于正常运行状态,本地重置HoldTimer。如果收到NOTIFICATION报文,本地转到Idle状态。如果收到错误的UPDATE报文,本地发送NOTIFICATION报文通知对端,并改变本地状态为Idle。如果收到了TCP拆链通知,本地关闭BGP连接,并回到Idle状态;

 

 

 


工作内容

BGP路由属性:把BGP的属性分为4类



公认必遵

Origin属性、AS-Path属性、NEXT_HOP属性

所有BGP路由器必须都能识别,而且必须存在Update消息中

公认可选

Local_Pref属性、Atomic_aggregate属性

BGP路由器都能识别,但是不一定要在Update消息中

可选传递

Communit属性、Aggregate属性

在AS之间具有可传递属性,可以不会识别但会传递可通告给别的

可选非传递

Med属性、Cluster_List属性、Originator_ID

可以不支持,就会被忽略



BGP是距离矢量协议,同一条路由一定会选出最优路由,路由负载分担得通过特殊配置

 

 

1.AS-Path属性:公认必遵属性,一个路由到达一个目的地所经过的一系列的自治系统的有序列表

每当BGP将一条路由通告到其他AS就会,加上自己的AS,加在AS_Path最前面

 

----作用:路由选择和过滤,在其他因素相同的情况下,下图AS100区域会收到RTD和RTC两条去往AS65101的路由优先接受RTC的路由,RTD会被拒绝,也可以通过路由策略在RTA发送路由的时候加上多个AS达到接受RTD的路由

为什么要重启OSPF进程 为什么有ospf还要用bgp_OSPF_04

 

2.NEXT-HOP属性:公共必遵属性,BGP发言者去往目的地的下一跳,在发送路由的时候默认情况下

下一跳地址是出接口的地址,传递路由的时候如果不做配置,传递下一跳的信息

配置不会更改,配置next-hop-local就会更改路由中下一条信息,未本地接口的

下一跳

为什么要重启OSPF进程 为什么有ospf还要用bgp_TCP_05

 

 

3.Origin属性:公认必遵属性说明BGP路由来源

三种类型------IGP:通过Network命令宣告或者路由聚合,AS内部产生的路由

----EGP:路由信息是通过EGP协议引入的

----Incomplete:其他方式而来,一般是import或者静态路由

在选路因素相同的情况下,IGP>EGP>Incomplete

 

 

4.Local_pref属性:公认可选属性,用在同一个AS里面传播,在IBGP邻居之间传播,不会该属性传递或

通告给EBGP邻居,Local_pref值越大越优先

 

例:当RTA的8.0.0.0/24路由进入AS65101 的时候,有两个出口进入,RTB会打上

Local_pref值未100,RTC打上200, ,所有RTD从邻居RTC收到的路由更优先

去往8.0.0.0/24的路由优先走RTC

为什么要重启OSPF进程 为什么有ospf还要用bgp_为什么要重启OSPF进程_06

 

 

 

5.Med属性:可选非传递属性,路由器表示一定要支持,不支持就忽略该属性,相当于IGP 的度量值

当9.0.0.0/24的路由在AS65101有两个出口,到AS65330的时候,可以设置Med值来

进行最优路径选择,Med值只在两个相邻的AS之间传递,不会收到这条属性的AS不会

再传给第三个AS,通常情况只比较来自同一个AS的Med值,可以特殊配置比较不同AS

为什么要重启OSPF进程 为什么有ospf还要用bgp_TCP_07

 

 

6.Preferred-value属性:私有BGP属性,从多个EBGP而来的路由,系统会默认Preferred-value值为0,当

从不同的EBGP邻居收到更大值的属性,就会优先被选择,只对本地有效

为什么要重启OSPF进程 为什么有ospf还要用bgp_TCP_08

 

选路规则:

 

 

为什么要重启OSPF进程 为什么有ospf还要用bgp_TCP_09

为什么要重启OSPF进程 为什么有ospf还要用bgp_TCP_10

 

发布策略:

为什么要重启OSPF进程 为什么有ospf还要用bgp_路由协议_11



 

 

走过路过,点个三连,十分感谢

一起学习,一起进步