浅谈aspath及基于aspath的路由过滤Word文件下载.docx

上传人:b****6 文档编号:20679580 上传时间:2023-01-25 格式:DOCX 页数:10 大小:109.63KB
下载 相关 举报
浅谈aspath及基于aspath的路由过滤Word文件下载.docx_第1页
第1页 / 共10页
浅谈aspath及基于aspath的路由过滤Word文件下载.docx_第2页
第2页 / 共10页
浅谈aspath及基于aspath的路由过滤Word文件下载.docx_第3页
第3页 / 共10页
浅谈aspath及基于aspath的路由过滤Word文件下载.docx_第4页
第4页 / 共10页
浅谈aspath及基于aspath的路由过滤Word文件下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

浅谈aspath及基于aspath的路由过滤Word文件下载.docx

《浅谈aspath及基于aspath的路由过滤Word文件下载.docx》由会员分享,可在线阅读,更多相关《浅谈aspath及基于aspath的路由过滤Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。

浅谈aspath及基于aspath的路由过滤Word文件下载.docx

公网边界BGP路由器接入私网AS路由时必须去掉路由as-path中的Privateas-number,否则与其它私网AS发生冲突。

2.as-path自治系统路径

as-path是BGP三个众所周知且必须携带的属性(Well-kownmandatoryattribute)之一,也是BGP防止路由环路和进行路由优选的一个重要参数。

as-path由一系列as-number及空格、()、{}等特殊符号构成一个字符串,例如:

200300788、(6500165002)387456、654400{99100101}。

例一as-path在自治系统联盟中的变化情况

例二:

一个BGP路由表

UPNE16L#showipbgp

BGPlocalrouterIDis16.16.16.15

Statuscodes:

ssuppressed,ddamped,hhistory,*valid,>

best,iinternal

Origincodes:

i-IGP,e-EGP,?

-incomplete

NetworkNextHopLabelMetricLocPrfPath

*>

20.0.0.0/160.0.0.00/0{99,100}i

20.0.0.0/17200.0.0.10/02000100{99}i

20.0.0.0/24200.0.0.10/02000100i

20.0.1.0/24200.0.0.10/0200010099i

20.0.2.0/240.0.0.00/0i

20.1.0.0/160.0.0.00/0?

20.1.0.0/240.0.0.00/0i

20.1.1.0/24200.0.0.10/02000100i

30.0.0.0/16200.0.0.10/0200010099?

下面是几种常见的as-path属性字符串:

♦空字符串:

表示此路由为本自治系统内部产生的路由(本路由发布的或从iBGP邻居学到的)。

♦200201300:

从AS300始发(发布)途经AS201、AS200,最后到达本AS的一条路由,注意路由实际可能起源一个PrivateAS(privateas-number在公网BGP路由器上被删除)。

♦6451264513:

这是一个在公网边界BGP路由器上收到的典型的私网AS路由,从AS64513始发经AS64512到达本路由器。

公网边界BGP路由器在向核心网络转发这条路由前一定要使用remove-private-as命令删除这两个privateas-number。

♦(6500165002)387456:

这是一个在配置了自治系统联盟的BGP路由器上收到的典型路由;

()中包含的是途径的联盟内部路径,从AS456始发经AS387进入本自治系统联盟,再经ASconfederation(自治系统联盟)成员AS65002、AS65001到达本BGP路由器。

注意这种as-path只能在联盟内部看到,出联盟时(6500165002)被替换成联盟as-number(即confederationidentifier)。

♦654400{99100101800900}:

这是一条典型的使用aggregate-address(带as-set参数)命令聚合后的汇聚BGP路由,聚合发生在AS400中,路由的起源AS已无法分辨,{}中包含的是形成本聚合路由的各子网路由到达AS400前所途径的所有AS的as-number的集合(不重复),如此例中{99100101800900}。

关于BGP路由聚合、BGP联盟、BGP路由反射器的详细内容请参阅相关资料,本文不做详细描述。

3.as-pathaccess-list

类似IP包过滤使用(ip)access-list定义过滤原则,as-path过滤使用as-pathaccess-list定义对as-path的过滤规则:

ipas-pathaccess-listnumberpermit|denyregexp,即定义一个regularexpression(正则表达式)。

使用正则表达式来匹配as-path。

as-pathaccess-list的配置方法、匹配顺序和标准的access-lsit类似:

支持多个子序列(序列间是“或”关系)、匹配顺序按序号从小到大。

4.regularexpression正则表达式

正则表达式是一种匹配字符串的形式和方法,它通过一组有特殊意义的标记和既定的规则来进行字符串的匹配。

as-pathaccess-list中使用的正则表达式可以匹配任何形式的as-path字符串。

4.1正则表达式的结构

一个正则表达式由以下部分灵活搭配构成:

♦基本数字符:

♦“0”-“9”中的任何一个,用于组成as-number。

♦范围:

♦[]括起来的一系列基本数字符或用连字符“-”连接的起始、终止基本数字符。

范围用于限制输入字符串中的单个数字符的取值范围。

例如:

[123456]与[1-6]都表示单个数字符的取值范围为“1”到“6”。

♦替代符:

♦|expr1|expr2如果子表达式expr1或expr2匹配输入字符串,则表达式expr1|expr2匹配输入字符串。

如:

21|22可以匹配输入字符串:

“2130”、“223040”。

♦通配符:

♦.匹配输入字符串中任何单个字符(包括基本数字符、分隔符等),如:

1.2可以匹配输入字符串“112”、“182”、“12”等。

♦^匹配输入字符串的开始,如:

^12400可以匹配输入字符串“12400”、“12400501”等。

♦$匹配输入字符串的结束,如:

20010$可以匹配输入字符串“20010”、“10020010”等。

♦_匹配输入字符串中的任何单个分割符(字符串的开始、结束、空格、TAB、逗号、左括号(、右括号)、左大括号{、右大括号}),如:

100_200可以匹配输入串“100,200”、“100(200”、“100200”、“100200”等。

♦字符匹配组:

♦()可以将一个正则表达式组成一个字符匹配组以便形成更大的正则表达式。

字符匹配组可以多层嵌套。

(10|11)120可以匹配输入字符串“10120”、“911120130”等。

♦特殊字符:

♦\\放在单个字符或符号的前面将去除该字符或符号在正则表达式中的特殊意义,用于匹配输入字符串中的这个字符或符号。

\(200匹配输入字符串“(200100)100”、“101(200100)”等。

♦重复操作符:

重复操作符跟在单个字符或字符匹配组的后面,匹配它们在输入字符串中的连续重复出现。

♦*重复0或多次。

90*匹配输入字符串“9”、“90”、“900”等。

♦?

重复0或1次。

90?

匹配输入字符串“9”、“90”,不匹配“900”。

♦+重复1或多次。

90+匹配输入字符串“90”、“900”等,不匹配“9”。

4.2正则表达式的匹配原则和示例

4.2.1简单的字符串匹配

正则表达式中的简单字符串匹配输入字符串中的任何等价子串,即只要输入的as-path字符串中任何连续包含这个简单字符串就算匹配成功。

示例:

expression:

31as-path:

“213317231631”

匹配结果(彩色部分):

4.2.2替代表达式的匹配

由替代符|分隔的多个子表达式构成一个大的替代表达式:

expr1|expr2|....|exprn

替代表达式的匹配结果是各个子表达式对输入字符串匹配的结果取“或”值,即任一子表达式的匹配成功则整个替代表达式对输入字符串匹配成功。

21|31as-path:

4.2.3范围与字符通配符的匹配

范围与字符通配符结合可以匹配较复杂的输入字符串。

[1-3].[34]as-path:

“213317231631”、“213317231631”

4.2.4包含分隔通配符的表达式的匹配

在实际应用中经常要对as-path字符串的起、止进行匹配。

^21as-path:

“213317231631731”

21$as-path:

_31_as-path:

“21331731231631731”

4.2.5包含字符匹配组的表达式的匹配

通过使用匹配组可以组合小的表达式形成大的表达式进而匹配更复杂的输入字符串。

(213|218)_31as-path:

“213317121831631”

“213317121831631”

4.2.6包含特殊字符的表达式的匹配

对于as-path中包含()的情况,必须使用\(进行特殊字符的匹配。

^\(213_as-path:

“(213317)121831631”

4.2.7使用重复操作符的表达式的匹配

对于类似使用as-pathprepend功能路由匹配,必须要使用重复操作符创建表达式。

_23(_78)?

_45as-path:

“2345”和“237845”

“2345”、“237845”

4.3常用的正则表达式

下面是一些经常要用到的as-path正则表达式的示例:

♦_100_经过AS100的路由

♦^100$源自AS100,中间不经过其他AS的路由

♦_100$源自AS100的路由

♦^100_.到AS100后面的其它网络的路由

♦^[0-9]+$as-path只包含一个as-number的路由

♦^$本地AS始发的路由

♦.*任何路由

♦}$as-path中包含as-set的路由

♦^\(经过自治系统联盟成员AS的路由

5.as-pathaccess-list配置说明

在NE路由器和CISCO路由器上,使用如下命令定义一个as-pathaccess-list:

命令格式:

ipas-pathaccess-listnumberpermit|denyregexp

参数说明:

number:

控制列表编号,1-199。

permit/deny:

允许还是禁止。

regexp:

用于过滤as-path的正则表达式,如表达式中包含非法字符则过滤失败。

由于一条命令只允许定义一条正则表达式,对于复杂的过滤条件,只能重复使用此命令定义控制列表的子序列,需要注意的是一定要按顺序定义(因为子序列之间是“或”的关系)。

例:

要求在路由器A上定义一个as-path控制列表,允许接收源自AS100或AS101或本自治系统始发的路由。

router(config-router)#ipas-pathaccess-list1permit_100|101$

router(config-router)#ipas-pathaccess-list1permit^$

6.as-pathaccess-list的应用

6.1与filter-list配合过滤与BGP邻居之间的路由收发

使用命令:

neighbor{group-name|neighbor-address}filter-listaspath-list-number[in|out]

aspath-list-number:

指定已配置好的as-pathaccess-list;

取值范围1-199。

in|out:

控制路由过滤的方向,in表示对从此邻居接收的路由进行过滤,out对发送的路由进行过滤。

6.2与route-map配合进行路由过滤和路由属性设置

使用命令1:

route-mapmap-name{permit|deny}sequence-number

使用命令2:

neighbor{group-name|neighbor-address}route-mapmap-name

[in|out]

命令说明:

使用route-map过滤与BGP邻居间的路由交换、进行路由属性设置。

使用命令3:

table-mapmap-name

对所有从BGP邻居学到的路由进行属性设置。

map-name:

指定route-map的名字。

6.3使用as-pathprepend控制回程路由(补充)

as-pathprepend的使用虽然本身不涉及as-pathaccess-list,但做为as-path的一种重要的应用,我们在此一并简单介绍一下:

大家知道,BGP优选路由的原则是:

1>

忽略下一跳不可达的路由

2>

优选weight最大的路由(Cisco支持,VRP不支持)

3>

优选local-preference最大的路由

4>

优选本路由器发布的路由

5>

优选as-path最短的路由

........

我们可以看到,as-path长短对路由控制的优先级高于我们常用的MED属性,而且由于MED属性不能跨越邻居AS(如要跨越需在邻居AS的EBGP上重新设置MED值,这几乎是不可能的)所以造成MED只能用在到一个邻居AS有多条连接的组网中;

而对于用户网络AS连接到多个不同ISPAS的这种组网中,在不能改动ISPEBGP路由器配置的情况下,只有使用as-path的长短来控制远端网络的回程路由才是唯一的解决办法。

修改as-path长短的唯一命令就是as-pathprepend(在route-map中配置):

命令格式1(VRP格式):

setas-pathas-number[as-number.....]

命令格式2(IOS格式):

setas-pathprependas-number[as-number.....]

在route-map中对特定路由的as-path附加冗余as-number以加长as-path的长度。

特别注意:

一般情况只允许附加本AS的as-number,否则容易导致路由混乱。

应用示例:

组网如下图所示,这是一个典型的多穴用户网络接入Internet的组网,用户网络使用保留自治系统号65001,通过2条上行链路接入不同的ISP实现Internet接入的安全备份。

要求:

1、用户网络不能成为TransitAS。

2、用户网络对于ISP3内部网络的访问优先使用经过ISP1的路由。

用户EBGP路由器上的配置:

(说明:

以下配置只实现上述2个路由过滤要求,实际应用中还需配置很多其它数据)

启动BGP

RouterA(config)#routerbgp100

指定BGP要发送的网络

RouterA(config-router-bgp)#networkA.B.C.D

配置EBGP对等体

RouterA(config-router-bgp)#neighbor10.0.0.1remote-as100

RouterA(config-router-bgp)#neighbor20.0.0.1remote-as101

配置as-pathaccess-list1用于过滤与两个ISP之间的路由交换,只发送本地AS始发路由

Router(config)#ipas-pathaccess-list1permit^$

配置as-pathaccess-list2用于匹配从ISP3始发且途径ISP1的路由

Router(config)#ipas-pathaccess-list2permit_100_200$

定义一个Route-map,一个名为set_lp_200,将as-path匹配_100_200$的路由的local-preference属性设置为200,其它情况设置为100。

RouterA(config)#route-mapset_lp_200permit10

RouterA(config-route-map)#matchas-path2

RouterA(config-route-map)#setlocal-preference200

RouterA(config-route-map)#exit

RouterA(config)#route-mapset_lp_200permit20

RouterA(config-route-map)#setlocal-preference100

RouterA(config-route-map)#exit

应用As-pathaccess-list1过滤到ISP1、ISP2边界路由器的出口路由更新上,route-mapset_lp_200到ISP1边界路由器的入口路由更新上。

RouterA(config)#routerbgp65001

RouterA(config-router-bgp)#neighbor10.0.0.1filter-list1out

RouterA(config-router-bgp)#neighbor20.0.0.1filter-list1out

RouterA(config-router-bgp)#neighbor10.0.0.1route-mapset_lp_200in

结束语

本文只是重点对BGP路由属性as-path及匹配as-path的as-path正则表达式、控制列表及as-path属性的应用进行了简单的介绍,BGP协议是当前控制能力最强、路由策略最丰富的路由协议之一,还有其它如Origin、community、MED等十余种路由属性可用于路由策略的定制,这些属性的灵活搭配使BGP具有十分强大的路由控制能力,关于这些属性及BGP协议其它方面的内容请参考相关技术资料。

参考资料:

[1]Cisco,“ConfiguringBGP”Ciscowebsite

[2]Cisco,“RouteFilteringandRouteSelectioninBGP”Ciscowebsite

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1