数据通信——网络层(OSPF基础特性)

引言

    静态路由面对复杂的网络环境和庞大的配置量根本无法胜任。最重要的是无法适应网络拓扑变化。动态路由非常重要。而OSPF协议则是IGP协议中的火热协议。

    OSPF协议是很重要的协议,它是链路状态协议的典型代表。在中到大性网络中随处可见OSPF协议。接下来就说一说OSPF协议的工作原理和特点。

 OSPF(开放式最短路径优先协议)

    OSPF属于IGP协议中的一员,用在中到大型的AS上。OSPF有两个版本。一个是IPV4(版本号version为2),一个是IPV6(版本号version为3)。

 OSPF协议建立的流程

    首先路由器们建立邻居,通过交互HELLO报文到邻居表中并放入OSPF邻居信息(比如路由器名字,我连入的接口,IP地址,邻接状态)协商主从随后会互相交换LSA到LSDB中,LSDB中有LSA的名字,产生区域和内容。最后通过SPF计算将最优路径放入路由表中。

数据通信——网络层(OSPF基础特性)_第1张图片

    R1路由器通过动态路由选择协议OSPF和手动配置的方式发现了R2这个路由,但是有多个路径可以到达R2。此时会进行这几条路的路由优先级比较。优先级小的路由会被选择。一般情况下OSPF优先级更优,通过OSPF学习到的路由会添加到路由表中。

    但是如果路由的优先级一样的话,他们就会进行度量值的比较来选择谁的优先级最优。度量值小的优先。度量值一般参考的是这几个参数:下一跳的跳数,带宽,时延,代价,负载,可靠性等等。

OSPF术语

    LSA泛洪不同于距离矢量协议,链路状态协议通告的是链路状态而不是路由表。运行链路状态协议时候路由器之间首先会建立一个协议邻居关系,然后彼此间开始交互LSA(Link state Advertisement 链路状态通告)

    LSDBLSDB(Link state Adversitement 链路状态通告),每个路由器会互相共享LSA并存储在LSDB中。只要在LSDB中发现了该区域的所有路由器的LSA都记录在其中了,该协议就完成了。每个路由器的LSA全部都获取到了。

    SPF计算:SPF(Shortest Path First 最短路径优先)所有路由器基于SPF计算最优的路径。每台路由器会以自身为出发点形成一个树形结构,这样可以将计算到的路径信息放入路由表。

    OSPF度量值因为度量值,所以OSPF协议一方面也会以Cost值来选择出哪条路径是最优路径。通过每一个激活的OSPF都会维护一个接口Cost值,缺省时默认接口的Cost值为100mbit/s除接口的带宽(其中100mbit/s为OSPF的指定缺省参考值,可以更改该配置)。

    注:你一定要记得根据单位数量级进行更改缺省参考值,否则会出现百兆带宽与万兆带宽Cost值相等的情况!

    一条运行了OSPF协议的路由的Cost的值可以理解为从目的网段到本路由器的沿途的所有接入接口 的Cost的值的累加。

数据通信——网络层(OSPF基础特性)_第2张图片

 

OSPF报文的类型

    Hello报文每10s或30s发送一次,周期性发送,发现并维护邻居路由的关系。每10s发送会有40s等待回应的时间,如果没有回应就代表路由器不见了或者出现故障,那么会在路由表中删除该路由器信息。30s发送一次会有120s等待时间,如果没收到结果同上。

    Hello报文有个重要的字段叫做Neighbour(邻居字段)默认为空值。它用来描述OSPF邻居的信息是否被接受到(通过Hello报文判断),如果我没收到Hello字段,就证明我不知道我的邻居路由信息。同时他也会标识自己没有收到邻居Hello信息。如果我收到了Hello报文,我就会记录路由器的ID并在转发Hello时会携带邻居路由的信息。

数据通信——网络层(OSPF基础特性)_第3张图片

 上述图清晰明了

    DD报文(Database Description)描述本地的LSDB信息,DD报文中含有LSA的头部。用于两台设备进行Database同步(防止大量的LSA重复发送)。DD报文有两种发送方式:显示发送(我发送DD报文你发送确认包),映射发送(我发送DD序列号,你接收DD序列号)。一般都用显示

    在DD报文中,一台设备为master,一台为slave。从master路由器向其他路由表发送路由表内容时候,会规定起始序列号,每发送一个DD报文序列号加1,Slave根据序列号做出应答。DD报文的交换是OSPF路由器初始化进行的,在DD报文描述LSDB前会先协商主从,ID大的为主,但是第一次发送的DD报文是空的,后续才有LSA携带其中

    LSR(Linked state Request)链路状态请求该报文是向对方请求LSA,只有在双方成功交换DD报文后才可以交换LSA。

    LSU(Linked state update)链路状态提供向对方发送LSU报文,其中包含着所需的LSA(LSU中可以包含多个LSA)。

    LSAck(Linked state ack)链路状态回复回复收到获取LSA请求的确认信息

 

OSPF三大表项

    OSPF邻居表OSPF在传递链路状态信息前建立OSPF的邻居关系。OSPF通过HELLO报文来建立邻居之间的交流并显示了邻居状态。

    OSPF路由表:记录着路由器的接口等信息(就是路由表)

    LSDB表LSDB表保存了LSA信息。

    如果路由器之间仅仅进行了hello报文的交互,我们称之为邻居状态(Two-Way)这个状态无法交互LSA。如果五个报文都完成了交互,我们称之为邻接状态(full)。必须所有路由器进入了邻接状态才能代表OSPF协议真正的完成建立了。

OSPF的选举

    产生背景:MA(多路访问网络)分为广播型和非广播型。在MA中,如果每个OSPF协议的路由器与其他所有路由器建立联系的时候,会导致过多的OSPF连接。这就让网络的泛洪导致设备负载过大。尤其是当拓扑变化时候更为严重。为了优先MA中的邻接关系。

DR,BDR.DRother

    OSPF制定了三种身份:DR,BDR,DRother。仅允许DR与BDR建立与其他OSPF路由器的邻接关系。DRother不会建立OSPF邻接关系,只会停留在2-way状态。BDR用来监视DR的状态并备份DR的数据,只有当DR故障的时候会代替DR的位置。选举DR会根据该区域内最大的ID标识来选举出DR。选完主从以后的状态为EX-Start。

    有时,虽然通过路由器ID选举但实际操作时,先运行OSPF协议的路由器可能会自动成为DR,即使有比它大的ID标识。

    注:DR和BDR为接口状态,你可以在网络中设置或不进行设置,不过通过DR建立连接在统一下发信息更好。

OSPF协议的区域划分

    OSPF通过Area标识一个组,每个不同的组用区域号(Area ID)来表示。区域号ID无限制,可以用0,1,2等数字的形式,也可以用0.0.0.0,0.0.0.1,0.0.0.2等地址的形式

    区域可以划分为两个大区域:骨干区域(也就是区域为0的区域,他为核心区域,有且只有一个),非骨干区域(它与骨干区域挂靠)。一个区域内标识的一台路由器在这个区域内的ID是唯一的,而且每个运行OSPF协议的路由器都具备。这个ID不是IP地址,可以说是路由器的名字。因此,有时候我们见到一些252.252.252.252这类诡异的地址时,它其实是ID名而不是IP地址。

    不过我们可以用路由器的接口的IP地址作为ID标识,但是一定要保障接口的健壮性(也就是不能总出现问题),如果接口总是出现问题而导致更改ID,就会让路由器出现很多问题(每个路由器之间就像朋友,但是总换名字肯定不好吧)

这时我们引入一个划分概念:

区域内路由器在一个区域内的路由器

区域边界路由器(ABR)与每个区域都有连接的路由器

骨干区路由器(BackBone)骨干区的路由器

自治系统边界路由器(ASBR)它既可以录取OSPF协议,也可以录用其他协议。(它可把学到的其它协议的路由器重新分发给OSPF)

每个区域要和Area 0挂靠,保证心形网络结构避免路由环路问题

链路在一个网络中的确无环路,但在多个网络中可能会出现。计算方式也不是链路状态协议。

划分多个区域是为了汇总,减少LSA和路由条目的数量。一条路由改变,汇总路由不影响,(除非路由消失了)这样在频繁链路翻动(一个接口不停的UP和Down)的时候对其他区域无影响。(因为汇总了路由,因此影响少)

数据通信——网络层(OSPF基础特性)_第4张图片

 

你可能感兴趣的:(数据通信,网络,信息与通信,计算机网络,网络协议,tcp/ip)