五、控制BGP路由

——————————————————————————————————————————————————

控制BGP路由概述

——————————————————————————————————————————————————
BGP路由是构成Internet路由核心,目前规模已经达到上千万条,在实际应用中,经常要对BGP路由进行过滤控制,以实现只接收或者只发送对本身业务有用的路由。而BGP与IGP最大的不同就在于其着眼点不在于发现和计算路由,而在于在不同AS之间控制路由的传播和选择最佳路由。

控制BGP路由可以通过两种方法实现:通过BGP的基本属性实现对BGP选路的控制。这种方法比较简单,主要是通过配置、修改BGP基本属性值以影响协议的选路,从而实现控制BGP路由的目的。二是通过配置过滤器来实现对BGO选路的控制和过滤。通过定义过滤器,以匹配路由的IP网段、BGP属性、AS路径列表等参数,实现对接收路由、发送路由及本地发布路由的控制。在使用过滤器中,常见的过滤器主要有Filter-policy、Router-policy、AS路径访问列表等。

——————————————————————————————————————————————————

一、利用BGP属性控制BGP路由

BGP协议具有丰富的路由属性,通过配置这些属性,可以影响协议的选路等。常见用于影响选路的属性有4个。

1、路由首选值(Preferred-value):BGP选择路由时,会首先丢弃下一跳不可达的路由,其次在优选Preferred-value值最大的路由。默认情况下,从对等体学到的路由的首选值为0,通过从某个对等体接收的路由配置首选值,从而提高从指定对等体学到的路由的优先级。

从对等体学到的路由首选值默认为0,可以配置首选值提高路由优先级。

2、本地优先级(Local-preference):用来判断流量离开AS时最佳路由,当BGP路由器通过不同的IBGP对等体得到目的地址相同,但下一跳不同的多条路由时,将选择Local-preference值较高的路由。通过配置改变BGP路由向IBGP对等体发送的路由Local-preference值,而影响IBGP对等体的选路。

实验里有Local-preference和MED的配置。一个是发送,一个是接收,还有两者的对象是谁,搞清楚这个逻辑关系这俩就搞清楚了。

3、MED(Multi-Exit-Disc):MED用来判断进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其他条件相同的情况下,优先选择MED值较小的作为最佳路由。通过配置来改变EBGP路由器向EBGP对等体发送的路由MED值,而影响EBGP对等体的选路。

4、下一跳(Next-Hop):缺省情况下,当路由器向IBGP对等体发布路由时,不将自身地址作为下一跳。但有时候为了保证IBGP邻居能够找到下一跳,可以配置将自身地址作为下一跳。

——————————————————————————————————————————————————

1.1.选路属性的案例演示

——————————————————————————————————————————————————

1.1.1.利用Preferred-value控制BGP路由选路示例

如图:AR1与AR2和AR3分别建立了EBGP邻居关系,AR1分别从AR2和AR3上 学习到了AS200自治系统内 192.168.1.0/24网段的路由。在AR1上配置从AR2接收的路由首选值为100,而从AR3接收到的路由首选值为0。由此可以提供从AR2学习到的路由优先级。从而实现AR1优先选择AR2到达目的网段192.168.1.0/24。

在这里插入图片描述

满足以上要求,AR1路由器上BGP配置为:
AR1:
bgp 100
peer 10.1.1.2 as-number 200
peer 10.1.1.6 as-number 200
peer 10.1.1.2 preferred-value 100 //优选Preferred-value值最大的路由

配置完成后使用 dis bgp routing-table查看路由信息,就可以看到PrefVal值的变化。路由最优。

——————————————————————————————————————————————————

1.1.2.利用Local-preference控制BGP路由选路示例

如图:AR4与AR2和AR3分别建立了IBGP邻居关系,而AR2和AR3也分别与AR1建立了EBGP关系,AR4可以通过对等体AR2或者AR3离开自己所在的AS200到达位于AS100的目的地址192.168.1.0/24网段。可以通过修改AR2及AR3的缺省本地优先级属性值方式来控制AR4离开AS200到达192.168.1.0/24网段的路径。 (当BGP路由器通过不同的IBGP对等体得到目的地址相同,但下一跳不同的多条路由时)

在这里插入图片描述

默认情况下,本地优先级属性为100,这样AR3的本地优先级属性值不做修改,修改AR2的属性值为200。配置如下:
AR2:
bgp 200
default local-preference 200

peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface loopback 0

配置完成后使用 dis bgp routing-table查看路由信息,就可以看到LocPrf值的变化。路由最优。

——————————————————————————————————————————————————

1.1.3.利用MED值控制BGP路由选路示例

如图:AR4与AR2、AR3分别建立了IBGP邻居关系,AR1和AR2、AR3也建立了EBGP关系。AR1可以通过对等体AR2、AR3进入AS200从而达到目地网络192.168.1.0/24,通过修改AR2和AR3的缺省MED值属性,可以控制AR1进入AS200的路径。
在这里插入图片描述
默认情况MED值为0,只需修改AR2的MED值即可。
AR2:
bgp 200
default med 100

通过dis bgp routing-table可以查看陆游信息。MED属性栏目会显示。

——————————————————————————————————————————————————

1.1.4.利用Next-hop-local控制BGP路由选路示例

如图:AR5和AR6建立IBGP对等体,AR6和AR7建立EBGP对等体。AR7把192.168.1.0/24的路由通告给EBGP对等体AR6。该路由的下一跳为10.1.1.2/30,而AR6把从AR7学习到的路由192.168.1.0/24通告给其IBGP对等体AR5时,并不修改该路由的下一跳,那么此时AR5学习到的192.168.1.0/24网段路由下一跳依然是10.1.1.2/30。

如果在AS100内部没有到达网段10.1.1.2/30的IGP路由,那么很有可能在AR5上出现找不到下一跳的情况,最终导致丢弃数据包,在这种情况下,可以配置AR6向IBGP对等体发布路由时可以以自身的地址作为下一跳。

在这里插入图片描述

AR2:
bgp 100
peer 5.5.5.5 as-number 100
peer 10.1.1.2 as-number 200
peer 5.5.5.5 next-hop-local

peer 10.1.1.2 connect-inteface loopback 0

通过dis bgp routing-table可以查看下一跳信息。

——————————————————————————————————————————————————

二、利用过滤器控制BGP路由

通过配置过滤器可以在路由的发布、接收和引入过程中应用策略来对路由进行控制。几种常见的过滤器主要作用和应用场景不同。

1、Filter-policy:可以实现对接收到的路由或者发布的路由进行过滤,实现控制BGP路由的目的,但是无法修改BGP的属性值。

2、Router-Policy:功能最强大的过滤器,不仅可以在路由的发布、接收和引入等环节对路由进行过滤,而且可以对符合规则的路由增加或修改相关的路由属性。

3、AS路径访问列表:多用于多AS网络环境中,针对AS而不是具体的路由进行控制。通过AS路径访问列表能够轻易的筛选出和指定AS相关的路由信息,从而实现对BGP路由控制。

——————————————————————————————————————————————————

2.1.过滤器的案例演示

——————————————————————————————————————————————————

2.1.1.Filter-Policy控制BGP路由示例

如图:AR1和AR2建立EBGP关系,AR2会把自己使用的BGP路由通过给自己的EBGP对等体AR1,AR1学习到这些BGP路由后,经过路由选择过程,将有效路由导入到IP路由表中。在AR1路由器上执行dis ip routing-table,可以看到AR1学习到的BGP路由。
在这里插入图片描述
按照图例来说。在AR1上,学习到了192.168.1.0/24和192.168.2.0.24,还有直连路由10.1.1.0/30。

算了还是配置下吧。。

AR1的邻居状态
在这里插入图片描述

AR2的邻居状态
在这里插入图片描述

AR1的路由表:学习到了192.168.1.0/24和192.168.2.0/24的路由。
在这里插入图片描述

如果希望把目的网段192.168.1.0/24的路由在从BGP路由导入到IP路由表的过程中过滤掉,192.168.2.0/24的路由照样接收,那么可以在AR1上配置Filter-policy对接收的BGP路由进行过滤来实现。

AR1:
[AR1]ip ip-prefix 1 index 10 deny 192.168.1.0 24
[AR1]ip ip-prefix 1 index 20 permit 192.168.2.0 24
[AR1]bgp 100
[AR1-bgp]filter-policy ip-prefix 1 import

这里说下Filter-policy的命令解释:
filter-policy { acl-number | ip-prefix ip-prefix-name } { export | import } [direct | is-is process-id | ospf process-id | rip process-id | static ]
acl-number:指定ACL访问列表。取值范围2000-3999。
ip-prefix-name:指定用于匹配路由信息目的地址域或地址前缀列表,为1-19个字符的字符串。
direct:直连路由
is-is process-id | ospf process-id | rip process-id | static:协议进程号
import:用来对接收的路由信息进行过滤。export:用来对发布的路由信息进行过滤。

看看路由表,在AR1上已经过滤了192.168.1.0/24的网段。如果配置了export,那么在AR1还会接收路由,但是在区域发布的时候,就过滤掉了。

在这里插入图片描述

在回顾下:Filter-policy:可以实现对接收到的路由或者发布的路由进行过滤,实现控制BGP路由的目的,但是无法修改BGP的属性值。

——————————————————————————————————————————————————

2.1.2.Route-Policy控制BGP路由示例

1、配置Router-policy步骤

Route-policy是实现路由策略的工具,它不仅可以匹配路由信息的某系属性,还可以在条件满足时改变路由信息的属性。配置一般步骤为:首先配置过滤列表,例如ACL,地址前缀表等。通过这些列表可以从众多的路由信息中挑选出要修改、控制或者过滤的路由。也可以根据路由信息中不同属性作为匹配依据进行设置,例如目的地址、发布路由信息的路由器地址等。

第一步就是配置ACL访问列表或地址前缀表。

其次定义Route-policy,包括3个动作。节点及工作模式、指明匹配规则、指定动作。
——————————————————————————————————————————————————

节点及工作模式

一个路由策略可以由多个节点(node)构成,每个节点匹配检查一个单元。在匹配过程中系统按节点序号升序依次检查各个节点。节点有两种工作模式,permit和deny。

permit:当指定节点的匹配模式为允许模式。当路由信息通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点的测试,如果路由信息没有通过该节点过滤,将进行下一个节点继续测试(就和ACL规则一样,逐行扫描)。

deny:指定节点的匹配模式为拒绝模式。(此模式下apply子句不会被执行)。当路由项满足该节点的所有if-match子句时,将被拒绝通过该节点,不进入下一个节点的测试,如果路由项不满足该节点的if-match子句,将进入下一个节点继续测试。

如果路由策略中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit。如果路由策略的所有节点都是deny模式,则没有路由信息能通过该路由策略。。。这和ACL的原理是一回事。。。(拒绝一个,最好接下来允许所有,要不然全通过不了,全断了)

定义if-match语句,指明匹配规则

匹配对象是路由信息的一些属性,即路由信息通过当前Route-policy所满足的条件。对于同一个Route-policy节点,在匹配的过程中,各个if-match子句间是与的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。在一个节点中可以没有if-math子句,也可以有多个。当不指定if-match子句,如果该节点的匹配模式为允许模式,则所有的路由信息都会通过该节点的过滤。如果匹配的模式为拒绝模式,则所有的都会被拒绝。

定义apply语句,指定动作

也就是满足由if-match子句指定的过滤条件后所执行的一些配置命令,用于对路由的某些属性进行修改。

——————————————————————————————————————————————————

2、配置Router-policy命令

执行命令route-policy:创建route-policy,指定名称、节点索引号、匹配模式等参数。
执行命令if-match(匹配规则):设定路由信息的匹配条件,包括ACL、Ip-Prefix、AS路径、团体等。
执行命令:apply:(动作):指定通过过滤后所执行的动作。包括AS路径、团体、Origin、本地优先级、首选值等。

这些具体的参数如何应用,到时候会专门写路由策略和策略路由的时候会详细介绍。这里会讲一个示例。

还是这个图:AR1和AR2建立EBGP关系,AR2和AR3建立IBGP关系。AR3将网段192.168.1.0/24和192.168.2.0/24以Network方式在BGP中发布,并发布给AR2,然后再由AR2发布到AR1。
在这里插入图片描述
在AR1的路由表中,从AR2接收到的这两条BGP路由的Origin属性为IGP。

在这里插入图片描述

如果管理员希望把从AS200学习到的BGP路由起点属性修改为Incomplete,那么可以通过在AR1上配置路由策略对接收的BGP路由信息修改其起点属性来完成。

AR1:
[AR1]route-policy asinc permit node 10 //创建名为asinc的路由策略。
[AR1-route-policy]if-match as-path 200 //匹配的规则,匹配as_path 为AS 200。
[AR1-route-policy]apply origin incomplete //执行动作。设定origin为incomplete。

策略创建完,还要应用策略,才可以生效。
[AR1]bgp 100
[AR1-bgp]peer 10.1.1.2 route-policy asinc import //从邻居对等体接收的路由应用名为asinc的路由策略改变其Origin类型值。

查看下路由信息。看到AR1收到AR2接收的BGP路由起点属性标志位?,也即:incomplete。
在这里插入图片描述

——————————————————————————————————————————————————

2.1.3.配置AS路径过滤列表控制BGP路由示例

运行在Internet上的路由器负责维护整个internet路由表,其BGP路由数量目前已经很庞大,仅通过ACL或者底子前缀列表来控制或过滤BGP路由,配置工作非常繁杂。在BGP的路由信息中,包含了自治系统路径域的信息,也就是这条路由从产生到目前经过了哪些自治系统的传播。AS路径过滤列表也称为AS_path List,实现针对自治系统路径域指定匹配条件,从而进行路由控制的过滤器。实际上可以认为AS路径过滤列表是一个基于AS_path的ACL,仅用于BGP。

AS路径列表使用正则表达式来对路由所携带的AS路径属性进行匹配。正则表达式是按照一定的模板来匹配字符串的公式。例如:定义一个字符串公式为^100.*200$,用来表示匹配所有从AS100开始,以AS200结束的AS路径域。

其实不去操作大规模的BGP路由,这些东西可能这辈子都用不上。就当实验体验体验了。很多东西的学习是为了让我们更好的开阔自己的思维。

正则表达式可以通过多种字符串来表达。常见的操作符及含义如下:

\:转义字符
.:匹配除\n之外任何单个字符,包括空格。
*:之前的字符在目标对象中出现0次或连续多次。
+:之前的字符在目标对象中出现1次或连续多次
|:竖线左边和右边的字符为或的关系。
^:之后的字符必须出现在目标对象开始
$:之前的字符必须出现在目标对象的结束。
[xyz]:匹配方括号内列出的任意字符
[ ^xyz ] :匹配除了方括号内列出的字符外的任意字符。
[ a-z ] :匹配指定范围内的任意字符
[ ^a-z ] :匹配不再指定范围内的任意字符。
{ n } :n是一个非负整数,匹配连续出现的确定n次。
{ n, } :n是一个非负整数,匹配连续出现的至少n次。
{ n,m } m和n均为非负整数,且n ≤ m。匹配连续出现的次数为n~m次。

AS路径列表配置

配置命令:ip as-path as-path-number { deny | permit } regular-expression。
as-path-number :指定AS路径过滤列表号,取值范围1~256。
deny:指定AS路径过滤列表的匹配模式为拒绝模式,permit反之。
regular-expression:AS路径正则表达式,为1~50个字符的字符串。

在BGP协议的路由信息中,包含一个AS路径域,在BGP协议交换路由信息的过程中,该路由所经过的所有AS都会记录中这个域中。试图识别AS路径列表就是要把其中一个正则表达式进行比较。一个正则表达式就是用一个公式代表的字符组合,例如:^200.*100$表示匹配所有AS200开始,以AS100结束的AS路径域。

配置命令peer{ group-name | ip-address } as-path-acl as-path-acl-number { export | import }

如图:还是上个图,加了2个区域,自治系统AS100,可以从AS200和AS300获取外部的路由,但近期AS100的管理员发现从AS200始发的路由频繁发生路由震荡,对AS100自治系统的路由器影响很大,因此决定,暂时屏蔽所有AS200始发的路由。先把BGP配置好。
在这里插入图片描述

配置完看AR1的路由表,就看10.1.1.16/30段的路由。是对等体谁通告过来的。
在这里插入图片描述

AR1:
[AR1]ip as-path 1 deny 200$
[AR1]ip as-path 1 pe
[AR1]ip as-path 1 permit .*
[AR1]bgp100
[AR1-bgp]peer 10.1.1.2 as-path 1 import
[AR1-bgp]peer 10.1.1.10 as-path 1 import

AS200始发的路由可以通过AS200直接发往AS100,也可以通过AS400、AS300发往AS100。所以其过滤规则应用到了两个EBGP对等体。
在这里插入图片描述

——————————————————————————————————————————————————

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值