ospf是链路状态行路由协议 组播更新报文224.0.0.5与224.0.0.6
点到点网络:点到点网络上的有效邻居总是可以形成邻接关系,此网络ospf数据包的组播地址是224.0.0.5
广播型网络:此网络类型需要选取DR与BDR ,所有始发于DR、BDR的ospf数据包组播地址是224.0.0.5,
其他路由器的ospf数据包组播地址是224.0.0.6
NBMA网络:此网络没有转发广播数据包的能力的,因此使用伪广播(单播)
点到多点:多个点到点的集合
虚链路: 解决骨干区域与非骨干区域相连问题
跨层封装到3层,协议号89;触发更新、周期更新(30min),存在ACK和hello机制,但依然每30min周期一次,作用在于核查;
仅支持等开销负载均衡;需要结构化的部署----区域划分、地址规划
一、OSPF的数据包
Hello 用于邻居的发现、建立、保活
DBD 数据库描述表 相当于数据库目录
LSR 链路状态请求 获取未知LSA
LSU 链路状态更新 携带各种LSA,用于应答LSR
LSack 链路状态确认 可靠性使用
二、OSPF的状态机:邻居间关系的各个阶段
Down: 一旦本地发出hello包进行下一状态
Init 初始化:接收到的hello包中若存在本地的RID,那么进入下一状态
2way双向通信:邻居关系建立的标志
条件匹配:1、点到点网络直接进入下一状态
2、MA网络将进行DR/BR选举,非DR/BDR间不能进入下一状态;
Exstart 预启动:使用类似hello 的DBD包来进行主从关系选举,RID数值大为主;
主优先进入下一状态
Exchange 准交换:使用真实的DBD来共享数据库目录,需要ACK确认;
Loading加载: 使用LSR/LSU/LAack来获取未知的LSA信息;
Full转发:邻接关系建立的标志;
三、OSPF的工作过程:
启动协议后,本地向所有邻居使用224.0.0.5组播发出hello包,在收集到其他邻居的hello包后,若邻居的包中存在本地RID,那么邻居关系建立,生成邻居表;
条件匹配:匹配失败将停留于邻居关系,仅hello包周期保活即可;
匹配成功可以建立邻接关系;
邻接关系间先使用DBD来共享拓扑目录,之后使用LSR/LSU/LSack来获取未知的LSA信息,生成LSDB---数据表中;
数据库建立完成后,本地基于SPF最短路径选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;
收敛完成后,hello包周期保活;每30min周期使用DBD进行比对;若比对结果一致,继续保活即可;若不一致将使用LSR/LSU/LSack来获取未知的信息;
四、lsa
结构突变:
选路规则:
Ospf选路原则
O路由>O ia路由> external路由(E1,N1,E2,N2)
External-type-1(E1,N1)>External-type-2(E2,N2)
R1,R4,R3属于area 0 R1与R2的环回也属于area 0
12.0.0.0/24 属于area 1
如图以2.2.2.2 为源到1.1.1.1的路径是R2,R3,R4,R1
以下是OSPF邻居建立的必要条件,
1.区域号要一致
2.计时器要一致
3.认证
4.区域类型(如STUB/NSSA)
5.主IP地址跟对方的主IP地址需在同一网段内(EIGRP可以不用,可以使用辅助地址建邻居)
6.接口子网掩码(多址网络需要一致、点对点链路无需完全一致,只需在同一网段内即可)
7.MTU(双发接口的MTU不一致,会卡在EXSTART状态,并重传LSA)
8.网络类型(某些情况不会影响邻居建立,会影响路由的生成)
9.RID在区域内需唯一
10.优先级(如果都为0则无法建立邻接关系,无法交换LSA)