NP笔记——08 BGP选路原则

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/x503809622/article/details/82629674

BGP的路径属性:

BGP路由属性是一套参数,它对特定的路由进行更详细的描述。在配置路由策略时我们将广泛地使用各种路由属性。

BGP路径属性可以被分为四大类:

公认必遵 (Well-known mandatory)

公认任意 (Well-known discretionary)

可选过渡 (Optional transitive)

可选非过渡 (Optional non-transitive)

BGP必须识别所有公认属性。而一些强制属性必须包含在每一个UPDATE消息里,而其它任意属性则可能会被包含在某具体UPDATE消息中。一旦BGP对等体更新带有公认属性的UPDATE消息时,BGP对等体必须转发这些公认属性给其它对等体。

公认属性是所有BGP路由器都必须识别的属性:

公认必遵 (Well-known mandatory):所有BGP路由器都可以识别,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错

公认任意 (Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来决定是否添加到Update消息中

除公认属性外,每UPDATE消息里都可以包含一个或多个可选属性。并且不是每个BGP Speaker都要求支持这些可选属性。

而一个新的可过渡属性可以被发起者或其它一些BGP Speaker添加到路径属性上。

可选属性不需要都被BGP路由器所识别:

可选过渡 (Optional transitive):BGP路由器可以选择是否在Update消息中携带这种属性。接收的路由器如果不识别这种属性,可以转发给邻居路由器,邻居路由器可能会识别并使用到这种属性

可选非过渡 (Optional non-transitive):BGP路由器可以选择是否在Update消息中携带这种属性。在整个路由发布的路径上,如果部分路由器不能识别这种属性,可能会导致该属性无法发挥效用。因此接收的路由器如果不识别这种属性,将丢弃这种属性,不必再转发给邻居路由器

 

常见的BGP属性:13种,掌握6种

1、Origin,2、AS_PATH,3、Next hop,4、MED,5、Local-Preference,6、Atomic-Aggregate,7、Aggregator,8、Community,9、Originator-ID,10、Cluster-List,11、MP_Reach_NLRI,12、MP_Unreach_NLRI,13、Extended_Communities

Origin起点属性。定义路由信息的来源,标记一条路由是怎样成为BGP路由的。

As_PATHAS路径属性。是路由经过的AS的序列,即列出此路由在传递过程中经过了哪些AS。它可以防止路由循环,并用于路由的过滤和选择。

Next hop下一跳属性。包含到达更新消息所列网络的下一跳边界路由器的IP地址。

MED属性:当某个AS有多个入口时,可以用MED属性来帮助其外部的AS选择一个较好的入口路径。一条路由的MED值越小,其优先级越高。

Local-Preference本地优先级属性。用于在AS内优选到达某一目的地的路由。反映了BGP Speaker对每条BGP路由的偏好程度。属性值越大越优。

Community团体属性。团体属性标识了一组具有相同特征的路由信息,与它所在的IP子网或自治系统无关。

 

 

 

Origin:

一般的,具体的实现按如下方式决定一条路由的Origin属性

某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP

通过network命令注入BGP的路由

通过EGP(RFC904)学到的路由,则origin属性为EGP

其他情形下,Origin属性都为 Incomplete

通过import命令注入BGP的路由

Origin属性值默认情况下不被任何路由器修改

该属性定义了BGP路径信息源头,实际上也就是BGP speaker产生BGP路由的方式,有如下三个值:

IGP:在BGP路由表中(用display bgp routing-table查看)将会看到“i”的标识。通过network命令宣告的路由,起点属性为IGP,此种方式也称为BGP信息的半动态注入。 network命令所宣告的网络来自于IGP协议(包括静态路由),这些路由是有选择性的通过network命令转换为BGP路由,所以称为“半动态”。

EGP:在BGP路由表中将会看到“E”的标识,通过EGP转化(import)的BGP路由将具备此属性,这个属性我们在现实网络中将很难遇到,因为EGP这个协议基本上已经退出了历史舞台。

Incomplete:在BGP路由表中将会有一个“?”标识,具备这种属性的路由是通过一些别的方式学到的,属于未知的不明确的状态。一般来说,是通过将IGP或者静态路由引入(import)以后产生的。因为无条件的把IGP信息引入到BGP可能会造成副作用——不要的或者错误的信息会泄露(leak)进BGP中,比如IGP中可能会包含很多仅仅用于AS内部的专用地址或者未经注册的地址。除此以外,这样做还有可能造成BGP的动荡(因为BGP的路由依赖于IGP路由),对此问题BGP提供了一个解决方案,路由衰减(ROUTE DAMPENING),此处我们将不再讨论。

         在这种情况下,我们必须要施加特殊的过滤,以确定哪些特定的网络可以从IGP注入到BGP中。对于能区分开内部和外部路由的协议,比如OSPF,我们可以通过配置来保证仅仅将内部路由注入到BGP中(VRP5中默认情况只会引入OSPF内部路由,并不会引入OSPF外部路由到BGP中);BGP的路由还可以通过引入静态路由并下发,这样做可以提高路由的稳定性。

起点属性三个值的优先顺序为IGP>EGP>INCOMPLETE,这三个值对于BGP的选路起着控制作用。

 

AS_PATH:

所谓AS_PATH是指BGP路由在传输的路径中所经历的AS的列表,是BGP中一个非常重要的公认必遵属性。 BGP不会接受AS_PATH属性中包含本AS Number的路由,从而避免了产生环路的可能。为此,BGP在向EBGP对等体通告一条路由时,要把自己的AS号加入到AS_PATH属性中,以记录此路由经过AS的信息,如果在路由更新消息中发现自己所在的AS号已经被包含在AS_PATH属性中,则表明该路由之前曾经通过该AS或者是源自于该AS,为避免路由环路,应该将此路由信息丢弃。

另外,AS_PATH属性在路径选择上也是一个很重要的衡量参数。当路由器中存在两条或者两条以上的到同一目的地的路由时,这些路由可以通过此属性比较相互之间的优劣,AS_PATH越短的路径越优先。注意:在大多数的实际网络中,多条路径的优劣往往是由AS_PATH来决定。

可以通过加长AS_PATH的列表长度,从而影响路径选择。

dis bgp rout查看

 

Next Hop:

         下一跳属性是一个公认必遵属性。BGP中的下一跳概念稍微复杂,它可以是以下三种形式之一:

1、BGP在向EBGP邻居通告路由时,或者将本地发布的BGP路由通告给IBGP邻居时,下一跳属性是本地BGP与对端连接的端口地址。如胶片所示,RTC在向RTA通告路由18.0.0.0/8时,下一跳属性为10.0.0.2 ;RTB在向RTA通告路由19.0.0.0/8时,下一跳属性为21.0.0.1。

2、对于多路访问的网络(广播网或NBMA网络),下一跳情况有所不同:如胶片所示,RTC在向RTA通告路由20.0.0.0/8时,发现本地端口10.0.0.2同此路由的下一跳10.0.0.3(指在RTC路由表中此路由的下一跳)为同一子网,将使用10.0.0.3作为向EBGP通告路由的下一跳,而不是10.0.0.2。(下一跳在传递过程中不修改)

3、BGP在向IBGP通告从其它EBGP得到的路由时,不改变路由的下一跳属性,而直接传递给IBGP邻居。如胶片所示,RTA通过IBGP向RTB通告路由18.0.0.0时,下一跳属性为10.0.0.2。这样做,有时会产生问题:如果RTB不知如何去往10.0.0.2,那么此BGP路由将失效。

  解决方法

   方法一:可以在RTA的BGP视图下引入直连路由;

   方法二:在RTA上,使用命令peer { group-name | ipv4-address } next-hop-local。此命令用来设置BGP向对等体组/对等体通告路由时,把下一跳属性设为自身的IP地址。

 

本地优先级属性(local-preference)

         Local-Preference是公认任意属性。

         为不同的路由进行修改local-preference优先级进行选路

在AS边界的路由器上设置(通常有两个或以上的边界路由器),每个路由器上为相同的路由路径设置不同的优先级,这些属性会一起发送给AS区域内的所有路由器,然后收到路由条目的,对每条路由进行比较local-preference优先级,越大的越优先,将优先级最大的路由条目选为最优路径

 

MED(Multi-Exit-DISC)属性

         可选非公认属性

         区别到达同一邻居AS的多条入口链路(MED值越小,链路越优先)

         通过EBGP发送MED值给对等体

         控制数据流怎样进入本AS内

         在本AS区域的边界路由器配置MED值,然后发送给同一AS区域的两个或者以上的边界路由器,发送时将同一条路由的MED值调为不同的值,发送给不同的路由器,另一区域的多个路由器会比较收到的MED值的大小,越小的优先级越高,则会选为最优路由

         在不同区域时,缺省情况下,不允许比较来自不同AS邻居的路由信息的MED值。但是,我们可以通过配置compare-different-as-med命令来允许比较来自不同自治系统中的邻居的路由的MED值。不过,除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用此命令。

 

 

团体(community)属性

团体是一组有相同性质的目的地址路由。目的就是将路由信息编组,通过组的标识决定路由传递的策略。

         在BGP的范围内,一个团体是一组有公共性质的目的地址。

每个AS的管理员都可以自己定义目的地址所属的团体,默认情况下,所有目的路由都属于常规Internet团体。

一条路由可以具有一个以上的团体属性值。如果在一条路由中包含有多个团体属性值,BGP路由器可以根据一个、一些或所有这些属性值来采取相应的策略。路由器在将路由传递给其他对等体之前可以增加或修改团体属性值。

         团体属性是由一些列4字节(0x000000000——0xFFFFFFFF)数值所组成

         团体属性数值定义从0x00000000到0x0000FFFF和从0xFFFF0000到0xFFFFFFFF被保留。

公认团体属性是公认的,具有全球意义。公认的团体有:

         NO_EXPORT(0xFFFFFFF01):路由器收到带有这一团体值的路由后,不应把该路由通告给一个联盟之外的对等体。(只在本AS之内传递)

                   route-policy NAME permit node ID

                   apply community no-export

                   quit

                   bgp ID

                   peer IP_ADDR MSAK route-policy NAME import

                   收到邻居发来的路由打上策略

                   默认不会发送属性值,所以发送给邻居时,要指明发送属性值

                   peer x.x.x.x advertise-community

         NO_ADVERTISE(0xFFFFFFF02):路由器收到带有这一团体值的路由后,不应把该路由通告给任何的BGP对等体。(包括IBGP和EBGP)

         NO_EXPORT_SUBCONFED(0xFFFFFFF03):路由器收到带有这一团体值的路由后,可以把该路由通告给它的IBGP对等体,但不应通告给任何的EBGP对等体(包括联盟内的EBGP对等体)。

除了这些公认的团体属性值外,私有的团体属性值也可以被定义用于特殊用途。这些属性值被一些数字所标示。通常都是前2字节由本地AS来编码,后2字节是一个0到65535之间的任意数值。(例如:AS690被定义为研发、教育和商务部所使用,团体属性数值应该被定义在0x02B20000到0x02B2FFFF(690:0~65535)之间)

 

BGP的路径选择:

1、如果此路由的下一跳不可达,忽略此路由

2、Preferred-Value值数值高的优先 (VRP5增加的新参数,指定对等体的首选值,数值越高越好 )

3、Local-Preference值最高的路由优先(默认值为100)

4、聚合路由优先于非聚合路由

5、本地手动聚合路由的优先级高于本地自动聚合的路由

6、本地通过network命令引入的路由的优先级高于本地通过import-route命令引入的路由(本地始发,当路由下一跳为0.0.0.0的优先)

7、AS路径的长度最短的路径优先

8、比较Origin属性, IGP优于EGP,EGP优于Incomplete

9、选择MED较小的路由

10、EBGP路由优于IBGP路由

11.、EBGP优先选择到BGP下一跳的IGP度量最低的路径

12、以上全部相同,则为等价路由,可以负载分担

注:AS_PATH必须完全一致

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

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

14、比较Originator_ID(如果没有Originator_ID,则用Router ID比较),选择数值较小的路径

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

猜你喜欢

转载自blog.csdn.net/x503809622/article/details/82629674