jjzjj

OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA

Hades_Ling 2023-10-21 原文

1.1.0 路由 OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA

特殊区域的产生和注意事项

产生:OSPF通过划分区域减小网络内路由器的LSDB的规模。对于那些位于AS边界的非骨干区域如果该设备是较为低端的路由器,则无法承受过多的路由条目。为此通过OSPF的特殊区域特性可以进一步的减少LSA数量与路由表规模。(考虑到低端设备性能,通过OSPF特殊区域特性减小设备负担)

注意事项:非骨干区域才能配置成特殊区域,骨干区域不可以配置成特殊区域,就算配置了也不会生效,因为骨干区域链接多个区域,作为LSA的中转站,一定是需要去传输LSA的。

Stub区域

简介: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

Stub建立后的路由变化

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

Stub外部路由引入测试

将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区域

简介: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 

Totally Stub区域内的LSDB信息

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区域

简介:NSSA区域是相较于Stub区域,实现了区域内可引入外部路由的操作。

特点

  • 与Stub一样,区域内不允许出现4、5类LSA,但允许出现1、2、3、7类LSA,并由ABR生成一条7类的默认路由。
  • NSSA区域中引入的外部路由作为7类明细在区域内传递,当传递至ABR后由ABR将7类转换成5类传递给其它OSPF区域。
  • NSSA区域不仅干掉了其它区域传来的外部路由明细,同时保证了本NSSA区域可以将邻接的外部路由传出给其它区域。

简略特点:拒绝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

检查当前的LSDB

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

引入外部路由并两次检查LSDB

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)

  • 你可能会疑惑,NSSA外部有10.1.23.0,为什么在骨干上看没有该条目的5类呢?
    • 因为外部路由(5类明细路由)的优先级为150,而常规的OSPF路由优先级为10,故Sum-Net3类的LSA比External5类的LSA更优先。所以只能看到3类的10.1.23.0,不能看到5类的10.1.23.0。
  • 为什么在骨干区域这里看不到四类的LSA呢?
    • 以目前这个环境,骨干区域中泛洪着的是AR2的5类LSA,骨干区域的AR1能直接通过1类2类直接找到AR2,故不需要生成4类LSA。
    • 但如果有了新的区域Area2与AR1进行邻接,则AR2内将会出现4类与5类。
<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

Totally NSSA区域

简介:完全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
 

四者的比较

Stub与NSSA

  • 都是过滤4、5类LSA
  • Stub生成3类默认路由、NSSA生成7类默认路由
  • NSSA可引入外部路由作为7类LSA

TotallyStub与TotallyNSSA

  • 都是过滤3、4、5类LSA

  • Totally Stub生成3类默认路由、Totally NSSA生成3类默认路由7类默认路由

  • Totally NSSA仍然可以引入外部路由作为7类LSA传递

有关OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA的更多相关文章

  1. ruby-on-rails - 标准化文件名的字符串,删除重音和特殊字符 - 2

    我正在尝试找到一种方法来规范化字符串以将其作为文件名传递。到目前为止我有这个:my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.gsub(/[^a-z]/,'_')但第一个问题:-字符。我猜这个方法还有更多问题。我不控制名称,名称字符串可以有重音符、空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音符号,并将其余的替换为'_'字符。名字是这样的:“Prélèvements-常规”“健康证”...我希望它们像一个没有空格/特殊字符的文件名:“prelevements_routin

  2. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  3. ruby-on-rails - 缺失区域;使用 :region option or export region name to ENV ['AWS_REGION' ] - 2

    我知道还有其他相同的问题,但他们没有解决我的问题。我不断收到错误: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

  4. ruby - 在 RSpec 中 stub /模拟全局常量 - 2

    我有一个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

  5. ruby - 如何使用 rspec/rspec-mocks stub 类方法 - 2

    我正在使用rspec-mock进行测试驱动开发。我开始实现单个类并使用rspec-mock模拟/stub其他类。尚未实现的类的模拟对象效果很好。但是,当我尝试模拟一个尚不存在的类的类方法时,我没有成功。我的类“哈希”应该有一个类方法“calculate_hashes”接收文件名并返回哈希。我试过了allow(Hashes).toreceive(:calculate_hash)do|file|#looksupwhattoreturnend给出错误“Hashesisnotaclass”。然后我实现了一个类“Hashes”classHashesend然后只尝试以相同的方式对类方法进行stub

  6. ruby-on-rails - "undefined method ` stub_request '"访问 RSpec 支持文件中的方法时 - 2

    我的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

  7. ruby - 如何使用 rspec stub /模拟对命令行的调用? - 2

    我正在尝试测试命令行工具的输出。如何使用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

  8. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录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模式

  9. ruby-on-rails - 仅当特定实例变量具有值时,如何 stub 实例方法? - 2

    我有一个对象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"])但它不起作用。有什么想法吗?

  10. ruby-on-rails - 从帮助器规范中 stub 一个帮助器方法 - 2

    我正在构建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

随机推荐