BGP协议:简介、属性、选路原则

目录

BGP协议:简介、属性、选路原则

一、学习网络BGP必备基础知识

二、BGP 工作原理

三、BGP报文

四、BGP邻居关系的配置

五、BGP需要注意的事项

六、BGP的属性分类 及列举讲解


一、学习网络BGP必备基础知识

边界网关协议(BGP)是运行于 TCP上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

(一)AS  自治系统号      09年之前     2字节     
公有AS:  1-64511
私有AS:  64512-65534

09年之后      4字节    65536---4294967295

(二)AS 内部的路由的计算由  IGP 协议完成 ,如  OSPF  /ISIS/RIP等

(三)AS之间的路由传递和控制由 EGP协议 , 如 BGP  。

(四)BGP 依据目标端口 TCP 179 建立连接,BGP 可以跨越多跳路由器建立邻居关系 。 

二、BGP 工作原理

1)建立邻居关系

2)同步数据库

3)计算路由表 (BGP 不自我计算路由,传输路由)

为何要先建立TCP连接?因为BGP建立连接是在广域网上进行的,不够稳定,存在风险,而在TCP连接比较稳定,所以先建立TCP连接能够使连接更稳定。

BGP 邻居类型 (看是否同一AS)

运行在不同的AS之间的BGP路由器的邻居关系为EBGP

运行在相同的AS内部的BGP路由器的邻居关系为IBGP

三、BGP报文

①、Open消息:Open消息是TCP连接建⽴后发送的第⼀个消息,⽤于建⽴BGP对等体之间的链接关系并进⾏参数协商。内容包括使⽤的BGP版本号、⾃⼰所属的AS号、路由ID、HoldTime值、认证信息等信息。

②、Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,主要作⽤就是让BGP邻居知道⾃⼰的存在,保持邻居关系的稳定;另外⼀个作⽤就是对收到的Open消息的回应。消息格式中只包含消息头,没有附件任何字段。长度为19字节,消息只有标记、长度、类型,不包括数据域。

③、UPdate消息:主要⽤于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以发布不可达路由消息;⼀条Update消息可以通过⼀类具有相同路径属性的可达路由,同时还可以携带多条不可达路由。

④、Notification消息:Notification的作⽤就是错误通知。BGP发⾔者如果检测到对⽅发过来的消息有错误或者主动断开BGP链接,都会发出Notification消息来通知BGP邻居,并关闭链接回到idle状态;如果收到邻居发来的 Notification消息,也会将链接状态变为idle。Notification消息的内容包括错误代码和错误⼦代码及错误数据等信息。

⑤、Route-refresh消息:Route-refresh⽤来要求对等体重新发送指定地址族的路由信息。

四、BGP邻居关系的配置

BGP是在广域网上进行的,为了稳定要先建立TCP连接,    建立邻居关系时属于单播建立

BGP通告原则:

BGP属性 非传递 bgp的属性是有什么_TCP

BGP属性 非传递 bgp的属性是有什么_工作原理_02

BGP属性 非传递 bgp的属性是有什么_网络_03

BGP属性 非传递 bgp的属性是有什么_TCP_04

目的:防环机制,又称为水平分割原则

华为设备 默认 igp bgp 同步功能关闭

方法:1.路由导入(一般不用,bgp流量太大,bgp导入至ospf会丢失属性)

2.路由器都运行bgp,建立全互联关系 邻居关系太多(不可行)

优化方案:

#BGP工作原理 之 数据库

IP路由表

BGP路由表

邻居表(对等体列表)

Adj-RIB-In(对等体宣告给本AS的未经过处理的路由信息库)

Adj-RIB-Out(本地speaker 宣告给指定对等体的路由信息库)

五、BGP需要注意的事项

1:由于BGP的水平分割,会导致BGP出现路由黑洞,解决办法有三个(IBGP全互联,RR,联盟)

2:EBGP邻居,默认其TTL为1

3:在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表,只有在IGP也知道这个IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体

同步:指IGP表和BGP表同步,才会发给EBGP对等体

4:私有AS号(64512-65535)

5:使用import-route static命令引入静态路由时,只能引入活跃路由。

六、BGP的属性分类 及列举讲解

BGP属性 非传递 bgp的属性是有什么_工作原理_05

#第一:公认必遵(as-path,next_hop,origin)

#第二:公认任意(Local_Pref本地优先影响出战流量,原子聚合)

#第三:可选传递(聚合者,community团体属性类似于tag)

#第四:可选非传递(MED多出口鉴别器影响本地AS的入站流量,Cluster List集群列表,起始者ID)

#A:origin 起源属性(用来定义路径信息的来源)

IGP(i):通过network引入的路由,会在bgp routing-table中显示为i

EGP(e):通过EGP得到的路由,会显示为e(已不常见)

Incomplete(?):通过其他方式学习到的路由信息,表示为?

选路原则:i>e>?

BGP属性 非传递 bgp的属性是有什么_路由表_06

#三种加入BGP的方式

import 以及路由聚合

network:直连的路由可以用这样的方式加入(即当我们需要加入BGP的路由存在于IGP路由表中可以使用这个方式,直连)

#B:as-path 路径属性(用于选路,用来定义经过了哪些路径,可用于ebgp防环)

#aspath抓包显示的as记录类型有4种,

as-seq 以序列的方式进行记录as号(普通的)

as-set 用于BGP聚合时防止环路

另外两种是用于联盟

#C:next_hop 下一跳属性:(有图)

1:从IBGP学到的路由信息,默认不会传递给其他IBGP对等体(正常,可以建立全互联模型)

2:从IBGP对等体学到的路由,在传递给EBGP对等体时,下一跳不改变(正常)

3:从EBGP学到的路由,在传递给IBGP对等体时,默认下一跳不改变(不正常,会导致IBGP对等体的路由下一跳不可达),解决办法是

#D:Local_Pref 属性表明BGP路由信息的优先级,用于判断流量离开AS时的最佳路由(华为设备上该值越大越优先,默认是100)

1:只能在IBGP之间传递,影响本AS的出战流量

#E:community 团体属性(写法 100:1)(用于标识具有相同特征的BGP路由)

1:自定义团体(一般在内部传递)

2:公共团体属性

Internet 互联网属性,只要是公共路由都带有

No Advertise 不通告路由(若是收到带有该值的路由信息,不会将该路由传递给其他任何BGP邻居)

No Export 不外发(若是收到带有该值的路由信息,不会传递给任何EBGP邻居)

No Export Subconfed 用于联盟,不会将该路由传递给联盟EBGP(即不传递给普通EBGP邻居)

#F:MED多出口鉴别器,相当于链路cost

1:(华为默认是0)影响入站流量(注意我说的是流量不是路由),用于EBGP邻居(华为设备该值越小越优先),能在对端的AS内部传递,对端AS不能传递给其他AS

2:(提醒:影响入流量就是影响对方,也就是说对方AS内可以进行比较)

#注意影响选路的有起源属性,AS path ,local_pref,MED这些.其他的如commity只是控制不直接影响选路