BGP路由协议及其相关配置
BGP路由协议及其相关配置
【一
二
第二章
第二章
第二章
第二章
第二章
-
三、BGP的工作原理
- 3.1 BGP消息
- 3.2 BGP状态流程
- 3.3 BGP对等体间交互规则
- 3.4 建立对等体注意事项
-
第四章 BGP 相关配置命令
- 在 OSPF 的 AS 接口中进行配置
- R8 的设置与其类似做法
- 设置 BGP 属性
- 设置邻居关系(其中 R3 与其互为 EBGP)
(此处可补充注释或简要说明)
(此处可补充注释或简要说明)
- 在 OSPF 的 AS 接口中进行配置
一、AS的概念
自治系统(Autonomous System ,AS ),即为在同一组织下遵循统一策略的一组设备集合。
不同AS通过独特的AS号码进行区分标识,在全球范围内这些号码共计可达范围设定为0至65,535个数值。
值得注意的是,在此号码体系中私有地址段被指定为从编号值64,784至最终数值68,703。
此外,在国际标准体系中负责这些地址分配工作的是IANA机构。
具体而言:
中国电信拥有ID为4,134的运营商独立地址池。
而对于中国的电信基础设施来说,
其CN2网络层次的服务提供商独立地址池则对应于ID 4,809。
同样地,
中国网通公司的相关独立地址池标识则被指定为9,929。
二、BGP的概述
2.1 BGP概述
边界网关协议(BGP)是一种实现自治系统间路由可达并根据需要选择最佳路由路径的矢量性协议。该协议最初于1987年发布第一个版本(BGP-1 RFC1105),随后于1988年发布第二个版本(BGP-2 RFC1163),并在1994年发布第三个版本(BGP-3 RFC1267)。自2006年起开始使用的单播IPv4网络中应用的是基于RFC4271标准的BGP-4版本(BGP-4 RFC1771),而其他网络类型则主要采用Multipath BGP(MP-BGP)技术方案(RFC4760)。

2.2 BGP的特点
1、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性
2、BGP是外部路由协议,用来在AS之间传递数据,对稳定性要求非常高。因此用NCP协议的高可靠性来保证BGP协议的稳定性。
3、BGP的对等体之间必须逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
4、BGP对等体和IGP对等体不同,BGP对等体(Peer)是指使用NCP建立连接的两端,而非与TCP同概念的直连邻居,只要NCP能够建立连接并不一定需要直连。
5、BGP本身只负责控制路由,数据转发依然靠静态或IGP路由。
6、BGP支持无类别域间路由CIDR。
7、路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽适用于在Internet上传播大量的路由信息。
8、BGP是一种增强的距离矢量路由协议,从设计上避免了环路的发生。
9、As之间:BGP通过携带AS_Path信息标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
10、AS内部: BGP在AS内学到的路由不会再通告给AS内的BGP邻居,避免了As内产生环路。
11、BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
12、BGP提供了防止路由振荡的机制(路由衰减),有效提高了Internet网络的稳定性。
13、BGP易于扩展,能够适应网络新的发展(ipv4单/组播、vpv4单/组播)。主要是通过TLV进行扩展。
2.3 BGP分类
B GP 依据运行模式分为 EB GP (External/Exterior B GP)和 IB GP (Internal/Interior B GP)。
●EB GP:在不同AS之间运行的B GP称为EB GP.为了避免在不同AS之间形成循环,当一个B GP设备接收到来自EB GP对等实体发送来的路径时,该设备会丢弃带本地AS号码的部分.
●I B GP:在同一个AS内部运行的B GP称为I B GP.为了避免在同一AS内部出现循环,I B GP设备不会将从其内部学习到的路径发送给其他I B C P成员,并会与所有I B G P成员进行全连接配置.APOS TRO问题通过APOS TRO设计引入了路由反射器和动态范围扩展机制.

2.4 IBGP的水平分割规则
C从E那里掌握了IBGP路由信息,在水平分割规则下这些信息无法传输至B路由器;这从而导致了B路由器未能获取关于F通告的相关BGP路由信息。然而为了克服这一问题,C则可通过某种方式与A router建立直接逻辑联系,从而实现整个网络的整体互联目标。

2.5 BGP的路由器号(Router-ID)
● B GP的 Router-Id 表示标识 B GP 设备的一个 32 位数值, 多以 IPv4 地址表示形式, 包含于 B GP 会话建立时发送的 open 报文中的信息内容。
在 B GP 对等体之间建立会话时, 每个 B GP 设备都需要分配唯一 的 Router Id, 否则会导致无法建立 B GP 连接。
● B GP 的 Router-Id 必须唯一配置, 可通过手动指定或让设备自动生成。
默认情况下,B GP 会将当前路由器上 Loopback 接口上的 IPv4 地址赋值给 Router-Id。
若未设置 Loopback 接口, 系统将从该端口中选取最大可用 IPv4 地址作为 Router-Id 值。
● 一旦选定该路由器 Id, 在未发生相关接口 IP 地址被删除的情况下, 即使重新规划后选择了较大的 IP 地址值也会保持不变。
三、BGP的工作原理
3.1 BGP的报文
基于以下五种交互消息进行通信:其中包括定期发送Keepalive消息以维持连接;其中Open消息是在TCP连接建立后最先发出的消息包族群集合;而Update消息则用来交换当前最新的网络路径信息;当网络发生变化时会自动向相关节点推送最新的可达性状态;当遇到错误时会发出Notification消息来终止当前的网络通信;最后Route_refresh消息则会在网络策略发生变动时用来重置本地路径数据库并指示相关 peer重新获取最新的网络配置信息
3.2 BGP的状态机
BGP对等体的交互过程中包含六种状态机:空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)以及连接已建立(Established)。在BGP对等体的建立过程中常见的是Idle、Active和Established这三个状态。
1.Idle状态是初始BGP配置状态 在Idle状态下EGP阻止了邻居发送的连接请求仅当接收到本设备的start事件时BGP才会启动与其它BGP对等体的TCP连接并转至Connect状态
2.在Connect状态下BGP启动连接重传定时器(Connect Retry)等待TCP完成连接
- 如果TCP连接成功BGP会向对等体发送open报文并转至Opensent状态
- 如果TCP连接失败则会将状态转至Active状态持续尝试重新建立连接
- 如果连接重传定时器超时且未收到对等体响应BGP将继续尝试与其它BGP对等体建立TCP连接仍停留在Connect状态
3.在Active状态下BGP持续试图建立TCP连接 - 成功建立后会发送open报文关闭重传定时器并转至OpenSent状态
- 若出现TCP连接故障则维持Active状态不再进行任何操作
- 重传定时器超时且未收到响应则会将状态转移回Connect状态以重新发起尝试
4.在OpenSent状态下BGP等待开放报文并检查As号版本号认证码等信息 - 收到正确open报文后会发送Keepalive报文并转至OpenConfirm状态
- 接收到错误open报文则会发出Notification报文通知对端并转至Tdle状态
5.在OpenConfirm状态下EGP等待Keepalive或notification报文若接收到Keepalive则进入Bstablished状态若接收到notification则返回Idle状态
6.在Established状态下BGP能够与对端交换Update Keepalive Route-refresh通知以及其他相关报文 - 收到有效的Update或Keepalive报文表示对端正常运行应维持当前链接关系
- 接到错误Update或Keepalive应发出Notification通知并转回Idle状态
- 收到Notification或TcP断链通知都会使BGP切换回Idle状态
- Route-refresh不会影响当前运行的状态

3.3 BGP对等体之间的交互原则
BGP设备将最优路由加入BGP路由表,形成BGP路由. BGP设备与对等体建立邻居关系后,遵循以下交互原则:
- BGP设备从IBGP对等体获得的BGP路由,只会发送给对应的EBGP对等体
- BGP设备从EBGP对等体获得的BGP路由,将发送给所有关联的EBGP及IBGP对等体
- 当存在多条有效到达同一目的地址的路由时,仅会选择最优路由进行发布
- 在进行路由更新时,仅会发送最新的BGP路由信息
- 所有收到的路由信息,都会被BGP设备完整接收
- EBSP会话中若出现下一跳的变化情况
- IBSP会话中若出现下一跳保持不变的情况
- 默认情况下,BE型AS间的传播延迟设置为1秒
- 默认情况下,BI型AS间的传播延迟设置为255秒
3.4 建立对等体注意点
1、直连建立对等体需要注意的点:
建立IBGP对等体时要让下一跳可达,处于边界的IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体。
2、用回环网口建立邻居需要注意的点:
需要修改更新源,默认更新源是物理口,需要修改成回环网口。建立IBGP对等体时要保障下一跳可达,处于边界的IBGP对等体需要将下一跳指向自己,这样才能建立IBGP对等体。
建立EBGP对等体时因为EBGP只能传一跳,因而,在建立EBGP对等体时,需要修改EBGP多跳的跳数为2以上 (自己回环到对端回环是两跳,默认一跳)。
3、关于为什么要用回环网口建立邻居:
原因是回环网口稳定,只要路由器启动着,回环网回口就不DOWN,而物理链路可能会受线路或者接口等因素的影响导致对等体关系有问题,因而般BGP建立对等体都是回环网口来建。
四、BGP的相关配置命令
在OSPF的AS中配置
1、配置各路由器的IP地址
2、配置OSPF
R8的配置和R7的相似略
[R7]ospf 1
[R7-ospf-1]area 0
[R7-ospf-1-area-0.0.0.0]network 10.0.24.0 0.0.0.255
[R7-ospf-1-area-0.0.0.0]network 7.7.7.7 0.0.0.0
配置BGP
以下是基于给定规则对原文本进行同义改写的版本
[R3-bgp] peer 2.2.2.2 next-hop-local
--------ASBR接收自ebgp邻居的路由信息后会向其发送相关数据,并更新该命令
[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 (因为不是直连而是用Loopbacko接口,需要经过2个路由,而默认EBGP传递时TTL值为1)
[R3-bgp]network 1.1.1.1 /256 ###声明指定IGP网段、静态路由及默认路由进入BGP通道
[R3-bgp]network 1.1.1.4 /28
[R3]ip route-static 7.7.7.4 /30 ip route-translation-inherit-to-external-link-cost-0-9-9-9-9-9-9-9
------注释区
两个AS之间通过EBGP实现通信时需建立TCP连接
此处可以选择静态地址作为基础寻址方案
并可选性地引入IGP路由辅助构建内部地址表(例如RIP算法)
[R3-bgp]network 7.7.7.7 255.255.255.255 #ebgp用于设置静态路由或IGP路由的网络段或IP地址必须在两端都有EBGP宣告
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] external neighbor 192.169.x.x as AS number 200
[R7-bgp] external neighbor 192.169.x.x connect to interface LoopBack-Port-Id
[R7-bgp] external neighbor 192.169.x.x next-hop-local ASBR从ebgp邻居获取路由并将其下一跳设为自己
[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进行声明
查看命令
显示该BGP peer节点与其对等邻居之间的互连信息已建立
