BGP理论基础

BGP 的基本概念:
BGP基于TCP来承载,端口号为179,且无需周期性更新,路由更新 只发送增量路由,通过周期性发送keepalive报文来保活。


1、 自治系统AS(Autonomous System):
AS号分为2字节和4字节——2字节AS号范围:1-65535,64511-65535为私有AS号码;4字节AS号范围:2的32次方个。


2、 BGP分类:
1)、EBGP:运行于不同AS之间的BGP;(防环机制:通过as-path机制,即从EBGP邻居学到的路由中,包含本地AS号的将被丢弃,可通过命令修改为不丢弃)(EBGP中TTL默认为1)
2)、IBGP:运行于同一AS内部的BGP;(防环机制:从IBGP对等体学到的路由不通告给其他的IBGP对等体)(IBGP中TTL默认为255)


3、 BGP的路由器号(Router ID):
用于标识 BGP 设备的 32 位的值,通常是 IPv4 地址的形式,在 BGP 会话建立时发送的 Open 报文中携带。对等体之间建立 BGP 会话时,每个 BGP 设备都必须有唯一的
Router ID,否则对等体之间不能建立 BGP 连接。


4、 BGP的5种报文:
1)、open:用于建立BGP对等体连接;
2)、update:用于在对等体之间交换路由信息(包括传递可达和不可达的路由信息,不可达的路由信息意思是需要撤销掉这条路由);
3)、notification:用于中断BGP连接,当BGP对等体检测到错误的时候,就发送这个消息给对等体;
4)、keepalive:用于保持BPG连接(周期性发送);(间隔时间为60s,hold time时间为180s)
5)、route-refresh:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的BGP设备会发送和响应此报文


5、 BGP状态机:
6 种状态机:空闲状态(Idle)、连接状态(Connect)、活跃(Active)、 Open 报文已发送(OpenSent)、 Open 报文已确认(OpenConfirm)和连接已建立(Established)
BGP理论基础_第1张图片
1)、Idle:BGP初始状态,这个时候拒绝邻居发送的连接请求。只有收到本设备的Start事件后(相当于我们只要使能了BGP协议,就进入Idle状态,Start就是我们配置BGP的过程)才开始尝试与其他BGP对等体进行TCP连接并转入Connect状态。(收到 Notification 报文 或 TCP 拆链通知等 Error 事件后,BGP 会转至 Idle状态)
2)、Connect:建立TCP连接,并启用重传定时器。如果TCP三次握手建立成功,就向BGP对等体发送Open报文并转入Opensent状态;如果TCP三次握手建立失败,就转入Active状态;如果在重传定时器超时后还没收到对等体的响应(没有收到对端的TCP响应),那么就停留在Connect状态并向其他BGP对等体建立TCP连接。
3)、Active:总是在尝试建立TCP连接。如果TCP建立成功,就向对等体发送Open报文,关闭重传定时器并转入Opensent状态;如果TCP建立不成功,就停留在Active状态。
4)、Opensent:说明TCP连接已经正常并且已经发送了Open报文。等待对等体的Open报文,并且检查所收到对端的Open报文中的AS号,版本,认证等信息。如果正确,就发送keepalive报文,并转入OpenConfirm状态;如果错误,就发送Notification给对等体,并转入Idle状态。
5)、OpenConfirm:等待对等体的keepalive或者Notification报文,如果收到keepalive报文就转入Estabilished状态;如果收到Notification报文,就转入Idle状态。
6)、Estabilished:交互keepalive,Update,Route-refresh,Notification报文。


6、 BGP对等体交互原则:
1)、 从IBGP邻居学到的路由,只会发给EBGP邻居,默认不会发给IBGP邻居;(IBGP水平分割原则,可以通过路由反射器或联盟解决)
2)、从EBGP邻居获取的路由,传递给IBGP邻居时,默认不会修改下一跳;(可以修改为下一跳自我)
3)、BGP只会把本地最优的路由传递给邻居;
4)、路由更新时,只会发送更新的BGP路由给邻居。


7、 BGP认证:
1)、MD5认证:只能对TCP连接设置认证;(BGP是通过TCP承载,所以BGP后续报文都有认证信息)
2)、Keychain认证:可以为TCP连接设置认证,也可以对BGP协议报文设置认证。


8、 BGP GTSM:
检测 IP 报文头中的 TTL(time-to-live)值是否在一个预先设置好的特定范围内,并对不符合 TTL 值范围的报文进行允许通过或丢弃的操作,从而实现了保护 IP 层以上业务,增强系统安全性的目的


9、 BGP属性:
1)、公认必遵(Well-known mandatory):所有路由器都认识,Update信息必须有,否则会报错;
2)、公认任意(Well-known discretionary):所有路由器都认识,Update信息可有可无;
3)、可选传递(Optional transitive):路由器可以不认识,但是会接收此类属性,并且传递给其他对等体;
4)、可选非传递(Optional non-transitive):路由器可以不认识,但如果不认识就会忽略此类属性,并且不会传递给他的对等体。


10、 BGP选路策略:
1)、优选协议首选值(PrefVal)最高的路由。(华为私有属性,仅在本地有效,默认为0)
2)、优选本地优先级(Local_Pref)最高的路由;(默认为100)
3)、依次优选手动聚合路由、自动聚合路由、 network 命令引入的路由、 import-route 命令引入的路由、从对等体学习的路由;
4)、优选 AS 路径(AS_Path)最短的路由;
5)、依次优选 Origin 类型为 IGP、 EGP、 Incomplete 的路由;
6)、对于来自同一 AS 的路由,优选 MED(Multi Exit Discriminator)值最低的路由;(默认为0)
7)、ebgp>ibgp>localcross路由>remotecross路由;(PE上某个 ×××实例的 ×××v4路由的 ERT匹配其他 ×××实例的 IRT后复制到该 ×××实例,称为 LocalCross;从远端 PE 学习到的 ×××v4 路由的 ERT 匹配某个 ××× 实例的 IRT 后复制到该 ××× 实例,称为 RemoteCross)
8)、优选到 BGP 下一跳 IGP 度量值(metric)最小的路由;
9)、是否支持负载均衡,前8条一样,且as-path完全相同(都是聚合路由或都不是),如果配置了多路径负载均衡的话,进行负载均衡(这里默认IBGP和EBGP路由都参与负载均衡);
10)、优选cluster-list长度最小的;
11)、orinator-id越小越优;
12)、router-id越小越优;
13)、peer ip address地址低的优先。


11、 路由反射器原理及路由发布规则:
1)、采用独有的 Cluster_List 属性和 Originator_ID 属性防止路由环路;
2)、选路规则:
1.从Non-Client端的IBGP对等体学到的路由会发给所有的Client端;
2.从Client端学到的路由,发布给所有的Client端(发起此路由的Client除外)和Non-Client;
3.从EBGP对等体学到的路由,发布给所有的Client端和Non-Client;
4.从Non-Client端的IBGP对等体学到的路由不会发给Non-Client端对等体;
3)、Cluster-List和Originator-ID的工作原理:
1.当一个客户端/非客户端更新一条路由给RR时,RR首先给这个信息打上Originator-ID,为这条路由始发的router-id;
2.之后RR给这个更新信息打上自己簇的Cluster-ID放入Cluster-List里面,并传递给他的客户/非客户端/另外一个RR;
3.当另外一个RR收到时,在原有的Cluster-List最前面再加上自己簇的Cluster-ID,Originator-ID如果有就不改变,如果没有就创建;
4.这样下去,Cluster-List里面有所有经过RR的Cluster-ID,并且在Originator-ID里面有路由始发的router-id;
5.当RR收到一个更新信息时,检查Cluster-List,如果里面有自己的router-id,就丢弃,如果没有,就添加并且转发;
6.当一个非RR收到更新信息时,检查Originator-ID,如果发现和自己的router-id匹配,就丢弃,否则就接收。 (注:Cluster-List是给RR防环用的,Originator-ID是给非RR防环用的,但都由RR添加)。


12、 BGP路由聚合:
聚合后的路由默认不会继承明细路由的属性,从路由表上看是汇聚者自己产生的聚合路由,这样就会把聚合后的路由反传给明细路由的始发者,这样一方面浪费了资源,没必要将汇聚后的路由传递给始发者,一方面造成了路由黑洞,因为当其中一条明细路由消失后,聚合不会消失(全部明细路由消失,聚合路由才会消失),这样去往这个明细的数据包还是通过聚合路由发送过来。所以这个时候我们使用AS-SET,当打上这个属性后,聚合路由的as-path就是所有明细路由as-path的集合。as-set中的as-path是无序的。 (AS-SET的缺点:当聚合后使用AS-SET命令后,明细路由的消失会导致网络的震荡,因为聚合路由的as-path是所有明细的集合,所以当其中明细消失后,路由器都要通告给对等体,AS-PATH有改变。 AS-SET不仅继承AS-PATH,也继承起源属性)


13、 BGP ORF:
ORF:根据本端的入口策略,构建对端的出口策略,本端需要哪些路由告诉对端,让对端只发送我所需要的这些路由。