BGP笔记

一、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

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BGP中的Keepalive是一种定期发送的报文,用于维持BGP邻居关系。如果收到正确的Update或Keepalive报文BGP就认为对端处于正常运行状态,并保持BGP连接。Keepalive报文的格式只包含报文头,没有附加其他任何字段。该报文的目的是确保BGP会话的连通性,并及时检测到邻居的异常情况。如果收到错误的Update或Keepalive报文BGP将发送Notification报文通知对端,并转至Idle状态。而Route-refresh报文不会改变BGP状态。如果收到Notification报文BGP会转至Idle状态。另外,如果收到TCP拆链通知,BGP会断开连接并转至Idle状态。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [BGP的5种交互报文、6种状态机、对等体关系建立与路由交互过程介绍](https://blog.csdn.net/qq_45443704/article/details/129895505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [BGP基础](https://blog.csdn.net/zljszn/article/details/124732057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值