BGP协议

BGP
BGP:边界网关路由协议 无类别的路径矢量EGP协议。
EGP类别的路由协议:用于AS与AS间进行路由条目共享。
AS编号:0-65535标准编号,其中1-64511共有,64512-65535私有
BGP设计特性:
1、 可靠性——大量的路由共享,取消周期更新,基于TCP的179端口工作。
TCP仅基于单播通信,BGP需要单播建立邻居关系(手工指定邻居的IP地址)
BGP可以非直连建邻(peer),BGP承载于IGP之上。
2、 可控性——建邻、路由、选路控制(干涉选路)方面及其容易进行。
3、 AS-BY-AS——以一个AS为一跳。
BGP协议为不同AS间共享路由,工作时隔离两个AS的内部网络,形成一个独立的交互空间;且同时可以实施强大的策略来干涉选路。
IGP追求:收敛速度快 选择路径佳(无环) 占用资源少 hop-by-hop
BGP追求:可控性 可靠性 as-by-as
可控性——BGP协议不是路由的产生者,仅为搬运者,且AS间正常存在大量的链路来保障稳定性;故BGP协议传递的路由条目很难默认最佳选路,需要管理员进行大量的策略来干涉选路。
可靠性:BGP协议虽然像距离矢量型路由协议一样仅传递路由条目,但更新量依然很大。
为了避免对设备资源的占用选择了增量更新——仅触发、无周期
故需要保障所有的路由传递到位——可靠,因此BGP基于TCP工作。
TCP的三次握手条件使得TCP只能基于单播工作,同时BGP需要非直连建邻
BGP基于IGP之上,先IGP使BGP设备间IP可达,然后BGP才能基于TCP建立
非直连邻居关系。
BGP特点:
1、 无类别路径矢量——距离矢量的升级版——AS-BY-AS
2、 使用单播更新来发送所有信息;基于TCP的179端口工作。
3、 增量更新——仅触发无周期
4、 具有丰富的属性来取代IGP中度量进行选路——多个参数控制协议
5、 可以在进项和出项对流量实施强大的策略——可控性
6、 默认不被用于负载均衡——通过各种选路规则仅仅产生一条最佳路径
7、 BGP支持认证和聚合(汇总)
BGP数据包:基于TCP的179端口工作,故BGP协议中所有的数据包均需要在TCP会话建立后,基于TCP的会话来进行传输及可靠性的保障
首先通过TCP的三次握手来寻找邻居
Open 仅负责邻居关系的建立,正常收发一次即可,携带route-id、默认3min的hold time
KeepLive 周期保活,周期一分钟,查询邻居关系是否存在,实际保活TCP的会话
Update 携带路由条目 目标网络号+各种属性
Notification 出现错误数据时收发

BGP的状态:
1、 idle(空闲):是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,BGP初始化资源,复位连接重试计时器,发起一条TCP连接,同时转入Connect状态。
2、 Connect(连接):BGP发起第一个TCP连接,如果连接重试计时器超时, 就重新发起TCP连接,并保持在Connect状态,如果TCP连接成功,就转入Opensent状态,如果TCP连接失败就转入Active状态。
3、 Active(活跃):在active状态,BGP总是在试图建立TCP连接,如果连接重试计时器超时,就退回Connect状态,如果TCP连接建立成功,就转入Opensent状态,如果TCP连接失败,继续保持此状态,并继续发起TCP连接。
4、 Opensent(打开消息已发送):在Opensent状态,TCP已经建立连接,BGP也发送了第一个Opensent报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知并退回到ldle状态,如果没有错误,BGP就开始发送Keeplive报文,并复位Keeplive计时器,开始计时。同时转入OpenConfirm状态。
5、 OpenConfirm(打开消息确认):BGP发送一个Keeplive报文,同时复位保持计时器,如果收到一个Keeplive报文,就转入Established阶段,BGP邻居就建立起来了。如果TCP连接中断,就退回到ldle状态。
6、 Established(连接已建立):BGP邻居关系已经建立成功,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。
BGP的工作过程:
管理员定义邻居的ip地址,前提要求对邻居ip可达——IGP可达
启动BGP协议后,先以目标端口为179进行TCP的三次握手来建立TCP的会话
会话建立后,收发open报文来建立邻居关系,生成邻居表
邻居关系建立后,邻居间使用update共享路由条目,在收发了路由信息后,本地生成BGP表。
BGP表中装载本地发出及接收到的所有路由条目。
之后路由器将BGP表中的最优路径(不一定是最佳路径,仅为BGP参数最佳)加载于路由表中
收敛完成,仅kepplive周期保活即可。
BGP基础配置:
一、建立邻居关系——BGP基于单播进行建邻和沟通,故需要管理员手工指定邻居的ip地址
(1)使用直连接口ip地址建立EBGP邻居关系
Bgp 1 启动时需要定义真实的AS号,没有多进程概念
Route-id 1.1.1.1 建议手工配置route-id,手工—环回最大值—物理接口最大值
Peer 12.1.1.2 as-number 2 对端ip地址,及对端所在的AS号
(2)实际工程中,一个AS的内部正常具有较为复杂的网络拓扑结构,设备到设备间存在大量的备份和负载均衡,因此建立IBGP邻居关系时,建议使用双方的环回接口来作为源/目IP地址。
Bgp 2
Route-id 3.3.3.3
Peer 2.2.2.2 as-number 2
一旦使用换回接口作为目标IP地址时,也应该修改源为本地的环回接口IP地址
Peer 2.2.2.2 connect-interface Loopback 0
(3)若EBGP邻居间存在多条直连链路时,也建议使用环回接口来建立
【1】IP可达
通过静态路由下一跳写法,将两条链路间的环回地址互相连接
【2】建立邻居关系
Bgp 3
Route-id 5.5.5.5
Peer 4.4.4.4 as-number 2
Peer 4.4.4.4 connect-interface LoopBack 0
【3】BGP规定EBGP邻居间默认所有的BGP数据包TTL值为1,导致环回建立邻居关系服务正常,故需修改TTL值
Peer 5.5.5.5 ebgp-max-hop 2
【4】当两端邻居建立配置完成后,将进行TCP的三次握手,建立TCP会话
Display bgp peer 可通过该指令查看建邻关系
二、BGP宣告
BGP协议本身不计算生成路由条目,仅负责转发从其他BGP邻居传递过来的路由条目,同时可以将本地表中任意路由宣告到BGP协议中来,BGP宣告时,只能宣告本地路由表中的路由条目,且宣告配置中网络号的掩码必须和路由表中的记录完全一致。
Bpg 1
Network 1.1.1.0 24
当BGP设备进行宣告后,本地生成BGP表,装载本地发出及接收到所有BGP路由
Display bgp routing-table 查看本地BGP路由表
在相同AS间的BGP传递路由时,需要修改路由属性,包括下一跳为本地
bgp 2
peer 3.3.3.3 next-hop-local 将BGP路由传输给邻居3.3.3.3时修改下一跳属性为本地
宣告问题:
若在一台运行了BGP协议的路由器上,宣告本地路由表中通过其他协议学习到的路由信息时,将携带本地到达这些目标网段的Cost值。
若一台BGP设备通过IBGP关系学习到了一条BGP路由,路由中携带了度量值,之后本地将这条路由转发到本地的其他EBGP邻居时,将删除Cost,因为这些Cost不是本地的度量。故,若需要基于Cost值进行选路干涉,建议本地也配置宣告这些路由条目,来携带本地的Cost到其他EBGP邻居。
三、有条件的打破IBGP的水平分割
IBGP水平分割是为了避免IBGP环路——从一个IBGP邻居处学习到的路由条目不能传递给本地的其他IBGP邻居
因为BGP可以非直连建邻,故正常一台运行了BGP协议的路由器,均存在EBGP邻居,需要从其他AS学习路由条目,再共享到内部AS时,由于水平分割的限制,需要和本地AS内所有的BGP设备建立IBGP邻居关系,IBGP邻居关系成指数型上升
有条件的打破水平分割,其中有条件是指——在管理员确定网络无环的前提下,人为的打破水平分割限制建设邻居关系的数量
无环的核心思想为AS-BY-AS规则:一条路由条目在AS内部传递时其属性默认不变化
【1】 路由反射器
3中角色:RR(反射器)、客户端、非客户端
3者构建一个簇,可以理解为RR为中心站点,客户端和非客户端是分支站点
要求所有分支与中心必须是IBGP邻居关系
在一个簇中至少存在一台客户端
规则:
1、 RR从一台EBGP邻居处学习到的路由可以传输给本地的客户端、非客户端、其他EBGP邻居
2、 RR从一台客户端邻居处学习到的路由,可以传输给本地的其他客户端、非客户端、其他EBGP邻居
3、 RR从一台非客户端邻居处学习到的路由条目,可以传输给本地的客户端,其他EBGP。不得传输给本地的其他非客户端
注意:若路由条目不优,不具有传递性,反射器也无法反射路由
Peer 2.2.2.2 reflect-client 该指令作用是让2.2.2.2成为本地的客户端,同时本地成为路由反射器
【2】 联邦
将一个真实的大AS,逻辑的分为多个小的AS,小AS的编号建议使用私有编号
小AS间构建联邦内的EBGP邻居关系,可以向真实EBGP关系一样传递路由条目,但不修改属性,对于该大AS外的其他AS,是不知道内部的小AS的情况
(1) 所有配置全部基于小AS进行:
Bgp 64512
Route-id 3.3.3.3
Peer 2.2.2.2 as-number 64512
Peer 2.2.2.2 connect-interface loopback 0
Peer 4.4.4.4 as-number 64513
Peer 4.4.4.4 connect-interfae loopback 0
Peer 4.4.4.4 ebgp-next-hop 2
(2) 联邦内所有运行BGP协议的设备均声明自己所在的大AS号
Bgp 64512
confederation id 2 声明自己所在的大AS号为AS 2
confederation peer-as 64512 小AS间互指pee,在联邦内的ebgp邻居关系间的两台设备,互相定义对端的小AS号
切记:华为设备,必须先定义联邦的id,和互相小AS号后再配置邻居关系建立的命令
在实际工程中,联邦和路由反射器是同时被使用,降低配置量
四、手工汇总——BGP称为聚合
方法[1] 不是BGP的正常聚合配置,利用了BGP的宣告特征——本地路由表中的路由条目无论来源,无论去向(缺省除外)。先在本地路由表中静态添加一条指向汇总地址的空接口放环路由,然后再在BGP协议中宣告这条空接口路由,减少了宣告明细部分的操作量。
注:BGP工作在互联网环境下,控制选路的情况十分常见,AS间可以在传递聚合条目的同时,让部分路由器来传递明细路由,可以实现干涉选路的功能。
方法[2] 标准的BGP协议聚合配置——先逐条宣告本地所有明细路由,再进行聚合配置
Aggregate 20.1.0.0 22 配置完成后,本地自动生成空接口放环,此时明细和聚合条目同时发出
Aggregate 20.1.0.0 22 detail-suppressed 仅发送聚合条目,不发送明细条目
基于需要,需要在传递聚合条目的同时,再转发部分的明细路由
方法[1]:抑制列表——定制抑制列表,在传递路由的过程中,对部分不希望传递的条目进行抑制
Ip ip-prefix a permit 20.1.1.0 24

Route-policy a permit node 10
If-match ip-prefix a

Bgp 1
Aggregate 20.1.0.0 22 suppress-policy a 使用抑制规则调用route-policy时,被匹配允许的流量最终被抑制传递
方法[2]:分发列表
Bgp 1
Aggregate 20.1.0.0 22

Ip ip-prefix b deny 20.1.1.0 24
Ip ip-prefix b permit 0.0.0.0 0 le 32
Bgp1
Filter-policy ip-prefix b export
方法[3]:route-map 在bgp中直接调用route-map
Bgp 1
Aggregate 20.1.0.0 22

Ip-prefix c permit 20.1.1.0 24

Route-policy c deny node 10
If-match ip-prefix c
Route-policy c permit node 20

Bgp 1
Peer 12.1.1.2 route-policy c export
方法[4]:直接调用前缀列表实现分发
Bgp 1
Aggregate 20.1.0.0 22

Ip Ip-prefix d deny 20.1.1.0 24
Ip ip-prefix d permit 0.0.0.0 0 le 32

Bgp 1
Peer 12.1.1.2 ip-prefix d export
五、认证 邻居间保证更新安全
Peer 12.1.1.2 password cipher cisco123 两端的邻居配置需要一致

你可能感兴趣的:(笔记,网络)