OSPF 协议号:89 链路状态路由协议,开放式最短路径优先
使用组播:224.0.0.5和224.0.0.6;以开销作为度量值,采用SPF算法可以有效的避免环路
路由器感知到拓扑变更,向组播地址224.0.0.6发送LSU,DR监听224.0.0.6地址,
DR向组播地址224.0.0.5 发送更新以通知其他路由器
通过LSA发布路由。 支持手动汇总 在ABR/ASRB上;
ABR:区域边界路由器 ASBR自治系统边界路由器
OSPF定义了四种特殊区域,分别是Stub Area(末端区域),Totally Stub Area(完全末端区域),NSSA Area(非末端区域),Totally NSSA Area完全非末端区域
Stub区域不允许Type-4和Type-5 LSA进入,但允许Type-3 LSA进入。Totally Stub区域不仅不允许Type-4和Type-5 LSA进入,同时也不允许Type-3 LSA进入,只允许表示缺省路由的Type-3 LSA进入
RIP基于UDP,BGP基于TCP,OSPF和EIGRP基于IP
OSPF工作过程:邻居建立、同步链路状态数据库、计算最优路由
邻居建立过程:
邻居发现:发送Hello报文。发现邻居
邻居建立:完成Hello报文中的参数协商。建立邻居关系
邻居保存:通过Keepalive机制,检测邻居运行状态,并保持
邻居建立的过程字段:
第一次发送Hello报文携带本机的router-ID,邻居列表空 (Down)
第二次发送Hello报文携带本机的router-ID,有对端的router-ID (Init)
对不支持组播网络的可以手动配置实现邻居的发现(peer 10.1.12.2 对端IP)
链路状态信息:
我是router-id1.1.1.1 我的链路信息有XXXXX,(链路信息包括:链路类型、接口IP掩码、链路上所连接的邻居路由器、链路带宽(开销))
P2P网络,仅两台路由互联,支持广播、组播
广播型网络,多台以上路由器通过共享介绍互联,支持广播、组播
NBMA网络(帧中继网络),不支持广播、组播
P2MP网络,支持广播、组播
OSPF度量方式:某接口cost=参考带宽/实际带宽 更改cost的两种方式:直接在接口下配置,修改参考带宽
OSPF协议报文:version版本、type 类型(1:hello报文、2:数据库描述报文DD、3:LSR链路状态请求报文、4:链路更新报文、5:链路状态确定报文。)、packet length 长度 router id 生成报文路由器的router id、areaid 区域
Checksum校验字段,anth type 校验方式 0不认证,1 明文密码认证,2 MD5认证 authentication 认证消息
OSPF报文类型:Hello 发现和维护邻居关系、Database Description 交互链路状态数据库摘要 、Link State Request 请求特定的链路状态信息 Link State Update 发送详细的链路状态信息 link State Ack 发送确定报文
OSPf的LSDB同步:A发送DD报文,路由器宣告自己为主,B也发送DD报文,路由器宣告自己为主,由于B的router id 大 B成为的真正的主,A会变成从,A发送一个新的DD报文,包含了LSDB的摘要信息,B也发送一个新的DD报文,包含LSDB的摘要信息。A向B发送LSR报文,通过DD报文发现,并且在本地LSDB中没有的链路状态信息,B会像A发送详细的链路信息,A在收到B发送的链路信息会更新自己的LSDB(链路数据库),也会像B发送LSack 确认收到链路信息,然后建立了邻接关系。
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和Router DeadInterval间隔相同。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果Router DeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
2-Way Received:此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way。
2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
1-Way Received:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的。
ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
Loading:相互发送LS Request报文请求LSA,发送LS Update通告LSA。
Full:两台路由器的LSDB已经同步。
LAS头部
LS age:表示LSA生存的时间,单位是秒
LS type:标识了LSA的格式和功能
Link State ID:该LSA所描述的那部分链路的标识、例如Router ID
Advertising Router 产生此LSA的路由器的Router ID
LS sequence number:检测旧的和重复的LSA
OSPF如何避免区域间的路由环路:划分了骨干区域和非骨干区域,且骨干区域只有一个,非骨干区域之间通信都要通过骨干区域中转,并规定从骨干区域传来的三类LSA不在传回骨干区域。
一条LSA只能描述一条路由信息
OSPF几个需要注意的地方:
1)当hello时间不同时是永远起不来邻居的
2)当hello时间不同时会停留在INIT状态
3)如果路由的优先级都改成了0,会停留在2-way状态
4)当MTU值不同时会停留在EXSTART或EXCHANGE状态