前言
开放式最短路径优先协议(open shortest path first,OSPF)是基于开放标准的链路状态路由选择协议,它完成各路由选择协议算法的两大主要功能:路径选择和路径交换。Internet工程协议会于1988年开发了OSPF,其最新版本是OSPF版本2,在RFC2328中进行了描述。
1.OSPF路由协议概述
1.1 内部网关协议和外部网关协议
1.自治系统(AS)
2.内部网关协议(IGP)
3.外部网关协议(EG0P000000)
1.2 OSPF是链路状态型协议
.距离矢量路由协议中,路由器之间互相传递路由表来学习路由信息,距离矢量协议的路由器只知道某个网段可以通过哪个下一跳到达和到达这个网络有多远等这样的信息,并不了解整个网络的拓扑结构。而链路状态路由协议通过与邻居路由器建立邻接关系,互相传递链路状太信息,来了解整个网络的拓扑结构。在链路状态信息中,包含哪些链路,这些链路与哪个路由器相连,连接的路径成本是多少等信息。因此,在链路状态路由协议收敛后,一台路由器可以了解本区域完整的链路信息。
1.3 OSPF的工作过程
运行RIP路由协议的路由器只需要保存一张路由表,而使用OSPF路由协议的路由器需要保存以下三张表
1.邻居列表:列出每台路由器已经建立的邻接关系的全部邻居路由器。
2.链路状态数据库:列出网络中其他路由器的信息,由此显示了全网的网络拓扑。
路由表:列出通过Dijkstra算法计算出的到达每个相连网络的最佳路径。
1.4 OSPF区域
1.为了适应大型的网络,OSPF在AS内划分多个区域。
2.每个OSPF的路由器只维护所在区域的完整链路状态信息。
1.4.1 区域id
1.区域id可以表示成一个十进制的数字
2.也可以表示成一个IP
1.4.2 骨干区域 (Area 0)
负责区域间路由信息传播
骨干区域可以连接AS内部所有的其他区域。用来连接骨干区域和其他区域的路由器称为区域边界路由器,它了解所连接的两个区域的完整的链路状态信息,并将链路状态信息汇总后发送给区域内的其他路由器。这样,减少了路由器保存的链路状态数据库大小,可以解决路由器内存容量有限的问题。
1.4.3 router id
OSPF区域内唯一表示路由器的IP地址。
1.4.4 router id选取规则
1.选取路由器loop back接口上数值最高的IP地址,如果没有loop back接口,在屋里端口选取地址最高的,也可以使用router-id命令指定router id
1.5 DR和BDR
1.5.1 DR和BDR的概念
运行OSPF的路由器通过与邻居路由器建立邻接关系,互相传递链路状态信息。
1.5.2 DR和BDR的选举方法
1.自动选举DR和BDR
网段上routerid最大的路由器将被选举为DR,第二大的将被选举为BDR
2.手动选择DR和BDR
1.优先级范围是0-255,数值越大,优先级越高,默认为一
2.如果优先阿吉相同,则需要比较routerid
3.如果路由器的优先级被设置为0,它将不参与DR和BDR的选举
1.5.3 DR和BDR的选举过程
1.路由器的优先级可以影响一个选举过程,但是它不能强制更换已经存在的DR和BDR路由器。
1.6OSPF的度量值
OSPF用来度量路径优劣的度量值称为开销(Cost), 是指从该接口发送出出去的数据据包的出站接口开销、链路开销使用16位的无符号整数表示,大小范围是1~ 65535.
Cisoo公司使用的默认开销是10 ^8/BW.表示为一一个整数, 在这里BW是指在接口上配置的带宽,而10°是Cisco路由器使用的参考带宽。
是由器接口的开销值可以通过。ip ospf cost命令来改变,当在 一个有多家厂商产 品的网络战中配重Ce路由器时这个命令变得十分重要, 例如,有些厂商的路由器在其所有的接口上使用的教认开销值是1.如果网络中所有的路由器没有使用同一种计算开销的方式来指定OSPF的开销,那么OSPF协议将不能正确地进行路由选择,
使用10”作为接口的参考带宽在现在一些带 宽高于100Mb/s的网络介质中会产生一个问题。10^8:/100/=1这就意味着更高带宽的传输介质在OSPF协议中将会计算出一个小于1的数,这在OSPF协议中是不允许的,因此,从Ios 11. 2版开始,Cisco 可以在OSPF进程模式下使用命令auto-cost reference -bandwidth 来修正这个问题,这个命令允许管理者更改默认的参考带宽。
2. ospf邻接关系的建立
OSPF的包类型 | 描述 |
---|---|
hello包 | 用于发现和维持邻接关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA), 一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已经收到LSU,每个LSA需要被分别确认 |
2.2 邻居关系的建立
(1)down:邻居状态机的初始状态,是指在过去的DEAD-INTERVAL 时间内没有收到对方的hello保温
(2)init:本状态表示已经收到了邻居的hello报文,但是该报文中列出的邻居中没有包含我的routerid(对方并没有收到我发的hello报文)
(3)2-way:本状态表示双方互相收到了对端发送的hello报文,建立了邻居关系,在广播和NBMA类型的网络中,两个接口状态时DRother的路由器停留在此状态。其他情况状态机继续转入高级状态。
(4)Exstar:在此状态下,路由器和它的邻居之间通过互相交换DD报文(该报文并不包含实际的内容,包含一些标志位)未决定发送时的主从关系。建立主从关系主要是为了保证在后续的DD报文交换中能够有序的发送。
(5)EXchange :路由器将本地的CSDB用DD报文来描述,并发给邻居。
(6)loading:路由器发送LSR报文向邻居请求都地方的LSA报文。
(7)FULL:在此状态下,邻居路由器的LSDB中所有的LSAA本路由器全部有了,即本路由器和邻居建立邻居(ad jacency)状态
2.3 OSPF建立邻居的条件
1.routerid不能相同
2.hello时间必须一致
3.dead时间必须一致
4.区域id必须相同
5.认证必须相同
6.STUB标志位必须相同(直连路由器特殊区域要求一致)
7.三层mtu不配置无法形成邻居关系(一边是EXSTART一边是exchange)
8.OSPF版本号不同
9.当OSPF网络类型是MA时,要求掩码一定一致
2.4 OSPF的网络类型
根据路由器所连接的物理网络不同,OSPF 将网络划分为以下四种类型。
1.点到点 (Point-to-Point) 网络。
2.广 播多路访问(Broadcast MultiAccess, BMA)网络。
3.非广 播多路访问(None Broadcast MultiAccess, NBMA)网络、
4.点到多点(Point-to-MultiPoint) 网络。
2.5 OSPF的应用环境
2.5.1 使用OSPF的原因
OSPF与RIP相比虽然优点很明显,但是一般情况下, 并不是所有的网络几方面的因素时,一 般需要简单的.路由器配置较低的环境,仍然需要使用静态路由。当考虑以下
需要使用OSPF来搭建,
1.网络的规模, 当网络中的路由器在十台以上或大中型规模的网络。
2.网络的拓补结构,网络的拓扑结构为网状,并且任意两台路由器之间都有互通的带水。3.其他特殊需求。 要求路由变化时能够快速收敏,路由协议自身的网络开销尽量降低。4.路由器自身的要求。运行OSFF协议时对路由器CPU的处理能力及内存的大小都有一 定的要求,性能很低的路由器不推荐使用OSPF协议。
2.5.2 OSPF的特点
1.可适应大规模网络
2.路有变化收敛速度快
3.五路由环路
4.支持变长子网掩码vlsm
5.支持区域划分
6.支持以组播地址发送协议报
2.5.3 OSPF与RIP的比较
3.实验
3.1 公司要求在路由器上启用OSPF协议,实现全网互通
路由器一
R1#conf t进入全局模式
R1(config)#int f0/0进入接口模式
R1(config-if)#ip add 10.1.1.1 255.255.255.0配置接口IP
R1(config-if)#no shutdown开启此接口
R1(config)#int loopback 1进入环回口
R1(config-if)#ip add 1.1.1.1 255.255.255.255配置环回口IP
路由器二2
R2#conf t进入全局模式
R2(config)#int f0/0进入接口模式
R2(config-if)#ip add 10.1.1.2 255.255.255.0配置接口IP
R2(config-if)#no sh开启此接口
R2(config-if)#int f1/0进入接口模式
R2(config-if)#ip add 192.168.2.2 255.255.255.0配置接口IP
R2(config-if)#no sh开启此接口
R2(config-if)#exit退出
R2(config)#int loopback 2进入环回口
R2(config-if)#ip add 2.2.2.2 255.255.255.255配置环回口IP
路由器三
R3#conf t进入全局模式
R3(config)#int f0/0进入接口模式
R3(config-if)#ip add 192.168.2.3 255.255.255.0配置接口IP
R3(config-if)#no shutdown开启此接口
R3(config-if)#int f1/0进入此接口
R3(config-if)#ip add 10.1.3.3 255.255.255.0配置接口IP
R3(config-if)#no shutdown开启此接口
R3(config)#int loopback 3进入环回口
R3(config-if)#ip add 3.3.3.3 255.255.255.255配置环回口IP
路由器四
R4#conf t进入全局模式
R4(config)#int f0/0进入接口模式
R4(config-if)#ip add 10.1.3.4 255.255.255.0配置接口IP
R4(config-if)#no shutdown开启此接口
R4(config-if)#exit退出
R4(config)#int loopback 4进入环回口
R4(config-if)#ip add 4.4.4.4 255.255.255.255配置环回口IP
路由器1
R1(config)#router ospf 110启动OSPF进程并配置进程号
R1(config-router)#router-id 1.1.1.1配置routerid
R1(config-router)#network 10.1.1.0 0.0.0.255 area 0宣告直连网段,并选择区域号,掩码需是反掩码
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0宣告直连网段,并选择区域号,掩码需是反掩码
路由器2
R2(config)#router ospf 110启动OSPF进程并配置进程号
R2(config-router)#router-id 110配置routerid
R2(config-router)#router-id 2.2.2.2配置routerid
R2(config-router)#network 10.1.1.0 0.0.0.255 area 0宣告直连网段,并选择区域号,掩码需是反掩码
R2(config-router)#network 192.168.2.0 0.0.0.255 area 0宣告直连网段,并选择区域号,掩码需是反掩码
R2(config-router)#network 2.2.2.2 0.0.0.0 area 0宣告直连网段,并选择区域号,掩码需是反掩码
路由器3
R3(config)#router ospf 110启动OSPF进程并配置进程号
R3(config-router)#router-id 3.3.3.3配置routerid
R3(config-router)#network 192.168.2.0 0.0.0.255 area 0宣告直连网段,并选择区域号,掩码需是反掩码
R3(config-router)#network 10.1.3.0 0.0.0.255 ARea 宣告直连网段,并选择区域号,掩码需是反掩码
R3(config-router)#network 3.3.3.3 0.0.0.0 area 0宣告直连网段,并选择区域号,掩码需是反掩码
路由器4
R4(config)#router ospf 110启动OSPF进程并配置进程号
R4(config-router)#router-id 4.4.4.4配置routerid
R4(config-router)#network 10.1.3.0 0.0.0.255 area 0宣告直连网段,并选择区域号,掩码需是反掩码
R4(config-router)#network 4.4.4.4 0.0.0.0 area 0宣告直连网段,并选择区域号,掩码需是反掩码
配置完成后查看路由表
路由信息都已被各路由器学习
网络也都是通的
3.2 手动选举DR和BDR
输入 show ip osspf neighbor查看邻接关系
R2为BDR,R3为DR,将R3设置为DR
R2#conf t进入全局模式
R2(config)#int f1/0进入接口模式
R2(config-if)#ip ospf priority 255更改优先级
R2# clear ip ospf pro清除ospf进程
R3#clear ip ospf process清除OSPF进程
再次输入 show ip osspf neighbor查看邻接关系
R2以成为DR
总结
由于DR和BDR只在相同网段内选举产生,所以在不同网段间选举是错误的
接口的优先级最大为255,优先级越大就优先选举为DR
做完接口优先级后,需要清除OSPF进程后才会重新选举DR和BDR.
如果有命令打错,要记住万物皆可no