前文我们了解了MPLS基础理论部分,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16928096.html;今天我们来聊一聊MPLS静态LSP配置相关话题;
为什么要静态配置LSP?
一般情况下,在MPLS网络中都使用标签分发协议来实现动态建立LSP,如使用LDP;但是使用动态标签分发协议来动态建立LSP,会存在动态标签分发协议故障,导致MPLS网络流量丢失;因此对于某些关键重要的业务,我们还是需要配置静态LSP来确保传输路径;所以静态LSP其实就是动态LSP的一个备份;当动态LSP故障,MPLS网络流量还可以走静态LSP;这个就类似我们的静态路由,当动态路由协议出现故障,如果有与之对应的静态路由,那么网络也是可以正常使用的;

提示:如果我们使用静态的方式配置LSP,那么我们需要提前规划好对应mpls网络路由器出入标签,以及出入接口,下一跳等信息;当然LSP也是双向的,它和路由信息类似,既要有去的LSP,也要有回来的LSP,对应网络才会正常通行;来去的LSP都需要我们管理员手动配置;
静态LSP的配置
实验:如下拓扑,配置静态LSP

R1的基础配置
sys
sys R1
dhcp en
int g0/0/0
ip add 192.168.100.254 24
dhcp sel int
int g0/0/1
ip add 12.0.0.1 24
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 192.168.100.254 0.0.0.0
View Code
R2的基础配置
sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.2 24
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
net 23.0.0.2 0.0.0.0
View Code
R3的基础配置
sys
sys R3
dhcp en
int g0/0/0
ip add 23.0.0.3 24
int g0/0/1
ip add 172.16.100.254 24
dhcp sel int
q
ospf 1 router-id 3.3.3.3
area 0
net 23.0.0.3 0.0.0.0
net 172.16.100.254 0.0.0.0
View Code
验证三个路由器的ospf是否都工作正常?是否都学习到对方的网络?



提示:可以看到三台路由器两两都建立起ospf邻居,对应状态都处于full状态,并且都学习到了对方的宣告的网络;
验证:用pc拿地址,看看对应dhcp是否工作正常?


提示:可以看到两台pc都各自从对应的路由器拿到了对应的ip地址;
验证:pc1pingpc2是否能通?

提示:可以看到pc1能够正常ping通pc2,说明pc1到pc2的基础网络搭建就没有问题;接下来我们配置mpls网络
配置MPLS LSR的id

提示:LSR id是用来标识mpls路由器的,必须保证其唯一性,vrp没有缺省的LSR ID 必须手动配置;如果要修改LSR ID必须undo mpls但是这样会中断mpls业务,所以在配置mpls之前要提前规划好;其他两个路由器和上述配置一样;
全局开启mpls

提示:全局开启mpls必须要在配置LSR ID以后,否则MPLS开启不起来;其他两个路由器和上述配置一样;
配置入节点静态LSP
PC1--->R2方向的LSP

提示:上述命令表示,只要匹配目标地址是172.16.100.0/24的数据包,对应数据包都会从直连下一跳为12.0.0.2的接口发送出去(路由器会根据下一跳,自动计算出出接口),并打上100的标签;
配置R1---->PC1方向的LSP

提示:上述命令表示对应路由器从g0/0/1接口收到标签为100的数据,对应数据包都会将其标签剥离(没有出标签,对应数据包转发出去就会自动不打标签,随后根据ip路由规则进行转发);
配置中间节点静态LSP
R1--->R2方向

提示:中间路由器的角色都是transit,表示中转之意,即对应路由器只看标签来转发数据包;上述命令表示从g0/0/0进来的数据包,标签为100的数据包,会直接从和23.0.0.3直连的接口转发出去,并打上200的标签;
R2--->R1方向的LSP

提示:对应中间路由器来说,不管是从左至右还是从右至左的流量,对应角色还是transit;只有在边界路由器上,流量的方向对应路由器是ingress还是egress的区别;除此之外就是流量的出入口,标签的出入要搞清楚就可以了;
配置出节点静态LSP
R3-->PC2方向的LSP

提示:上述命令表示只要从g0/0/0接口收到的带有200标签的数据包,剥离其标签后进行转发;
PC2--->R3方向的LSP

提示:上述命令表示只要只要匹配去往192.168.100.0 24网络的数据包,经由直连下一跳为23.0.0.2的接口打上200的标签转发出去;
验证:查看LSP



提示:从三个路由器的静态LSP出入标签,出入接口都没有问题,就是对应的状态都为down;这是因为我们没有在对应的接口开启mpls功能,所以对应状态都为down;
在接口开启mpls功能

提示:可以看到在对应接口开启mpls功能以后,对应lsp的状态就为UP了;这里需要注意我只需要在mpls网络连接的接口开启mpls功能即可;对应面向客户端的接口不需要开启mpls功能;
测试:在R2接口上抓包,看看pc1和pc2的数据包是否封装了mpls包头?

提示:可以看到在R2的g0/0/0和g0/0/1接口上抓包,对应都有mpls包头的封装;说明pc1和pc2的通信都是走mpls,我们配置的静态lsp也生效了;
除了上述抓包的方法,我们也可以用ping和tracert命令来测试LSP,如下命令

提示:用这两个命令需要注意一点,我们需加上lsp子命令,表示显示lsp相关信息,其次后面的ip需要和本地lsp匹配(网络地址和掩码,或者主机地址和掩码,这个要看本地lsp是主机地址还是网络地址);
好了,到此静态lsp的配置案例就到此为止!!
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳