您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 浅谈as-path及基于as-path的路由过滤
浅谈as-path及基于as-path的路由过滤摘要:本文主要针对BGPas-path属性和as-pathfilter的概念、配置和使用做了介绍,重点讲解AS正则表达式的配置和匹配关系,并对使用as-pathaccess-list进行BGP路由过滤的应用举例进行了简单介绍。关键词:BGPas-pathaccess-list路由过滤缩略语:BGPBorderGatewayProtocol边界网关协议ASAutonomousSystem自治系统随着NE路由器、S8016等高端设备的网上位置不断提升,很多应用中都是作为BGP路由器来承担路由交换的核心任务。在BGP的路由策略实施中,as-path、as-pathaccess-list是最常使用过滤方法之一。as-path是BGP协议中的一个非常重要的路径属性(Pathattribute),它顺序记录了一条BGP路由从源AS到目的AS所经过的路径(由源到目的所途径的所有as-number组成一个字符串,不包含目的as-number;as-number-自治系统号);每一条BGP路由都携带as-path属性,所以我们可以通过对as-path属性的过滤来灵活实现对BGP路由的过滤。as-pathaccess-list主要应用在以下几个方面:对BGP路由的收发过滤,使用neighborA.B.C.Dfilter-listin/out。限制仅本地(AS)产生的路由允许向自治系统外发送,避免成为TransitAS,as-path必须为空。基于as-path中的特定as-number选择接收/发送路由。对BGP路由其他属性的设置、修该,使用route-map、matchas-path、set等命令。1.as-number自治系统号在路由协议中,as-number用于标识不同的自治系统,在as-path中同样使用as-number记录经过的自治系统,在BGP中自治系统号是一个32bit的数字(1-65535)。与IP地址类似,as-number也分为public、private两类:Publicas-number:公网使用的as-number,由InterNIC或RIPE统一管理和分配,范围为1-64511。Privateas-number:保留给私有网络使用,此类as-number不能出现在使用公网扩散的BGP路由的as-path属性中,取值范围为64512-65535。公网边界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#showipbgpBGPlocalrouterIDis16.16.16.15Statuscodes:ssuppressed,ddamped,hhistory,*valid,best,iinternalOrigincodes:i-IGP,e-EGP,?-incompleteNetworkNextHopLabelMetricLocPrfPathAS42AS12AS14AS61AS62AS63AS64X(61)12X12X(61)12X(61)12X(61)12X(6261)12X(6361)12X4212*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”匹配结果(彩色部分):“213317231631”4.2.2替代表达式的匹配由替代符|分隔的多个子表达式构成一个大的替代表达式:expr1|expr2|....|exprn替代表达式的匹配结果是各个子表达式对输入字符串匹配的结果取“或”值,即任一子表达式的匹配成功则整个替代表达式对输入字符串匹配成功。示例:expression:21|31as-path:“213317231631”匹配结果(彩色部分):“213317231631”4.2.3范围与字符通配符的匹配范围与字符通配符结合可以匹配较复杂的输入字符串。示例:expression:[1-3].[34]as-path:“213317231631”匹配结果(彩色部分):“213317231631”、“213317231631”4.2.4包含分隔通配符的表达式的匹配在实际应用中经常要对as-path字符串的起、止进行匹配。示例:expression:^21as-path:“213317231631731”匹配结果(彩色部分):“213317231631731”expression:21$as-path:“213317231631731”匹配结果(彩色部分):“213317231631731”expression:_31_as-path:“21331731231631731”匹配结果(彩色部分):“213317231631731”4.2.5包含字符匹配组的表达式的匹配通过使用匹配组可以组合小的表达式形成大的表达式进而匹配更复杂的输入字符串。示例:expression:(213|218)_31as-path:“213317121831631”匹配结果(彩色部分):“213317121831631”4.2.6包含特殊字符的表达式的匹配对于as-path中包含()的情况,必须使用\(进行特殊字符的匹配。示例:expression:^\(213_as-path:“213317121831631”匹配结果(彩色部分):“(213317)121831631”4.2.7使用重复操作符的表达式的匹配对于类似使用as-pathprepend功能路由匹配,必须要使用重复操作符创建表达式。示例:expression:_23(_78)?_45as-path:“2345”和“237
本文标题:浅谈as-path及基于as-path的路由过滤
链接地址:https://www.777doc.com/doc-7878331 .html