一、BGP定义
BGP全称为边界网关路由协议,它是一种外部网关路由协议,用于在AS之间传递路由信息,工作在应用层,在传输层采用TCP协议,协议号为179,是可靠的路由协议。
二、BGP特点
1、是基于策略的路由协议,着重于控制路由的传递和选择最优路由
2、从设计上避免了环路:
(1)AS之间:BGP路由携带as-path属性,路由器收到带有自身AS号的路由将直接丢弃
(2)AS内部:水平分割(从IBGP邻居学到的路由不会再发给IBGP邻居)
3、提供了丰富的路由策略和过滤策略,能够灵活对路由进行选择和过滤
4、是增强的距离矢量路由协议,发布路由时,只发布更新的路由
三、BGP报文
1、Open报文--负责和对等体之间建立邻居关系;open报文内容有BGP版本、AS号、router-id、认证信息、计时器信息等。
2、keepalive报文--用于维护BGP邻居关系,默认保持时间为60秒,老化时间为180秒。
3、Update报文--用于在对等体之间交换路由信息,包括可达路由信息,撤销路由信息及各种路由属性。
4、notification报文--当检查到错误时就会发送该报文给邻居。
5、Router-refresh报文--该报文用于指定邻居重新进行路由更新。
四、BGP状态机及工作原理
1、Idle:BGP连接的第一个状态,在空闲时间,等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器,同时发起第一个TCP连接,进入Connect状态。
2、Connect: 该状态下,BGP已启动连接重试计时器(120秒),发起第一个TCP连接,如果连接重试计时器超时,则重新发起TCP连接,如果TCP连接建立失败,就进入Active状态,如果TCP连接建立成功,就进入opensent状态。
3、Active: 该状态下BGP总是尝试不断建立TCP连接,若连接重试计时器超时(180秒),则退回到Connect状态,若TCP连接失败则停留在Active,若TCP连接成功则进入opensent状态。
4、Opensent:该状态下,TCP连接已经成功建立,也发出了第一个open报文,等待对方的open报文,如果收到对方的open报文,就会对报文进行正确性检测,若有错误,则会发出notification报文,并退回到idle状态。
5、Openconfirm: 该状态下已经收到对方的open报文,并且已发出keepalive报文,等待对方的keepalive报文,若收到对方的keepalive报文,则进入Establish状态。
6、Established:该状态下表示BGP邻居关系已经建立,BGP邻居可以通过update报文更新路由信息了。
五、工作过程
1.基于IGP(静态、直连、RIP、OSPF...)实现路由可达,原因:BGP需要建立TCP会话(单播)
2.指定对等体关系,邻居之间单播传输,通过三次握手,建立TCP会话通道。之后所有的BGP通信都将基于TCP会话通道来传输。并且依靠TCP提供传输的可靠性
3.使用OPEN报文和Keeplive报文进行邻居关系的建立。OPEN报文用来携带建邻使用的参数,keeplive报文用于OPEN报文参数的确认和BGP对等体的保活。最终完成对等体关系的建立。生成邻居表,存储BGP对等体关系信息。
4.建立邻居关系后,使用update报文来共享路由条目信息。信息中将携带目标网络号,掩码及路径属性;之后,将发送以及收集到的路由信息记录在一张表中 --- BGP表。
5.之后,会将BGP表中最优的一条路由信息(通过路径属性选择的结果)加载到路由表中。
6.收敛完成后,将使用keeplive报文进行对等体之间周期保活,默认的保活时间为180S(hold time),发送周期为60S。
7.如果这个过程中出现任何问题,都将使用notification报文进行告警。
8.如果出现结构突变(网段消失或者新增网段),则将使用update报文进行触发更新,并通告给其他的对等体。
BGP是如何确保路由传递的可靠性
BGP是应用层协议,在传输层使用TCP进行传输,使用的端口号为179利用TCP本身确保数据传输可靠性
IGP---选路 收敛速度 占用资源
六、BGP的特性
1.可控性---BGP设计了很多的路径属性去控制选路
2.可靠性---利用TCP确保BGP数据包的可靠传输
3.AS-BY-AS--BGP默认是不支持负载均衡,BGP将一个AS看作一个整体
BGP的对等体关系---BGP的邻居
IBGP对等体----一个AS内部设备建立的对等体关系,并且BGP支持非直连建邻
EBGP对等体----AS之间建立的对等体关系,建议使用直连建邻
BGP为了保证EBGP对等体之间使用直连建邻,将EBGP之间发送的数据包TTL值设置为1。IBGP内部使用非直连建邻,所以BGP将IBGP之间传递的数据包TTL值设置为255。
七、BGP和RIP的异同
RIP---距离矢量路由协议
BGP--路径矢量协议
矢量----谁传递的路由信息,接收到的设备就会把传递过来设备的源地址作为下一跳
相同点:1.BGP和RIPV2都是无类别的路由协议
不同点:
1.rip是一个路由器作为一跳,BGP是把一个AS看作一跳
2.工作逻辑的区别:RIP作为IGP协议,需要依靠算法计算路由信息,但是BGP运行在IGP的边界,本身就有该AS所有的路由信息,所以BGP实际上只需要传递这些路由信息即可
3.bgp也存在触发更新,BGP是没有周期更新的
八、BGP的路由黑洞
控制层面可达但是数据层面不可达
解决方法:
1.mpls---真正解决BGP路由黑洞问题的是MPLS
2.重发布---在AS边界设备(运行BGP也允许IGP协议)进行重发布将BGP的路由信息发布到IGP协议中(不建议使用)
3.在AS内部构建全连的BGP网络
延申—BGP设计了同步原则,默认设备是关闭的,从IBGP对等体处学的一条BGP路由,如果本地IGP路由表没有该网段信息,则不会转发给其他的EBGP。
九、BGP的基础配置
EBGP对等体之间采用直连建邻的方式
[r1]bgp 1--启动BGP协议1---设备本身属于的AS号,一个设备只能属于一个AS
[r1-bgp]router-id 1.1.1.1--配置BGP-RID
[r1-bgp]peer 12.0.0.2 as-number 2
[r2-bgp]display bgp peer ---查看bgp对等体邻居
建议在AS内部建立IBGP对等体使用环回建邻居:原因,可以充分利用AS内部IGP协议的冗余作用
[r3]bgp 2
[r3-bgp]router-id 3.3.3.3
[r3-bgp]peer 2.2.2.2 as-number 2
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0——使用环回建邻必须改变更新源地址
EBGP对等体之间使用环回建邻配置,在ebgp对等体建立时采用环回建邻,必须修改ebgp数据包中的TTL值,否则默认EBGP对等体之间ttl为1,将导致数据包不可达。直接回车代表将TTL值改为255,其次可以手工指定
十、BGP的防环
EBGP的防环
AS_PATH属性----BGP设计用来传递AS间路由信息防环的属性,当一条路由信息发出本AS就会添加本地的AS号,之后路由传递如果路由信息中携带本地的AS号,那么设备将不在学习该路由信息。
IBGP的防环---
IBGP水平分割---设备从一个IBGP对等体处学到一条ibgp路由,不能传递给自身的其他IBGP对等体关系。
如何解决IBGP水平分割导致的路由信息传递问题?
1.在IBGP对等体之间构建全连的BGP对等体关系
2.反射器
3.联邦
十一、发布路由
1.network
[r1-bgp]network 1.1.1.0 24---只要设备路由表中存在的路由信息,BGP就能发布该网段路由,并且发布的路由必须完全和路由表中一致
[r1]display bgp routing-table -----查看设备BGP表
[r2-bgp]peer 3.3.3.3 next-hop-local ---必须修改传递给其他IBGP对等体下一跳为本地接口IP地址
BGP路由的优先级很低,数值为255是协议的最大值
BGP不能发布建立对等体使用的网段
2.重发布
[r2-bgp]import-route ospf 1 ----利用重发布在BGP中引入AS内部的路由
ip ip-prefix aa index 10 permit 3.3.3.3 32
ip ip-prefix aa index 30 permit 23.0.0.0 24--抓取想要bgp发布的网段
创建路由策略匹配流量
[r2-bgp]import-route ospf 1 route-policy aa---重发布调用
十二、BGP选路原则
1、丢弃下一跳不可达路由(必要条件)
2、比较协议首选值,越大越优
3、比较本地优先级,越大越优
4、依次优选手动聚合、自动聚合、network、import的路由
5、比较as-path属性,越短越优
6、比较origin属性,IGP>EGP>Incomplete
7、比较MED值,越小越优
8、依次优选从EBGP、联盟EBGP、联盟IBGP、IBGP邻居学来的路由
9、优选到BGP路由IGP开销最小的路由
10、比较Cluster-list属性,越小越优
11、比较origin-id属性,越小越优
12、比较router-id属性,越小越优
13、优选从具有最小IP address邻居学来的路由
十三、BGP的路由聚合
自动聚合(设备一般是默认关闭的)
1.只能针对重发布的路由进行聚合
2.只能聚合到主类
[r1-bgp]summary automatic ---开启自动聚合功能
手工聚合
问题一:明细路由默认不会被抑制,就导致除了聚合网段会传递明细网段也会传递,将导致没有起到节省路由条目数量的目的
[r1-bgp]aggregate 172.16.0.0 22 detail-suppressed---可用通过抑制明细的指令去抑制所有的明细路由,使用抑制策略去传递聚合路由同时传递部分明细路由
[r3]ip ip-prefix bb permit 192.168.1.0 24
[r3-bgp]aggregate 192.168.0.0 22 suppress-policy bb——注意抑制列表本身具备抑制路由的能力。所有只需要告诉该列表协议抑制那些路由信息即可,但是抑制列表只能关联路由策略,所以需要利用策略去抓取流量,抓取到的路由会被抑制,剩余路由会正常传递
Ogn—起源码标识路由的来源
Origin : i - IGP, e - EGP, ? - incomplete
i-代表该路由来自IGP协议,通过Network发布的路由
e - EGP代表该路由来源是EGP
?-上述两种方式以外的都会标注?(重发布和聚合产生的路由)
问题二:AS_PATH属性聚合路由会丢失,聚合路由不会继承明细路由的属性
[r3-bgp]aggregate 192.168.0.0 22 suppress-policy bb as-set ——因为聚合路由会产生属性缺失的现象,由器AS_属性缺失会导致EBGP水平分割机制出现问题,可能造成环路,所以可以激活AS-set的关键字让聚合路由继承明细路由的AS_path属性
如果明细路由来自不同的AS,那么聚合路由激活AS—set关键字后,会用{}将明细路由的AS_path属性括起来,以防环角度来看所以AS均不会回传,以选路角度来看则会视为一个整体,代表一跳。
BGP聚合会造成属性的缺失,可能会造成选路不佳,所以需要额外关注这些聚合路由,所以BGP设计了两个预警属性来标注聚合路由
ATOMIC_AGGREGATE---纯粹的预警属性,只有抑制了所有明细的聚合路由才会携带该属性
AGGREGATOR---标注了路由的聚合者的身份(聚合设备的RID)已经聚合设备所在的AS号
十四、反射器和联邦
1.反射器
1、作用
解决IBGP全互联问题,减少IBGP邻居关系数量,降低设备负担。
2.角色
路由反射器---RR--router reflecter
Reflecter client--反射器客户,至少需要选择一个反射器的对等体成为客户
非客户
反射簇---将反射器和客户之间形成的集体称为反射簇,并且用形成该反射簇的路由器RID作为反射簇的簇ID
3.反射器的反射规则
1.如果路由反射器从自身的客户处学习到一条IBGP路由,则会传递给自身的客户和非客户
2.如果路由反射器从自身的非客户处学习到一条IBGP路由,则会传递给自身的客户
3.反射器反射的路由必须是可用且优的路由
注:在一个AS内部可用存在多个反射器,一个设备可用同时属于反射器和客户(非客户)
4.反射器的防环
起源者ID originator---在一个AS内部产生这条反射路由的源设备的RID
生成规则:如果反射器反射一条路由种没有originator,则会由该设备自动生成起源者ID,如果路由中已经存在originator则只反射该路由
如果设备收到一条路由信息中携带的originator-id是自身的RID,那么将拒绝学习该路由动生成起源者ID,如果路由中已经存在originator则只反射该路由
如果设备收到一条路由信息中携带的originator-id是自身的RID,那么将拒绝学习该路由
5.簇列表
簇列表--每经过一个反射器的反射就会加入该反射器的RID到簇列表中,如果设备收到了一条路由信息中簇列表中携带自身的RID那么同样将拒绝学习该路由。
6.反射器的配置
[r3-bgp]peer 2.2.2.2 reflect-client—在需要配置为反射器的设备上指定客户
十五、联邦配置
EBGP使用直连建
[r2]bgp 64512--联邦设备统一使用联邦的AS号启动
[r2-bgp]confederation id 2--告知该设备宏观上属于AS2
[r2-bgp]peer 12.0.0.1 as-number 1
IBGP对等体的建立使用环回
[r2-bgp]peer 3.3.3.3 as-number 64512---指定的AS号为联邦AS号
[r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
联邦之间EBGP对等体建立
[r3]bgp 64512
[r3-bgp]confederation id 2
[r3-bgp]confederation peer-as 64513----告知设备和64513设备建立对等体
是联邦的EBGP对等体
[r3-bgp]peer 4.4.4.4 as-number 64513
[r3-bgp]peer 4.4.4.4 connect-interface l0
[r3-bgp]peer 4.4.4.4 ebgp-max-hop