BGP路由技术

一、BGP概述

1、自治系统(AS,autonomous system)

自治系统是由一个技术管理机构管理,使用统一选路策略的一组路由器集合。
自治系统编号范围:1-65535,其中1-64511是互联网上注册公有AS号,类似公网IP地址。64512-65535是私有AS号,类似私网IP地址。

2、动态路由的分类

(1)自治系统分类

①IGP:自治系统内部路由协议,主要有:RIP 1/2、OSPF、IS-IS、EIGRP(思科私有协议)。
IGP是运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由。
②EGP:自治系统外部路由协议,通常为BGP。
EGP是运行在AS与AS之间的路由协议,他解决AS之间选路问题。

(2)协议类型分类

①距离矢量路由协议:RIP 1/2、BGP、EIGRP
②链路状态路由协议:OSPF、IS-IS

3、BGP的概念

BGP是一种运行在AS和AS之间的动态路由系诶,主要作用在AS之间自动交换无环路由信息以此来构建AS的拓扑图,从而消除路由环路并实施用户配置的路由策略。目前公网网络条目众多,IGP协议无法承载,而BGP可以轻松应对,通常BGP协议用于ISP和ISP之间或跨越地域总、分公司之间的路由信息交换。

4、BGP的特征

●传输协议:TCP,端口号为179
●BGP是外部路由协议,用来在AS之间传递路由信息
●是一种增强的路径矢量路由协议
●拥有可靠的路由更新机制
●具备丰富的Metric度量方法
●无环路协议设计
●为路由条目附带多种属性信息
●支持CIDR(无类别域间选路)
●丰富的路由过滤和路由策略
●无需周期性更新
●路由更新时只发送增量路由
●周期性发送Keep Alive报文以保持TCP连通性

二、BGP工作原理

1、BGP邻居关系

(1)BGP报文

①open报文

open报文是TCP建立后发送那个的第一个报文,用于建立BGPP对等体之间的连接关系。
主要包括BGP版本号、本地AS编号、Holdtime等信息。

②update报文

update报文使用在BGP之间更新路由信息,update报文可以通告多条属性相同的可达路由信息,也可以撤销多条路由不可达的路由信息。

③notification报文

报文的作用是当BGP检测到错误状态时,立即向对等体发送notification报文,之后BGP就会中断,只要收到notification报文就会返回idle状态。

④route-refresh报文

用来告知对等体所支持路由的刷新能力,BGP的入口策略路由发生变化,本地的BGP路由会向对等体发送route-refresh报文,收到信息后,对等体将其路由信息重新发送给本地BGP路由器。

⑤keep alive报文

该报文在对等体之间周期的发送报文,用以保持连接的有效性并维护其连接,keep alive报文发送周期为60s,保持时间180s,这个类似于ospf中的hello报文。

(2)BGP状态机

bgp的路由表和ip路由表有什么区别 bgp路由类型_自治系统


idle状态-空闲

connece状态-连接

active状态-活动

opensent状态-开启发送

openconfirm状态-开启确认

established状态-建立

(3)BGP数据库

①IP路由表(IP-RIB)

全局路由信息库,包括最优的路由信息

②BGP路由表(Loc-RIB)

BGP路由信息库,包括本地BGPspeak通告的路由信息,将其最优的添加到路由表中

③邻居表

对等体邻居清单表,包括对等体两端的邻居信息及邻居列表

④Adi-RIB-In

对等体宣告给本地的speak的未处理的路由信息库

⑤Adj-RIB-Out

本地speak宣告给指定的对等体路由信息库

(4)BGP的邻居关系类型

①IBGP

同一个AS内部BGP邻居关系,IBGP邻居是指运行BGP协议的对等体两端在同一个AS域内,属于BGP AS内部。

②EBGP

AS之间的BGP邻居关系,EBGP通常指运行BGP协议的对等体两端在不同AS内部

2、通告BGP路由的方法

(1)netwrok方式

[R1-bgp] network 1.1.1.1 32

[R1-bgp] network 2.2.2.2 32

(2)import方式

[R1-bgp] import-route ospf 110 ###注入ospf中的路由

[R1-bgp] import-route static ###注入静态路由

[R1-bgp] import-route direct ###注入直连路由

三、BGP的配置

1、BGP配置思路

(1)启用BGP,后面跟AS系统号

(2)宣告route-id,建立邻居关系用

(3)宣告和谁建立邻居关系

(4)通告BGP路由(network、import)

2、BGP对等体配置

如R1与R2建立邻居对等,as系统号为100,R1 router-id为1.1.1.1,R2 router-id为2.2.2.2

R1:

[R1] router id 1.1.1.1

[R1] bgp 100

[R1-bgp] peer 2.2.2.2 as-number 100

[R1-bgp] peer 2.2.2.2 connect-interface LoopBack 0

R2:

[R2] router-id 2.2.2.2

[R2] bgp 100

[R2-bgp] peer 1.1.1.1 as-number 100

[R2-bgp] peer 1.1.1.1 connect-interface LoopBack 0

3、保证IBGP下一跳可达

在EBGP之间建立对等邻居时,由于它们之间数据传输需经2跳,因此需做如下设置

[R2-bgp] peer 3.3.3.3 ebgp-max-hop 2

4、BGP属性

路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。

公认属性:

是公认所有BGP实现都必须识别的属性,这些属性被传递给BGP邻居。

公认强制属性必须出现在路由描述中,公认自由决定属性可以不出现在路由描述中。

可选属性:

非公认属性被称为可选的,可选属性可以是传递的或非传递的。

可选属性不要求所有的BGP实现都支持。

对于不支持的可选传递属性,路由器将其原封不动的传递给其他BGP路由器,在这种情况下,属性被标记为部分的。

对于可选非传递属性,路由器必须将其删除,而不将其传递给其他BGP路由器。

5、BGP选路原则

1、优选具有最大Weight值的路由

2、优选具有最大Local_Preference值的路由

3、优选起源于本地的路由(如本地network、aggregate或redistribute的)即下一跳是0.0.0.0(在BGP表中,本路由器通告的路由的下一跳为0.0.0.0)

4、优选AS-Path最短的路由

5、Origin(IGP>EGP>incomplete)

6、优选MED最小的路由,默认情况下仅有当所有备选路由来自同一AS才会比较MED

7、优选EBGP邻居发来的路由(相对于IBGP邻居学过来的),在联邦EBGP和IBGP中首选联邦EBGP路由

8、优选到BGP next_hop 最近的邻居

9、执行等价负载均衡(如果有多条来自相同相邻AS的路由并通过Maximum-paths 使多条路径可用,则将所有开销相同的路由放入本地路由表)

10、优选最老的EBGP路由,EBGP路由接收的顺序(此条主要对EBGP路由起效,基本不用,不好确定)

11、BGP邻居的RID越小越优先

12、优选cluster_list最短的路由

13、选择邻居IP地址(BGP的neighbor配置中的那个地址)最小的路由

 

什么是BGP?

BGP( Border Gateway Protocol,边界网关协议)是一个路径矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS(自治系统)的协议。BGP属于外部网关路由协议,它解决的是AS之间的选路问题,如果把一个城市比作一个自治系统,那么像RIP、OSPF等协议就相当于该城市的公交车或地铁,而BGP则是火车,运行在城市之间。

 

什么是自治系统?

自治系统( Autonomous System,AS )是由同一个技术管理机构管理、使用统一选路策略( 运行同一动态路由协议 )的一组路由器的集合,自治系统的编号取值范国为1~ 65535。其中1~64511是互联网上注册的公有AS号类,类似公有IP地址,是全球唯一的且不可重复使用,64512-65535是私有AS号,类似于私有地址,可以重复使用但是互联网上不可以被使用。

 

认识IGP、EGP、IBGP、EBGP?

IGP:即自治系统内部的路由协议,主要包含RIPv1/v2、OSPF、ISIS、EIGRP(思科私有协议),IGP是运行在AS内部的路由协议,它解决AS内部的选路问题,其主要作用是发现、计算路由。

EGP:即自治系统之间的路由协议,通常指BGP。EGP是运行在AS与AS之间的路由协议,它解决的是AS之间的选路问题,BGP的主要作用是控制路由的传播和选择最优路由。

IBGP和EBGP所定义于BGP(EGP)里的邻居关系

IBGP:同一个AS内部的BGP邻居关系,IBGP邻居通常是指运行BGP协议的对等体两端均在同一个AS域内,属于同一个 BGP AS内部。

EBGP:AS之间的BGP邻居关系,EBGP邻居通常是指运行BGP协议的对等体两端分别在不同的AS内。

如下图所示

 

总结动态路由分类

按自治系统分类可以分为:

IGP、EGP(BGP)

按协议类型分类可以分为距离矢量路由协议,链路状态路由协议

距离矢量路由协议: RIPv1/v2、BGP(路径矢量协议)、EIGRP(高级的距离矢量协议)

链路状态路由协议: OSPF、ISIS

 

🆗,上面都了解以后,开始学习BGP

BGP的特性

传输协议:TCP,端口号179

BGP是外部路由协议,用来在AS之间传递路由信息

是一种增强的路径矢量路由协议

拥有可靠的路由更新机制,无环路协议设计

具备丰富的 Metric度量方法

无须周期性更新

路由更新时只发送增量路由

周期性发送 Keepalive报文,以保持TCP连通性

BGP的工作原理

BGP是跨公网,跨自治系统的路由协议,可以在自治系统之间学习路由。BGP的动态学习路由也是基于邻居,只有邻居关系正常,BGP才可以正常工作。

BGP邻居关系

运行BGP的路由器通常被称为 BGPspeaker(发言者),相互之间传递报文的 Speaker之间互称为对等体( Peer ),BGP邻居关系的建立、更新和删除是通过对等体之间交互5种报文、6种状态机和5个表等信息来完成的,最终形成BGP邻居

BGP的邻居关系是基于TCP的,也就是说只要 TCP/IP可达,无论是否直连,BGP对等体彼此之间就可以建立邻居关系

BGP的5种报文

报文

作用

open

建立BGP对等体之间的连接

update

更新增量路由

notification

检测错误状态,报错

route-refresh

告知对等体本地支持的路由刷新能力

keepalive

周期性的发送,保持有效的连接

BGP的6种状态机

状态机

动作

idle

初始状态,拒绝任何连接

connect

连接态,等待tcp连接的建立

active

活跃态,尝试tcp的连接

opensent

检查态,检查收到的open报文,如果报文正确转到下一连接状态openconfirm;如果报文错误,转到idle

openconfirm

等待态,等待对等体的keepalive或notification报文,如果是keepalive就进入到established;如果是notification就回到idle

established

建立态,对等体之间正常收发信息

通告BGP路由的方法

BGP路由是通过BGP命令通告而成的,而通告BGP路由的方法有两种: Network和 Import

使用 Network命令可以将当前设备路由表中的路由( 非BGP )发布到BGP路由表中并通告给邻居。需要特别注意的是, network的对象是路由条目

 

[r1]bgp 100

[r1-bgp]network 1.1.1.1 32

[r1-bgp]network 192.168.100.0 24

使用Import命令可以将所学习到的路由信息重分发到BGP路由表中,是BGP宣告路由的一种方式,可以引入BGP的路由包括直连路由、静态路由及动态路由协议学习的路由。和 Network方式的区别是,Import的对象是某种动态路由协议,而不是路由条目

 

[R2]bgp 100

[R2-bgp]import-route ospf 110

保证IBGP下一跳可达

在AS边缘的BGP设备,会接收到它的EBGP对等体邻居传递过来的BGP路由信息,因为EBGP邻居接收到的BGP路由信息中下一跳改变,而在同一个AS内通过IBGP邻居接收过来的BGP路由信息中的下一跳不会改变

如下图所示:

在不同AS里面,他们呢属于EBGP邻居,R2,R3的下一跳都正常;

在同一AS中,R3,R4是IBGP邻居,下一跳都会指向R2,这样R4就会有问题

bgp的路由表和ip路由表有什么区别 bgp路由类型_路由表_02

解决办法是在R3上宣称下一跳为R3自己,那么R4看到的下一跳就变成34.1.1.3,而34.1.1.3可以通过IGP(ospf)学习到(图中是直连),从而解决了路由无效的问题

[R3]bgp 300

[R3-bgp]router-id 3.3.3.3

[R3-bgp]peer 23.0.0.2 as-number 200

[R3-bgp]peer 34.1.1.4 as-number 300

[R3-bgp]peer 34.1.1.4 next-hop-local

BGP的属性

BGP的常用属性有 Origin、AS-PATH、Next-Hop、Local-Pref和MED等

 

属性

作用

origin属性

用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的

AS-PATH(AS路径)属性

记录了某条路由从本地到目的地址所要经过的所有AS编号,且离本设备最近的AS号在最前面

Next-Hop(下一跳)

IGP中的下一跳描述的是下一个路由器,而BGP中的下一跳描述的是下一个AS

Local-Pref属性

标识BGP路由的优先级,用于判断流量离开AS时的最佳路由

med属性

判断流量进入邻居AS时的最佳路由,其他条件相同的情况下,将优先选择MED值较小者作为最佳路由

BGP选路的规则

Local-Preference优先级以数值高的路由优先

聚合路由优先级高于非聚合路由

本地通过 Network命令引入的路由的优先级高于本地通过 Import-route命令引入的路由

AS路径长度最短(最少个数)的路径优先级高

比较 Origin属性,IGP优先级高于EGP,EGP优先级高于 Incomplete

选择MED优先级较小的路由

EBGP路由优先级高于IBGP路由

下面,再看一个BGP的实验

BGP实验

使PC1可以ping通PC2

然后修改BGP属性来改变路径

bgp的路由表和ip路由表有什么区别 bgp路由类型_自治系统_03

r1配置端口并建立对等体

[r1]int g0/0/0

[r1-GigabitEthernet0/0/0]ip add 10.0.12.1 24

[r1-GigabitEthernet0/0/0]

[r1-GigabitEthernet0/0/0]int g0/0/1

[r1-GigabitEthernet0/0/1]ip add 10.0.13.1 24

[r1]int g0/0/2

[r1-GigabitEthernet0/0/2]ip add 192.168.100.254 24

[r1-LoopBack0]ip add 1.1.1.1 32

[r1-LoopBack0]q

## 创建对等体

[r1]bgp 100

[r1-bgp] router-id 1.1.1.1

[r1-bgp] peer 10.0.12.2 as-number 200

[r1-bgp] peer 10.0.13.2 as-number 200

[r1-bgp]network 1.1.1.1 32

[r1-bgp]network 192.168.100.0 24

r2添加端口并创建对等体

[r2]int g0/0/0

[r2-GigabitEthernet0/0/0]ip add 10.0.12.2 24

[r2-GigabitEthernet0/0/0]int g0/0/1

[r2-GigabitEthernet0/0/1]ip add 10.0.24.1 24

[r2]int LoopBack 0

[r2-LoopBack0]ip add 2.2.2.2 32

[r2]ospf 110

[r2-ospf-110]area 0

[r2-ospf-110-area-0.0.0.0]network 10.0.24.0 0.0.0.255

[r2-ospf-110-area-0.0.0.0]network 2.2.2.2 0.0.0.0

## 建立对等体

[r2]bgp 200

[r2-bgp]router-id 2.2.2.2

[r2-bgp]peer 10.0.12.1 as-number 100

[r2-bgp]peer 10.0.24.2 as-number 200

[r2-bgp]peer 10.0.24.2 next-hop-local

[r2-bgp]q

r3添加端口并创建对等体

[r3]int g0/0/0

[r3-GigabitEthernet0/0/0]ip add 10.0.13.2 24

[r3-GigabitEthernet0/0/0]int g0/0/1

[r3-GigabitEthernet0/0/1]ip add 10.0.34.1 24

[r3]int LoopBack 0

[r3-LoopBack0]ip add 3.3.3.3 32

[r3]ospf 110

[r3-ospf-110]area 0

[r3-ospf-110-area-0.0.0.0]network 10.0.34.0 0.0.0.255

[r3-ospf-110-area-0.0.0.0]network 3.3.3.3 0.0.0.0

## 建立对等体

[r3]bgp 200

[r3-bgp]router-id 3.3.3.3

[r3-bgp]peer 10.0.13.1 as-number 100

[r3-bgp]peer 10.0.34.2 as-number 200

[r3-bgp]peer 10.0.34.2 next-hop-local

r4添加端口并创建对等体

[r4]int g0/0/0

[r4-GigabitEthernet0/0/0]ip add 10.0.24.2 24

[r4-GigabitEthernet0/0/0]int g0/0/1

[r4-GigabitEthernet0/0/1]ip add 10.0.34.2 24

[r4]int g0/0/2

[r4-GigabitEthernet0/0/2]ip add 172.16.46.254 24

[r4]int LoopBack 0

[r4-LoopBack0]ip add 4.4.4.4 32

[r4]ospf 110

[r4-ospf-110]area 0

[r4-ospf-110-area-0.0.0.0]network 10.0.24.0 0.0.0.255

[r4-ospf-110-area-0.0.0.0]network 10.0.34.0 0.0.0.255

[r4-ospf-110-area-0.0.0.0]network 172.16.46.0 0.0.255.255

## 建立对等体

[r4]bgp 200

[r4-bgp]router-id 4.4.4.4

[r4-bgp]peer 10.0.24.1 as-number 200

[r4-bgp]peer 10.0.34.1 as-number 200

[r4-bgp]network 4.4.4.4 32

[r4-bgp]network 172.16.46.0 24

配置完成

在r1查看路由如下

*代表有效的路由,>代表最优的路由,只有最优的路由才会最终放入路由表中

bgp的路由表和ip路由表有什么区别 bgp路由类型_bgp的路由表和ip路由表有什么区别_04

ping通测试

bgp的路由表和ip路由表有什么区别 bgp路由类型_路由表_05

修改优先级属性来修改r1到r4的路径

[r3]route-policy lop permit node 10

Info: New Sequence of this List.

[r3-route-policy]apply local-preference 222

[r3-route-policy]q

[r3]bgp 200

[r3-bgp]peer 10.0.34.2 route-policy lop export

[r3]q

<r3>reset bgp all # 刷新bgp路由表

bgp的路由表和ip路由表有什么区别 bgp路由类型_bgp的路由表和ip路由表有什么区别_06

修改AS-PATH属性控制选路

自己指定经过那些AS

[R2]route-policy as permit node 10

Info: New Sequence of this List.

[R2-route-policy]apply as-path 100 200 300 additive

[R2-route-policy]quit

[R2]bgp 200

[R2-bgp]peer 10.0.24.2 route-policy as export

[R2-bgp]quit

[R2]quit

<R2>reset bgp all

修改完r4查看路由表如下

bgp的路由表和ip路由表有什么区别 bgp路由类型_bgp的路由表和ip路由表有什么区别_07

通过MED属性控制选路

[R2]route-policy med permit node 20

Info: New Sequence of this List.

[R2-route-policy]apply cost + 500

[R2-route-policy]quit

[R2]bgp 200

[R2-bgp]peer 10.0.12.1 route-policy med export

[R2-bgp]quit

在r1查看路由表如下

bgp的路由表和ip路由表有什么区别 bgp路由类型_bgp的路由表和ip路由表有什么区别_08

注:这里只是演示怎么修改,上面也能看出,修改完不一定是最优的路径,所以,你在公司里面一定要根据实际情况。