回复 #1 日出东方 的帖子
话说当年,令狐冲成功推出S8016R001,实现了Vlan之间的互通,一时之间名躁江湖。 但是人们的欲望总是难以满足,随着《藏龙卧虎》《天脉传奇》等影片的热播,全世界范围内兴起了一片武学热潮。华山派、嵩山派、少林派等等名门大派又在福建、广西、广东甚至欧美等地开办了分舵,进行网上教学。 各个门派当然都有自己地独门秘笈,不希望其它门派地人偷师学义。三层交换机能做地就是划分不同地Vlan,然而不同Vlan之间还是能够互访,好在8016还有强大的Qos功能。通过配置Qos规则可以进行Vlan之间互访的控制。可惜好景不长,当分舵越来越多,组网错综复杂地时候,Vlan+ACL的配置方法就显得太繁杂了,每增加一个分舵,就需要在所有分舵上相应的修改Qos配置,可谓牵一发而动全身。身为配置员的令狐冲必须对每个门派的所有的网络拓扑了如指掌,而且每增加一个分舵,他至少需要用去一天的时间小心翼翼的进行大量的Vlan+Qos 配置。眼看着灵珊师妹跟那个林平之说说笑笑,而自己却要整日跟ACL 纠缠在一起,令狐冲就茶饭不思,夜不能寐。。。
这晚,令狐冲因心中郁闷,辗转反侧无法入睡,便跑到思过崖上舞剑浇愁。正在酣畅淋漓之时,突然听得有人笑叹道:“果然天资过人,怎奈为情所累,可惜!可惜!”。
令狐冲赶忙收招,这才发现自己不知不觉中竟然正在演练“冲灵剑法”,心下不禁黯然。
只见一个仙风道骨、鹤发童颜的老人站在面前,令狐冲大喜,忙上前拜见道:“晚辈愚鈍,请风师祖指点迷津”。
风清扬听了令狐冲的困惑,捻须微笑说道:“年轻人应当跟进技术的发展,整天沉溺于儿女之情,不能自拔,焉能成其大志?”。令狐冲惭愧道:“多谢师叔祖教导,晚辈知错,只是情不自禁。”。
风清扬迎风而立,缓缓说道:“你乃是性情中人,本无可厚非,只是“情”乃人间“可遇而不可求”之物,怎可因情废学?有一种新的技术,它可以实现私网的隔离,使用标签交换协议转发报文,安全性非常高,你可知道是什么?”
令狐冲大喜,问道:“如果两个分舵之间相隔千里,也可以实现互通,并且可以和其他门派的人隔离吗?”
“不错”
“这种技术叫做虚拟私有网--VPN,它由P、PE和CE设备组成,CE设备是各个地方分舵的路由器或者交换机,它由各个分舵来管理维护;PE是服务提供商的路由器,它由服务提供商维护”,风清扬边画边讲解,“例如,图中绿色线路为华山派的虚拟私网,红色线路为嵩山派的虚拟私网,虽然他们共用相同的链路PE1-P1-P2-PE2,但是门派之间却感觉不到,就好像整个网络都是一个门派在使用,隔离安全性非常好。”
“为什么它的隔离安全性好呢?”令狐冲有点疑惑。
“因为它使用了多个转发表。PE路由器为每个门派保存不同的转发表,所有与门派有关的信息只保留在PE上,P路由器无需保存,每个门派的弟子上网只能查到属于本派的路由信息。”
“听起来不错,只是弟子愚笨,不知MPLS VPN的配置是否太复杂?”令狐冲想起了他比较关心的问题。
“命令的确比较复杂,但是如果理解了它的原理,再按照我的天龙八部法则配置几遍,熟能生巧,不出一个时辰就可以灵活运用了。”
令狐冲大喜过望。
“其实L3VPN的复杂就在PE设备上,P设备和CE设备的配置比较简单,而且配置后即使网络拓扑有了很大变化,配置也不需要太多的改变。而PE设备上的配置只需按照这“天龙八部”即可搞定。”
“第一步-》标识配置。配置标识配置便如高手过招先自报家门。需要配置的标识主要有:Hostname ; Int loopback 0(必须配置);router id; mpls lsr id(必须配置)”
“第二步-》Vrf 配置。这也是L3VPN配置的精华所在,通过VRF的引入引出关系可以灵活的划分私网,组成各种复杂的拓扑结构,如果能够熟练掌握,融汇贯通,便可以变换出无穷无尽的组网方式:如Hub-Spoken,CE双归属等等,而且可以和各种业务叠加应用,当真是妙趣无穷。”
“第三步-》公网接口配置。公网接口就是指PE与P设备之间的接口,这是三层交换机中最基本的配置,朴实无华,但是万变不离其宗。”
“第四步-》私网接口配置。私网接口就是指PE与CE设备之间的接口。当一个接口使用Ip vrf for XX 命令绑定了一个VRF的时候,该接口就变成一个私网接口了, 需要注意有三点:1、每个私网接口只能绑定一个VRF,但多个私网接口可以绑定相同的VRF。2、每当绑定和去除VRF的时候,私网接口的地址都会被删除,你需要重新配置。3、私网的接口路由存在于相应的私网路由表中--也就是说show ip route 是看不到私网接口路由的,你必须使用show ip route vrf XX命令来看。”
“第五步-》MPLS配置。MPLS是三层VPN的载体,必须在每个公网接口上启动Mpls ldp协议。也就是说,PE1-P1-P2-PE2相连的六个接口都需要启动LDP协议。LDP协议的实现十分复杂,但是你所要做的比较简单,首先在全局模式下启动mpls ldp,然后在接口模式下启动mpls ldp enable 即可。”
“第六步-》OSPF配置。在公网接口之间运行OSPF协议,运行OSPF的主要目的是通告两台PE设备上的环回接口的路由,从而建立IBGP邻居。因此,切记Redistribute环回接口Loopback的路由。”
“第七步-》公网BGP配置。公网BGP的配置要在BGP的VPNv4地址族下面配置,在address-family vpnv4模式下,PE1需要和远端的PE2设备建立IBGP邻居neighbor 2.2.2.2 remote-as 100;neighbor 2.2.2.2 update loopback 0。第二条命令的用意是使用PE1的环回接口和PE2的环回接口建立IBGP邻居,切记一定要用环回接口建立IBGP邻居,万万不可自作聪明,使用三层接口地址建立IBGP,至于原因,你可以回去慢慢参详。”
“第八步-》CE接入配置。目前广为流传的CE接入方法有静态路由接入、RIP接入和EBGP接入三种方式。静态路由接入方法就是在PE的私网中增加一条路由Ip route vrf vrf1 192.168.11.0 24 172.11.11.2 ,然后在BGP的add ipv4 vrf vrf1地址族中引入该静态路由redistribute static即可。EBGP接入方式只需要在PE和CE之间运行EBGP协议即可,只是需要注意PE上的EBGP配置需要在ipv4地址族模式下进行。RIP接入的配置比较复杂,PE和CE之间运行RIP路由,引入BGP路由,而且需要在PE的BGP ipv4地址族中引入RIP路由。虽然三种接口方法不同,但是有一个原则是相同的,就是需要在PE的BGP ipv4地址中引入本端CE的路由和接口路由。”
令狐冲听得津津有味,脸上现出神往之情,但是想到目前网络日趋庞大,每增加一个分舵,他都要花费成倍得时间进行配置维护,又有点害怕,于是问道:“如果我想在河南再创建一个分舵,是否还要配置怎么多东东,那我可有点吃不消?”。
“三层VPN的另一个优点正在与此,虽然刚开始它的配置比Vlan+ACL复杂了不少,但是每新增加一个分舵,它的配置却比前者简单了很多,而且网络越庞大繁复,VPN配置的优势越明显。比如你给华山派分配的引入引出RD为100:1;嵩山派100:2;少林派100:3,你只需要知道这个标识就可以了,每增加一个华山分舵,你就可以在分舵相连的PE路由器上配置相应的Vrf(100:1),并且将Vrf 绑定到华山分舵的私网接口上,再引入分舵路由即可,无需在其他已有的分舵路由器上做任何改变。”
“这么说,我五分钟就可以将一个分舵连接到虚拟私有网络上了。”令狐冲兴奋之极,跃跃欲试。
“不错,我这里有三个锦囊,里面装有上图所示的八个设备的配置清单。你可以在闲暇之时看看,至少可以排遣你对师妹的痴恋,又或可真的实现L3VPN也不可知。”风清扬从怀中取出三个锦囊,交给令狐冲。
令狐冲大喜,忙叩首拜谢。
待起来之后,却见风清扬衣袂飘飘,已在百米之外了。令狐冲忙大喊,“师叔祖请留步,弟子不知何日再能得以相见。”
风清扬人如黄鹤,早已绝尘而去。
流程
令狐冲当真是天资聪颖之人,非吾等凡夫俗子所能望其项背,仅仅凭借风清扬的一番指点,和网上down的一部葵花宝典RFC2547,竟然在短短三个月中自主研发出了三层交换机上的L3VPN系统。
由于版本刚刚开发出来,令狐冲按照IPD流程在华山总舵先开了一个实验局,进行系统测试。 师父岳不群和师母在一个VPN中,绑定Vrf1(100:1);本门弟子的在一个VPN内Vrf2(100:2);后勤人员在一个VPN内Vrf3(100:3);生协人员在一个VPN内Vrf4(100:4)。。。。师父师母所在VPN可以与任何一个VPN私网互通。而其他的VPN私网之间互不干扰,不可互通。。。当然令狐冲没有忘记在本门弟子的VPN中使用Hub-Spoken组网,使所有的流量都经过令狐冲所在的路由器,这样他就可以随时将林平之发给岳灵珊的信Deny掉(哎!人生自古有情痴,此事不关风与月。聪明如令狐冲仍然参不透此关,做下这等傻事,何况我辈?)。L3VPN果然如风清扬当日所言,有许多优点,将各种各样的需求都满足的很好,令狐冲通过L3VPN将华山总舵的网络管理的井井有条。
开始几天,看到小师妹一见到林平之就撅起小嘴不理不睬,令狐冲还挺高兴,可惜好景不长,不久陆大有就向他反映,总是无法在网上与师兄弟交流,再后来师父师母也说,网络时通时断,最要命的是,第四个晚上开始令狐冲再也无法和小师妹联系上了。
版本刚刚出炉,存在这样和那样的Bug总是在所难免的,但是使令狐冲一筹莫展的是他没有办法确定,问题到底出在哪里。一旦出现问题,他的杀手锏就是“Write-》Reset。”
令狐冲正百思不得其解,突然收到一封署名为“[email]fengqingyang@huawei.com[/email]”的Email,约他当晚到华山论剑。令狐冲不禁大喜,忙收拾停当,早早的来到思过崖恭候风清扬。
当晚,皓月当空,松涛如涌,夜观华山天险,不由使令狐冲豪气满膺,仰天长啸,四谷回应。正在余音绕梁之际,忽然身后传来一个熟悉的声音:“士别三日当刮目相看,呵呵。。。”
令狐冲连忙回转身拜倒道:“晚辈拜见师叔祖,您老近来安好?”
“孺子可教也。我云游四海,业已知晓你三个月内将L3VPN成功开发,可见你天资过人,也没有白白浪费我的一篇心思”风清扬捻须微笑说道。
“可惜弟子愚钝,眼下正遇到一个难题,还要请师叔祖赐教。”
“说来听听。”
“虚拟私有网的确善于变化,妙处无穷。但是由于开发时间太短而且本身实现起来也太复杂,还有许多Bug躲在里面,作恶多端,徒儿正苦于无法将之捉出来,绳之以法。”
“傻徒儿,其实捉虫并不难。关键是你要在代码中织上一个网,这样当虫儿出来的时候,你只要抽紧绳索,顺藤摸虫就可以了。”
“徒儿愿闻其详。”
“知其然必先知其所以然,你先将VPN实现的流程讲一讲。”
令狐冲依言在地上画了一个简要的示意图。
“假设CE1和CE2属于相同的VPN,CE1的私网接口绑定了Vrf1(100:1),CE2的私网接口也是Vrf2(100:1),二者需要互通。”令狐冲接着开始讲解,“首先,PE(PE1)设备通过IBGP学习到VPN对端路由(192.168.12.0/24)和下一跳地址是(1.1.1.1),同时BGP报文也携带了一个内层标签(假如是20);LDP协议为每个公网路由分配了标签(假设PE1上得到的1.1.1.1的标签是16),那么私网的报文经过PE设备后就带上了两层标签(16/20),在每个它经过的路由器上进行标签交换,并且在倒数第二跳弹出外层标签(16),到达对端的PE设备上后根据内层标签(20),可以确定是属于那个Vrf(Vrf2),然后在相应的Vrf私网路由表中查找下一跳路由,封装成IP包发往CE设备。”
“如果PC1想要Ping通PC2,我想知道你的具体的实现过程。”风清扬边听边问。
“(一)当目的地址为192.16.12.10的ICMP报文到达PE1时,上行,根据IP地址和Vrf查看路由表,在路由表中可以得到内层标签的值、Lsptoken和出板号;下行,根据lsptoken值可以得到外层标签,下一跳的Mac地址以及出板号TB出端口TP信息。将报文重新进行组装,加上两层标签,然后再替换掉目的Mac地址,就可以按照TB/TP发送出去了。”
“(二)报文到达P1设备后,上行,根据入标签(外层标签)查找insegment表,得到要进行的动作swap、lsptoken和出板号TB;下行根据lsptoken值,查看Outsegment表,得到出标签,下一跳的Mac地址和TB/TP,然后将外层标签进行替换,目的Mac地址进行替换,按照TB/TP发送出去。图示情况下,出标签被替换成3,表示倒数第二跳,因此弹掉出标签。”
“(三)报文到达PE2后,上行根据仅有的内层标签查看Insegment表,得到要进行的动作swap/pop、lsptoken/RD和出板号TB;如果查到是pop动作,则弹出标签,继续在上行直接根据RD值+IP地址查找FIB表,得到TB/TP,封装成IP报文送往下行的TB/TP;如果上行查到的动作是swap,则在下行根据lsptoken值查找Outsegment表,得到Mac地址和TB/TP,弹出标签,替换Mac,封装成IP报文按照TB/TP发往CE。”
“转发流程就是这样的,但是由于整个流程跨越多个设备,出现了问题,我也无从下手。”令狐冲讲完了转发流程,又继续询问他最关心的问题。
风清扬点头微笑到“VPN的实现虽然繁复,涉及到路由协议、路由管理、MPLS、接口管理等多个模块,但是追根究底,就是查看三个微码表格:Insegment、Outsegment、FIB。只要这三个表项下发正确,VPN就可以互通了。”
“那么,只要抓住这三个微码表项进行验证,就可以定位出问题的根源了。”令狐冲果然聪明绝顶,一点就透。
“不错。只要加入调试诊断命令,使得微码表项不再是个黑盒子,那么出现问题,只需按图索骥即可。”风清扬面带赞许之色。
令狐冲胸前疑云尽去,顿觉心中豁然开朗,拜别风清扬,重回华山实验室,开始了又一轮的闭关改造工程。
定位
三日之后,实验室的门终于打开,令狐冲三日不眠不休,虽面带倦容依难掩其轩昂之气宇。只见他从袖管中拿出一个告示,张贴在公告栏上,内容如下:
“现华山总舵正在进行L3VPN的系统测试,如果大家碰到网络不通的情况,休要着急,不必惊慌,按以下方法可以排忧解惑。
第一步:在PE1、P、PE2设备上Show mpls ldp session,看看是否所有的ldp session都处于Operational状态。如果Session没有建立起来,或许您忘记了在公网接口上启动ldp协议,或者忘记配置property routing 属性,或者配置的接口地址Ping不通。如果三者都不是,恭喜您!您捉住了Bug,请打电话给唐为明大侠,请他来继续定位。您获得一吊钱。
第二步:在PE1和PE2上Show ip route ,看看是否学到了对端PE环回接口的地址。如果没有学到,或许您忘记了发布环回接口地址,或者忘记了配置porperty routing属性,使用show ip ospf neighbor命令查看是否达到Full状态。OSPF协议已经过千锤百炼,多半是您配置的问题。当然,如果你真的发现了OSPF协议的问题,您将获得三吊钱。
第三步:在PE1和PE2上Show ip bgp vpn all summary,看看IBGP邻居是否处于Established状态。如果是没有建立成功,先查看你配置的BGP邻居和自治域号有没有笔误,是否是用本端环回接口和对端的环回接口建立的邻居,然后使用Ping命令查看是否可以Ping通远端环回接口。如果您确认不是您配置的失误,并且可以Ping通。那么请打电话给赵风华大侠,请他继续定位,您将获得一吊钱。
第四步:在PE1和PE2上Show ip route vrf XXX,看看您需要的路由是否在私网路由表中存在。 如果对端路由不存在,查看您所配置Vrf的引入引出关系是否对应正确,确认IBGP中是否在Ipv4 vrf 地址族中配置了引入了直连路由和CE路由,私网接口是否Up。如果还是没有找到问题所在,那么也请赵风华大侠定位一下。您将获得一吊钱(不过这一吊钱不是那么容易拿)。
PE-A(config-if-Vlanif11)#show ip route vrf vrf1
Routing Table: vrf1 RD: 100:1
Destination/Mask Proto Pre Metric Nexthop Interface
172.16.11.0/24 Direct 0 0 172.16.11.1 Vlanif11
172.16.11.1/32 Direct 0 0 127.0.0.1 InLoopBack0
172.16.11.255/32 Direct 0 0 127.0.0.1 InLoopBack0
200.1.1.0/24 RIP 100 1 172.16.11.2 Vlanif11
VPN Routing Table: RD: 100:2
172.16.12.0/24 BGP 256 0 2.2.2.2 LoopBack0
200.2.2.0/24 BGP 256 1 2.2.2.2 LoopBack0
第五步:在CE路由器上Show ip route ,看看您需要的路由是否在CE路由表中存在。 如果没有路由,请认真查看CE和PE之间运行的路由协议是否配置正确(RIP、EBGP、静态)。确认配置正确后,仍然没有获得路由,那么请打电话给孙超大侠,您将获得一吊钱。
第六步:在PE路由器上Show mpls lsp,查看标签分配是否正确。注意:到对端CE的路由您将获得两层标签,其中外层标签应当与到对端PE环回接口的标签值是一样的。如果这个地方出错了或者发现在lsp表中存在垃圾表项,您可以打电话找朱伟朱小侠。同时您也将获得一吊钱。
到目前为止,您的私网理论上应当已经可以互通了,但是目前所查的表项都是上层的表项,微码表项也许是不正确的,这样您也不能到达畅通无阻的境界,请按照下面的步骤对微码的三个重要表项进行检查。见图2所示,假设从PC1发送Ping报文到PC2-》不通。
在PE1按此步骤查表RD-》FIB-》Outsegment(红色字体为获得的关键值。蓝色字体为输入的关键值,是由上一步得到的)
1:获得PC1私网接口的Vrf RD
PE-A(config)#sh int vlan 11
Vlanif11 is up line protocol is up
Description : HUAWEI, Quidway Series, Vlanif11 Interface
Route property of interface is ROUTING
VPN service is configured, RD index: 12 (得到RD值为12)
Internet address is 172.16.11.1/24
2:查看FIB表项:
PE-A(config-diag)#efu ipps showfib 2 200.2.2.0 24 12
IP address = 200.2.2..0
IP prefixLength = 24
Color = 12
Signature = 0
EcmpThr1 = 100
ecmpThr2 = 0
Lsptoken = 29
Inlabel = 20
nextHop[0] = 2.2.2.2
egressContext = 896
TB/TP =15/3 ......实际上翻译过来就是(4/0/0)
nextHop[0] is REDIRECTION_CP
nextHop[0] is REDIRECTION_CP_DEF
3:查看Outsegment表:
PE-A(config-diag)#efu mpls out show 4 29
LSP OutSegment entry query:
lsp token : 6
control : 0x19
l3protocol : 0x1
state : up
mac/nextHop: mac valid
labelnum : 3
label1 : 16
label2 : 1048575
label3 : 1048575
mac/nexthop addr: 000785098820
vlanid : 0
mtu : 0
tb/tp : 15/3 ......实际上翻译过来就是(4/0/0) counterid : 0x80000000
the end.
观察点就是:注意检查获得的红色关键值是否正确,是否和主控板上所查的保持一致。
在PE2上按照此步骤查表,Insegment-》Outsegment
1:查看Insegment表
PE-A(config-diag)#efu mpls insegment show 5 20 (20是PE1上查得的内层标签) LSP InSegment entry query:
source port: 0
label : 20
control : 0x31
l3protocol : 0x1
State : up
action : replace
lsp token : 4
vlanid : 0
counterid : 0x80000000
tb/tp : 7/3 ......实际上翻译过来就是(9/0/0) the end.
2:查看Outsegment表
PE-A(config-diag)#efu mpls outsegment show 7 4
LSP OutSegment entry query:
lsp token : 4
control : 0x4019
l3protocol : 0x8
state : up
mac/nextHop: mac valid
labelnum : 3
label1 : 3
label2 : 104575
label3 : 1048575
mac/nexthop addr: 000785098820
vlanid : 0
mtu : 1484
tb/tp : 7/3 ......实际上翻译过来就是(9/0/0)
counterid : 0x80000000
the end.
观察点就是:注意检查获得的红色关键值是否正确,是否和主控板上所查的保持一致。
这三个表虽然横亘多个设备,但只要按照转发流程顺藤摸瓜,要找到Bug的藏身之地也并非难事。当然,这个地方盘根错节,涉及的模块接口很多,隐藏的Bug也最多。发现问题请立刻通知王建兵和朱伟两位大侠。两位大侠古道热肠、深諳脉理,必定可以为您答疑解惑。同时您还将获得一吊钱。
如果所有的微码表项都是正确的,您还没有发现虫子的踪影,那么问题就出在微码了。申纪伟大侠的微码计数器可以帮您的忙。微码计数器将报文转发的轨迹都记录下来,从中您可以发现Bug留下的一些蛛丝马迹。微码主要有三个计数器general、internal和discard。使用的方法就是:清空计数器、发送大量的数据报文、查询计数器。命令很简单,在诊断模式下执行,你可以写一个脚本。
set slot 4
tsend "end
con t erminal
en_
show efu counter general $slot
show efu counter internal $slot
show efu counter discard $slot
efu counter general clear $slot
efu counter internal clear $slot
efu counter discard clear $slot?
微码计数器可以告诉您,到底这些报文是在什么位置,因为什么原因被丢掉了。初步定位后,打电话给申纪伟大侠,请他来搞定即可。您将获得一吊钱
告示贴出之后,华山弟子群情振奋,奔走相告,正所谓“重赏之下必有勇夫”,不出十天,竟然捉虫八十余只,涌现“捉虫英雄”十数人。
唐大侠、孙大侠、王大侠、申大侠、赵小侠、朱小侠皆为侠肝义胆,内功深厚之人,每每听说有Bug出现总是不辞辛劳,往返奔波,定位神速,战果赫赫。
两个月之后,华山子弟万众一心,群策群力,终于隆重推出了新一代支持L3VPN的三层交换机S8016,其性能和稳定性甚至超越了某西域名门,彻底粉碎了他们“千秋万载,一统江湖”的美梦。
欲知后事如何,请听下回分解 楼主用心良苦 小弟 顶下 够深刻
