龙空技术网

「网络工程师」一文带你了解BGP技术

山里娃007 525

前言:

现在小伙伴们对“bgp”大体比较注意,兄弟们都想要分析一些“bgp”的相关内容。那么小编同时在网上网罗了一些有关“bgp””的相关文章,希望大家能喜欢,我们快快来了解一下吧!

在网络学习中,BGP技术算是最难懂的了,要想学好真的不容易,也有些小伙伴觉得BGP技术在一般园区网中很难用的上,大多在一些运营商网络或者银行网络中比较常见,于是觉得不太实用没有学习的必要,其实不然,随着信息技术的飞速发展人们对于网络的要求越来越高也越来越复杂,BGP技术的应用场景也越来越多。下面我就把BGP的所有知识点汇总起来以供有兴趣的小伙伴一起共同学习探讨。

BGP是Border Gateway Protocol的简称。BGP是一种增强的路径矢量路由协议,同时BGP是拥有丰富的策略控制技术的外部网关协议。BGP多运行于AS与AS之间。根据AS的划分:内部网关路由协议IGP:rip,ospf ,isis;外部网关路由协议EGP:BGP(EBGP IBGP)

BGP是一种用于自治系统AS之间的动态路由协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),主要用于交换AS之间的可达路由信息,构建AS域间的传播路径,防止路由环路的产生,并在AS级别应用一些路由策略。当前使用的版本是BGP-4(RFC4271)。BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP之间。

BGP概述

1、BGP是一种外部网关协议(EGP),与OSPF、RIP等内部网关协议(IGP)不同,其着眼点不在于发现和计算路由,而在于在AS之间选择最佳路由和控制路由的传递。

2、BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门的机制来确保连接的可靠性。

(1)BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。

(2)BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。

3、路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。(初始化是BGP会通告自身所有的路由信息)

4、BGP从设计上避免了环路的发生。

(1)AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。

(2)AS内部:BGP在AS内学到的路由不再通告给AS内的其他IBGP邻居,避免了AS内产生环路。(IBGP水平分割)

5、BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。(13条选路原则)

6、BGP提供了防止路由振荡的机制,有效提高了Internet网络的稳定性。

7、BGP易于扩展,能够适应网络新的发展。主要是通过TLV(type,length,value)进行扩展。

AS是指在一个实体管辖下的拥有相同选路策略的IP网络。

1、自治系统的典型定义是指由同一个技术管理机构管理,使用统一选路策略的一些路由器的集合。

2、每个自治系统都有唯一的自治系统编号,这个编号是由IANA分配的。

3、自治系统的编号范围是从1到65535,其中1到64511是注册的因特网编号,64512到65535是私有网络编号。

4、BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1 至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。旧的AS number长度是2个字节;新的AS number长度变为了4个字节。

EBGP和IBGP

IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,这个就是IBGP的水平分割。

IBGP全互连(FULL-MESH)关系。这是解决由于IBGP水平分割带来的路由传递的问题的方法之一。这种方法的缺陷是路由器要付出更多的开销去维护网络里的IBGP会话。

EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。

BGP报文交互中的角色

Speaker:发送BGP消息的路由器称为BGP发言者,它接收或产生新的路由信息,并发布给其它BGP Speaker。

Peer:相互交换消息的BGP Speaker之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer Group)。

[R1] router id

[R1]bgp 65105

[R1-bgp]group ibgp internal (peer ebgp external)

[R1-bgp]peer ibgp connect-interface LoopBack 0

[R1-bgp]peer 10.123.207.2 as-number 65105(10.123.207.2是环回口)

[R1-bgp]peer 10.123.207.2 group ibgp

[R1-bgp]peer 10.123.207.3 as-number 65105

[R1-bgp]peer 10.123.207.3 group ibgp

BGP报头

Marker(标记):16字节,固定为1。

Length(长度):两字节无符号整数。指定了消息的全长,包括头部。

Type(类型):1 字节,指示报文类型:

Open

Update

Keepalive

Notification

Route-Refresh

BGP的运行是通过消息驱动的,共有Open、Update、Notification、

Keepalive和Route-Refresh等5种消息类型。

1、Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。

Open报文结构

1)Version:BGP的版本号。对于BGPv4来说,其值为4。

2)My Autonomous System:本地AS编号。通过比较两端的AS编号可以确定是EBGP连接还是IBGP连接。

3)Hold Time:在建立对等体关系时两端要协商Hold time,并保持一致。如果两端所配置的Hold time时间不同,则BGP会选择较小的值作为协商的结果。如果在这个时间内未收到对端发来的Keepalive消息,则认为BGP连接中断。如果保持时间为0,则标识不发送Keepalive报文。

4)BGP Identifier:BGP路由器的Router ID,以IP地址的形式表示,用来识别BGP路由器。

5)Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。

6)Optional Parameters:是一个可选参数用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。每一个参数为一个(ParameterType-Parameter Length-Parameter Value)三元组。

2、Update消息:用于在对等体之间交换路由信息。Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。

(1)一条Update消息可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update消息里的路由属性适用于该Update消息中的NLRI(Network Layer ReachabilityInformation)字段里的所有目的地(用IP前缀表示)。

(2)一条Update消息可以撤销不可达路由。每一个路由通过目的地(用IP前缀表示),清楚的定义了BGP Speaker之间先前通告过的路由。

(3)一条Update消息可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。

Update报文结构

1)Withdrawn Routes Length :(2字节无符号整数) 不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据,在UPDATE消息中不会被显示。

2)Withdrawn Routes :(变长) 撤销路由。该字段包括一系列的IP地址前缀信息,以<length, prefix>的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络。

3)Path Attribute Length :(2字节无符号整数) 路由属性长度,表示Path Attribute字段的数据长度。如果Path Attribute Length数值为0,则表示Path Attribute字段没有任何数据,在UPDATE消息中不会被显示。

4)Network Layer Reachability Information :(变长) 网络可达信息。包括一系列的IP地址前缀。格式与撤消路由字段一样<length, prefix>。

3、Keepalive消息:BGP会周期性(60s)的向对等体发出Keepalive消息,用来保持连接的有效性。

Keepalive报文结构

1)KeepAlive 报文的组成只包括一个BGP数据报头。缺省情况下,发送KeepAlive 的时间间隔为 60 秒,Hold Time是180秒。每次从邻居处接收到KeepAlive报文将重置Hold Time定时器,如果Hold Time定时器超时,就认为对等体Down掉。

4、Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。

Notification报文结构

1)Errorcode:错误码。1字节长的字段。每个不同的错误都使用唯一的代码表示,而每一个错误码都可以拥有一个或多个错误子码,但如果某些错误码并不存在错误子码的话,则该错误子码字段以全0表示。

2)Errsubcode:错误子码。

5、Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。

在所有BGP路由器使能Route-Refresh能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发布Route-Refresh消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。

export

import

BGP工作原理-状态机

BGP有限状态机共有六种状态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。

BGP状态机:

(1)Idle:BGP连接的第一个状态。在空闲状态,BGP在等待一个启动事件。启动事件出现以后,BGP初始化资源,复位连接重试计时器(Connect-Retry),同时转入Connect(连接)状态。(有两种情况会出现IDLE状态:

1.本地没有对端的路由(也就是没有peer邻居的路由)2.配EBGP时,不是通过直连物理接口建立的而是通过loopback接口建立的,由于双方loopback的地址无法互通,通过IGP/static方式让环回口互通。并且必须设置peer edgp-max-hop来解决双方loopback地址不通)

(2)Connect:在此状态,BGP发起第一个TCP连接,如果连接重试计时器超时(默认32秒),BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其他BGP对等体进行TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就转入Active状态。(该状态下是每隔一段时间尝试建立一次TCP连接)

(3)Active:在此状态,BGP总是在试图建立TCP连接,如果连接重试计时器(Connect-Retry)超时,仍然没有收到BGP对等体的相应,那么BGP就退回到Connect状态,如果TCP连接成功,就转入OpenSent状态,如果TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。在CONNECT状态和active状态都是用于建立TCP会话连接的,其与BGP没有关系

(4)OpenSent:在此状态,TCP连接已经建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知消息并退回到Idle状态,如果没有错误,BGP就开始发送Keepalive报文,并复位Keepalive计时器,开始计时。同时转入OpenConfirm状态。

(5)OpenConfirm:在OpenConfirm状态,BGP等待一个Keepalive报文,同时复位保持计时器,如果收到了一个Keepalive报文,就转入Established阶段,BGP邻居关系就建立起来了。

(6)Established:在Established状态,BGP邻居关系已经建立,这时,BGP将和它的邻居们交换Update报文,同时复位保持计时器。

另外,在除Idle状态以外的其它五个状态出现任何Error的时候,BGP状态机就会退回到Idle状态

BGP工作原理-对等体之间的交互原则

BGP设备将最优路由加入BGP路由表,形成BGP路由。

1、从IBGP对等体获得的BGP路由,不会再将该BGP路由通告给其它的IBGP邻居

2、从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体

3、当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体

路由更新时,BGP设备只发送更新的BGP路由

4.BGP与IGP同步

BGP工作原理-数据库

1、IP路由表 (IP-RIB)

全局路由信息库,包括所有IP路由信息

2、BGP路由表 (Loc-RIB)

BGP路由信息库,包括本地BGP Speaker选择的路由信息

3、邻居表

对等体邻居清单列表

4、Adj-RIB-In

对等体宣告给本地Speaker的未处理的路由信息库

5、Adj-RIB-Out

本地Speaker宣告给指定对等体的路由信息库

BGP路由信息处理:

1、当从对等体接收到更新数据包时,路由器会把这些更新数据包存储到路由选择信息库(Routing Information Base, RIB)中,并指明是来自哪个对等体的(Adj-RIB-In)。这些更新数据包被输入策略引擎过滤后,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径。

2、得出的最佳路径被存储到本地BGP RIB (Loc-RIB)中,然后被提交给本地IP路由选择表(IP-RIB),以用作安装考虑。

3、除了从对等体接收来的最佳路径外,Loc-RIB也会包含当前路由器注入的(被称为本地发起的路由),并被选择为最佳路径的BGP前缀。Loc-RIB中的内容在被通告给其他对等体之前,必须通过输出策略引擎。只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB (Adj-RIB-Out)中。

BGP与IGP交互-BGP同步(其针对的BGP路由是从EBGP发过来的),华为默认是关闭的

同步是指IBGP和IGP之间的同步,其目的是避免误导外部AS的路由器。

拓扑说明(在同步开启情况下)

R4通过BGP学习到R1宣告的10.0.0.0/24网络。R4在将该网络通告给R5之前,会首先检查自己的IGP路由表是否已经存在10.0.0.0/24网络。如果R4本地IGP路由表项存在10.0.0.0/24网络,则将该网络通告给R5;如果R4本地IGP路由表项不存在10.0.0.0/24网络,则不能将该网络通告给R5。

路由迭代

缺省情况下,同步是默认关闭的。

解决路由黑洞的方式:

1.IBGP全互连

2.重分发(import-route)

3.MPLS

4.RR

5.联盟

BGP属性特点:

BGP路由属性是一套参数,它是对特定的路由进一步的描述(这些属性出现在update报文中)

1、公认必遵

所有BGP路由器都可以识别,且必须存在于Update消息中如果缺少这种属性,路由信息就会出错

2、公认任意

所有BGP路由器都可以识别,但不要求必须存在于Update消息中即就算缺少这类属性,路由信息也不会出错

3、可选过渡

在AS之间具有可传递性的属性BGP路由器可以不支持此属性,但它仍然会接收这类属性,并传递给其他对等体

4、可选非过渡

如果BGP路由器不支持此属性,则相应的这类属性会被忽略,且不会传递给其他对等体

常用的属性类别如下所示:

Origin属性为公认必须遵循

AS_Path属性为公认必须遵循

Next_Hop属性为公认必须遵循

Local_Pref属性为公认任意

团体属性为可选过渡

MED属性为可选非过渡

Originator_ID属性为可选非过渡

Cluster_List属性为可选非过渡

BGP路由是从设备IP路由表(IGP或者直连的路由或static)中变成,

1.network

2.import-route

BGP属性-Origin(公认必遵 )

Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的。它有

以下3种类型:

1、IGP:具有最高的优先级。通过路由始发AS的IGP得到的路由信息,比如通过network命令注入到BGP路由表的路由,其Origin属性为IGP。标识符为“i”

2、EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。标识符为“e"(该协议已经不存在)

3、Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。标识符为“?”。Origin属性这三种来源的优先比较:IGP>EGP>incomplete

BGP属性-AS-PATH(AS路径长度最短的路径优先)(公认必遵)

AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。

1、当BGP Speaker本地通告一条路由时:

(1)当BGP Speaker将这条路由通告到其他AS时,便会将本地AS号添加在AS_Path列表中,并通过Update消息通告给邻居路由器。(AS之间)

(2)当BGP Speaker将这条路由通告到本地AS时,便会在Update消息中创建一个空

的AS_Path列表。(AS内)

2、当BGP Speaker传播从其他BGP Speaker的Update消息中学习到的路由时:

(1)当BGP Speaker将这条路由通告到其他AS时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP路由器根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。

(2)当BGP Speaker将这条路由通告到本地AS时,不会改变这条路由相关的AS_Path属性。(R3->R2的BGP路由)

3、拓扑描述:

当R4将网段10.0.0.0/24通告给AS400和AS100时,会在AS_PATH中添加自己的AS号。当R5将网段10.0.0.0/24通告给AS100使,也会添加添加自己的AS号。当AS100内的R1和R3再将网段10.0.0.0/24通告给本AS域内的R2时,AS_PATH属性不会改变,且R2在其他BGP选路条件相同的前提下选择AS_PATH路径最短的,即选择通过R3到达网段10.0.0.0/24。

BGP属性-next hop(公认必遵)

Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:

1、BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。(IBGP全互连)

2、BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。

3、BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。

BGP属性-local preference(值越大越优,默认为100)公认任意

Local_Pref属性

1、该属性仅在IBGP对等体之间有效,不通告给其他AS。它表明路由器的BGP优先级。

2、该属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。

拓扑描述

R1从本AS内的R2学到网络10.0.0.0/24的Local_Pref为300,从本AS内的R3学到网络10.0.0.0/24的Local_Pref为200时,R1会选择经由R2到达目的网络10.0.0.0/24。

BGP属性-MED(越小越优,默认为0)可选非过渡 类似cost

MED属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED 值较小者作为最佳路由。

MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。

拓扑描述

R1和R2将网段10.0.0.0/24传递给各自的EBGP邻居R3和R4,R3和R4在其他条件相同的情况下,优先选择MED值较低的路径,即均选择经由R1访问网络10.0.0.0/24。

BGP属性特点-团体属性(类似与tag)可选过渡

团体属性分为:

(1)自定义团体属性(私有团体属性)

(2)公共团体属性

简单理解:

其实就是将网段打上团体属性(类似于tag),而后期我们可以通过团体属性来对该网段做一些策略

私有团体属性:

1、团体属性是一组有相同特征的目的地址的集合。团体属性用一组以4字节为单位的列表来表示,设备中团体属性的格式是aa:nn或团体号。

(1)aa:nn:aa和nn的取值范围都是0~65535,管理员可根据实际情况设置具体数值。通常aa表示自治系统AS编号,nn是管理员定义的团体属性标识。例如,来自AS100的一条路由,管理员定义的团体属性标识是1,则该路由的团体属性格式是100:1。MPLS VPN RT值

(2)团体号:团体号是0~4294967295的整数。RFC1997中定义,0(0x00000000)~65535(0x0000FFFF)和4294901760(0xFFFF0000)~4294967295(0xFFFFFFFF)是预留的。

团体属性用来简化路由策略的应用和降低维护管理的难度,利用团体可以使多个AS中的一组BGP设备共享相同的策略。团体是一个路由属性,在BGP对等体之间传播,且不受AS的限制。BGP设备在将带有团体属性的路由发布给其它对等体之前,可以先改变此路由原有的团体属性。

公共团体属性:

1)Internet:缺省情况下,所有的路由都属于Internet团体。具有此属性的路由可以被通告给所有的BGP对等体。

2)No_Advertise:具有此属性的路由在收到后,不能被通告给任何其他的BGP对等体。(不通告给任何bgp对等体,包括IBGP和EBGP)

3)No_Export:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。(不通告给Ebgp对等体,但是会通告给IBGP对等体,同时也会会通告给联盟的Ebgp对等体和联盟的IBGP对等体)

4)No_Export_Subconfed:具有此属性的路由在收到后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。(不通告给EBGP对等体,同时也不通告给联盟的EBGP对等体,但是可以通告给IBGP对等体和联盟内的IBGP对等体)

BGP选路原则:

选路的前提:如果此路由的下一跳不可达,忽略此路由 (选路的前提)

1,Preferred-Value值数值高的优先(默认为0,华为私有属性,仅有本地意义不可以传递)

2,Local-Preference值最高的路由优先

3,本地始发

aggregate手工生成的聚合路由>summary automatic自动聚合路由>network宣告的的聚合路由>import-route引入的聚合路由>从邻居学习到的路由

(1、aggregate手工生成聚合路由优于network命令宣告的聚合路由; 2、aggregate手工生成聚合路由优于import-route引入的聚合路由; 3、network宣告的聚合路由优于import-route引入的聚合路由; 4、aggregate手工聚合优于aggregate自动聚合)

4,AS路径的长度最短的路径优先

5,比较Origin属性,IGP优于EGP,EGP优于Incomplete

6,选择MED较小的路由

7,EBGP路由优于IBGP路由 (通过内部优先级比较,EBGP为20,IBGP为200;EBGP和IBGP的外部优先级都是一样的都是255)

8,BGP优先选择到BGP下一跳的IGP度量(metric)最低的路径(即到nexthop的cost值这个主要看的是到达BGP表中的nexthop的cost值)

9、当以上全部相同,则为等价路由,可以负载分担注:AS_PATH必须一致 (IBGP\EBGP)

当负载分担时,以下4条原则无效

10,比较Cluster-List长度,短者优先

11,比较Originator_ID(值越小越优)

12. router id,越小越优

13,比较对等体的IP地址,选择IP地址数值最小的路径

BGP扩展特性-安全特性

BGP安全特性:

1、MD5:BGP使用TCP作为传输层协议,为提高BGP的安全性,可以在建立TCP连接时进行MD5认证。但BGP的MD5认证并不能对BGP报文认证,它只是为TCP连接设置MD5认证密码,由TCP完成认证。如果认证失败,则不建立TCP连接。

2、GTSM:使能BGP的GTSM策略后,接口板对所有BGP报文的TTL值进行检查。根据实际组网的需要,对于不符合TTL值范围的报文,GTSM可以设置为通过或丢弃。配置GTSM缺省动作为丢弃时,可以根据网络拓扑选择合适的TTL有限值范围,不符合TTL值范围的报文会被接口板直接丢弃,这样就避免了网络攻击者模拟的“合法”BGP报文占用CPU。

3、限制从对等体接收的路由数量,防止资源耗尽性攻击。

4、AS_Path长度保护。通过在入口和出口两个方向对AS_Path的长度进行限定,直接丢弃AS_Path超限的报文。(as-path-limit,as-path属性中默认最多as号数量为255)

路由反射器(RR)

为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接(Full-mesh)关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。利用路由反射可以解决这一问题。

在一个AS内,其中一台路由器作为路由反射器RR(Route Reflector),其它路由器作为客户机(Client)。客户机与路由反射器之间建立IBGP连接。路由反射器和它的客户机组成一个集群(Cluster)。路由反射器在客户机之间反射路由信息,客户机之间不需要建立BGP连接。

对等体之间的关系:

1、client只需要维护与RR之间的IBGP会话;

2、RR与RR之间需要建立IBGP全互连;

3、NON-client与NON-client之间需要建立IBGP全互连;

4、RR与NON-client之间需要建立IBGP全互连

路由反射器概念

1、路由反射器RR(Route Reflector):允许把从IBGP 对等体学到的路由反射到其他IBGP对等体的BGP设备。

2、客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。

3、非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立IBGP全连接关系。

4、始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内(即RR的客户机之间)产生路由环路。

5、集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间(即RR之间)产生路由环路。

路由反射器-反射原则

直接撸实验

在向IBGP邻居发布学习到的路由信息时,RR按照以下规则发布路由

(1)从EBGP对等体学到的路由,发布给所有的非客户机和客户机。

(2)从非客户机IBGP对等体学到的路由,发布给此RR的所有客户机。

(3)从客户机学到的路由,发布给此RR的所有非客户机和客户机(发起此路由的客户机除外)。

RR的配置方便,只需要对作为反射器的路由器进行配置,客户机并不需要知道自己是客户机。peer xxx reflect-client

在某些网络中,路由反射器的客户机之间已经建立了全连接,它们可以直接交换路由信息,此时客户机到客户机之间的路由反射是没有必要的,而且还占用带宽资源。AR2200支持配置命令undo reflect between-clients来禁止RR将从客户机收到的路由再反射给其他客户机。

路由反射器-防环机制

Originator_ID属性用于防止集群内产生路由环路。

Cluster_List属性用于防止集群间产生路由环路。

1、Originator ID由RR产生,使用的Router ID的值标识路由的发送者,用于防止集群内产生路由环路。

(1)当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,

标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。

(2)当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。

2、路由反射器和它的客户机组成一个集群(Cluster)。在一个AS内,每个路由反射器使用唯一的Cluster ID作为集群标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。

(1)当RR在它的客户机之间或客户机与非客户机之间反射路由时,RR会把本地Cluster_ID添加到Cluster_List的前面。如果Cluster_List为空,RR就创建一个。

(2)当RR接收到一条更新路由时,RR会检查Cluster_List。如果Cluster_List中已经有本地Cluster_ID,丢弃该路由;如果没有本地Cluster_ID,将其加入Cluster_List,然后反射该更新路由。

路由反射器-备份RR

为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。(其还是依靠的是cluster list来防环)

拓扑描述

(1)当客户机Client1从EBGP对等体接收到一条更新路由,它将通过IBGP向RR1和RR2通告这条路由。

(2)RR1(R1)和RR2(R2)在接收到该更新路由后,将本地Cluster ID添加到ClusterList前面,然后向其他的客户机(Client2、Client3)反射,同时反射器之间相互反射。

(3)RR1和RR2在接收到该反射路由后,检查Cluster List,发现自己的Cluster ID已经包含在Cluster List中。于是RR1和RR2丢弃该更新路由,从而避免了路由环路。

路由反射器-同级反射器

一个骨干网被分成多个反射集群,每个RR将其它的RR配置成非客户机,各RR之间建立全连接。每个客户机只与所在集群的RR建立IBGP连接。这样该自治系统内的所有BGP路由器都会收到反射路由信息。

路由反射器-分级反射器

Cluster1中部署了一个一级RR(RR-1),Cluster2和Cluster3中的RR(RR-2和RR-3)作为RR-1的客户端。

路由反射减少了域中IBGP会话的总数。然而,因为RR相互之间必须全互连,在大型网络中,存在一种可能性,即RR之间仍然需要大量的IBGP会话。为了进一步减少会话数量,引入层次化的路由反射。

层次化路由反射的层数可以按照需要逐步加深,但通常在现网中两层或三层已经足够了。

BGP联盟

1、联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。

2、配置联盟后,原AS号将作为每个路由器的联盟ID。这样有两个好处:一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。

BGP联盟-防环机制

AS_PATH属性被定义为公认必遵属性,该属性由AS号所组成。AS_PATH包含4种不同类型

(1)AS_SET: 由一系列AS号无序地组成,包含在UPDATE消息里。当网络发生聚合时可通过适当策略使AS_PATH使用类型AS_SET来避免路径信息丢失。

(2)AS_SEQUENCE: 由一系列AS号顺序地组成,包含在UPDATE消息里。一般情况下,AS_PATH类型为AS_SEQUENCE。(正常的网络默认也是有序的)

(3)AS_CONFED_SEQUENCE: 在本地联盟内由一系列成员AS号按顺序地组成,包含在UPDATE消息中用法和AS_SEQUENCE相同,只能在本地联盟内传递。(联盟默认是有序的)

(4)AS_CONFED_SET: 在本地联盟内由一系列成员AS无序地组成,包含在UPDATE消息中,用法和AS_SET相同,只能在本地联盟内传递。联盟内部的成员AS号对于其他非联盟AS是不可见的,所以路由在有联盟内部发送到其他非联盟AS时联盟成员AS号被剥离。

BGP反射器和联盟的比较

反射器和联盟的比较

1、联盟需要重新划分区域,对现网改动较大。

2、反射器在配置时,只需要对RR进行配置,客户机不要任何多余的操作;联盟需要在所有配置上进行配置。

3、RR与RR间需要IBGP全互联。

4、路由反射器应用较为广泛;联盟应用较少。

BGP路由聚合

1、只向对等体发送聚合后的路由,从而减少对等体的路由条目

2、明细路由如果发生路由振荡,不会对网络造成影响

3、路由聚合分为自动聚合和手动聚合

路由聚合-自动聚合

自动聚合

1、对BGP引入的路由进行有类聚合

2、配置聚合后,明细路由在路由表中将被抑制

3、不能对network发布的路由进行聚合

自动聚合注意事项

1、该命令对BGP引入的路由进行聚合,引入(import-router)的路由可以是直连路由、静态路由、RIP路由、OSPF路由、IS-IS路由。配置聚合后,BGP将按照自然网段聚合路由,明细路由在BGP表中将被抑制。该命令对network命令引入的路由无效。

2、BGP只向对等体发送聚合后的路由(自动聚合抑制明细路由)

3、缺省情况下BGP不启用自动聚合

路由聚合-手动聚合(不抑制明细路由)

1、聚合路由不会携带AS_PATH属性。

2、通过AS_SET属性来携带AS号,以避免环路。SET和SEQUENCE的不同之处在于,SET选项下的AS列表通常用于路由聚合,将来自不同AS的AS号无序排列在AS列表里;而SEQUENCE选项下的AS列表是有序的,每经过一个AS都会将其AS号排列在列表的前端。

标签: #bgp #bgp使用的是什么路由选择算法 #路由器bgp原理配置 #bgp路由汇总如何生效