OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)算法被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。
不同厂商管理距离不同,思科OSPF的协议管理距离(AD)是110,华为OSPF的协议管理距离是10。
基本信息
中文名称
开放最短路径优先
外文名称
OSPF(Open Shortest Path First)
类 型
路由器选择协议
目录
1OSPF起源
2术语与协议
3网络类型
4DR、BDR
5泛洪与区域
6两种类型
7OSPF度量值
8特殊区域
9数据包类型和格式
10OSPF基本配置命令
折叠编辑本段OSPF起源
IETF为了满足建造越来越大基于IP网络的需要,形成了一个工作组,专门用于开发开放式的链路状态路由协议,以便用在大型、异构的I P网络中。新的路由协议已经取得一些成功的一系列私人的、和生产商相关的、最短路径优先(SPF )路由协议为基础, 在市场上广泛使用。包括OSPF在内,所有的S P F路由协议基于一个数学算法-Dijkstra算法。这个算法能使路由选择基于链路状态,而不是距离向量。OSPF由IETF在20世纪80年代末期开发,OSPF是SPF类路由协议中的开放式版本。最初的OSPF规范体如今RFC1131中。这个第1版( OSPF版本1 )很快被进行了重大改进的版本所代替,这个新版本体如今RFC1247文档中。RFC 1247OSPF称为OSPF版本2是为了明确指出其在稳定性和功能性方面的实质性改进。这个OSPF版本有许多更新文档,每一个更新都是对开放标准的精心改进。接下来的一些规范出如今RFC 1583、2178和2328中。OSPF版本2的最新版体如今RFC 2328中。最新版只会和由RFC 2138、1583和1247所规范的版本进行互 *** 作。
链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。
OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。在这个AS中,所有的OSPF路由器都维护一个相同的描述这个AS结构的数据库,该数据库中存放的是路由域中相应链路的状态信息,OSPF路由器正是通过这个数据库计算出其OSPF路由表的。
作为一种链路状态的路由协议,OSPF将链路状态组播数据LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
折叠编辑本段术语与协议
折叠OSPF术语
Router-ID
假设这个世界上的人名字是没有重复的,每个人的名字都不相同,当有一天,遇上个陌生人告诉你,有任何麻烦可以找他,他一定能够帮你解决;等到你有麻烦的时候,你想找那个人帮忙,可是如果你连那个人的名字都不知道,那么也就不可能找到那个人帮忙了。OSPF就类似于上述情况,网络中每台OSPF路由器都相当于一个人,OSPF路由器之间相互通告链路状态,就等于是告诉别人可以帮别人的忙,如此一来,如果路由器之间分不清谁是谁,没有办法确定各自的身份,那么通告的链路状态就是毫无意义的,所以必须给每一个OSPF路由器定义一个身份,就相当于人的名字,这就是Router-ID,并且Router-ID在网络中绝对不可以有重名,否则路由器收到的链路状态,就无法确定发起者的身份,也就无法通过链路状态信息确定网络位置,OSPF路由器发出的链路状态都会写上自己的Router-ID,可以理解为该链路状态的签名,不同路由器产生的链路状态,签名绝不会相同。
每一台OSPF路由器只有一个Router-ID,Router-ID使用IP地址的形式来表示,确定Router-ID的方法为:
★1 手工指定Router-ID。
★2 路由器上活动Loopback接口中IP地址最大的,也就是数字最大的,如C类地址优先于B类地址,一个非活动的接口的IP地址是不能被选为Router-ID的。
★3 如果没有活动的Loopback接口,则选择活动物理接口IP地址最大的。
注:如果一台路由器收到一条链路状态,无法到达该Router-ID的位置,就无法到达链路状态中的目标网络。
Router-ID只在OSPF启动时计算,或者重置OSPF进程后计算。
COST
OSPF使用接口的带宽来计算Metric,例如一个10 Mbit/s的接口,计算Cost的方法为:
将10 Mbit换算成bit,为10 000 000 bit,然后用10000 0000除以该带宽,结果为 10000 0000/10 000 000 bit = 10,所以一个10 Mbit/s的接口,OSPF认为该接口的Metric值为10,需要注意的是,计算中,带宽的单位取bit/s,而不是Kbit/s,例如一个100 Mbit/s的接口,Cost 值为 10000 0000 /100 000 000=1,因为Cost值必须为整数,所以即使是一个1000 Mbit/s(1GBbit/s)的接口,Cost值和100Mbit/s一样,为1。如果路由器要经过两个接口才能到达目标网络,那么很显然,两个接口的Cost值要累加起来,才算是到达目标网络的Metric值,所以OSPF路由器计算到达目标网络的Metric值,必须将沿途中所有接口的Cost值累加起来,在累加时,同EIGRP一样,只计算出接口,不计算进接口。
OSPF会自动计算接口上的Cost值,但也可以通过手工指定该接口的Cost值,手工指定的优先于自动计算的值。
OSPF计算的Cost,同样是和接口带宽成反比,带宽越高,Cost值越小。到达目标相同Cost值的路径,可以执行负载均衡,最多6条链路同时执行负载均衡。
链路(Link)
就是路由器上的接口,在这里,应该指运行在OSPF进程下的接口。
链路状态(Link-State)
链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA),OSPF通过获得网络中所有的链路状态信息,从而计算出到达每个目标精确的网络路径。OSPF路由器会将自己所有的链路状态毫不保留地全部发给邻居,邻居将收到的链路状态全部放入链路状态数据库(Link-State Database),邻居再发给自己的所有邻居,并且在传递过程中,绝对不会有任何更改。通过这样的过程,最终,网络中所有的OSPF路由器都拥有网络中所有的链路状态,并且所有路由器的链路状态应该能描绘出相同的网络拓朴。比如如今要计算一条地铁线路图,如上海地铁二号线某段的图,如果不直接将该图给别人看,图好比是路由表,如今只是报给别人各个站的信息,该信息好比是链路状态,通过告诉别人各个站左边一站是什么,右边一站是什么,别人也能通过该信息(链路状态),画出完整的线路图(路由表),如得到如下各站信息(链路状态):
★南京东路-站 (左边一站是人民广场,右边一站是陆家嘴)
★南京西路-站 (左边一站是静安寺,右边一站是人民广场)
★静安寺-站 (右边一站是南京西路)
★人民广场-站 (左边一站是南京西路,右边一站是南京东路)
★陆家嘴-站 (左边一站是南京东路)
还原线路图(路由表)如下:
根据分析以下两站信息(两条链路状态):
★南京西路-站 (左边一站是静安寺,右边一站是人民广场)
★静安寺-站 (右边一站是南京西路)
计算 因为静安寺右边是南京西路,而南京西路左边是静安寺,所以静安寺和南京西路是相邻的,为 静安寺 - 南京西路,并且由于南京西路右边是人民广场,所以通过这两条信息,得出线路为 静安寺 - 南京西路 - 人民广场,继续往下
再根据如下两站信息(链路状态):
★人民广场-站 (左边一站是南京西路,右边一站是南京东路)
★南京东路-站 (左边一站是人民广场,右边一站是陆家嘴)
计算 因为之前南京西路右边是人民广场,人民广场左边是南京西路,所以南京西路和人民广场是相邻的两站,并且人民广场右边是南京东路,得出线路为 南京西路 - 人民广场 - 南京东路,并且因为南京东路右边是陆家嘴,所以 这部分线路得知为南京西路 - 人民广场 - 南京东路 - 陆家嘴,继续往下
再根据如下一站信息(链路状态):
★陆家嘴-站 (左边一站是南京东路)
计算 因为南京东路右边是陆家嘴,而陆家嘴左边是南京东路,所以两站相邻,得出为 南京东路 - 陆家嘴,
通过以上各部分的线路:
静安寺 - 南京西路 - 人民广场
南京西路 - 人民广场 - 南京东路 - 陆家嘴
南京东路 - 陆家嘴
所以很轻松的就画出该段地铁线路图为:
静安寺 - 南京西路 - 人民广场 -南京东路 - 陆家嘴
从以上计算过程可以知道,因为得到各站的信息,就能画出整条线路图,而OSPF也同样根据路由器各接口的信息(链路状态),计算出网络拓朴图,OSPF之间交换链路状态,就像上面交换各站信息,而不像RIP和EIGRP直接交换路由表,交换路由表,就等于直接给人看线路图,可见OSPF的智能算法,比距离矢量协议对网络有更精确的认知。
OSPF区域
因为OSPF路由器之间会将所有的链路状态(LSA)相互交换,毫不保留,当网络规模达到一定程度时,LSA将形成一个庞大的数据库,势必会给OSPF计算带来巨大的压力;为了能够降低OSPF计算的复杂程度,缓存计算压力,OSPF采用分区域计算,将网络中所有OSPF路由器划分成不同的区域,每个区域负责各自区域精确的LSA传递与路由计算,然后再将一个区域的LSA简化和汇总之后转发到另外一个区域,这样一来,在区域内部,拥有网络精确的LSA,而在不同区域,则传递简化的LSA。区域的划分为了能够尽量设计成无环网络,所以采用了Hub-Spoke的拓朴架构,也就是采用核心与分支的拓朴,如下图:
区域的命名可以采用整数数字,如1、2、3、4,也可以采用IP地址的形式,0001、0002,因为采用了Hub-Spoke的架构,所以必须定义出一个核心,然后其它部分都与核心相连,OSPF的区域0就是所有区域的核心,称为BackBone 区域(骨干区域),而其它区域称为Normal 区域(常规区域),在理论上,所有的常规区域应该直接和骨干区域相连,常规区域只能和骨干区域交换LSA,常规区域与常规区域之间即使直连也无法互换LSA,如上图中Area 1、Area 2、Area 3、Area 4只能和Area 0互换LSA,然后再由Area 0转发,Area 0就像是一个中转站,两个常规区域需要交换LSA,只能先交给Area 0,再由Area 0转发,而常规区域之间无法互相转发。
OSPF区域是基于路由器的接口划分的,而不是基于整台路由器划分的,一台路由器可以属于单个区域,也可以属于多个区域,如下图:
如果一台OSPF路由器属于单个区域,即该路由器所有接口都属于同一个区域,那么这台路由器称为Internal Router(IR),如上图中的R2,R3和R4;如果一台OSPF路由器属于多个区域,即该路由器的接口不都属于一个区域,那么这台路由器称为Area Border Router (ABR),如上图中的R1,ABR可以将一个区域的LSA汇总后转发至另一个区域;如果一台OSPF路由器将外部路由协议重分布进OSPF,那么这台路由器称为Autonomous System Boundary Router (ASBR),如上图中,R5将EIGRP重分布进OSPF,那么R5就是ASBR,但是如果只是将OSPF重分布进其它路由协议,则不能称为ASBR。
可以配置任何OSPF路由器成为ABR或ASBR。
由于OSPF有着多种区域,所以OSPF的路由在路由表中也以多种形式存在,共分以下几种:
如果是同区域的路由,叫做Intra-Area Route,在路由表中使用O来表示;
如果是不同区域的路由,叫做Inter-Area Route或Summary Route,在路由表中使用O IA来表示;
如果并非OSPF的路由,或者是不同OSPF进程的路由,只是被重分布到OSPF的,叫做External Route,在路由表中使用O E2或OE 1来表示。
当存在多种路由可以到达同一目的地时,OSPF将根据先后顺序来选择要使用的路由,所有路由的先后顺序为:
Intra-Area - Inter-Area - External E1 - External E2,即 O - O IA - O E1 - O E2。
注:
★一台路由器可以运行多个OSPF进程,不同进程的OSPF,可视为没有任何关系,如需要获得相互的路由信息,需要重分布。
★每个OSPF进程可以有多个区域,而路由器的链路状态数据库是分进程和分区域存放的。
邻居(Neighbor)
OSPF只有邻接状态才会交换LSA,路由器会将链路状态数据库中所有的内容毫不保留地发给所有邻居,要想在OSPF路由器之间交换LSA,必须先形成OSPF邻居,OSPF邻居靠发送Hello包来建立和维护,Hello包会在启动了OSPF的接口上周期性发送,在不同的网络中,发送Hello包的间隔也会不同,当超过4倍的Hello时间,也就是Dead时间过后还没有收到邻居的Hello包,邻居关系将被断开。
两台OSPF路由器必须满足4个条件,才能形成OSPF邻居,4个必备条件如下:
Area-id(区域号码)
即路由器之间必须配置在相同的OSPF区域,否则无法形成邻居。
Hello and Dead Interval(Hello时间与Dead时间)
即路由器之间的Hello时间和Dead时间必须一致,否则无法形成邻居。
Authentication(认证)
路由器之间必须配置相同的认证密码,如果密码不同,则无法形成邻居。
Stub Area Flag(末节标签)
路由器之间的末节标签必须一致,即处在相同的末节区域内,否则无法形成邻居。
注:
★OSPF只能使用接口的Primary地址建立邻居,不能使用Secondary建立邻居。
★路由器双方接口要么都为手工配置地址(Numbered),要么都为借用地址(Unnumbered),否则无法建立邻居。
邻接(Adjacency)
两台OSPF路由器能够形成邻居,但并不一定能相互交换LSA,只要能交换LSA,关系则称为邻接(Adjacency)。邻居之间只交换Hello包,而邻接(Adjacency)之间不仅交换Hello包,还要交换LSA。
DR/BDR
当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,通过在多路访问网段中选择出一个核心路由器,称为DR(Designated Router),网段中所有的OSPF路由器都和DR互换LSA,这样一来,DR就会拥有所有的LSA,并且将所有的LSA转发给每一台路由器;DR就像是该网段的LSA中转站,所有的路由器都与该中转站互换LSA,如果DR失效后,那么就会造成LSA的丢失与不完整,所以在多路访问网络中除了选举出DR之外,还会选举出一台路由器作为DR的备份,称为BDR(Backup Designated Router),BDR在DR不可用时,代替DR的工作,而既不是DR,也不是BDR的路由器称为Drother,事实上,Dother除了和DR互换LSA之外,同时还会和BDR互换LSA。
其实不难看出,DR与BDR并没有任何本质与功能的区别,只有在多路访问的网络环境,才需要DR和BDR,DR与BDR的选举是在一个二层网段内选举的,即在多个路由器互连的接口范围内,与OSPF区域没有任何关系,一个区域可能有多个多路访问网段,那么就会存在多个DR和BDR,但一个多路访问网段,只能有一个DR和BDR;选举DR和BDR的规则为:
★比较接口优先级
选举优先级最高的成为DR,优先级数字越大,表示优先级越高,被选为DR的几率就越大,次优先级的为BDR,优先级范围是0-255,默认为1,优先级为0表示没有资格选举DR和BDR。
★Route-Id大小
如果在优先级都相同的情况下,Route-Id 最大的成为DR,其次是BDR,数字越大,被选为DR的几率就越大。
因为所有路由器都能与DR和BDR互换LSA,所以所有路由器都与DR和BDR是邻接(Adjacency)关系,而Drother与Drother之间无法互换LSA,所以Drother与Drother之间只是邻居关系。
在一个多路访问网络中,选举DR和BDR是有时间限制的,该时间为Wait时间,默认为4倍的Hello时间,即与Dead时间相同,如果OSPF路由器在超过Wait时间后也没有其它路由器与自己竞争DR与BDR的选举,那么就选自己为DR;当一个多路访问网络中选举出DR与BDR之后,在DR与BDR没有失效的情况下,不会进行重新选举,也就是在选举出DR与BDR之后,即使有更高优先级的路由器加入网络,也不会影响DR与BDR的角色,在越出选举时间(Wait时间)后,只有DR与BDR失效后,才会重新选举。DR失效后,会同时重新选举DR与BDR,而在BDR失效后,只会重新选举BDR。
DR和BDR与Drother的数据包处理会有所不同,
所有OSPF路由器,包括DR与BDR,都能够接收和传递目标地址为224005的数据包。
只有DR和BDR才能接收和传递目标地址为224006的数据包。
由此可见,Drother路由器将数据包发向目标地址224006,只能被DR和BDR接收,其它Drother不能接收;而DR和BDR将数据包发向目标地址224005,可以被所有路由器接收。
折叠协议
一、Hello协议的目的:
用于发现邻居
在成为邻居之前,必须对Hello包里的一些参数进行协商
Hello包在邻居之间扮演着keepalive的角色
允许邻居之间的双向通信
用于在NBMA(Nonbroadcast Multi-access)、广播网络(以太网)中选举DR和BDR
二、Hello Packet包含以下信息:
源路由器的RID
源路由器的Area ID
源路由器接口的掩码
源路由器接口的认证类型和认证信息
源路由器接口的Hello包发送的时间间隔
源路由器接口的无效时间间隔
优先级
DR/BDR接口IP地址
五个标记位(flag bit)
源路由器的所有邻居的RID
折叠
ospf工作原理
每个路由器回周期性的向相邻路由器发送探测报文(Hello报文),检测其是否可达。如果邻站给予应答,说明链路正常;否则说明链路出现故障。
如果一个路由器检测到某条链路状态协议发生变化,该路由器就发送链路状态更新报文,采用泛洪 *** 作对全网更新链路状态。
泛洪指某个路由器收到更新报文后都将这个报文发送给自己的相邻路由器,直到报文送到整个网络\n即使链路状态没有发生变化,每隔 30min 路由器要向网络中的其他路由器广播链路状态信息,以保证链路状态数据库和全网保持一致。
每个路由器收到其他路由器的链路状态信息后,更新链路状态数据库,构建整个网络的拓扑图,利用 Dijkstra 的最短路径算法计算出到达每个网络的最短路径(就是路由表中的内容)。
可能是全网最全的OSPF基础知识点汇总,常见考点总结,面试必备
网络小专家大脸鹏
06-19 · 优质科技领域创作者
OSPF作为搞网络的小伙伴最常用的动态路由协议,在工作中经常会用到,同时面试的时候也是经常出现的考点,大脸鹏带大家提炼梳理一下相关知识,以后遇到相关的问题就不怕啦。
源自网络的OSFP拓扑图
一、OSPF基本概念
1、OSPF的全称Open Shortest Path First(开放式最短路径优先),它是一个IGP协议
2、OSPF的核心算法是最短路径优先,这也就意味衡量两点之间路由走向最重要的因素就是路径是否为最短,最短路径由链路开销,路径上经过设备的数目等综合考虑得出
3、OSPF核心算法的名称是迪克斯加算法
4、OPSF通过LSA(Link State Advertisement)来传递路由
5、OSPF的协议号是89
6、OSPF的核心是维护链路状态,因此它的微观单位并不是路由器,而是一条条的链路,这个也是为什么我们启用OSPF协议可以在端口下启用的原因,因为我们是要将端口对应的链路通过OSPF发布维护
二、OSPF的五种报文类型
1、Hello包 主要作用是:发现OSPF邻居,建立和维护邻接关系
2、DBD(Database Description) 检测发送端和接收端的链路状态数据库是否同步
3、LSR (Link state request)链路状态请求
4、LSU (Link state update)链路状态更新
5、LSAck (Link state ack)当收到一个LSU,路由器发送LSAck确认(这也体现了OSPF是一个可靠协议,每一个数据包都被确认)
三、OSPF的状态机
1、Down: OSPF初始状态,还没有开始交换信息。
2、Init: 初始化交换信息,表示自己已经收到了邻居的Hello报文,但是报文中没有列出本路由的Route ID(通常Router-ID是由路由器上激活状态的最大IP地址,一般配置的时候我们也会在路由器上做loopback地址用来当Router-ID),也就是说对方还没有收到本路由发出的Hello报文
3、Two-Way:双方都收到了对方发送的Hello报文,建立了邻居关系。在多路访问的网络中,两个接口状态是DROther的路由器之间将停留在此状态,其他情况将继续转入高级状态。在此状态下的路由器是不能同步路由信息的,想同步路由器信息,必须建立邻接关系。(这里的关键点就是MA网络中,存在不同的身份,下面第四部分会仔细讲)
4、Exstart:准备开始交换阶段,在这个阶段双方通过Hello报文决定主从关系,最高Router-ID的路由器将成为主路由,最先发起交换。主从关系确立后进入下一阶段。
5、Exchange:开始交换阶段,路由器将本地的路由状态数据库(Link state database)用数据库描述(Database Description)报文来描述,然后发给邻路由。如果这个阶段中的路由收到不在其数据库中的有关链路的信息,那么在下一个阶段中将请求对方发送该路由条目的完整信息。
6、Loading:在这个阶段,路由器通过发送链路状态请求(Link-state Request),来向邻居请求一些路由条目的详细信息。邻居会使用链路状态更新包Link-state Update来回复请求,收到邻居的Link-state Update后,再发送LSAck(Link-state-ack)来进行数据包的确认(这个也是OSPF协议是可靠协议的体现)。
7、FULL:完全邻接状态,Loading结束后,路由器之间就变成了"Full adjacency"
四、OSPF的基础知识考点
1、问:多路广播网络中(MA网络),路由器的几种身份
答:三种身份,DR/BDR/DROther
2、问:DR/BDR通过什么选举
答:同一网段中所有的路由器根据路由器优先级、Router ID在HELLO报文发送阶段选举出来的,只有优先级大于0的路由器才具有选取资格
3、问:多路广播网络中(MA网络)的邻接关系
答:所有DROther之间是Two-way状态,所有DROther与BR/BDR之间是Full状态,DR/BDR之间是Full状态
4、问:DR/BDR通信地址
答:MA网络中224006是DR和BDR之间通信的组播地址 非DR和BDR使用224005
5、问:Router-ID(RID)怎么选举
答:RID是一个用来标识路由器的IP地址,可以在OSPF路由进程中手工指定(一般指定为loopback地址);如果没有指定,路由器默认选择回环接口中最高的IP作为RID;如果没有回环地址,路由器使用所有激活的物理接口中最高的IP作为RID。
6、问:OSPF中hello包的间隔时间
答:OSPF在MA网络中hello默认 10s dead time默认40s 在非广播多路访问(NBMA)中 Hello 30s
dead time 120s 都是1:4的关系
7、问:OPSF邻居建立不起来的原因是什么
答:①邻接接口的MTU不一样②都是非0区域③hello deadtime设置不一致④接口掩码不一致
8、问:邻居建立卡在Exchage/Exstart状态是为什么
答:一定是端口MTU设置出了问题
以上就是大脸鹏为大家总结的OSPF基础知识点以及面试常见考点,喜欢的朋友欢迎点赞转发~后续我会为大家带来OSPF不同区域的划分以及ASBR等知识~欢迎关注我,我将为各位提供最详细最接地气的实在网络知识。
专栏
互联网大厂CCIE教网络
作者:网络小专家大脸鹏
59币
20人已购
查看
334阅读
搜索
bgp入门基础知识
ospf基础知识入门
sdn从入门到精通
pmp必背100个知识
bgp入门基础知识大全
ospf思维导图
OSPF链路状态更新实例
链路状态更新(LSU) 数据包用于OSPF路由更新。一个LSU数据包可能包含11类型的链路状态通告(LSA),术语“链路状态更新(LSU)”和“链路状态通告 (LSA)”之间的差异有时较难分清。下面是我带来的OSPF链路状态更新相关知识,希望对你有帮助!
以下是LAS的11种类型:
OSPF算法
每台 OSPF 路由器都会维持一个链路状态数据库,其中包含来自其它所有路由器的LSA。一旦路由器收到所有LSA并建立其本地链路状态数据库,OSPF就会使用Dijkstra的最短路径优先(SPF) 算法创建一个SPF树。随后,将根据SPF 树,使用通向每个网络的最佳路径填充 IP路由表。
● 管理距离:OSPF的管理距离(AD)是“110”。
● 身份验证:与对其它路由协议一样,OSPF也可进行身份验证配置。对传输的路由信息进行身份验证是好的做法。此做法可确保路由器仅接受配置有相同的口令和身份验证信息的其它路由器所发来的路由信息。
一、OSPF基本配置
Router ospf 命令:
process-id 是一个介于1和65535之间的数字,由网络管理员选定。process-id仅在本地有效,这意味着路由器之间建立相邻关系时无需匹配该值。
配置方法:
R1#conf t
R1(config)#router ospf 1
R1(config-router)#
Network 命令
OSPF 中的network 命令与其它IGP 路由协议中的 network 命令具有相同的功能:
● 路由器上任何符合 network 命令中的网络地址的接口都将启用,可发送和接收 OSPF 数据包。
● 此网络(或子网)将被包括在 OSPF 路由更新中。
Router(config-router)#network network-address wildcard-mask areaarea-id
area area-id 指OSPF 区域。OSPF 区域是共享链路状态信息的一组路由器。相同区域内的所有OSPF路由器的链路状态数据库中必须具有相同的链路状态信息,这通过路由器将各自的链路状态泛洪给该区域内的其它所有路由器来实现。(“ 0”为骨干区域)
二、OSPF路由器ID
确定路由器ID
OSPF 路由器 ID 用于唯一标识OSPF路由域内的每台路由器。Cisco路由器按下列顺序根据下列三个条件确定路由器 ID:
● 使用通过OSPF router-id命令配置的 IP 地址。
● 如果未配置 router-id,则路由器会选择其所有环回接口的最高 IP 地址。
● 如果未配置环回接口,则路由器会选择其所有物理接口的最高活动 IP 地址。
OSPF router-id 命令
Router(config)#router ospf process-id //进入OSPF配置模式
Router(config-router)#router-id ip-address //配置Router-id
修改路由器 ID
使用:Router#clear ip ospf process 命令来重启OSPF进程,然后去修改你想要的Router-id。
重复的路由器 ID
当同一个OSPF路由域内的两台路由器具有相同的路由器ID时,将无法正常路由。如果两台相邻路由器的路由器ID相同,则无法建立相邻关系。当出现重复的OSPF路由器ID时,IOS将显示一条类似下列的消息:
%OSPF-4-DUP_RTRID1:Detected router with duplicate router ID
验证Router-id:使用show ip protocols来验证。
验证OSPF
show ip ospf neighbor 命令可用于验证 OSPF 相邻关系并排除相应的故障。此命令为每个邻居显示下列输出:
● Neighbor ID — 该相邻路由器的路由器 ID。
● Pri — 该接口的 OSPF 优先级。
● State — 该接口的 OSPF 状态。FUL● 状态表明该路由器和其邻居具有相同的OSPF链路状态数据库。
● Dead Time — 路由器在宣告邻居进入 down(不可用)状态之前等待该设备发送 Hello数据包所剩余的时间。此值在该接口收到Hello数据包时重置。
● Address — 该邻居用于与本路由器直连的接口的IP地址。
● Interface — 本路由器用于与该邻居建立相邻关系的接口。
在下列情况下,两台路由器不会建立OSPF相邻关系:
● 子网掩码不匹配,导致该两台路由器分处于不同的网络中。
● OSPF Hello计时器或 Dead 计时器不匹配。
● OSPF 网络类型不匹配。
● 存在信息缺失或不正确的OSPF network命令。
其它功能强大的OSPF故障排除命令包括:
show ip protocols
可用于快速验证关键 OSPF 配置信息,其中包括OSPF进程ID、路由器ID、路由器正在通告的网络、正在向该路由器发送更新的邻居以及默认管理距离
show ip ospf
命令也可用于检查 OSPF 进程 ID 和路由器 ID,此外,还可显示 OSPF 区域信息以及上次计算 SPF 算法的时间。
路由器每次收到有关拓扑的新信息时,必须重新运行 SPF 算法,SPF 算法会占用很多 CPU 资源。以下信息是使用show ip ospf的输出。
Initial SPF schedule delay 5000 msecs
Minimum hold time between two consecutive SPFs 10000 msecs
Maximum wait time between two consecutive SPFs 10000 msecs
状态在 up 和 down 之间来回变化的网络称为链路不稳。链路不稳会导致区域内的OSPF路由器持续重新计算SPF算法,从而无法正确收敛。为尽量减轻此问题,路由器在收到一个LSU后,会等待 5 秒(5000毫秒)才运行SPF算法。这样可以防止路由器持续运行 SPF 算法,还存在一个 10 秒(10000 毫秒)的保留时间。路由器运行完一次 SPF 算法后,会等待 10 秒才再次运行该算法。
show ip ospf interface
此命令用于检验 Hello 间隔和 Dead 间隔的最快方法。Cost就是开销值。
检查路由表
使用show ip route 命令可用于检验路由器是否正在通过 OSPF 发送和接收路由。每条路由开头的 O 表示路由来源为 OSPF。
OSPF度量
OSPF度量称为开销RFC2328中有下列描述:“开销与每个路由器接口的输出端关联。系统管理员可配置此开销。开销越低,该接口越可能被用于转发数据流量。”
Cisco IOS 使用从路由器到目的网络沿途的传出接口的累积带宽作为开销值。
图示为各种接口的默认OSPF开销
参考带宽
参考带宽默认为10的8次幂,即 100,000,000 bps,亦即100 Mbps。这使带宽等于或大于100 Mbps 的接口具有相同的OSPF开销 1。
可使用 OSPF 命令 auto-cost reference-bandwidth 修改参考带宽值。如果需要使用此命令,则建议同时用在所有路由器上,以使OSPF路由度量保持一致。
OSPF累计开销
OSPF路由的开销为从路由器到目的网络的累计开销值。(就是说源地址到目的地址中间经过的所有路径的开销值进行相加)
修改链路的开销
bandwidth 接口命令或 ip ospf cost 接口命令都可用于达到此目的 — 使OSPF在确定最佳路由时使用准确的值。(要该就要两端都要改)
Router(config-if)#bandwidth bandwidth-kbps //修改接口的带宽参数。
Router(config-if)# ip ospf cost “加数字” //命令则直接将链路开销设置为特定值并免除了计算过程。
;以上就是关于ospf的环路问题全部的内容,包括:ospf的环路问题、ospf工作原理、简述ospf协议的三个要点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)