BGP的基本概述
1、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门 机制来确保连接的可控性。BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议只的稳定性。BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
2、路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息
3、BGP从设计上避免了环路的发生。AS之间: BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。AS内部: BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路
4、支持CIDR 无类域间路由
5、BGP提供了丰富的路由策略: 提供了防止路由振荡的机制;BGP也易于扩展
BGP的分类
BGP 按照运行方式分为 EBGP (External/Exterior BGP) 和 IBGP (Internal/Interior BGP)
1、EBGP: 运行于不同 AS 之间的 BGP 称为 EBGP。为了防止AS 间产生环路,当BGP 设备接收 EBGP 对等体发送的路由时,会将带有本地 AS 号的路由丢弃。
2、IBGP:运行于同-AS 内部的 BGP 称为IBGP。为了防止 AS 内产生环路,BGP 备不将从BGP 对等体学到的路由通告给其他IBGP 对等体,并与所有 BGP 对等体建立全连接。为了解决 BGP 对等体的连接数量太多的问题,BGP 设计了路由反BGP的工作过程
1、BGP报文
BGP报文有5种消息类型
Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发关Keepalive消息确认并保持连接的有效性,确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。应用: 通过TCP建立BGP连接时,发送OPEN消息。
Update消息:用于在对等体之间交换路由信息,Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息.应用: 连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端
Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性,应用: 稳定后要定时发送KEEPALIVE消息以保持BGP连接的有效性。
Notification消息: 当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。应用: 当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体。
Route-Refresh消息:通OPEN消息告知BGP peer本地支持路由刷新能力 Route-Reresh capabilitv) 。应用: ROUTE-REFRESH消息用来通知对等体自己支持路由刷新。射器和 BGP联盟
2、BGP处理过程
因为BGP的传输层协议是TCP协议,所以在BGP对等体建立之前,对等体之间首先进行TCP连接。BGP邻居间会通过Open报文协商相关参数,建立起BGP对等体关系。建立连接后,BGP邻居之间交换整个BGP路中表。BGP会发送Keepalive报文来维持邻居间的BGP接,BGP协议不会定期更新路由表,但当BGP路由发生变化时,会通过Update报文增量地更新路由表。当BGP检测到网络中的错误状态时(例如收到错误报文时),BGP会发送Notification报文进行报错,BGP连接会随即中断。示意图见图1邻居建立过程图。
3、BGP报文中的角色
Speaker: 发送BGP报文的路由设备称为BGP发言者(Speaker),它接收或产生新的路由信息,并发布(Advertise) 给其它BGPSpeaker。当BGP Speaker收到来自其它AS的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给所有其他BGP Speaker。
Peer: 相互交换报文的BGP Speaker之间互称对等体 (Peer)
4、BGP有限状态机
BGP 对等体的交与过程中存在 6 种状态机: 空闲状态 (ldle) 、连接状态(Cnnect) 、活跃(Active) 、Open 报文已发送(OpenSent) 、Open 报文已确认 (OpenConfirm) 和连接已建立(Established) 。在 BGP 对等体建立的过程中,通常可见的3个状态是: ldle、 Active 和 Established。
BGP 安全性
BGP 使用认证和 GTSM (Generalized TTL Security Mechanism) 两方法保证 BGP 对等体间的交互安全
1、BGP认证
BGP 认证分为 MD5 认证和 Kevchain认证,对 BGP 对等体关系进行认证是提高安全性的有效手段。MD5 认证只能为 TCP 连接设置认证密码,而 Keychain 认证除了可以为 TCP 连接设置认证密码外,还可以对 BGP 协议报文进行认证
2、BGP GTSM
BGP GTSM 检测 IP 报文头中的 TTL (time-to-ive)值是否在一个预先设置好的特定范围内,并对不符合 TTL 值范围的报文进行允许通过或丢弃的操作,从而实现了保护 IP 层以上业务,增强系统安全性的目的。
5、BGP对等体之间的交互原则
BGP 设备将最优路由加入BGP 路由表,形成 BGP 路由。BGP 设备与对等体建立居关系后,采取以下交互原则:
1从IBGP 对等体获得的 BGP 路由, BGP 设备只发布给它的 EBGP 对等体。
2从EBGP 对等体获得的 BGP 路由,BGP 设备发布给它所有 EBGP 和BGP 对等体
3当存在多条到达同一目的地址的有效路由时,BGP 设备只将最优路由发布给对等体。
4路由更新时,BGP 设备只发送更新的 BGP 路由。
5所有对等体发送的路由,BGP 设备都会接收。
BGP有13条选路原则:
1.丢弃下一跳不可达的路由
2.优选Preference Value值最高的路由(私有属性,仅本地有效)
3.优选本地优先级 (Local Preference) 最高的路由
4.优选手动聚合>自动聚合>network>import>从对等体学到的
5.优选AS Path短的路由
6.起源类型IGP>EGP>Incomplete
7.对于来自同一AS的路由,优选MED值小的
8.优选从EBGP学来的路由 (EBGP>IBGP)
9.优选AS内部IGP的Metric最小的路由
10.优选Cluster List最短的路由
11.优选Orginator ID最小的路由
12.优选Router ID最小的路由器发布的路由
13.优选具有较小IP地址的邻居学来的路由