OSPF(7/20,41min)
开放式最短路径优先(Open Shortest Path First)协议是IETF定义的一种基于链路状态的内部网关路由协议
Open指公有协议;Cost以带宽进行计算 ,汇总与子网划分相关,精简路由;
OSPF核心工作流程(7/20,20min)
LSA不是数据包类型,存放在LSDB中
从数据库中通过SPF算法得到路由表
OSPF数据包与状态(7/20,51min)
Router ID:
dis ospf brief可以看到Router-id
一台路由器开机后只开启进程,其Router-id为0.0.0.0
手动配置Router-id
[Router]ospf 1 router-id 1.1.1.1(此ip不需要是该设备的任何一个接口地址)该命令建议起手配置
重启OSPF进程
<Router>reset ospf process或者重启(生产环境会引发路由震荡)
OSPF数据包结构和类型(On IP,Port 89,网络层协议 )
数据链路帧报头-IP数据报头-OSPF数据包报头-OSPF数据包特定类型数据Hello 数据包
Ospf Header(所有OSPF包的头部结构都一样)
版本:V2;类型:共五种;数据包长度;路由器ID与区域ID;校验和;Auth type与Auth data,认证相关信息
Hello
Hello间隔10s,死亡时间40s
包类型:
OSPF数据包类型 | 作用 |
Hello | 建立并维护邻居关系 |
Database Desciption(DD/DBD) 数据库描述 | LSDB的摘要(仅包含LSA头部) |
Link State Request(LSR) 链路状态请求 | 请求LSA |
Link State Update(LSU) 链路状态更新 | 发送LSA |
Link State Acknowledge(LSAck) 链路状态确认 | 对LSU的确认 |
A、B建立邻居后,先发送DD(DD只存在与邻居建立之初),
如A:我知道路由1与路由2,B:我知道路由2与路由3,二者发送DD比较后再互相学习自己没有的路由(如A:请把路由3给我,发送LSR数据包,此时B发送LSU,A收到后发送LSAck确认已经收到)
(attempt处于帧中继环境)
是邻居(我们认识)不一定是邻接(我们LSDB同步)
A(开启OSPF进程)(发送hello包):大较好,我是A,我现在不认识任何人
B:(接收A的Hello包后发送自己的Hello包)我是B,我有一个邻居A
A:(收到hello包)从init进入2way,见下面
OSPF工作流程(1/2)
两种情况:
由down到2way(如R1)
由down打破Init再到2way(例如R2)
OSPF第一阶段是使用Hello包建立双向通信的过程,成为邻居关系。
A和B成为邻居后,进入交换初始状态(extart)
前几(前2个)个DBD来决定主从关系
Init:是否第一个包
More:后面还有没有包
Master:我是主人还是仆人(每个人的第一个DBD都认为自己是主)
通过Rid对比,Rid更大的成为Master,序列号dd Sequence只能Master改变
OSPF工作流程(1.5/2)
OSPF工作流程(2/2)
R2拥有R1所有 路由,可以直接进入full状态。R1需要请求R2的其他路由,则先进入loadoing再进入full
OSPF第二阶段是通过交换LSA达到LSDB同步,建立邻接关系
同一个OSPF Area里,路由表不一样(每个人到不同地方的路径不同),LSDB(地图)一定同步
OSPF邻居建立条件(7/20,15min)
邻居到底是怎样建立起来的?
许多技术都设计到比较、抢占
双方的Hello包必须保证:
RID唯一,不能冲突
Hello/Dead时间间隔一致,默认10s与40s(保持4倍关系),int端口 ospf timer hello
区域ID一致
若启用认证,则必须保持认证一致
链路MTU大小一致(默认不开启检查,Cisco默认开启)(若不一致,则邻居建立可能一直停留在EX-Start与Exchange状态下)
以太网环境下(如点到点环境),子网掩码一致
网络地址一致
末梢区域设置一致(Option)