逐跳收敛:
如图所示,N1网络发生变化,RTA向RTB发出更新,RTB收到更新之后进行本地计算,完成计算后再向RTC发送路由变化通知,如此循环。逐跳收敛的方式,造成了网络收缓慢的问题。
传闻路由更新机制:
RIP在计算路由完全依赖于从邻居路由器收到的路由信息,RTE仅依靠从RTD获取的信息计算路由,对RTA、RTB和RTC之间的网络情况并不了解。RIP在计算路由时,缺少对全局网络拓扑的了解。
以“跳数”为度量:
因为RIP基于跳数的度量方式,所以N1与N2网络互访时会选择RTA->RTB->RTD->RTE作为最优路径。显然RTB->RTC->RTD之间的以太链路要比RTB->RTD的串行链路带宽要高的多。
如何解决RIP带来的问题?
在 “收到更新”、“计算路由”、“发送更新”的路由收敛过程中,RIP的局限性在于路由器需要在完成路由计算之后才可以向邻居发送路由变化通知。如果将这个过程调整为:“收到更新”、 “发送更新”、“计算路由”,即路由器从邻居收到路由更新后立刻向其他邻居路由器转发,然后再本地计算新的路由。这样的收敛方式可以大大降低全网路由收敛的时间。
因为RIP路由器仅从邻居路由器获取路由信息,所以对于非最优或者错误路由信息,RIP路由器并不能识别或屏蔽。解决此问题的关键最佳方式是路由器收集全网的信息,并基于这些信息独立计算路由。
基于跳数的度量方式并没有考虑数据包的链路转发延迟,如果采用以累积带宽为选路参考依据,可以更好的规避选择次优路径的风险。
OSPF(Open Shortest Path First)开放式最短路路径优先:
所谓Link State(链路状态)指的就是路由器的接口状态。在OSPF中路由器的某一接口的链路状态包含了如下信息:接口的IP地址及掩码;接口的带宽;接口所连接的邻居等等。【LSDB就是链路状态数据库,这个LSDB会单独拿出来讲,现在先简单了解一下就可以】
OSPF作为链路状态路由协议,不直接传递各路由器的路由表,而传递链路状态信息,各路由器基于链路状态信息独立计算路由。
所有路由器各自维护一个链路状态数据库。邻居路由器间先同步链路状态数据库,再各自基于SPF(Shortest Path First)算法计算最优路由,从而提高收敛速度。
在度量方式上,OSPF将链路带宽作为选路时的参考依据。 “累计带宽”是一种要比“累积跳数”更科学的计算方式。
OSPF工作过程 :
OSPF的路由计算过程可以简化描述为:
路由器之间发现并建立邻居关系。
每台路由器产生并向邻居泛洪链路状态信息,同时收集来自其他路由器链路状态信息,完成LSDB(Link State Database)的同步。
每台路由器基于LSDB通过SPF算法,计算得到一棵以自己为根的SPT(Shortest Path Tree),再以SPT为基础计算去往各邻居连接网络的最优路由,并形成路由表。
OSPF的邻居建立过程:
企业网中的设备少则几台多则几十台甚至几百台,每台路由器都需要有一个唯一的ID用于标识自己。
Router ID是一个32位的无符号整数,其格式和IP地址的格式是一样的,Router ID选举规则如下:
手动配置OSPF路由器的Router ID(通常建议手动配置);
如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID;
如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID。
OSPF的路由器Router ID重新配置后,可以通过重置OSPF进程来更新Router ID。
OSPF路由器之间在交换链路状态信息之前,首先需要彼此建立邻居关系,通过Hello报文实现。
OSPF协议通过Hello报文可以让互联的路由器间自动发现并建立邻居关系,为后续可达性信息的同步作准备。
在形成邻居关系过程中,路由器通过Hello报文完成一些参数的协商。
邻居关系建立后,周期性的Hello报文发送还可以实现邻居保持的功能,在一定时间内没有收到邻居的Hello报文,则会中断路由器间的OSPF邻居关系。
状态含义:
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己的Router ID不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。
2-Way:在此状态下,路由器发现自己的Router ID存在于收到的Hello报文的邻居列表中,已确认可以双向通信。
邻居建立过程如下:
RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2。当RTA启动OSPF后,RTA会发送第一个Hello报文。此报文中邻居列表为空,此时状态为Down,RTB收到RTA的这个Hello报文,状态置为Init。
RTB发送Hello报文,此报文中邻居列表为空,RTA收到RTB的Hello报文,状态置为Init。
RTB向RTA发送邻居列表为1.1.1.1的Hello报文,RTA在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
RTA向RTB发送邻居列表为2.2.2.2的Hello报文,RTB在收到的Hello报文邻居列表中发现自己的Router ID,状态置为2-way。
*因为邻居都是未知的,所以Hello报文的目的IP地址不是某个特定的单播地址。邻居从无到有,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)。
如果网络不支持组播,那么如何实现邻居的建立?
对于不支持组播的网络可以通过手动配置实现邻居的发现与维护。
当网络规模越来越大或者设备频繁更新,相关联的OSPF路由器都需要更改静态配置,手动更改配置的工作量变大且容易出错。除了特殊场景,一般情况下不适用手动配置的方式。
OSPF路由器之间建立邻居关系是为了同步链路状态信息,接下来学习OSPF如何实现链路状态数据库的同步。
链路信息主要包括:链路的类型;接口IP地址及掩码;链路上所连接的邻居路由器;链路的带宽(开销)。
区别于RIP路由器之间交互的路由信息,OSPF路由器同步的是最原始的链路状态信息,而且对于邻居路由器发来的链路状态信息,仅作转发。最终所有路由器都将拥有一份相同且完整的原始链路状态信息。
OSPF丰富数据链路层支持能力:
网络技术的发展包含了设备、链路以及通信协议的发展。设备性能日趋提高,互联链路也从串行链路、ATM、帧中继发展到当前的以太网、xPON、SDH、MSTP、OTN等。技术升级不是一蹴而就的,而是一个循序渐进的过程。各种不同的物理链路各具特点,也正因为如此,一个成熟的路由协议必须能够根据不同物理链路特性进行适配。
网络类型-P2P网络
OSPF划分了四种网络类型并以此来组成拓扑信息的一部分。
P2P网络连接了一对路由器,广播、组播数据包都可以转发。
P2P网络的例子:两台通过PPP(Point-to-Point Protocol)链路相连的路由器网络。
广播型网络支持两台及两台以上的设备接入同一共享链路且可以支持广播、组播报文的转发,是OSPF最常见的网络类型。
广播型网络的例子:通过以太网链路相连的路由器网络。
同时因为一个广播型网络中存在多台设备,邻居关系建立以及链路信息同步方面,OSPF都有对应的特性来减少同一网络多台设备带来的不利影响。
以上两种网络类型是最常见的,此外,还有两种少见的网络类型。
与广播型网络不同的是NBMA网络默认不支持广播与组播报文的转发。在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。
NBMA(non-broadcast multiple access)型网络的例子:通过全互连的帧中继链路相连的路由器网络。
在现在的网络部署中,NBMA网络已经很少了。
与广播型网络不同的是NBMA网络默认不支持广播与组播报文的转发。在NBMA网络上,OSPF模拟在广播型网络上的操作,但是每个路由器的邻居需要手动配置。
NBMA(non-broadcast multiple access)型网络的例子:通过全互连的帧中继链路相连的路由器网络。
在现在的网络部署中,NBMA网络已经很少了。
一个NBMA类型的网络可以改为广播类型的条件是:任意两台路由器之间都有一条虚电路直接可达,或者说,这个网络是全连通的。如果网络不满足这个条件,必须将接口的网络类型改为点到多点。这样,两台不能直接可达的路由器之间可以通过一台与两者都直接可达的路由器来交换路由信息。接口的网络类型改为点到多点后,就不必再配置邻居路由器。
如果同一网段内只有两台路由器运行OSPF协议,也可以将接口的网络类型改为点到点。
OSPF协议不支持NULL接口的配置。
将一个非广播网络看成是一组P2P网络,这样的非广播网络便成为了一个点到多点(P2MP)网络。在P2MP网络上,每个路由器的OSPF邻居可以使用反向地址解析协议(Inverse ARP)来发现。P2MP可以看作是多个P2P的集合,P2MP可以支持广播、组播的转发。
没有一种链路层协议默认属于P2MP类型网络,也就是说必须是由其他的网络类型强制更改为P2MP。常见的做法是将非完全连接的帧中继或ATM改为P2MP的网络。
此外OSPF的链路状态信息中的开销值是如何度量的呢?
接口的网络类型为NBMA或使用本命令将接口的网络类型手工改为NBMA时,必须使用命令peer (OSPF)来配置邻接点。
一般情况下,链路两端的OSPF接口的网络类型必须一致,否则双方不可以建立起邻居关系。
当且仅当链路两端的OSPF接口的网络类型一端是广播网而另一端是P2P时,双方仍可以正常的建立起邻居关系,但互相学不到路由信息
OSPF在计算接口的cost时,cost=参考带宽/实际带宽,默认参考带宽为100M。当计算结果有小数位时,只取整数位;结果小于1时,cost取1。
若需要调整接口cost值有两种方式:
直接在接口下配置,需要注意的是,配置的cost是此接口最终的cost值,作用范围仅限于本接口。
修改OSPF的默认参考带宽值,作用范围是本路由器使能OSPF的接口。建议参考整个网络的带宽情况建立参考基线,所有路由器修改相同的参考带宽值,从而确保选路的一致性。
OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和,以RTA访问RTC Loopback 1接口192.168.3.3为例,其cost=G1’s cost+G3’s cost。
相比于RIP,OSPF的度量方式不仅考虑“跳数”,而且还考虑了“带宽”,比RIP更可靠的选择最优的转发路径。
OSPF的报文:
RIP路由器之间是基于UDP 520的报文进行通信,OSPF也有其规定的通信标准。OSPF使用IP承载其报文,协议号为89。
在OSPF Packet部分,所有的OSPF报文均使用相同的OSPF报文头部:
Version :对于当前所使用的OSPFv2,该字段的值为2。
Type:OSPF报文类型。
Packet length:表示整个OSPF报文的长度,单位是字节。
Router ID:表示生成此报文的路由器的Router ID。
Area ID:表示此报文需要被通告到的区域。
Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部。
Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证。
Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同。
以上就是本次的网络技术动态路由协议之开放式最短路径优先OSPF(Open Shortest Path First)基础篇一,因为OSPF基础知识点较多,我们分篇进行完成,方便大家去看,后续也会尽快完成基础篇二的总结,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!
励志分享超清壁纸语句~~:
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼
好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!