一、无类别路径矢量EGP协议
针对AS进行分类:AS自治系统、0–65535 (1–64511公有、64512–65535私有) 标准编号(16位二进制)、扩展编号(32位二进制)
路径矢量(一个AS为一跳)---- 距离矢量(一个路由器为一跳)
EGP----外部网关路由协议 ---- BGP (AS之间)
IGP ---- 内部网关路由协议 ---- RIP、OSPF、EIGRP (AS内部)
重发布可以实现AS之间的互通,但会存在以下问题:
1、必须多点双向
2、选路干涉难度很大
3、汇总配置难度很大
4、ASBR设备归属问题
BGP协议本身不产生路由,而是转发本地路由表中来自其他协议生成的路由条目;AS之间正常存在大量的BGP邻居关系,且BGP协议不会计算最佳路径;因此在BGP协议中管理员需要进行策略来干涉选路;
IGP协议关注:
1、收敛快
2、占用资源少
3、选路佳(无环)
EGP协议关注:
1、可控性强(管理员可以方便进行策略干涉选路)
2、可靠性(BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系 ---- 单播邻居)----基于TCP工作,三次握手四次断开 4种可靠传输机制 ---- TCP只能基于单播工作
单播----需要IP可达----依赖IGP、BGP承载与IGP之上
3、AS–BY–AS (以一个AS为一跳)
二、BGP特点
1.无类别路径矢量 ---- 距离矢量的升级版 ---- AS–BY–AS
2.使用单播更新来发送所有信息;基于TCP179端口工作
3.增量更新 ---- 仅触发无周期
4.具有丰富的属性类取代IGP中度量进行选路 ---- 多个参数控制协议
5.可以在进项和出项对流量实施强大的策略 ---- 可控性
6.默认不被用于负载均衡 ---- 通过各种选路规则仅仅产生一条最佳路径
7.BGP支持认证和聚合(汇总)
三、BGP数据包
基于TCP的179端口工作,故BGP协议中所有的数据包均需要在tcp会话建立后,基于TCP的会话来进行传输及可靠性的保障;
首先通过TCP的三次握手来寻找到邻居:
Open | 仅负责邻居关系的建立,正常进行收发一次即可; |
Keeplive | 保活 周期1min查询邻居关系是否存在;实际保活TCP会话;hold time默认3min |
Update | 携带路由条目 目标网络号+各种属性 |
Notification | 出现错误数据时收发 |
四、BGP的工作过程
1、基于IGP实现IP可达;
2、邻居间单播传输,通过三次握手建立TCP的会话通道;
3、使用open报文进行邻居关系建立,一般收发一次即可,生成邻居表;
4、使用update共享路由信息,信息中携带目标网络号+各种属性;
5、生成BGP表 —装载本地发出及接收的所有路由信息;
6、之后将BGP表中的最优路径加载于路由表中;
7、收敛完成后,仅keeplive周期保活即可;
8、所有BGP的数据包均基于TCP会话来保障传输的可靠性;
9、若出现错误信息,将使用notification进行告警;
10、结构突变,使用update触发更新即可
五、名词注解
IBGP ---- 内部BGP邻居关系,在同一个AS的BGP设备间的邻居关系
EBGP ---- 外部的BGP邻居关系,不同AS的BGP设备间建立的邻居关系
六、BGP的路由黑洞
原因
由于BGP协议可以非直连建立邻居关系,故可能出现BGP协议几十年跨越了未运行BGP协议的路由器,导致BGP路由传递后,控制层面显示可达,但数据层面,流量经过未运行BGP协议的路由器,无法通过,最终不通 ---- 控制层面可达,数据层面不可达;
解决方案
1、物理或逻辑链路连
2、BGP邻居关系全连 ---- 所有路由器均运行BGP
3、IGP重发布到BGP
4、MPLS(推荐做法)
七、BGP的防环机制 ---- 水平分割
1、EBGP水平分割 ---- 防御EBG环境下的环路
BGP协议将在了路由条目中记录经过的AS编号 ----as–path属性 ---- 装载所有经过过的AS编号属性接收到的BGP条目中,若as–path属性存在本地的AS号将拒绝接收;
2、IBGP水平分割 ---- 防御IBGP环境下的环路
AS–BY–AS特性 ---- 以一个AS为一跳;在一个AS内部传递的路由,其属性默认没有任何变化;
IBGP水平分割 ---- 从一个IBGP邻居出学习到的路由,不得传递给本地其他的IBGP邻居;
为了实现所有BGP设备学习到所有路由,在IBGP水平分割的条件下,两两间均需要建立IBGP邻居关系,IBGP邻居关系的数量成制数上升;
后期可以使用联邦或路由反射器来打破;
八、BGP的基本配置
《1》在BGP协议中,邻居关系的建立与路由条目的宣告是分开进行的;
【1】直连的EBGP间建邻
[r1]bgp 1 #启动时需要定义其所在的AS号,没有多进程的概念
[r1-bgp]route-id 1.1.1.1 #建议RID与OSPF的配置规则一致
[r1-bgp]peer 12.1.1.2 as-number 2 #建立邻居关系,定义对端设备的IP地址以及所在AS编号
两端配置完成后,将基于TCP的三次握手,建立TCP会话
固定端口的使用者为服务端
[r1]display tcp status #查看TCP建立
[r1]display bgp peer #查看bgp邻居表
会话建立后,邻居间使用open报文,建立BGP的邻居关系,生成邻居表;
【2】建立IBGP邻居关系
由于IBGP邻居处于同一个AS中,正常一个AS内部存在大量的备份路径;若使用物理接口建立邻居关系,将浪费这些备份或负载均衡路径;故建议使用环回接口来进行IBGP邻居关系;
[r2]bgp 2
[r2-bgp]peer 3.3.3.3 as-number 2
[r2-ngp]peer 3.3.3.3 connect-interface LoopBack 0
切记: 一旦使用环回地址作为建邻地址,同时需要修改元IP地址为本地的环回地址;
【3】EBGP邻居间存在多条链路的建立方案
建议使用环回来作为源、目标IP地址,便于利用所有物理链路;
1、IP可达问题 ---- 一般使用静态路由
2、正常使用环回地址作为源、目标建立邻居关系
3、EBGP邻居间,默认TTL值为1,IBGP为255;因为理论上EBGP邻居间没有第三台路由器;故TTL值设定为1,将只能和直连的物理接口建立邻居;一旦使用环回,必须修改TTL值;
[r4-bgp]peer 5.5.5.5 ebgp-max-hop 2 #修改TTL值
《2》BGP路由的宣告
BGP协议可以宣告本地路由表中任意来源路由:本地直连、静态、IGP动态产生均可;
宣告时,宣告的条目内容必须和本地路由表中完全一致;
[r1]bgp 1
[r1-bgp