路由协议之OSPF总结(比较详细,好理解)
**
OSPF(open shortest pass first 开放最短路径优先)
因为OSPF相对最常用,比较重要一些,所以相对于之前那篇RIP,EIGRP的文章, 这里还是决定 总结的详细一点。
**
是链路状态协议(还有一个IS-IS,IS-IS用的是OSI模型,而不是TCP/IP模型,用于运营商,电信,联通等, IS-IS不会再深入研究,听我们老师说这方面的学习资料现在也挺难找的,现在CCIE也不考了)
区别于距离矢量路由协议,ospf每个路由器都掌握所在区域上所有路由器的链路状态信息,了解整个网络的拓扑情况,因此可以独立的计算出到达任意目的地的路由。
(RIP是一步一步和邻居问路,走一步看一步)
特点:
无类路由协议,支持VLSM
组播地址:224.0.0.5 224.0.0.6
(224.0.0.5代表所有ospf路由器的组;224.0.0.6代表DR,BDR)
SPF最短路径优先算法
支持认证
这里简单说一下对组播地址的理解:可以把组播地址看成一个微信群号,任何成员(组播源)往微信群(组播IP)里发送消息(组播数据),这个群里的成员(组播接收者)都会接收到此消息。
区域:
每个区域的路由器只保留本区域的链路状态信息(LSDB),这样可以使得路由器的链路状态数据库不会过大。 这也使得ospf能很好应用于大型网络。
区域的分类:
1.简单整体来看可分为这两种:
骨干区域(area0):必须有,且只有一个,必须连接所有非骨干区域。一般情况骨干区域中没有终端用户。
非骨干区域:根据实际情况划分,必须连接area0,主要用来连接终端用户和资源。
2.根据与外部路由器间关系可分为:
标准区域(Standerd):一个标准区域可以接收链路更新信息和路由总结
主干区域(Area0):具备标准区域所有性质
存根区域(Stub):不接受AS自治系统以外的路由信息
完全存根区域(TStub):不接受外部AS 以及 AS内其他区域的路由信息
不完全存根区域(NSAA):类似于存根区域,区别是 允许接收以LSA Type 7发送的外部路由信息,并且要把LSA Type 7转换成LSA Type 5
路由器身份:
1.从整体看:
ABR:区域边界路由器,连接不同ospf区域 ABR负责把自己区域路由的摘要信息发送到area0,area0的ABR负责把信息发送到各个区域
ASBR:自治系统边界路由器,连接ospf网络与非ospf网络 ASBR负责把非ospf网络信息传入ospf网络
2.从单独一个区域看:
内部路由器:所有端口在同一区域的路由器,维护一个链路状态数据库。
主干路由器:具有连接area0的端口的路由器
3.从区域的单独一个网段看
DR:指定路由器
BDR:备份指定路由器
DRothers:非DR,BDR的路由器
DR,BDR的选举:
这里先顺便介绍几个ospf网络类型:
1.广播多路访问型(如以太网);2.非广播多路访问型NBMA(如Frame Relay帧中继,X.25广域网,ATM);3.点到点型(如PPP,HDLC);4.点到多点型
我们还要知道选举DR,BDR的目的,作用是什么?
在一个区域中(这里的区域指同一网段的路由器,区分area几区域),只需要DR作为区域中心与区域外路由器建立邻居关系,并收集所有链路状态信息,这样可以减少大量开销,节省带宽,降低路由器压力
在广播网络上,DR和BDR都使用组播地址224.0.0.6来接收链路状态更新报文。
在下面这个图中,RTA,RTB只需要与DR,BDR建立邻接关系,而他俩之间只是邻居关系即可。(邻居,邻接在下面有详细介绍)
然后注意几点:
1.只要是多路访问型网络(广播和NBMA),就会选举DR,BDR
2.不同网段间选DR,BDR,而不是每个OSPF区域为单位选举
3.DR,BDR,DRothers 说的都是接口,不是设备
4.设备优先级设置为0不参与选举;DR,BDR不可以抢占;DR down掉后,BDR直升DR,重新选举BDR
5.OSPF系统启动后,若40s内没有新设备接入就会开始选举,所以为保证DR与BDR的选举不发生意外,建议优先配置想成为DR与BDR的设备。
选举规则,过程:
邻居发现完成后,开始选举
1)先比较路由器优先级(默认都是1),高的做DR,次高BDR;
2)优先级相同,比较RID(router-id),高的是DR。
RID可以是人为指定(最好,不会受地址变动的影响);或设备最大的环回口ip;或物理接口ip地址最大的。
为了进一步理解DR,BDR,下面看一个例题:
ospf工作过程:
使用组播地址在所有开启ospf的接口发送Hello包,建立邻居关系,形成邻居表;之后互相发送LSA(链路状态信息)相互通告路由,
形成LSDB(链路状态数据库),再通过SPF算法(无环),计算最佳路径后放入路由表。
(与EIGRP很像,先要形成邻居关系,产生邻居表;只不过然后相互发送的不是路由表,而是LSA)
更具体的看这个过程:
一.OSPF邻居的建立:
邻居有两个状态:邻居 和 邻接
只交换了Hello包是邻居;邻居交互了LSA互相同步LSDB才能称为邻接(所以邻接一定是邻居,邻居不一定邻接)
下面把邻居到邻接的详细步骤放在下面,有兴趣可以仔细看一下, 其中涉及ospf路由器的几个状态:
1.Down:这是邻居的初始状态,表示没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
2.Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
3.Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,尚未与邻居建立双向通信关系。
4. 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
*
到 2-way这个状态已经建立了邻居关系,下面开始建立邻接
5.ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的,初始DD序列号也是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
6.Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
7.Loading:相互发送LSR报文请求LSA,发送LSU报文通告LSA。
8.Full:路由器的LSDB已经同步。 到此也代表着邻接关系建立
这些状态其实当我们show ospf neighbor时可以看得到
2.OSPF的更新:
1.支持触发更新,一旦拓扑发生变化便会更新
2.也会周期性更新(30分钟一次)
3.当收到一条LSA之后,首先查看是否在LSDB中,若没有则加入LSDB,回复LSACK。继续泛洪出去,并且通过SPF算法计算最佳路径并加入路由表。
若存在,则比较谁的更“新”(看序号),序号大者新,若本地不如收到的新,更新本地LSDB并泛洪,且通过SPF算法计算最佳路径并加入路由表,若本地的比收到的新,则将本地的泛洪出去。
(泛洪的理解:路由器或交换机 将某个接口收到的数据流从除该接口之外的所有接口发送出去。)
5种报文类型:
(OSPF报文封装在ip报文种 协议号89。)
1.Hello:最常用的一种报文,用于发现,维护邻居关系;并在广播和NBMA网络中用于选举DR,BDR
2.DD(Database Description):两台路由器进行LSDB同步时,用DD报文描述自己的LSDB。DD报文内容相当于一个目录,只包含LSDB中每一条LSA的头部。
3.LSR(Link State Request):两个路由器交换了DD之后,知道对端路由器哪些LSA是自己没有的,这时发送LSR请求自己缺少的LSA
4.LSU(Link State Update):回应LSR,向对端路由器发送他所需的LSA
5.LSAck:接收到LSU后返还的确认
6种常用OSPF LSA类型:
LSA Type1:router LSA由每台路由器为所属的区域产生的LSA,描述本区域路由器链路到该区域的状态和代价。一个边界路由器可能产生多个LSA TYPE1。
LSA Type2:由DR产生。含有连接某个区域路由器的所有链路状态和代价信息。只有DR可以监测该信息。
LSA Type3:由ABR产生,含有ABR与本地内部路由器连接信息,可以描述本区域到area0的链路信息。它通常汇总缺省路由而不是传送汇总的OSPF信息给其他网络。
LSA Type4:由ABR产生,由主干区域发送到其他ABR, 含有ASBR的链路信息,与LSA TYPE 3的区别在于TYPE 4描述到OSPF网络的外部路由,而TYPE 3则描述区域内路由。
LSA Type5:由ASBR产生,含有关于自治域外的链路信息。除了存根区域和完全存根区域,LSA TYPE 5在整个网络中发送。
LSA Type7:由ASBR产生的关于NSSA的信息。LSA TYPE 7可以转换为LSA TYPE 5。
如果有小伙伴想详细了解下OSPF中不同类型LSA的内容,可以点击这里看这个博主写的文章
配置命令
最后简单写一下常用的配置命令吧(我这里写的是华为设备的配置,思科的类似)
1.基本配置
odpf router-id 1.1.1.1
这个命令使能ospf 并且配置了Router-id
area 0 network 192.168.1.0 0.0.0.255
先要指明区域;
下面network命令指定运行ospf协议的接口, 后面跟的是反掩码。(反掩码就是 “0”表示此位必须严格匹配;“1”表示该地址可以为任意值)
2.查看邻居状态:
display ospf peer
包括了区域,邻居状态,邻居协商的主从状态,DR,BDR情况
3.OSPF认证
希望对你有所帮助