1.OSPF简介
-
OSPF(Open Shortest Path First,开放式最短路径优先)是一种链路状态路由协议,属于内部网关协议(IGP),是目前现网中使用最广泛的IGP路由协议,采用迪克斯彻(Dijkstra)算法用于计算一个节点到其他所有节点的最短路径。
-
OSPF协议的报文封装于IP,协议号89。
-
OSPF使用的组播地址:224.0.0.5(所有OSPF路由器),224.0.0.6(DR/BDR)
2.链路状态路由协议
2.1 简介
链路状态路由协议是层次式的,网络中的路由器并不向邻居传递“路由项”,而是通告给邻居一些链路状态LSA(Link State Adver-tisement,例如接口设置的IP、掩码、开销值),OSPF路由器将自己的链路状态全部转发给邻居,通过LSA的泛洪,全网中所有路由器都知道整个网络的链路状态,因为所有路由器得到的链路状态信息都是一致的,就构建了统一且一致的链路状态数据库LSDB(Link-State Database),通过运行SPF算法,以自己为根,计算到达各目的地址的最短路径,从而形成路由表。
2.2 对比距离矢量路由协议
-
距离矢量协议直接传送各自的路由表信息。网络中的路由器从自己的邻居路由器得到路由信息,并将这些路由信息连同自己的本地路由信息发送给其他邻居,这样一级级的传递下去以达到全网同步。每个路由器都不了解整个网络拓扑,它们只知道与自己直接相连的网络情况,并根据从邻居得到的路由信息更新自己的路由。这是一种依照传闻进行选路的路由协议,自己并不考虑对错,且扩展性较差,路由通告报文会越来越大,效率低。
-
链路状态路由协议传输的是链路状态,然后根据状态信息生成网络拓扑结构,每一个路由器再根据拓扑结构,以自己为根计算出路由。
3.OSPF术语
3.1 Router-ID
Router-ID相当于每个人的身份证号,每一台运行OSPF进程的路由器,在OSPF区域内唯一的一个标识符。因为Router-ID要求唯一性和稳定性,如果没有配置OSPF的Router-ID,系统会根据接口选举设备的Router-ID。
选举规则如下:
-
如果手工配置了routerid,手工配置的routerid最优。
-
如果路由器配置了loopback接口,以loopback接口地址的ip地址为routerid,越大越优。
-
如果没有配置loopback接口,以物理接口的ip地址为routerid,越大越优。
3.2 DR和BDR
-
DR:Designated Router指定路由器。
-
BDR:Backup Designated Router备份指定路由器。
-
DR与BDR只存在于MA(多路访问)网络,以太网就是MA型网络。选择DR和BDR是为减少邻接关系带来的低效率和LSA泛洪问题,MA网络中所有OSPF路由器均与DR、BDR建立邻接关系,DROther之间是2way关系。
DR选举比较顺序:
-
比较接口优先级,越大越优,范围0-255,默认为1。(注意优先级为0是不能与参与DR的选举)
-
如果优先级相同,比较Router-ID,越大越优。
-
在DR与BDR的选举期(40秒)结束后,如果再加入优先级更高的路由器,也无法抢占DR,BDR角色,稳定第一。
-
DR的选举基于接口/链路,不可以说某个路由器是DR,这是错误的。如果一台OSPF路由器有多个接口,很可能在每个接口上担任的OSPF角色各不相同。
4.OSPF网络类型
4.1 广播多路访问MA(Broadcast Multiple Access )
现如今使用频率最多的OSPF网络类型,通常出现在以太网,当链路层协议是Ethernet时,OSPF缺省认为网络类型是广播型。此类型网络需要进行OSPF的DR、BDR选举。在该类型的网络中,OSPF通常以组播方式(224.0.0.5和224.0.0.6)发送协议报文。
4.2 非广播多路访问NBMA(Non-Broadcast Multiple Access)
虽然从一个接口可以到达多个目的节点,但是网络本身不支持广播功能,当链路层协议是帧中继、ATM或X.25时,OSPF缺省认为网络类型是NBMA。此时OSPF的邻居需要管理员手工指定。在该类型的网络中,以单播方式发送协议报文。
4.3 点到点P2P(Point-To-Point)
是指该接口通过点到点的方式与一台路由器相连。串行链路的二层协议代表为PPP,HDLC,则OSPF网络类型为P2P,此类型网络不需要进行OSPF的DR、BDR选举。
4.4 点到多点P2MP(Point-to-multipoint)
是指该接口通过点到多点的网络与多台路由器相连。
P2MP型网络比较特殊,没有一种链路层协议会被缺省地认为是点到多点类型。点到多点必须是由其他网络类型强制更改而来。常用做法是将NBMA改为点到多点的网络。在该类型的网络中,缺省情况下以组播方式(224.0.0.5)发送协议报文,也可以根据用户需要,以单播形式发送协议报文。
5.OSPF报文
-
Hello报文:周期性发送,用来发现和维护OSPF邻居关系。
-
DBD报文(数据库描述):邻居建立之后,并不会立刻就将自己链路状态数据库中所有的LSA全部发给邻居,而是将LSA的基本描述信息发给邻居,使得路由器之间可以对比数据库是否同步,这就是Database Description Packets (DBD)。是LSA的目录信息,相当于书的目录,邻居在看完DBD之后,就能知道哪些LSA是需要邻居发送给自己的。
-
LSR报文(链路状态请求):LSR数据包在数据库同步过程中使用。路由器会发送LSR,请求其OSPF邻居发送缺失LSA的最新版本。
-
LSU报文(链路状态更新):链路状态更新,LSU数据包包括几种类型的LSA。LSU负责泛洪LSA,以及发送对LSR包的响应。LSA信息是封装在LSU包中。
-
LSAck报文(链路状态确认):LSAck负责进行可靠的LSA泛洪。
6.OSPF邻居建立过程(状态机)
6.1 关系变化过程
Down->Init->2way->Exstart->Exchange->Loading->Full
-
Down:表示还没有建立起邻接关系,没有检测到活动邻居。
-
Init:表示从对端收到的HELLO包中,没有自己的路由器ID信息。
-
2-way:双向阶段。表示从对端收到的HELLO包中,已经有自己的路由器ID信息了,已建立邻居关系可以共享链路状态数据。在MA网络中会选举DR、BDR,但OSPF邻居之间并不一定就会交换LSA,如果不需要交换LSA,则永远停留在此状态,如果需要形成邻接并互相交换LSA,则状态继续往下进行。(比如Drother与Drother之间将永远停留在Two-way状态,因为Drother与Drother之间不需要交换LSA。)
-
Exstart:在Exstart状态,就是确定邻居之间的主从关系(Master/Slave),Router-ID数字大的为主路由器,另一端为从路由器,由主路由器先向从路由器发送信息。
-
Exchange:交换阶段。在主的带领下开始交换DBD中LSA的摘要信息。
-
Loading:加载状态。请求更详细的信息,路由器会发送LSR来请求一个或者多个LSA的信息,对端会发送回LSU来告诉路由器他想要的信息。
-
Full:已建立完全邻接关系,其LSDB数据库与邻居完全相同。
6.2 过程详细描述
6.2.1邻居发现
6.2.1.1 Down状态
运行OSPF路由器的初始状态,表示没有从邻居收到OSPF Hello报文,但是自己仍然可以向外发送OSPF的Hello报文。
6.2.1.2 Init状态
1、R1给R2发送Hello包
(以组播的方式发送,目的地址为224.0.0.5),在报文中Router-ID为172.16.1.1,R2收到此Hello报文后,进入Init状
态。
2、R2同样也会发送Hello包,R1收到R2发送的报文后,状态为Init。
3、当收到了邻居的hello报文中存在邻居的RID就进入Init状态。
6.2.1.3 2-way状态
1、R2向R1发送 的Hello报文中Active Neighbor字段携带R1的RID,R1在收到R2发来的报文邻居列表中发现自己的Router ID,状态为2-way,也称为邻居状态。
2、同样的道理,R1发送的报文中携带R2的Router-ID,R2收到后。从Init转变为2-way,进入邻居状态。
3、两端同时进入2-way标志着OSPF邻居关系(neighbor)的正常建立,里程碑式的阶段。
4、同时由于双方互相知道了邻居的ROUTERID,在2-WAY阶段,进入40秒的wait timer等待定时器,MA网络中的DR与BDR选举在此时选举期内完成选举。
6.2.2 路由发现
6.2.2.1 Exstart状态
1、2-WAY中DR-BDR选举完成后,DBD中I位初始化位=1,此阶段关键是选择DBD中的主从。
2、2-WAY阶段结束后,两边进入Exstart阶段,相互发送DBD报文(第一个DBD报文不包含具体LSA信息),First DBD只用作主从选举(Master/Slave),通过比较Router ID ,RID大的将成为主路由器(Master)。
6.2.2.2 Exchange状态
1、主从选举(Master/Slave)完成后,进入Exchange阶段,
I位初始化=0,DBD主从选举完毕之后,此阶段交换DBD的LSA。
2、路由器会将收到的DBD中的信息,而自己LSDB中不存在的LSA头部加入到链路请求列表中,进入LOADING状态后会根据这个列表来发送请求信息。
6.2.2.3 Loading状态
1、在DBD中M位初始化=0,DBD中没有更多的LSA摘要信息了,M=0(后续不再有更多的DBD报文了),是进入Loading状态的标志。
2、这时路由器就有了邻居的LSA索引列表,路由器都将进入LOADING状态,来请求自己LSDB中还没有的LSA的信息。路由器会发送LSR来请求一个或者多个LSA的信息,对端会发送回LSU来告诉路由器他想要的信息。
6.2.2.4 Full状态
1.假如R1有10条请求LSA重传列表,当10条LSA都被LSR请求,并且LSU更新过后,LSA重传列表为空,R1与R2进入FULL状态,标示OSPF邻接彻底完成。
2、FULL建立完毕后,R1与R2互相按照HELLO间隔来发送HELLO保活OSPF。
7.LSA类型
7.1 什么是LSA
LSA:Link State Advertisement 链路状态通告,LSA头部和LSA数据封装在LSU报文中,LSU报文封装在OSPF报文中,OSPF报文封装在IP报文中,LSA数据才是真实的链路状态通告信息。链路指的是设备的接口,状态是指IP、掩码、COST,OSPF传递的不是路由信息,而是链路状态,LSA不是报文,而是封装到LSU中所存储的信息。LSA有很多种类型,最常见的是以下6类:
7.2 1类LSA-路由器LSA
1.描述: 路由器LSA由每个路由器生成,描述了路由器的链路状态和花费,传递到整个区域。路由器在区域内的接口和接口所连接的邻居(包含链路的开销)路由器链路状态。
2.传播范围: 只在该接口所属的区域内传递,不会穿越该区域的ABR。
3.产生: 所有运行了OSPF的路由器。
4.网络连接类型:(在不同的链路类型中LSA描述的信息不同)
4.1 P2P:描述的是邻居路由器ID。
4.2 中转网络:描述的是DR接口的IP地址。
4.3 末节网络:描述的是IP网络的子网。
4.4 虚链路:描述的是邻居路由器RID。
R1#show ip ospf database router
OSPF Router with ID (172.16.1.1) (Process ID 110)
Router Link States (Area 0)
LS age: 42
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 172.16.1.1
Advertising Router: 172.16.1.1
LS Seq Number: 80000002
Checksum: 0xEF3D
Length: 36
Number of Links: 1
Link connected to: a Transit Network
(Link ID) Designated Router address: 172.16.1.2
(Link Data) Router Interface address: 172.16.1.1
Number of MTID metrics: 0
TOS 0 Metrics: 10
LS age: 43
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 172.16.1.2
Advertising Router: 172.16.1.2
LS Seq Number: 80000002
Checksum: 0xED3C
Length: 36
Number of Links: 1
Link connected to: a Transit Network
(Link ID) Designated Router address: 172.16.1.2
(Link Data) Router Interface address: 172.16.1.2
Number of MTID metrics: 0
TOS 0 Metrics: 10
7.3 2类LSA-网络LSA
1.描述: 由DR生成,描述了本网段的链路状态,传递到整个区域。用来描述MA网络中所有路由器的RID和掩码信息。
2.传播范围: 只有在存在DR和BDR的网络中才会存在,传播范围无法跨区域。
3.产生: 由DR产生。
R1#show ip ospf database network
OSPF Router with ID (172.16.1.1) (Process ID 110)
Net Link States (Area 0)
Routing Bit Set on this LSA in topology Base with MTID 0
LS age: 15
Options: (No TOS-capability, DC)
LS Type: Network Links
Link State ID: 172.16.1.2 (address of Designated Router)
Advertising Router: 172.16.1.2
LS Seq Number: 80000001
Checksum: 0xF249
Length: 32
Network Mask: /24
Attached Router: 172.16.1.2
Attached Router: 172.16.1.1
7.4 3类LSA-网络汇总LSA
文章来源:https://www.toymoban.com/news/detail-482507.html
1.描述: 1类和2类LSA可以了解到本区域的所有道路,互通已经没有问题,如果要去往其他区域,就需要3类LSA。3类LSA由ABR产生,用于OSPF区域间路由计算。
2.传播范围: 除了本区域,由一个区域通告到另一个区域。
3.产生: ABR文章来源地址https://www.toymoban.com/news/detail-482507.html
R1#show ip ospf database
Summary Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.1.0 3.3.3.3 665 0x80000001 0x00D6E5
到了这里,关于OSPF协议原理简析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!