链路状态路由协议-OSPF
开放式的OSPF(Open Shortest Path First)协议是一种依据链路状态的内部网关路由协议。IETF规范性地对此进行了明确说明。
RIP是一种以距离矢量算法为基础实现的路由协议,并且存在收敛缓慢、容易导致网络环路以及扩展性不足的问题。现多由OSPF取代使用。

OSPF遵循基于链路状态的设计原则,并且在架构设计中就实现了对 routing loop 的有效避免。该协议允许根据网络规模和拓扑需求划分不同的功能区域,在每个区域内采用 SPF(Shortest Path First)算法进行最短路径计算以确保区域内所有路由都是非循环的。同时,在不同区域之间的接口连接遵循特定规则以防止跨区 routing loop 的产生。
OSPF支持触发更新,能够快速检测并通告自治系统内的拓扑变化。
ospf技术能够有效应对网络规模扩大的挑战。随着路由器数量的激增以及路由信息流量的大幅攀升,在传统路由器的基础上发展起来的osfp技术应运而生。该协议通过将每个自治系统划分为多个区域来管理广播域,并对广播域的范围进行限制。分区域广播机制赋予了该协议良好的扩展性,在大中型网络环境中表现出色。此外,在支持大规模地理覆盖方面,该协议还能够与诸如mpls这样的多协议标记切换协议协同工作
OSPF支持其路由器间的报文通过认证机制实现数据传输的安全性。为了确保通信的安全性,在设置OSPF路由器之间建立会话时应当配置为仅允许经过认证的数据包进行交换以避免潜在的安全漏洞。

OSPF规定所有OSPF路由器必须掌握网络拓扑结构的相关链路状态信息以便计算出前往目标节点的最佳路径。为此(OSPF协议)通过广域发送LSA消息启动收敛过程(Least Mean Square算法)来实现这一目标。每个LSA字段都记录了路由器所知接口的信息包括IP地址掩码开销值以及网络类型等数据当某台路由器接收到LSA消息时会利用这些数据构建自身完整的链路状态数据库(LSDB)然后基于构建好的链路状态数据库应用最短路径树算法进行计算从而求解从该节点到各个子节点之间的最短路径树结构最后通过所计算出的最短路径树确定最佳路由策略并将此最佳路由策略加入当前节点的IP路由表中完成配置过程

OSPF直接在IP协议之上,使用IP协议号89。
OSPF有五种报文类型,每种报文都使用相同的OSPF报文头。
Hello报文:主要采用的报文类型,用于建立和管理邻居之间的通信关系。在广播型网络及无广播多接入(NBMA)网络中选择指定路由器DR和备份指定路由器BDR。
DD报文:当两台路由器进行LSDB数据库同步操作时,
使用DD报文来描述各自的LSDB信息。
每条LSA的头部数据被包含在内,
其中每个AS编号仅对应一条特定的AS路径,
这种设计使得AS号具有唯一性。
由于每个路由节点都维护自己的 LSDB 表示信息库(即 LSDB),因此,在同步过程中需要将自己网络区域内的 LSDB 复制到其他节点上。
基于每个路由节点维护独立的 LSDB 表示信息库的特点,在同步过程中需要将自身区域内的 LSDB 数据传输至其他节点。
通过这种方式可以显著减少路由器之间的协议报文流量。
在两台路由器互相交换完DD报文之后
LSU报文:用来向对端路由器发送所需要的LSA。
LSACK报文:用来对接收到的LSU报文进行确认。

邻居和邻接关系建立的过程如下:
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
Attempt:该状态仅存在于NBMA网络中,并表明尚未接收到任何来自邻居的信息。但已持续向各个邻居发送报文以维持通信连接,并规定其发送间隔设为HelloInterval。若在RouterDeadInterval时间段内未能接收到任何来自邻居的Hello报文,则该状态将被转换为Down状态。
Init:在这种情况下(在这种情况里),路由器已从邻居处收到Hello包(即数据帧),但目前并未将自身加入所接收的所有Hello包(即确认响应)的邻居列表中(即相邻节点列表),目前尚未完成与该邻居之间的双向通信连接(即互连)。
2-Way:在当前状态下,在线双向通信已实现(实现了),但尚未与邻居形成邻接关系(未完成)。此状态处于未建立邻接关系之前的最高阶段(级别)
该步骤是建立相邻关系的第一步,在此之后路由器会向每个邻居发送相应的数据包。当邻居的状态达到此状态时,默认情况下就会产生主从关系,在当前状态下,默认情况下就会产生主从关系,在这种情况下会被视为默认的情况进行处理,在这种情况下会被视为默认的情况进行处理,在当前的状态下会被视为默认情况来执行操作,在当前的状态下会被视为默认情况来执行操作,在这种情境下生成的数据包不会包含任何关于链路信息的内容。
Exchange:在该状态下,路由器之间相互发送包含LS information synopsis的DD报文以描述本地LSDB信息。
Loading:互相发送LSR报文向LSA发起请求;Full:路由器的LSDB已经完成同步过程。

该网络设备上的Routers Identity字段由一个32位整数构成,其数值能够唯一标识该自治系统内的所有Routers Identity字段,并可被OSPF路由协议所识别和利用。支持通过手动配置或指定IP地址的方式设置OSPF Router Identity字段,其中当网络设备具备多组网络接口时,其默认取值基于Logical Interface中的最高IP地址;而当未指定Logical Interface时,默认使用Physical Interface上的最高IP地址作为Routers Identity字段值。完成新Routers Identity字段值的设置后,可通过重启OSPF进程来完成该字段值的有效更新,建议在环境变化频繁的情况下优先手动设置Routers Identity字段以避免数值变更带来的潜在问题。
OSPF路由器之间必须传递链路状态数据以及路由数据,在传递这些数据之前路由器之间首先要创建邻接关系。 邻居(Neighbor):
当OSPF路由器启动时, 它们会通过OSPF接口向外广播Hello信号以 discover adjacent routers. 当某个OSPF路由器接收到其他路由器发送来的Hello信号时, 它会对其中包含的信息进行验证; 如果双方提供的关键数据相匹配, 则这两台路由器就会建立邻接关系. 邻居关系(Adjacency):
并非所有形成邻居关系的双方都能建立邻接关系;具体取决于网络类型。仅在双方成功传输DD报文并交换LSA之后,才能真正建立邻接关系。
路由器在发送LSA之前必须先发现邻居并建立邻居关系。
在本案例中,在该案例中使用以太网将多个路由器互联起来是一个关键点

OSPF网络中邻居间的发现过程是通过Hello报文来进行的,在Hello报文中关键字段进行了详细说明
Network Mask:发送Hello报文的接口的网络掩码。
HelloInterval:发送Hello报文的时间间隔,单位为秒。
Options indicate the OSPF router forwarding this packet, representing the optional features it supports. The specific supported options are beyond the scope of this discussion.
Router Priority:相关接口的Router Priority用于选举DR(Dynamic Reconfiguration)和BDR(Bridge Driver)。
RouterDeadInterval表示路由器失效的时间间隔(秒)。当该时间段内未能接收到任何邻居发送的Hello报文时,则视为该邻居已失效;其单位通常设定为四倍的HelloInterval值
Designated Router:向Hello报文发送,并由通过选举机制选出的DR路由器所分配的IP地址。如果将该地址配置为0.0.0.0,则表示该DR路由器未被选中。
该路由器通过发送Hello报文选举出的BDR(Backup Designated Router)的IP地址。若配置为全零地址,则表示该路由器未被选为主备指定路由器。
Neighbor:相邻路由器组成的ID集合,表明该路由器已成功接收了来自这些相邻路由器的Hello报文。


如图所示,在完成与相邻路由器的邻居关系建立后,请详细说明如下:
当邻居的状态更新为ExStart时,在第一个数据报文中配置数据字段中的序列号字段值设为X(例如),随后RTA向RTB发送了一个初始数据报文,并声明主路由器身份。
该设备向另一个设备发送第一个数据分段报文,在该数据分段报文中,定义了数据序列号字段并将其赋值为Y(假设)。该设备宣布自己为主路由器。基于此原因可知,在此情况下该设备应被视为真正的主路由器
RAT传输一个新的数据数据报(DD),该报文携带LSDB的摘要信息,并配置其序列号为在步骤2中使用的值;这使得RTB将邻居的状态更新为Exchange。
当邻居的状态更新为Exchange时,在此过程中RTB会发送一个新的DD报文。这个报文中包含了描述LSDB的信息,并且其中序列号设置为上一次使用的序列号加一(即Y+1)。
- 即使说RTA无需通过新增的DD报文来描述其LSDB也是成立的 但就其作为从路由器的角色而言 仍然有必要确认每个来自主路由器(即 RTB)的 DD 报文 这样 RTA 才能确保自己接收到了所有必要的数据包 因此 在这种情况下 RTA 会向主路由器 RTB 发送一个空内容但带有序列号 Y+1 的 DD 报文
当邻居的状态更新为Loading时, 随后RTA向RTB发送了一段LSR报文, 并以DD报文的形式识别出那些处于Exchange状态下的网络接口; 而这些链路的状态信息在本机的LSDB中尚未记录.
RTB接收了来自LSR的报文后,并将其传递给RTA以获取LSU报告中的详细数据
在收到LSU报文后, RTA将邻居的状态更新为全连接状态. RTA通过发送LSACK报文来向RTB确认其已接收. 在此过程中, RTA与RTB之间的通信中, 邻居状态被设置为全连接状态, 表示双方完成了完全邻接.
发出了最后一个DD报文后, RTA将邻居状态设置为Loading; RTB接收到最后一个DD报文后, 设置其状态为Full (前提是RTB的LSDB是最新的且完整的,无需主动向RTA发起查询以获取更新信息)

OSPF划分为四类网络体系:包括:点对点网络、广播式网络、NBMA体系和多播型网络。
点对点网络即为两台路由器直接连接构成的网络架构。在PPP协议的应用中的一条64K串行传输介质就是一种典型的这种结构。
广播型网络指的是能够支持不少于两台路由器并具备广播功能的网络架构。在以太网中配置三台或更多路由器即可形成一个典型的广播型网络实例。

在不支持广播信息分发的多路访问网络环境中,在采用星型拓扑框架中的帧中继(FR)装置以及基于异步传输模式(ATM)的技术构建起来的一类特定通信架构下,OSPF协议能够实现有效的数据传输功能。该协议明确了两类特殊的多路访问网络架构:非广播多路访问(NBMA)与点到多点连接(Point To Multi-Points)。
在NBMA网络环境中,OSPF协议在广播型网络中执行功能时会模仿真实情况下的操作过程;然而,在这种配置模式下,默认情况下每个路由器的邻居关系必须进行手动设置以建立通信链路;此外,在NBMA协议下所支持的网络架构必须满足所有 participating routers之间形成完全连接拓扑的要求
P2MP方案下,在实际应用中可将其视为由多个独立节点组成的网络结构。对于那些无法实现全连接的网络架构,则建议采用分段式的多对多通信模式。具体实施时可选择仅采用PVC构建部分不完整的帧中继系统。

所有拥有两个或多个路由器的广播式网络以及NBMA网络都配备了一个DR以及一个BDR
选择使用DBR或BDM等方法能够有效降低相邻关系的数量
当出现广播域(DR)故障时,BTR负责接管业务流程。
在广播型网络架构中,所有路由设备必须与BTR形成连接。
在此案例中,通过引入DT和BT,将原本存在的邻居数量从6减少至5。
作为关键节点,RTA与RT B仅需与DT及BT建立连接即可。
值得注意的是, RT A与 RT B之间也保持邻居连接。
尽管如此,在这种配置下, 邻居数量减少了1个单位。
然而,在大规模部署的情况下(如拥有100台设备),上述优势将更加显著。

当邻居完成探测后,在不同的网络段类型中执行DR选型流程。对于广播型网络以及NBMA(Neighbor Broadcast Metric Assignment)网络,在广播型网络中仅限于本地区域网邻居,在NBMA网络中则允许跨区域网邻居参与竞选活动。路由器将在这些条件下依据所有参与竞选的接入端口的指定优先权等级进行比较;其中指定数值范围是0到255;数值越高表示越具有优势;默认情况下该数值设为1;若某接入端口的指定优先权等级设为零,则该端口将被排除出任何选型过程;当存在多个候选设备时,则按照设备自身的Router ID数值大小来进行排序比较
为了给每个广播和NBMA网络上的设备做备份,在每个广播域或NBMA网络中都需要选举一个Bridge Domain Router(B DR)。选出的Bridge Domain Router(B DR)会与该广播域或NB MA 网络中的所有路由器建立邻接关系。为了维持该领域内邻接关系的稳定状态,在现有条件下新增设备将无法成为新的Bridge Domain Router(BRD)或Dynamic Forwarding Router (DFR),无论其Router Priority值是否最大。当目前存在的Bridge Domain Router (BRD)出现故障时,请当前Dynamic Forwarding Router (DFR)自动承担新的桥接角色并重新选举BRD;当目前存在的Dynamic Forwarding Routers (DFRs)出现故障时,请桥接型路由器 BRD 不变并重新选举新的BRD。这种桥接机制的目的在于尽可能减少拓扑结构变化对桥接关系的影响

OSPF支持将一组网段组合在一起,这样的一个组合称为一个区域。
划分OSPF区域可以缩小路由器的LSDB规模,减少网络流量。
该区域内不会向其他区域发送详细拓扑信息,在区域间传递的是抽象路由信息而非详细的拓扑结构描述链路状态数据包(LSDB)。每个区域都拥有独立的LSDB,并且不同区域之间的LSDB内容是不同的。路由器会为每个连接的区域单独维护一个LSDB数据结构。由于这些详细链路状态信息不会对外传播到其他区域范围之内,因此每个LSDB的实际规模得到了显著缩减。
Region 0 serves as a core area, and to prevent regional routing loops, non-core regions are prohibited from directly exchanging routing information with each other. Therefore, every region must be connected to the core area through appropriate communication channels.
在相邻的区域之间工作的路由器被称为区域边界路由器ABR(Area Boundary Router),它们汇总并存储所有相连区域的LSDB信息。连接到其他自治系统中的路由器并负责交换路由信息的设备称为自治系统边界路由器ASBR(Autonomous System Boundary Router)。这种类型的路由器会向整个自治系统发送有关外部路由的信息通知。
对于规模较小的企业网络,在将其所有路由器归入同一个OSPF区域内时,请注意该区域内所有路由器的LSDB保持一致。OSPF分区号可手动指定;建议将其分区号设置为0(即骨干区),以便于未来网络的扩展需求。

OSPF采用了基于带宽计算的方法来评估网络开销。具体的计算公式如下所示:接口的开销 = 基准带宽 ÷ 实际使用速率。其中基准带宽是可以根据网络需求进行调整的参数,默认情况下设置为100Mbit/s。例如,在使用串口端口时(假设其传输速率为64kbit/s),其对应的网络开销为1562;而当使用E1接口(2.048 Mbit/s)时,则网络开销仅为48。
该命令用于调节带宽基准值,并能够影响网络接口的开销大小。当指定较高的基准倍数时,在某些情况下可能提升计算效率并减少延迟波动性。建议将该参数设置至最高位,并分别针对不同速度的链路(如199.255.63.4/24网段上的局域网口)、单端口以及双端口连接分别设定不同的倍率选项——例如将该参数设至最大位并分别针对不同速度的链路(如199.255.63.4/24网段上的局域网口)、单端口以及双端口连接分别设定不同的倍率选项——例如将该参数设至最大位并分别针对不同速度的链路(如单端口或双端口)设定相应的倍率数值以优化网络性能
此外也可以由ospf cost命令手动调节一个接口的开销情况并规定其取值范围在1至65535之间,默认设置为1

在配置OSPF时,需要首先使能OSPF进程。
命令ospf [process id]用于启用OSPF,在该命令中可以指定过程ID。如果没有指定,默认值为1。
此外,“ospf [process id] [router-id
其中,“router-id”表示路由器的标识符。
网络接口端口上配置OSPF协议时需要使用"命令network"来指定相关参数,在这一指令中应明确设置一个反向掩码字段。在反向掩码字段设置中'0'位要求对应地址必须完全匹配而'1'位则允许接收任意IP地址。

该命令用于查询ospf邻居的相关信息, 包括区域划分. 邻居的状态. 邻接协商过程中的主从关系以及dr与bdr的情况.

OSPF提供简单认证和加密安全机制的功能模块。其中加密部分具有更高的防御能力。OSPF验证可设置在端口或区域上,并建议将端口上的验证级别优先配置以确保最佳安全性。
在接口或区域内都可以配置 ospf 的 authentication-mode 命令来实现网络设备之间的安全通信与数据传递的安全性保障功能。该命令支持三种不同的认证方式:一种是 plain(明文密码)模式;另一种是 cipher(密钥交换)模式;第三种则是 null(无认证)模式。其中 plain 用于指定明文密码;cipher 则用于密钥交换;null 则表示不进行认证。
该指令用于配置加密认证模式。该算法(如详细说明可参考下文)MD5是一种确保网络设备间实现安全链路连接的常用协议。参数key-id标识接口加密认证中的密钥ID,并要求其与远程设备上的对应设置保持一致。

在启用认证功能之后,可以在终端上进行调试来查看认证过程。
该命令用于启动OSPF报文调试功能,并随后将能够审查认证流程以便确认配置是否正确设置。
