一.协议基本信息
Ip协议号 |
89 |
|
范围 |
IGP |
|
类型 |
LS协议 |
|
类别 |
无类路由协议 |
|
封装 |
e|ip|ospf |
ip封装 |
发送方式 |
组播 |
224.0.0.5(所有ospf路由器) |
|
|
224.0.0.6(DR/BDR) |
更新方式 |
组播 |
|
特点 |
链路状态型 |
收敛速度快 |
|
增量型的触发更新 |
支持等价路由 |
|
|
支持vlsm与cidr |
|
适用于大规模网络,采用分层分区域的网络构建模式 |
从算法上避免路由环路的出现,其他的区域的lsa都必须有area 0来传递,如果网络中只有一个区域,该区域可以不是area 0 |
|
30分钟更新LSA |
老化时间60分钟 |
优先级 |
内部OSPF优先级为10 |
|
|
外部优先级为150(O_ASE) |
|
认证方式 |
区域认证,接口认证,虚链路认证 |
|
二.术语
LSA |
链路状态通告 |
LSDB |
链路状态数据库 |
DBR |
LSDB中的条目摘要信息 |
LSR |
链路状态请求 |
LSU |
链路状态更新 |
LSACK |
ACK包 |
DR |
指定路由器 |
BDR |
备份指定路由器 |
Router ID |
路由器标识 |
邻居 |
能够建立邻居,但是不能发送|接收OSPF路由。交互了HELLO包 2WAY状态 |
邻接 |
能够建立起邻居,且能够发送|接收OSPF路由。交互了LSA |
三.RID
选举 |
手工指定 |
|
|
自动选举 |
选择本地环回口作为RID,如果有多个环回口,则选择IP地址大的 |
|
|
选择本地的直连端口作为RID,如果有多个直连端口,则选择ip地址大的 |
作用 |
稳定性 |
|
四.报文类型
Hello |
周期性发送,用于邻居的发现,建立,维护,铲除 |
DD |
用于LSDB同步过程的可靠性以及快速性(第一个空的DD报文,完成的是主从选举,根据router id来确认,大的优先,后续的DD报文,是包含LSA的摘要) |
LSR |
请求报文,相当于EIGRP的query,里面包含的自己数据库中没有的LSA(只有在OSPF邻居双方交换成功DD报文后才会发送LSR报文) |
LSU |
更新报文,相当于EIGRP的update,里面包含的是LSA--链路状态通告 |
LSack |
LSU与LSR是通过可靠的方式进行传输;需要显示确认或者隐式确认;LSack实现的是显性确认 |
五.工作原理
建邻居 |
连接在同一个网络的OSPF 路由器,在启用了OSPF进程的端口上周期性的发送Hello报文,用于与其他路由器的建立邻居关系,然后将存对方的名字在自己的邻居表。 |
同步数据库 |
邻居建立成功后,就开始发送更新报文(包含的链路上的状态信息),将自己本地宣告进入到OSPF进程的端口上的链路状态信息发送自己的邻居。邻居路由器收到之后,将条目信息存放在自己的"数据库表"中。一直到互为邻居的多个路由器的"数据库表"完全一致。 |
计算路由 |
等到邻居路由器之间的数据库表中包含的条目完全一致的时候(即包含了整个网络宣告进入到OSPF协议中的所有的链路),每个路由器独立的运行SPF算法,计算出去往"数据库表"中每个目标网络的最优路径。 |
六.邻居建立状态
Init |
初始化状态,在该状态下可以收到对方设备发送过来的hello报文 |
2-way |
双向通信状态,在对方收到的Hello报文中看到了自己的Router ID |
Exstart |
交换初始化状态。交换第一个DBD报文,为的是实现后续的DD报文的可靠传输 |
Exchange |
交换状态。在该状态下互相传递DBD报文,此报文传输的是DD报文中包含LSDB中的条目的摘要信息 |
Loading |
加载状态,实现LSDB中详细条目的请求更新,以实现数据库同步,在该状态下,邻居之间相互发送LSU|LSR|Lsack |
FULL |
完全邻接状态,即此时邻居之间的数据库完全同步,其关系称之为“邻接关系” |
七.算法
SPF |
基本思想 |
网络中的所有的设备都发链路状态通告,所有的设备也都接受该通告,构建自己独立的lsdb,当网络中所有的设备的lsdb都一致的时候,就开始以自己为原点,计算到达网络任意结点的路径,构建spt(最短路径树),依据该树,构建路由表。 |
八.建立邻接关系条件
Hello-interval(hello时间),Dead-interval(dead时间)相同 |
|
Area-id相同(区域id) |
|
特殊区域标识相同 |
|
认证匹配 |
|
九.度量值计算
10^8/BW(min) |
单位bps |
十.三张表
邻居表 |
显示与之直连的邻居 |
拓扑表 |
显示Spt信息 |
路由表 |
显示路由信息 |
十一.OSPF路由器类型
区域内路由器(Internal Router) |
该类设备的所有接口都属于同一个OSPF区域 |
区域边界路由器ABR(Area Border Router) |
该类设备可以同时属于两个以上的区域,但其中一个必须是骨干区域,ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 |
骨干路由器(Backbone Router) |
该类设备至少有一个接口属于骨干区域,所有的ABR和位于Area0的内部设备都是骨干路由器。 |
自治系统边界路由器ASBR(AS Boundary Router) |
与其他AS交换路由信息的设备称为ASBR,ASBR并不一定位于AS的边界,它可能是区域内设备,也可能是ABR。只要一台OSPF设备引入了外部路由的信息,它就成为ASBR |
十二.LSA内容
LSA1(Router Link State) |
路由链接通告 |
Link-id |
Router ID |
|
|
产生方式 |
每台路由器都会产生 |
|
|
传播范围 |
本区域内,不会穿越ABR |
|
|
包含内容 |
直连网段和直连邻居 |
|
|
ADVrouter |
每台路由器的router id |
|
|
作用 |
描述路由器直连的详细状况,提供计算以及部分掩码 |
LSA2(Net Link State) |
网络连接通告 |
Link-id |
DR的接口IP |
|
|
产生方式 |
由DR产生,只有MA网络存在 |
|
|
传播范围 |
本区域内 |
|
|
包含内容 |
标识出本MA网络中有哪些路由以及本网的掩码信息 |
|
|
ADVrouter |
DR的router id |
|
|
作用 |
告知DR的信息,为LSA1补充网段的子网掩码 |
LSA3(Summay Network Link State) |
ABR汇总链路通告(域间路由) |
Link-id |
域间路由 |
|
|
产生方式 |
由ABR产生 |
|
|
传播范围 |
所有区域 |
|
|
包含内容 |
包含本区域的路由信息,包括网络号以及掩码 |
|
|
ADVrouter |
ABR的router id,每穿越一个ABR,会改变为这个ABR的router id |
|
|
作用 |
负责区域间的路由通告 |
LSA4(Summry Asb |
ASBR汇总链路通告 |
Link-id |
ASBR的router id |
|
|
产生方式 |
由ABR产生 |
|
|
传播范围 |
所有区域 |
|
|
包含内容 |
让其他区域得知ASBR的位置 |
|
|
ADVrouter |
ABR的router id,每穿越一个ABR,会改变为这个ABR的router id |
|
|
作用 |
让其他区域得知ASBR的位置 |
LSA5(AS External Link State) |
自治系统扩展路由通告(域外路由) |
Link-id |
域外路由 |
|
|
产生方式 |
由ASBR产生 |
|
|
传播范围 |
所有区域(除了NSSA区域与stub区域) |
|
|
包含内容 |
包含域外路由 |
|
|
ADVrouter |
ASBR的router id,泛洪到整个AS,不会改变ADV |
|
|
作用 |
通告外部路由引入条目 |
LSA7(NSSA) |
NSSA域外路由 |
Link-id |
不透明LSA(0.0.0.0) |
|
|
产生方式 |
由ASBR产生 |
|
|
传播范围 |
本NSSA区域内 |
|
|
作用 |
用于MPLS TE |
LSA6 |
组播组LSA(思科没有实现) |
|
|
LSA9 |
|
|
不透明LSA,本地链路范围,用于MPLS TE |
LSA10 |
|
|
|
LSA11 |
|
|
不透明LSA,本地链路范围,用于MPLS TE |
十三.汇总
域间汇总 |
在边界路由器ABR上做汇总,对3类LSA汇总 |
外部汇总 |
在ASBR上汇总(也可以在NSSA区域内的NSSA ABR汇总),对5类或者7类汇总 |
十四.网络类型
广播类型(broadcast) |
选举DR与BDR,通过组播建立邻居 |
|
|
物理接口类型 |
Ethernet,Token Ring |
|
链路层类型 |
Ethernet,FDDI |
非广播类型NBMA(全链接ATM网络) |
选举DR与BDR,通过单播更新 |
|
|
物理接口类型 |
FR`S Physical,FR`S MP Subif |
点到点类型(P2P,point-to-point) |
不选举DR与BDR,组播更新,出现32位主机路由 |
|
|
物理接口类型 |
Serial,BRI,FR`S P2P Subif |
|
链路层类型 |
PPP,HDLC,LAPB |
点到多点(P2MP,不完全连接的帧中继网络) |
不选举DR与BDR,组播更新,出现32位主机路由 |
|
点到多点非广播 |
不选举DR与BDR,单播,出现32位主机路由 |
|
Looback |
32位主机路由 |
|
|
物理接口类型 |
Looback |
|
十五.DR与BDR选举
Priority: 1:默认值是1,指明该设备有参与选举DR与BDR的权利;若是0,指明该设备没有参与选举DR与BDR的权利;最大值是255,其角色是不可抢占的 |
在广播类型与NBMA网络类型才会有DR与BDR |
十六.特殊区域
STUB |
限制条件 |
必须将STUB区域的所有路由器都配成STUB |
|
|
STUB区域不能作为虚链路的中转区域 |
|
|
STUB区域不能出现ASBR |
|
|
Area 0不能配成STUB区域 |
|
过滤 |
阻止LSA4/LSA5 |
|
默认路由 |
由ABR发出一条LSA3默认路由给STUB的其他路由器 |
Totally |
限制条件 |
只能在ABR做 |
|
过滤 |
阻止LSA3/LSA4/LSA5 |
|
默认路由 |
由ABR发出一条LSA3默认路由给STUB的其他路由器 |
NSSA区域 |
限制条件 |
只有NSSA区域,可以存在ASBR |
|
过滤 |
阻止LSA4/LSA5 |
|
默认路由 |
手工在ABR上发送LSA7默认路由 |
Totally NSSA区域(思科私有) |
限制条件 |
只有NSSA区域,可以存在ASBR,只需在ABR上做 |
|
过滤 |
阻止LSA3/LSA4/LSA5 |
|
默认路由 |
由ABR产生LSA3默认路由传播到NSSA区域内的其他 |
十七.forward address
全0 |
|
|
非0(非NSSA) |
条件 |
外部路由的下一跳接口启动OSPF |
|
|
外部路由的下一跳地址在network范围内 |
|
|
外部路由的下一跳接口没有设置成被动接口 |
|
|
外部路由的下一跳接口的网络类型不是P2P或者P2MP |
非0(NSSA) |
|
|
十八.虚连接(虚链路)Virtual-link
虚连接是指在两台ABR之间,穿过一个非骨干区域(转换区域——Transit Area),建立的一条逻辑上的连接通道,可以理解为两台ABR之间存在一个点对点的连接。
一般情况下都是无法与骨干区域相连的普通区域想要获得其他区域的路由信息(普通区域与普通区域相连也不会交换路由信息LSA,普通区域只能与骨干区域交互路由信息LSA),通过虚拟的方式下将骨干区域范围扩展到相邻的普通区域的位置(虚链路必须是在两个拥有共同区域的ABR之间建立的,其中必须至少有一个ABR是连接骨干的),让不能直接与骨干区域相连的普通区域,最终可以与骨干区域直连。
相连时,是将骨干区域的ABR和连接另一个普通区域的ABR相连,连接这两个ABR时,使用双方的Router-ID来连接。虚链路被认为是骨干区域的一个接口,一条链路,也需要建立OSPF邻居,但在邻居建立之后,链路上是没有Hello包传递的。虚链路不能建立在STUB或者NSSA区域上。
十九.OSPF配置常用命令(以华为模拟器eNSP为主)
1.基础配置
系统视图下
配置:
ospf process-id(ospf进程编号) router-id (路由器的id)
area area-id(区域id)(area 0一般为骨干区域)
network ip地址段(宣告网段)
2.虚链路配置
在ospf的区域配置视图下:
vlink-peer router-id 同区域的对端ABR的router-id//创建虚链路
两边的ABR都需要配置
3.OSPF认证
接口认证
接口视图下:
ospf authentication-mode md5 id cipher 认证的密钥//两边都做,必须一致
区域认证
在区域的视图下:
ospf authentication-mode md5 id cipher 认证的密钥//两边都做,必须一致
4.特殊区域
在区域的视图下:(非骨干区域)
Nssa//两边都做
stub//两边都做
5.设置接口ospf的开销
在接口配置视图下:
ospf cost 开销值
6.做gre实现穿stub区域或nssa区域完成非0区域的挂载
在系统视图下,创建tunnel
interface tunnel 0/0/0
tunnel-protocol gre//制定tunnel的封装
source 接口/ip地址//指定源端口
destination ip地址//完成目标端口的指定
ip 地址//给tunnel接口配置ip地址
7.引入外部路由
在OSPF进程内
import-route
8.验证
display ospf process-id(进程编号) peer brief //检查邻居关系的状态
display interface 接口的类型/编号 //查看ospf接口的状态
display ospf process-id lsdb //查看ospf的链路状态数库
display ospf process-id lsdb router ///查看ospf的链路状态数库中1类的lsa
display ospf process-id lsdb network ///查看ospf的链路状态数库中2类的lsa
display ospf process-id lsdb summary ///查看ospf的链路状态数库中3类的lsa
display ospf vlink //查看ospf的虚链路 full,才是正确的