浅谈aspath及基于aspath的路由过滤Word文件下载.docx
- 文档编号:20679580
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:10
- 大小:109.63KB
浅谈aspath及基于aspath的路由过滤Word文件下载.docx
《浅谈aspath及基于aspath的路由过滤Word文件下载.docx》由会员分享,可在线阅读,更多相关《浅谈aspath及基于aspath的路由过滤Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
公网边界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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浅谈 aspath 基于 路由 过滤