1.1.0 路由 OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA
特殊区域的产生和注意事项
产生:OSPF通过划分区域减小网络内路由器的LSDB的规模。对于那些位于AS边界的非骨干区域如果该设备是较为低端的路由器,则无法承受过多的路由条目。为此通过OSPF的特殊区域特性可以进一步的减少LSA数量与路由表规模。(考虑到低端设备性能,通过OSPF特殊区域特性减小设备负担)
注意事项:非骨干区域才能配置成特殊区域,骨干区域不可以配置成特殊区域,就算配置了也不会生效,因为骨干区域链接多个区域,作为LSA的中转站,一定是需要去传输LSA的。
简介:Stub末端区域、末节区域,用于表示一个网络的最后节点,往后不会再有其它网络节点接入。
特点:处于该区域的路由设备,其LSDB中不允许出现4、5类LSA,但会生成一条3类的默认路由指向该特殊区域的ABR设备。没有45类表示没有了大量的外部路由条目,通过默认路由进行访问,极大程度的减小了设备的负担。
简略特点:拒绝4、5类,生成3类默认路由。
配置:
1、如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置成Stub路由器。
stub 即可设置为Stub区域,该区域所有设备都需要设置成stub。
2、Stub区域内不能存在ASBR,自治系统外部路由不能在本区域内传播,因为Stub又叫末端区域。

配置网络中的OSPF及Rip上线(省略省略IP地址配置)
[AR1]ospf 1 rou 1.1.1.1
[AR1-ospf-1]a 0
[AR1-ospf-1-area-0.0.0.0]network 10.1.12.1 0.0.0.0
[AR2]ospf 1 rou 2.2.2.2
[AR2-ospf-1]a 0
[AR2-ospf-1-area-0.0.0.0]netwo 10.1.12.2 0.0.0.0
[AR2-ospf-1-area-0.0.0.0]q
[AR2-ospf-1]a 1
[AR2-ospf-1-area-0.0.0.1]netwo 10.1.23.2 0.0.0.0
[AR2-ospf-1-area-0.0.0.1]stub
[AR2-ospf-1-area-0.0.0.1]q
[AR2-ospf-1]
[AR3]rip
[AR3-rip-1] ver 2
[AR3-rip-1]netwo 10.0.0.0
[AR3-rip-1]q
[AR3]ospf 1 router 3.3.3.3
[AR3-ospf-1]a 1
[AR3-ospf-1-area-0.0.0.1]network 10.1.23.3 0.0.0.0
[AR3-ospf-1-area-0.0.0.1]stub
[AR4]rip
[AR4-rip-1] ver 2
[AR4-rip-1]netwo 192.168.4.0
[AR4-rip-1]networ 10.0.0.0
[AR4-rip-1]q
1、生成的3类默认路由(Sum-Net),以及ABR传来的骨干区域路由信息。
<AR3>display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 470 36 80000005 1
Router 3.3.3.3 3.3.3.3 469 36 80000004 1
Network 10.1.23.3 3.3.3.3 470 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 509 28 80000001 1
Sum-Net 10.1.12.0 2.2.2.2 529 28 80000001 1
<AR3>display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 OSPF 10 2 D 10.1.23.2 GigabitEthernet0/0/0
10.1.12.0/24 OSPF 10 2 D 10.1.23.2 GigabitEthernet0/0/0
将Rip路由引入OSPF area1中(Stub区域),测试Stub区域是否真的不能存在外部路由。
[AR3]ospf 1
[AR3-ospf-1]import-route rip
# 引入之后,并没有在LSDB中看到生成5类的外部路由,故说明Stub中不能存在4类、5类及不能存在外部路由的结论成立。
[AR3-ospf-1]dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 620 36 80000005 1
Router 3.3.3.3 3.3.3.3 619 36 80000004 1
Network 10.1.23.3 3.3.3.3 620 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 659 28 80000001 1
Sum-Net 10.1.12.0 2.2.2.2 679 28 80000001 1
简介:Totally Stub完全末节区域,属于完完全全的末端区域。
特点:对Stub区域进行进一步的优化,该区域内不允许出现3、4、5类明细的LSA,但唯独存在一条3类的默认路由。相比Stub区域,减少了3类的明细,进一步的压缩了非骨干区域的数据库,减轻设备压力。
简略特点:拒绝3、4、5类,但会生成一条3类的默认路由,TotallyStub中的LSDB中有且只有一条3类默认路由LSA。
配置:
1、如果要将一个区域配置成Totally Stub区域,则该区域中的所有路由器必须都要配置成Totally Stub路由器。
2、Totally Stub区域与Stub区域一样,引入外部路由无效。

[AR2]ospf 1
[AR2-ospf-1]a 1
[AR2-ospf-1-area-0.0.0.1]stu no-summary
[AR3]ospf 1
[AR3-ospf-1]a 1
[AR3-ospf-1-area-0.0.0.1]stub no-summary
AR2与AR3的邻接关系已经建立说明LSA交互完成,查看LSDB可以看到除了默认的3类,没有了其它的3类明细。
<AR3>dis ospf pee br
OSPF Process 1 with Router ID 3.3.3.3
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/0 2.2.2.2 Full
----------------------------------------------------------------------------
<AR3>dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 19 36 8000000B 1
Router 3.3.3.3 3.3.3.3 12 36 8000000A 1
Network 10.1.23.3 3.3.3.3 12 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 23 28 80000001 1
简介:NSSA区域是相较于Stub区域,实现了区域内可引入外部路由的操作。
特点:

简略特点:拒绝4、5类,生成一条7类默认路由,引入的外部路由作为7类在NSSA区域内传递。
配置:
1、与Stub区域一样,需要NSSA区域内所有设备都配置nssa。

[AR2-ospf-1]a 1
[AR2-ospf-1-area-0.0.0.1]undo stub 【如果之前配置成了stub,需要先删除之前的配置】
[AR2-ospf-1-area-0.0.0.1]nssa
[AR3-ospf-1]a 1
[AR2-ospf-1-area-0.0.0.1]undo stub
[AR3-ospf-1-area-0.0.0.1]nssa
1、LSDB中的NSSA类型LSA就是由ABR(AR2)生成的7类默认路由。
<AR3>display ospf peer brief
OSPF Process 1 with Router ID 3.3.3.3
Peer Statistic Information
----------------------------------------------------------------------------
Area Id Interface Neighbor id State
0.0.0.1 GigabitEthernet0/0/0 2.2.2.2 Full
----------------------------------------------------------------------------
<AR3>display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 115 36 80000004 1
Router 3.3.3.3 3.3.3.3 114 36 80000005 1
Network 10.1.23.3 3.3.3.3 114 32 80000001 0
Sum-Net 10.1.12.0 2.2.2.2 162 28 80000001 1
NSSA 0.0.0.0 2.2.2.2 162 36 80000001 1
1、NSSA区域引入外部路由之后,NSSA区域内看到的外部路由为7类明细。
[AR3]ospf 1
[AR3-ospf-1]import-route rip
[AR3-ospf-1]display ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 211 36 80000004 1
Router 3.3.3.3 3.3.3.3 2 36 80000006 1
Network 10.1.23.3 3.3.3.3 210 32 80000001 0
Sum-Net 10.1.12.0 2.2.2.2 258 28 80000001 1
NSSA 10.1.23.0 3.3.3.3 2 36 80000001 1【外部路由】
NSSA 192.168.4.0 3.3.3.3 2 36 80000001 1【外部路由】
NSSA 10.1.34.0 3.3.3.3 2 36 80000001 1【外部路由】
NSSA 0.0.0.0 2.2.2.2 258 36 80000001 1
2、骨干区域中看到的外部路由则是5类的明细(External)

<AR1>display ospf lsdb
OSPF Process 1 with Router ID 1.1.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 407 36 80000007 1
Router 1.1.1.1 1.1.1.1 562 36 80000005 1
Network 10.1.12.2 2.2.2.2 555 32 80000003 0
Sum-Net 10.1.23.0 2.2.2.2 407 28 80000005 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 192.168.4.0 2.2.2.2 152 36 80000001 1
External 10.1.34.0 2.2.2.2 152 36 80000001 1
简介:完全NSSA区域,表示该区域为网络末节。
特点:
相较与NSSA区域,TotallyNSSA区域内不允许存在3类明细,故需要生成一条默认的3类默认路由。
完全NSSA区域内不存在3、4、5类明细,但会存在3类默认路由、7类默认路由。
完全NSSA区域仍可以继续引入外部路由发布给OSPF的其它区域。
简略特点:拒绝3、4、5类,生成3类默认路由、7类默认路由,仍可引入外部路由。
配置:

[AR2]ospf 1
[AR2-ospf-1]a 1
[AR2-ospf-1-area-0.0.0.1]nssa no-summary
[AR3]ospf 1
[AR3-ospf-1]a 1
[AR3-ospf-1-area-0.0.0.1]nssa no-summary
[AR3-ospf-1]dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 413 36 80000005 1
Router 3.3.3.3 3.3.3.3 334 36 80000006 1
Network 10.1.23.3 3.3.3.3 407 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 467 28 80000001 1【3类默认路由】
NSSA 0.0.0.0 2.2.2.2 467 36 80000001 1【7类默认路由】
[AR3]ospf 1
[AR3-ospf-1]import-route rip
[AR3-ospf-1]dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 2.2.2.2 2.2.2.2 549 36 80000005 1
Router 3.3.3.3 3.3.3.3 5 36 80000007 1
Network 10.1.23.3 3.3.3.3 543 32 80000002 0
Sum-Net 0.0.0.0 2.2.2.2 603 28 80000001 1
NSSA 10.1.23.0 3.3.3.3 5 36 80000001 1【外部路由】
NSSA 192.168.4.0 3.3.3.3 5 36 80000001 1【外部路由】
NSSA 10.1.34.0 3.3.3.3 5 36 80000001 1【外部路由】
NSSA 0.0.0.0 2.2.2.2 603 36 80000001 1
都是过滤3、4、5类LSA
Totally Stub生成3类默认路由、Totally NSSA生成3类默认路由与7类默认路由
Totally NSSA仍然可以引入外部路由作为7类LSA传递
我正在尝试找到一种方法来规范化字符串以将其作为文件名传递。到目前为止我有这个:my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.gsub(/[^a-z]/,'_')但第一个问题:-字符。我猜这个方法还有更多问题。我不控制名称,名称字符串可以有重音符、空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音符号,并将其余的替换为'_'字符。名字是这样的:“Prélèvements-常规”“健康证”...我希望它们像一个没有空格/特殊字符的文件名:“prelevements_routin
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
我知道还有其他相同的问题,但他们没有解决我的问题。我不断收到错误:Aws::Errors::MissingRegionErrorinBooksController#create,缺少区域;使用:region选项或将区域名称导出到ENV['AWS_REGION']。但是,这是我的配置开发.rb:config.paperclip_defaults={storage::s3,s3_host_name:"s3-us-west-2.amazonaws.com",s3_credentials:{bucket:ENV['AWS_BUCKET'],access_key_id:ENV['AWS_ACCE
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
我正在使用rspec-mock进行测试驱动开发。我开始实现单个类并使用rspec-mock模拟/stub其他类。尚未实现的类的模拟对象效果很好。但是,当我尝试模拟一个尚不存在的类的类方法时,我没有成功。我的类“哈希”应该有一个类方法“calculate_hashes”接收文件名并返回哈希。我试过了allow(Hashes).toreceive(:calculate_hash)do|file|#looksupwhattoreturnend给出错误“Hashesisnotaclass”。然后我实现了一个类“Hashes”classHashesend然后只尝试以相同的方式对类方法进行stub
我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re
我正在尝试测试命令行工具的输出。如何使用rspec来“伪造”命令行调用?执行以下操作不起作用:it"shouldcallthecommandlineandreturn'text'"do@p=Pig.new@p.should_receive(:run).with('my_command_line_tool_call').and_return('resulttext')end如何创建stub? 最佳答案 使用newmessageexpectationsyntax:规范/虚拟规范.rbrequire"dummy"describeDummy
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
我有一个对象MyObject:classMyObjectdefinitialize(options={})@stat_to_load=options[:stat_to_load]||'test'enddefresults[]endend仅当stat_to_load="times"时,我才想stubresults方法。我怎样才能做到这一点?我试过了:MyObject.any_instance.stubs(:initialize).with({:stat_to_load=>"times"}).stubs(:results).returns(["klala"])但它不起作用。有什么想法吗?
我正在构建Rails应用程序并使用RSpec制定测试。我为我正在创建的名为current_link_to的方法编写了测试。此方法应该检查当前页面是否对应于我传递给它的路径,并将current类添加到生成的链接中,以防它匹配。这是规范:require"spec_helper"describeApplicationHelperdodescribe"#current_link_to"dolet(:name){"Products"}let(:path){products_path}let(:rendered){current_link_to(name,path)}context"whenthe