链路状态路由协议
LSA泛洪
运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这即是距离矢量算法的本质。
与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)。
LSDB组建
每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。
SPF计算
每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。
路由表生成
最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。
总结
OSPF协议工作原理
OSPF路由器之间的关系
考虑一种简单的拓扑,两台路由器直连。在双方互联接口上激活OSPF,路由器开始发送及侦听Hello报文。在通过Hello报文发现彼此后,这两台路由器便形成了邻居关系。
邻居关系的建立只是一个开始,后续会进行一系列的报文交互,例如前文提到的DD、LSR、LSU和LS ACK等。当两台路由器LSDB同步完成,并开始独立计算路由时,这两台路由器形成了邻接关系。
初识OSPF邻接关系建立过程
1.建立邻居关系
多个路由器时,主设备DR和备设备BDR需要和其他运行了ospf的设备建立邻接关系(full)
DROther设备之间无需建立邻接关系,只需要建立邻居关系
DROther止步于2-way状态
OSPF认证
OSPF支持报文验证功能,只有通过验证的报文才能接收,否则将不能正常建立邻居关系。
OSPF协议支持两种认证方式——区域认证和链路认证。
使用区域认证时,一个区域中所有的路由器在该区域下的认证模式和口令必须一致;
链路认证相比于区域认证更加灵活,可专门针对某个邻居设置单独的认证模式和密码。
如果同时配置了接口认证和区域认证时,优先使用接口建立OSPF邻居。
每种认证方式又分为简单验证方式、MD5验证模式和Key chain验证模式。
简单验证模式在数据传递过程中,认证密钥和密钥ID都是明文传输,很容易被截获;
MD5验证模式下的密钥是经过MD5加密传输,相当于简单验证模式更为安全;
Key chain验证模式可以同时配置多个密钥,不同密钥可单独设置生效周期等。
2.协商主从
进行LSDB同步时,尽量不同步冲突的信息——因此出现摘要信息
空DD:选举主从 DD报文:包含LSA的头部信息,用来描述LSDB的摘要信息(单播发送)
DR、BDR选举(越大越优)(防止无用信息)
不允许抢占:和设备开启时间有很大关系,成为DR或BDR后不能修改(除非重置进程或者设备重启)
若环境中只有一个设备开启,40s选举时间过后没有新设备加入,则该设备直接成为DR
1.知道网络中所有路由器 2.没有进行数据库交互前
选举方式:1.比较接口优先级(默认1,范围0-255 人为修改为0,则不会参与选举)(在Hello包中)
2.比较设备RouterID(在通用报文头部中 RouterID谁大谁是主)
[Huawei-GigabitEthernet0/0/0] ospf dr-priority priority
//(接口视图)设置接口在选举DR时的优先级
ospf dr-priority命令用来设置接口在选举DR时的优先级。
priority值越大,优先级越高,取值范围是0~255。
选举出来默认先成为BDR,在环境中没有DR时再成为DR
主/从其中一方必定是DR或BDR
3.交互LSDB信息
从设备先发目录,主设备后发
4.同步LSDB
保证同步时的可靠性