BGP路由技术详解(一)

  • 前言
  • 一、BGP路由协议概述
  • 1、BGP定义
  • 2、BGP的特点
  • 3、BGP分类
  • 4、BGP的路径矢量特征
  • 5、BGP的路由器
  • 6、BGP Peer
  • 二、自治系统AS的概念
  • 1、定义
  • 2、AS号
  • 3、传输AS中的路由黑洞问题
  • 三、BGP工作原理
  • 1、5种BGP报文
  • 2、6种BGP状态机
  • 3、9个BGP对等体之间的交互原则
  • 4、建立对等体注意点
  • 四、BGP简单配置命令
  • 1、配置步骤:
  • 2、配置BGP


前言

BGP是自治系统间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。

bgp发布缺省路由_TCP

一、BGP路由协议概述

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

1、BGP定义

BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的距离矢量路由协议。

2、BGP的特点

  • BGP能承载大批量的路由信息,能够支撑大规模网络。
  • BGP使用过TCP作为其传输层协议(端口号179),提高可靠性。
  • BGP是外部路由协议,用来在AS之间传递数据,对稳定性要求非常高,因此TCP协议的可靠性保证了BGP的稳定性。
  • BGP的对等体之间必须逻辑上连通,并进行TCP连接,目的端口179,本地端口任意。
  • BGP对等体和IGP对等体不同,BGP对等体(peer)是指使用TCP建立连接的两端,而非与IGP同概念的直连邻居,只需要TCP能建立连接,不一定必须是直连。
  • BGP本身只是负责控制路由,数据转发依然依靠静态或IGP路由。
  • BGP支持无类别域间路由CIDR。
  • 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量路由信息。
  • BGP是一种增强的距离矢量路由协议,从设计上避免了环路的发生。
  • AS之间:BGP通过携带AS Path信息标记途径的AS,带有本地AS号的路由将被丢弃,从而避免域间产生环路。
  • AS内部:BGP在AS内学习到的路由不会通告给AS内的BGP邻居,避免AS内产生环路。
  • BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
  • BGP提供了防止路由震荡的机制(路由衰减),有效提高了Internet网络的稳定性。
  • BGP易于扩展,能够适应网络新的发展。主要通过TLV进行扩展。

3、BGP分类

按运行方式分为EBGP和IBGP。

  • EBGP
    运行与不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
  • IBGP
    运行于同一AS内部的BGP称为IBGP。为了防止AS内部产生环路,BGP设备不将从IBGP对等体学习到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。

4、BGP的路径矢量特征

  • BGP通常被称为路径矢量路由协议( Path-Vector Routing Protocol )。
  • 每条BGP路由都携带着多种路径属性( Path attribute ) ,在各种路径属性中, AS_ Path属性是非常关键的一个。AS_ Path属性记录了BGP路由传递过程中所经过的AS号,实际上它是一一个AS号的列表。
  • BGP路由器不接受AS_ Path中包含其自身AS号的路由更新。AS_ Path属性值的长短( AS号的个数)会作为一一个比较的依据,影响BGP路由选择的决策。

5、BGP的路由器

  • BGP的Router ID是一个用于标识BGP设备的32位值,通常是IPv4地址的形式,在BGP会话建立时发送的Open报文中携带。对等体之间建立BGP会话时,每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接。
  • BGP的Router ID在BGP网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取。缺省情况下,BGP选择设备上的Loopback接口的IPv4地址作为BGP的Router ID。如果设备上没有配置Loopback接口,系统会选择接口中最大的IPv4地址作为BGP的Router ID。一旦选出Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的Router ID。

6、BGP Peer

  • EBGP ( External BGP ) :位于不同自治系统的BGP路由器之间的BGP邻接关系。
  • 两台路由器之间要建立EBGP对等体关系,必须满足两个条件:
    ●两个路由器所属AS不同(也即AS号不同)。
    ●在配置BGP时, Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。

二、自治系统AS的概念

1、定义

  • 同一个技术管理机构管理
  • 统一选路策略
  • 路由器的集合

动态路由分类

  • IGP
  • EGP

2、AS号

  • 自治系统( Autonomous System , AS ),指的是在同一个组织管理下、使用相同策略的设备的集合。
  • 不同AS通过AS号区分, AS号取值范围1 - 65535,其中64512 - 65535是私有AS号。
  • IANA负责AS号的分发。
    ●中国电信163 AS号: 4134。
    ●中国电信CN2 AS号: 4809。
    ●中国网通AS号: 9929。

3、传输AS中的路由黑洞问题

bgp发布缺省路由_R3_02

A将本地路由1.1.1.0/24通告到BGP ,最终F能够通过BGP学习到该条路由。C、D由于并未运行BGP,因此无
法通过BGP学习到1.1.1.0/24路由。
如此一来, F发往1.1.1.0/24网络的数据包在到达C/D后将被丢弃,在C及D路由器这里,就出现了黑洞。

三、BGP工作原理

BGP对等体的建立、更新和删除等交互过程主要有5种报文、6种状态机和9个原则。

1、5种BGP报文

  • 1、Open报文:是TCP建立连接发送的第一个报文
    协商BGP对等体的各种参数,包括版本、AS号等信息,建立BGP对等体连接。
  • 2、Update报文:对等体之间交换路由信息。
    连接建立后,有路由需要发送或路由变化时,发送Update报文通告对端可达或撤销路由信息及路径属性。
  • 3、Notification报文:用于中断BGP连接。
    BGP发现错误时,发送报文通告BGP对端,随后与之相关的邻居将被关闭。
  • 4、Keepalive报文:用于保持BGP连接。(保活)
    定时发送keepalive报文以保持BGP对等体关系的有效化
    响应正确的Open报文。
  • 5、Route-refresh报文:用于在改变路由策略后软复位BGP路由表请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。

2、6种BGP状态机

bgp发布缺省路由_网络_03

  • 1、Idle状态是BGP初始状态。
    在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
  • 2、在Connect状态下,BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。
    ●如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态。
    ●如果TCP连接失败,那么BGP转至Active状态。
    ●如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
  • 3、在Active状态下,BGP总是在试图建立TCP连接。
    ●如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态。
    ●如果TCP连接失败,那么BGP停留在Active状态。
    ●如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
  • 4、在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
    ●如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。
    ●如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
  • 5、在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
  • 6、在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
    ●如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
    ●如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。
    ●如果收到Notification报文,那么BGP转至Idle状态。
    ●如果收到TCP拆链通知,那么BGP断开连接,转至Idle状态。
    ●Route-refresh报文不会改变BGP状态。

3、9个BGP对等体之间的交互原则

  • 从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
  • 从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
  • 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。
  • 路由更新时,BGP设备只发送更新的BGP路由。
  • 所有对等体发送的路由,BGP设备都会接收。
  • 所有EBGP对等体在传递过程中下一跳改变。
  • 所有IBGP对等体在传递过程中下一跳不变。
  • 默认EBGP传递时TTL为1
  • 默认IBGP传递时TTL为225。

4、建立对等体注意点

  • 1、直连建立对等体需要注意的点
    建立IBGP对等体时要让下一跳可达,处于边界的IBGP对等体需要将下一跳指向
  • 2、用环回口建立邻居需要注意的点
    需要修改更新源,默认更新源是物理口,需要修改成环回口。建立IBGP对等体时要保障下一跳可达,处于边界的IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体
    建立EBGP对等体时因为EBGP只能传一跳,因而,在建立EBGP对等体时,需要修改EBGP多跳的跳数为2以上(自己环回到对端环回是两跳,默认一跳)
  • 3、关于为什么要用环回口建邻居
    原因是环回口稳定,只要路由器启动着,环回口就不DOWN,而物理链路可能会受线路或者接口等因素的影响导致对等体关系有问题,因而一般BGP建 立对等体都是环回口来建

四、BGP简单配置命令

1、配置步骤:

1.配置IP和AS内的IGP
2.配置BGP对等体
3. EBGP最大跳数>=2
4.在边界IBGP给IBGP对等体配置下一跳指向自己
5. EBGP之间配置静态路由,指向回环网卡IP
6.宣告网段或IP,每个EBGP都要宣告所有网段

2、配置BGP

1、启用BGP,后面跟AS系统号
2、宣告Router-id,建立邻居关系用
3、宣告和谁建立邻居关系,
4、通告BGP路由,(network、import)

(1)R1 (ibgp)与R2、R3、R4、R5、R6建立邻居关系(R2、 R4、R5配置与其相似略)

------配置BGP------
----R1 (ibgp)与R2、R3、R4、R5、R6建立邻居关系(R2、 R4、R5配置与其相似略)
[R1]bgp 100
###创建bgp编号为100 ( 也就是AS100 )
[R1-bgp] router-id 1.1.1.1
###配置BGP的Router ID
[R1-bgp]peer 2.2.2.2 as-number 100
###指定对等体的环回口IP地址及其所属的AS编号
[R1-bgp]peer 2.2.2.2 connect-interface LoopBack0
###更新发送bgp报文的接口为loopback0接口
[R1-bgp]peer 3.3.3.3 as-number 100
[R1-bgp]peer 3.3.3.3 connect-interface LoopBack0
[R1-bgp]peer 4.4.4.4 as-number 100
[R1-bgp]peer 4.4.4.4 connect-interface LoopBack0
[R1-bgp]peer 5.5.5.5 as-number 100
[R1-bgp]peer 5.5.5.5 connect-interface LoopBack0
[R1-bgp]peer 6.6.6.6 as-number 100
[R1-bgp]peer 6.6.6.6 connect-interface LoopBack0

(2)R3(ebgp)与R1、R2、R4、R5、R6、R7(R3与R7互为ebgp)建立邻居关系(R6配置与其相似略)

----R3(ebgp)与R1、R2、R4、R5、R6、R7(R3与R7互为ebgp)建立邻居关系(R6配置与其相似略)
[R3]bgp 100
[R3-bgp] router-id 3.3.3.3
[R3-bgp]peer 1.1.1.1 as-number 100
[R3-bgp]peer 1.1.1.1 connect-interface LoopBack0
[R3-bgp]peer 2.2.2.2 as-number 100
[R3-bgp]peer 2.2.2.2 connect-interface LoopBack0 
[R3-bgp]peer 4.4.4.4 as-number 100
[R3-bgp]peer 4.4.4.4 connect-interface LoopBack0
[R3-bgp]peer 5.5.5.5 as-number 100
[R3-bgp]peer 5.5.5.5 connect-interface LoopBack0
[R3-bgp]peer 6.6.6.6 as-number 100
[R3-bgp]peer 6.6.6.6 connect-interface LoopBack0

[R3-bgp]peer 2.2.2.2 next-hop-local
##ASBR从ebgp邻居学习到的路由传递给ibgp邻居时,修改该路由转发数据到对方AS的数据的下一-跳为自己
[R3-bgp]peer 1.1.1.1 next-hop-local
[R3-bgp]peer 6.6.6.6 next-hop-local

[R3-bgp]peer 7.7.7.7 as-number 200   ###此为ebgp邻居的AS编号
[R3-bgp]peer 7.7.7.7 connect- interface LoopBack0
[R3-bgp]peer 7.7.7.7 ebgp-max-hop 2
##两个AS之间用环回口建的邻居要将它们的邻居的最大跳数改为2,默认的是1(因为不是直连而是用loopback0接口,需要经过2个路由,而默认EBGP传递时TTL值为1)

[R3-bgp] network 1.1.1.1 255.255.255.255   ###宣告指定的IGP、静态、默认路由进BGP进程
[R3-bgp]network 2.2.2.2 255.255.255.255

[R3]ip route-static 7.7.7.7 255.255.255.255 12.1.1.2
###两个AS之间的ebgp对等体需要建立tcp连接,这里用静态做底层的寻址,也可以使用IGP路由搭建底层寻址(比如RIP)

[R3-bgp]network 7.7.7.7 255.255.255.255 
###ebgp用于配置静态路由或IGP路由的网段或IP需要在两端ebgp都宣告

(3)R7与R8、R3 (R3与R7互为EBGP)建立邻居关系(R8配置与其相似略)

----R7与R8、R3 (R3与R7互为EBGP)建立邻居关系(R8配置与其相似略)
[R7]bgp 200   ###创建AS200
[R7-bgp]router-id 7.7.7.7
[R7-bgp]peer 3.3.3.3 as-number 100   ###此为ebgp邻居的AS编号
[R7-bgp]peer 3.3.3.3 connect-interface LoopBack0
[R7-bgp]peer 3.3.3.3 ebgp-max-hop 2
###ebgp报文允许的最大跳数修改为2(因为不是直连而是用loopback0接口)

[R7-bgp]peer 8.8.8.8 as-number 200
[R7-bgp]peer 8.8.8.8 connect-interface LoopBack0
[R7-bgp]peer 8.8.8.8 next-hop-local   ###ASBR从ebgp邻居学习到的路由传递给ibgp邻居时,路由的下一跳修改为自己

[R7-bgp] network 8.8.8.8 255.255.255.255   ##宣告指定的从本区域ibgp邻居学到的路由给ebgp邻居

[R7]ip route-static 3.3.3.3 255.255.255.255 12.1.1.1   ###两个AS之间运行静态路由

[R7-bgp] network 7.7.7.7 255.255.255.255
##ebgp用于配置静态路由或IGP路由的回环网口IP需要在两端ebgp都宣告

(4)查看命令

-------查看命令--------
1、display bgp peer   ###查看bgp的对等信总Established为成功建立
2、display bgp routing-table   ##查看bgp的路由表信息

<Huawei>reset bgp all   ###重启BGP
<Huawei>refresh bgp all import   ###软复位