CCNA学习指南 -开放最短路径优先OSPF(多区域部分)
在之前的介绍中,可以看到单区域OSPF对于古老的RIP的优点:
- 路由选择更新流量减小
- 使用与大型网络和链路速度不一样的网络
OSPF能够在LSDB中呈现网络拓扑结构,这使得它汇聚的速度远快于RIP。
但是,单区域的OSPF存在严重的可拓展性问题,首先单区域内的路由器众多,存在的链路数目也是非常多,那么当链路状态发送改变的时候,就需要全部的路由器重新计算LSDB,这无疑是复杂而又繁琐的,占用了大量的路由器CPU时间和内存。此外不要忘记,还有路由表,这使得内存更加不堪重负。
考虑到这些,单区域OSPF不适用于大型网络的原因就是它的可拓展性的限制。它将所有的路由器划分到一个区域中,使得每一台路由器都要处理大量LSA。
如何解决这个问题呢?好在OSPF也提供对网络分区域的方法,它支持将一个大型互联网络划分成易于管理的小块。
OSPF分区域的优点:耗用内存小,处理器开销小,路由表规模小,汇聚更快,可拓展性好。
- 区域内部的路由器不要再计算和存储整个网络的拓扑结构,即不用再计算整个网络的LSDB。因为它们只需要知道当前区域内的链路状态信息,这极大的降低了使用的内存。
- 对于区域内部的路由器来说,当别的区域链路发生变化的时候,不用重新计算LSDB;当且仅当所属区域的拓扑发生变化的时候,才需要重新计算。这样做降低了处理器的开销。
- 由于可以在区域边界汇总路由,所以路由器的路由选择表规模比使用单区域的时候小的多。
多区域OSPF简介
在多区域的OSPF中路由器的各种类型:主干路由器,内部路由器,区域边界路由器(ABR),自主系统边界路由器(ASBR)。
链路状态通告LSA,描述了路由器及其直接相连的网络,路由器彼此交换LSA以获悉完整的网络拓扑,这让所有路由器的拓扑数据库LSDB都一样。利用LSA建立LSDB之后,将LSDB的内容作为Dijkstra算法的输入,计算得到最短路/最佳路径,添加到路由表项中。
建立邻居关系的条件
发现邻居之后,必须建立邻居关系,这样才能够与邻居交换路由信息LSA。需要经过以下两个步骤:
- 双向通信,这是使用Hello协议进行的。
- 数据库同步,在此期间交换三种分组:1)数据库描述分组(DD); 2)链路状态请求分组(LSR); 3)链路状态更新分组(LSU)。
数据库同步之后,就建立了邻居关系。
相邻路由器想要建立邻居关系,以下的内容必须相同:
- 区域ID
- 子网
- Hello定时器和失效定时器
- 身份验证方法(如果配置了)
何时建立邻居关系取决于网络类型,如果是点对点的,只要两台路由器配置了正确的信息,那么就将建立邻居关系。
如果是 广播多路访问网络,那么OSPF只与DR或者是BDR建立邻居关系。
OSPF路由器类型
所有接口都属于同一个区域的,我们称之为内部路由器,它们所有的接口都属于同一个区域。
配置多区域路由器的时候,必须配置一个主干区域,即区域0.在区域0内的路由器称为主干路由器,有的完全属于区域0,有的则是 ASBR,ABR 这种不完全属于区域0的。
注意!为什么要设置区域0:
第一:区域防环,OSPF在区域内防环机制是靠SPF路由算法(树型),那OSPF区域间防环如何做的呢??那如果没有一个骨干区域,路由就可能会从一个区域传出去,再从这个区域传进来,这样环路就无法防止了。骨干区域就是实现这个功能,可以理解为“OSPF 的毒向逆转”,即路由从一个区域传过来的,绝不会从该区域再出去。
第二:路由优化,很容易想像有AREA 0,所有常规区域的路由必须从骨干区域获得更新,而常规区域之间是不会交互LSA更新。即不用形成一个FULL MESH的结构,以减少路由表的size。
ABR
当一个路由器的不同接口,连接到两个不同区域的时候,这样的路由器称为 区域边界路由器ABR。
ABR 属于多个OSPF区域,它在拓扑数据库LSDB中维护来自所有直连区域的信息。但不在区域间分享拓扑信息。
ABR 会将路由选择信息从一个区域转发到另外一个区域(通过第三第四类LSA),这里的核心概念是:ABR 分隔LSA泛洪区(即LSA泛洪只在区域内进行),是主要的区域地址汇总点,通常提供默认路由,同时维护其连接的每个区域的链路状态数据库(也就是说,它的LSDB中拥有来自多个区域的LSA路由更新)。
ASBR
当一个路由器的不同接口,连接到两个或两个以上不同自治系统的时候,这样的路由器称为 自治系统边界路由器ASBR。
ASBR至少有一个接口连接到外部网络(其它的AS)。
运行的路由器选择协议不是OSPF的网络,被称为外部网络。ASBR通过将其从外部网络获取的选择信息,注入OSPF(通过第五类LSA)。
ASBR 并不会自动在 OSPF路由选择进程 和 外部网络的路由选择进程 之间进行路由选择学习的交换。这种路由选择是通过重分发进行的。
链路状态通告LSA
路由器的LSDB链路状态数据库由链路状态通过组成。LSA大致分为5类(其实不止)。
LSA的分类
第一类LSA:称为路由器链路通告(RLA),由每台路由器向其所属区域的其他路由器发送。包含路由器所连接的当前区域的链路状态。如果路由器有多个接口连接到不同的区域,那么它将分别发送针对各个区域的一类LSA。
第二类LSA:称为网络链路通告(NLA),是由指定路由器DR生成的,DR使用它来发送网络中其他路由器的状态信息。注意:2类LSA被洪泛到当前区域,但不会洪泛到其他的区域,也就是说,ABR分割LSA洪泛区。
第三类LSA:称为汇总链路通告(SLA),是由边界区域路由器ABR产生的,ABR将它发送到ABR连接的其他区域,3类LSA通告网络,并通告前往主干区域 区域0的区域间路由。
第四类LSA:有区域边界路由器ABR生成,专门用于告诉其他的OSPF区域如何前往ASBR.
第五类LSA:称为外部链路通告,由自主系统边界路由器发送,用于通告前往OSPF自助系统外的路由,将传遍整个OSPF自主系统。
明白各种LSA及其用途很重要,由上面的介绍可以知道:
- 第一类第二类用于区域内的路由器进行传播。
- ABR边界区域路由器 1)维护它连接的每个区域的LSDB 2)用于 从区域M获悉到的 路由汇总信息 通告给区域0 或者相反。
- 在接收到 ASBR 通告的 第5类LSA 之后,ABR 将 第四类LSA 洪泛到区域0,让区域内的所有路由器都知道如何前往ASBR。
OSPF Hello协议
Hello协议向邻居提供大量的信息,默认的情况下,邻居每个10s就交换以下信息:
- 路由器ID:RID,最大活动IP地址,如果配置了loopback interface,则为最大的 interface address;否则使用最大的物理接口地址。
- Hello间隔和失效间隔:Hello时间指的是Hello分组发送的时间间隔,一般默认为10s。失效时间指的是,时隔多长时间没有收到来自邻居的Hello报文之后确认邻居失效,默认为Hello时间的四倍。
- 邻居列表:发送Hello分组的路由器 的所有邻居的 RID。一般存储于邻居关系数据库内。邻居的定义是:属于同一个子网,使用同一个子网掩码。
- 区域ID:所属区域。
- 路由器的优先级:一个8bit的值,用于选举DR和BDR,在点到点链路上不设置。
- DR的IP地址
- BDR的IP地址
- 身份验证信息(如果配置了)
注意,每个OSPF路由器维护两个数据库,一个是我们经常提到的LSDB,另外一个是 邻居关系数据库:当路由器接收到另外一个路由器发送的Hello报文的时候,将Hello内的信息加入邻居关系数据库。
之前有提到,在邻居发送的Hello分组中,如果想要建立 邻居关系,以下信息必须相同:
- Hello定时器值
- 失效定时器值
- 区域ID
- OSPF区域类型
- 子网和身份验证信息(如果配置了的话)
否则不能建立邻居关系。
邻居状态
对OSPF进行配置验证以及故障排除,必须了解OSPF在建立 邻居关系 的时候经历的各种状态。
我认为可以大致的分为两个部分,一个是使用Hello协议 通过组播地址 建立起普通的关系,即2WAT状态;一个是交换LSA,含LSDB的信息 来 同步数据库,即FULL状态。
假设此时有两台路由器A与B 想要建立起邻接关系,那么它们之间将会有八种状态:
第一步:进入2WAY状态
一开始,两台路由器都属于DOWN状态。
A先发送Hello报文,B接收了它,把A和Hello内的信息加入邻居关系数据库。
B进入INIT状态,并向A发送Hello报文。
A收到来自B的Hello报文,加入邻居关系数据库,双方进入 2WAY状态。
INIT状态:B已经收到了A的Hello报文,将A加入邻居关系数据库,但是此时A发送的Hello报文尚未有B的信息(B的RID),这表明还未建立双向联系。
建立双向联系之后,在广播多路访问网络中,开始选举DR和BDR。
当two-way关系建立以后,路由器之间会考虑是否建立邻接关系,这决定于邻居路由器的状态 以及网络的类型。如果网络的类型是广播或者非广播,那么仅仅会在DR和BDR路由器之间建立邻接关系。在其他类型的网络中(NBMA),邻接关系只会在邻居路由器之间建立。
第二步:进入FULL状态
选举完DR和BDR之后,进入 预启动EXSTART状态,为发现有关互联网络的链路状态信息(LSA) 并为创建LSDB做好了准备。
在预启动阶段,DR和BDR已经和区域中的其他路由器建立了邻居关系。在每台路由器和DR(BDR)之间,建立的是 主从关系:RID 较大的为主,主动发起交换。交换完DBD(数据库描述)分组之后,路由器 进入EXCHANGE交换状态。
此时,A向DR发送了第一个DB报文,B向DR发送了第二个DB报文,DB报文中的RID较大的那个(比如 A的RID > B的RID)成为Master,A将主动发起同B的交换。
处于交换状态的时候,A和B 使用 DD/DBD数据库描述分组 进行交换 路由选择信息,还可能发送链路状态请求LSR,和链路状态更新。
当路由器A开始发送LSR之后,进入加载状态(LOADING).
当A路由器 处在LOADING状态的时候,向邻居B 发送 链路状态请求(LSR)分组 ,请求对方发送在交换期间遗漏或者受损的LSA。邻居B 使用 LSU链路状态更新分组 进行回应,当前路由器A 则使用LSAck链路状态确认分组进行确认。
在B收到所有A的LSR的应答之后,A和B的 链路数据库便完全同步了,进入FULL状态。
整个过程:
(1)A ---(Hello)---> B; B -> INIT
(2)B ---(Hello)---> A
(3)A,B -> 2WAY
----------------------------------
(4)
A <-> DR;
B <-> DR;
A,B -> EXSTART
(5)
Judge: [A_RID > B_RID]
-> Master: A
(6)
A ---(DBD/DD)---> B;
A,B -> EXCHANGE
(7)
B ---(DBD/DD)---> A;
······
A ---(LSR)---> B;
A,B -> LOADING
(8)
B ---(LSU)---> A;
A ---(LSAck)---> B;
······
(9)
A,B ---> FULL
2WAY -> 主从关系确定;预准备阶段 -> 交换链路信息(DD/DBD)阶段 -> 加载阶段,用于补全缺失的LSA -> 发送LSAck,代表同步结束 -> FULL。
注意,只有在进入FULL状态之后,也就是同步了所有LSA的信息之后,建立了邻居关系,OSPF路由选择才能正常运行。
路由器的最终状态,要么是2WAY,要么是FULL,其他状态都属于过渡状态。路由器在其他状态不应该停留过久。
2016/8/30
CCNA学习指南 -开放最短路径优先OSPF(多区域部分)的更多相关文章
- CCNA学习指南 -开放最短路径优先OSPF(单区域)
在上个世纪九十年代撰写的<TCP/IP协议详解 卷一:协议>的动态选路中,内容大部分还是介绍 RIP路由选择信息协议,在互联网络如此发达的今天,RIP因为它的局限性逐步被OSPF取代. 在 ...
- 重拾IP路由选择:CCNA学习指南中的IP路由选择
IP路由选择技术 是网络技术的核心部分,也是目前研究的热点,其中的 动态路由选择协议 比如RIPv1,RIPv2,OSPF等,解决了数据在网络中转递的诸多问题. 在TCP/IP协议详解的学习过程中,我 ...
- 开放式最短路径优先OSPF
1.OSPF基本知识 OSPF作为基于链路状态的协议,解决了RIP在收敛慢,路由环路,可扩展性差等问题,还有以下优点: 采用组播方式发布报文,可以减少对其他不运行ospf路由器的影响 ospf直尺无类 ...
- ccna学习指南第七版
1.加电post自检 闪存查找ios 可随时从命令行进入设置模式,为此可在特权模式下输入setup ctrl+c退出特权模式 6.2cli 命令行界面 进入cli router> ...
- CSS Flexbox 学习指南、工具与框架
Flexbox 是一种更有效的布局方式,它能更好的分配容器空间,并控制项目的对齐.虽然,掌握它的理论有些复杂,但幸运的是,我们可以借助开放的网络来学习并逐步掌握它. 在本文中,我们整合了一些最佳的 F ...
- spring boot 1.x完整学习指南(含各种常见问题servlet、web.xml、maven打包,spring mvc差别及解决方法)
spring boot 入门 关于版本的选择,spring boot 2.0开始依赖于 Spring Framework 5.1.0,而spring 5.x和之前的版本差距比较大,而且应该来说还没有广 ...
- 全新Wijmo5中文学习指南正式上线
Wijmo 是一款使用 TypeScript 编写的新一代 JavaScript/HTML5 控件集.它秉承触控优先的设计理念,在全球率先支持 AngularJS,并且支持React.VueJS以及T ...
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
随机推荐
- log4j和commons- logging(好文整理转载)
一 :为什么同时使用commons-logging和Log4j?为什么不仅使用其中之一? Commons-loggin的目的是为 “所有的Java日志实现”提供一个统一的接口,它自身的日志功能平常弱( ...
- mysql字符串根据指定字符分割
1.分割函数:SUBSTRING_INDEX('浙江温州-中国电信','-','1') 2.用例(筛选'-'前至少4个汉字的数据) a.数据分布 b.筛选sql select t.mobile_num ...
- Javaweb程序打包或exe执行文件
java程序的打包与发布 这里主要是讲解一下怎样将 Java程序打包成独立运行的exe程序包,以下这种方法应该是最佳的解决方案了.NetDuke的EXE程序包了是使用这种方案制作的.在操作步骤上还是比 ...
- Asp.net读取和写入txt文件方法(实例)!
Asp.NET读取和写入txt文件方法(实例)! [程序第一行的引入命名空间文件 - 参考] System; using System.Collections; using System.Config ...
- T-SQL数据库备份
/*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名 如果指定的数据不存在,返回安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名 */ /*--调用 ...
- vue.js(一)
之前看过一点vue.js但是知识点没做记录,现在也差不多不记得了,今天把以前看过的翻一遍,顺便提炼一下知识点 注意:下面的所有与vue相关的标签.指令都是写在id="app"的di ...
- 洛谷P1373 小a和uim之大逃离 dp
正解:dp 解题报告: 传送门! 同样是看到列表发的题解就想着跟着做下dp的题目趴 然后发现还挺难的,,,反正我只大概想到怎么转移但是初始化什么的都不会TT 所以还是大概说下QAQ 首先可以想到设f[ ...
- day11(jsp入门&Cookie&HttpSession&一次性图片校验码)
day11 JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. ...
- PAT 1109 Group Photo[仿真][难]
1109 Group Photo(25 分) Formation is very important when taking a group photo. Given the rules of for ...
- 2016ACM/ICPC亚洲区沈阳站 Solution
A - Thickest Burger 水. #include <bits/stdc++.h> using namespace std; int t; int a, b; int main ...