OSPF路由协议
一、OSPF概述
OSPF路由协议全称为Open Shortest Path First,也就开放的最短路径优先协议,因为OSPF是由IETF开发的,它的使用不受任何厂商限制,所有人都可以使用,所以称为开放的,而最短路径优先(SPF)只是OSPF的核心思想,其使用的算法是Dijkstra算法,最短路径优先并没有太多特殊的含义,并没有任何一个路由协议是最长路径优先的,所有协议,都会选最短的。
AS是指由同一个技术管理机构管理、使用统一选路策略的一些路由器的集合。
1.按自治系统分为
-
内部网关路由协议(IGP):运行在AS内部的路由协议,主要解决AS内部的选路问题,发现、计算路由
主要有:RIP1/RIP2、OSPF、ISIS、EIGRP(思科私有协议) -
外部网关路由协议(EGP):运行在AS与AS之间的路由协议,他解决AS之间选路问题。
通常有:BGP
2.按协议类型分类
- 距离矢量路由协议
- 链路状态路由协议
OSPF是一种链路状态路由协议。
在链路状态路由协议中路由器对全网拓扑完全了解。是"传信的路由”,A将信息放在一封信里发给B,B对其不做任何改变,拷贝下来,并将自己的信息放在另一封信里,两封信一起给c,这样,信息没有任何改变和丢失,最后所有路由器都收到相同的一堆信,这一堆信就是LSDB。然后,每个路由器运用相同的SPF算法,以自己为根,计算出SPF Tree(即到达目的地的各个方案),选出最佳路径,放入路由表中。
3.OSPF工作过程
1、建立邻居表
2、形成链路状态数据库
3、形成路由表
即:OSPF接口发送Hello包,建立邻居关系,之后学习链路状态信息(互相发送LSA链路状态通告相互通告路由),形成链路状态数据库。再通过Dijkstra算法(SPF算法),计算最短路径树(cost最小)后放入路由表。
二、OSPF区域
1、OSPF区域
为了适应大型的网络,OSPF在AS内划分多个区域,每个OSPF路由器只维护所在区域的完整链路状态信息,然后将一个区域的LSA简化和汇总后由边界路由(ABR)转发给另一个区域。
- 区域的ID可以表示为十进制的数字或者是一个IP。
- 区域的划分上,一般Area 0是骨干区域,其他为非骨干区域,非骨干区域无法直接通信,所有通信必须经过骨干区域。
2、路由器(DR和BDR)
-
Router ID :OSPF区域内唯一标识路由器的IP地址
-
Router ID选取规则:
(自动选取)选取路由器loopback接口上数值最高的IP地址
如果没有loopback接口,在物理端口中选取IP地址最高的
(手动选取)使用router-id命令指定Router lD -
DR和BDR
当多台OSPF路由器连到同一个多路访问网段时,如果每两台路由器之间都相互交换LSA,那么该网段将充满着众多LSA条目,为了能够尽量减少LSA的传播数量,这时候需要一个路由器和所有的路由器互换LSA,减少LSA的数量,那么这个路由器被称为DR;在选DR的时候,也会选出一个作为备份,称为BDR;最后其他路由器(DRothers)只和DR和BDR形成邻接关系。 -
DR和BDR的选举方法
自动选举DR和BDR
网段上Router ID最大的路由器将被选举为DR,第二大的将被选举为BDR
手工选择DR和BDR
优先级范围是0~255,数值越大,优先级越高,默认为1
如果优先级相同,则需要比较Router lD
如果路由器的优先级被设置为0,它将不参与DR和DBR的选举
现实中,很少能有路由器同时开机,所以先上线的是DR,第二上线的是BDR。
注:当DR和BDR存在时,除非他俩down了,不然没法强制更换。 -
在OSPF中使用224.0.0.5和224.0.0.6作为组播地址,选举时,大家都是用组播地址224.0.0.5发送Hello包(这个时候路由器都认为自己是DR),当DR和BDR选出来后,DR和BDR使用224.0.0.5发送,其他路由器使用224.0.0.6发送。
3、OSPF的度量值:COST
规则:数值越小越优先
最短路径是基于接口指定的代价(COST)计算的
计算公式=108/BW
常用的端口与COST
接口类型 | COST(108/BW) |
---|---|
Gigabit Ethernet | 1 |
fast Ethernet | 1 |
Ethernet | 10 |
56K | 1785 |
4、OSPF数据包(5个包)
OSPF数据包承载在lP数据包内,使用协议号89
OSPF的包类型 | 描述 |
---|---|
Hello包 | 用于发现和维持邻居关系,选举DR和BDR |
数据库描述包(DBD) | 用于向邻居发送摘要信息以同步链路状态数据库 |
链路状态请求包(LSR) | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 |
链路状态更新包(LSU) | 收到LSR后发送链路状态通告(LSA),一个LSU数据包可能包含几个LSA |
链路状态确认包(LSAck) | 确认已经收到DBD/ LSU,每个LSA需要被分别确认 |
5、OSPF的7个状态
状态 | 作用 |
---|---|
Down状态 | 初始化,没有来自邻居的Hello包 |
Init状态 | 收到第一个Hello包,但没发出去,建立了自己的邻居表 |
2-Way状态 | 双向建立会话,邻居表都建立完成 |
Exstart状态 | 建立主从关系 |
Exchange状态 | 交换摘要信息,到确认信息收到 |
Loading状态 | 加载详细信息 |
Full状态 | 完全连接,计算最短路径,并载入路由表 |
6、OSPF的4个网络类型
网络类型 | 说明 |
---|---|
点到点网络(Point-to-Point) | 自动发现邻居,不需DR/BDR、组播224.0.0.5 |
广播多路访问网络(Broadcast MultiAccess,BMA) | 自动发现邻居、选DR/BDR、组播224.0.0.5、224.0.0.6 |
非广播多路访问网络(None Broadcast MultiAccess,NBMA) | 手工指定邻居、选DR/BDR、单播(AMT使用) |
点到多点网络(Point-to-Multipoint) | 自动发现邻居,不需DR/BDR、组播224.0.0.5 |
7、OSPF的特点
- 可适应大规模网络
- 路由变化收敛速度快
- 无路由环
- 支持变长子网掩码VLSM
- 支持区域划分
- 支持以组播地址发送协议报
8、OSPF与RIP的比较
OSPF | RIP V1 | RIP V2 |
---|---|---|
链路状态路由协议 | 距离矢量路由协议 | 距离矢量路由协议 |
没有跳数的限制 | RIP的15跳限制,超过15跳的路由被认为不可达 | RIP的15跳限制,超过15跳的路由被认为不可达 |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | 收敛速度慢 |
使用组播发送链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
9.命令配置
// R1的配置命令
sysname R1
配置接口IP地址
#
interface GigabitEthernet0/0/0
ip address 192.168.10.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.0.0.1 255.255.255.0
#
配置本地回环接口IP地址
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
创建OSPF进程,配置路由ID
进入区域0,区域ID可以用数字表示,也可以用IP表示,若区域0则是骨干区域
宣告OSPF区域内的直连网段,使用反掩码
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.0.0.0 0.0.0.255
network 192.168.10.0 0.0.0.255
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return
// R2的配置命令
sysname R2
配置接口IP地址
#
interface GigabitEthernet0/0/0
ip address 10.0.0.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 20.0.0.2 255.255.255.0
#
配置本地回环接口IP地址
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
创建OSPF进程,配置路由ID
进入区域0,区域ID可以用数字表示,也可以用IP表示,若区域0则是骨干区域
宣告OSPF区域内的直连网段,使用反掩码
#
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 10.0.0.0 0.0.0.255
network 20.0.0.0 0.0.0.255
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return
// R3的配置命令
sysname R3
配置接口IP地址
#
interface GigabitEthernet0/0/0
ip address 20.0.0.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 30.0.0.3 255.255.255.0
配置本地回环接口IP地址
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
创建OSPF进程,配置路由ID
进入区域0,区域ID可以用数字表示,也可以用IP表示,若区域0则是骨干区域
宣告OSPF区域内的直连网段,使用反掩码
#
ospf 1
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 20.0.0.0 0.0.0.255
network 30.0.0.0 0.0.0.255
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return
// R4的配置命令
sysname R4
配置接口IP地址
#
interface GigabitEthernet0/0/0
ip address 30.0.0.4 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.20.4 255.255.255.0
配置本地回环接口IP地址
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
创建OSPF进程,配置路由ID
进入区域0,区域ID可以用数字表示,也可以用IP表示,若区域0则是骨干区域
宣告OSPF区域内的直连网段,使用反掩码
#
ospf 1
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 30.0.0.0 0.0.0.255
network 192.168.20.0 0.0.0.255
#
user-interface con 0
authentication-mode password
user-interface vty 0 4
user-interface vty 16 20
#
wlan ac
#
return