链路状态算法
IGP
使用IP组播收发协议数据,组播IP:224.0.0.5,DR使用组播IP:224.0.0.6
无路由环路
支持VLSM和CIDR
收敛速度快
支持等价路由
支持协议报文的认证
两个基础概念:
AS:由同一机构管理,使用统一选路策略的路由器集合,1-65535
RouterID:用于在AS中唯一标识一台运行OSPF的路由器的32位整数。
RouterID选举:
1.选loopback接口IP,大的优先
2.若无loopback地址,选物理接口IP,大的优先
可以通过命令强制改变Router ID:VRP平台系统视图下,router id
如果一台路由器的 Router ID 在运行中改变,则必须重启OSPF协议或重启路由器才能使新的 Router ID 生效
邻居和邻接:
OSPF作为一个路由协议,运行OSPF的路由器之间需要交换链路状态信息和路由信息,在交换这些信息之前首先需要建立邻接关系。
邻居路由器(Neighbor):
有端口连接到同一个网段的两个路由器就是邻居路由器。
邻居关系由OSPF的Hello协议维护。
邻接(Adjacency):
从邻居关系中选出的为了交换路由信息而形成的关系。
DR(Designated Router)和BDR(Backup Designated Router)
每一个含有至少两个路由器的广播型网络和NBMA网络都有一个指定路由器(Designated Router,DR)和备份指定路由器(Backup Designated Router,BDR)。
DR选举:比较优先级Priority,数值大的优先级高,0不参与,1是默认;优先级相同就比较Router ID,大的优先。
DR和BDR的作用:
- 减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,降低对路由器处理能力的压力。一个既不是DR也不是BDR的路由器(DRother)只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就大大减少了大型广播型网络和NBMA网络中的邻接关系数量。
- 在描述拓扑的LSDB中,一个NBMA网段或者广播型网段是由单独一条LSA来描述的,这条LSA是由该网段上的DR产生的。
DR和BDR的指导思想:
1、选举制:DR是各路由器选出来的,而非人工指定的,虽然管理员可以通过配置Priority干预选举过程。
2、终身制:DR一旦当选,除非路由器故障,否则不会更换,即使后来的路由器Priority 更高。
3、世袭制:DR选出的同时也选出BDR 来,DR故障后,由BDR接替DR成为新的DR。
DR和BDR的注意事项:
1、只有在广播和NBMA的链路上才会选举DR,在P2P和P2MP的链路上不会选举DR。
2、DR是针对一个网段内的设备选举的,对于一台路由器来说,可能它在某个接口上是DR,在其它接口上是BDR、DROther,或者因为是P2P的链路而不参加DR的选举。
4、在广播的网络上必须存在DR才能够正常工作,但BDR不是必需的。
5、一个网段中即使只有一台路由器,也要选举DR。
6、由于“终身制”的原因,网段中的DR不一定是Priority 最高的,但通常是“来的早”的路由器。
OSPF区域
区域概念:一组网段的集合
区域作用:缩小LSDB规模,减少网络流量。
区域划分原则:
1.区域划分为两类:骨干区域area0和非骨干区域
2.骨干区域area0有且只有一个
3.非骨干区域必须和骨干区域相连,非骨干区域之间不能相连(虚连接除外)
从骨干区域传来的三类LSA,不再传回骨干区域
虚连接(Virtual Link)
骨干区域必须是连续的,但在物理上不连续的时候,可以使用虚连接使骨干区域逻辑上连续。
虚连接可以在任意两个区域边界路由器上建立,但是要求这两个区域边界路由器都有端口连接到一个共同的非骨干区域。这个非骨干区域成为Transit区域。
OSPF自治系统中路由器角色
内部路由器IR(Internal Router):
内部路由器是指所有所连接的网段都在一个区域的路由器。属于同一个区域的IR维护相同的LSDB。
区域边界路由器ABR(Area Border Router):
区域边界路由器是指连接到多个区域的路由器。ABR为每一个所连接的区域维护一个LSDB。
骨干路由器BR(Backbone Router):
骨干路由器是指至少有一个端口(或者虚连接)连接到骨干区域的路由器。包括所有的ABR和所有端口都在骨干区域的路由器。
AS边界路由器ASBR(AS Boundary Router):
AS边界路由器是指和其他AS中的路由器交换路由信息的路由器,这种路由器向整个AS通告AS外部路由信息。AS边界路由器可以是内部路由器IR,或者是ABR,可以属于骨干区域也可以不属于骨干区域。
距离矢量算法(D-V):
每个路由器将自己已知的路由表周期性的发送给相邻的路由器,每个路由器也只接收相邻路由器发送过来的路由表,如果网络拓扑发生变化,重复上面过程,运行距离矢量算法,通过计算距离矢量数,我们用跳数代表距离矢量数,计算出最终的路由。
链路状态算法:
每个路由器泛洪LSA,并且接收其他所有路由器泛洪的LSA,生成LSDB,使用SPF算法,生成一棵以自己为根,其他路由器为枝干节点的逻辑的最短路径树,找到最短路径,计算出最终的路由。
OSPF报文:
五类报文
type1:Hello,发现和维护邻居关系
在广播型网络和NBMA网络上Hello报文也用来选举DR和BDR。
HELLO包不需确认,但有死亡机制,是40秒。只要收到包就置为40秒,然后倒数。
type2:DD,发送链路状态数据库摘要
DD包有序列号,里面有确认,是隐式的。
type3:LS Request,请求特定的链路状态信息
这些被请求的LSA是通过接收DD报文发现的,但是本路由器上没有的。
type4:LS Update,发送详细的链路状态信息
LS Update报文通过发送详细的LSA来同步链路状态数据库。
type5:LS ACK,发送确认报文
LS Ack报文通过泛洪确认信息确保路由信息的交换过程是可靠的。LS Ack报文用于泛洪对LSA的确认,而不是对LS Update报文的确认。
hello报文周期时间:10s
DeadInterval:40s
OSPF邻居状态机
邻居关系状态机:
Down:初始状态,表明没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval间隔相同。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
邻接关系状态机:
ExStart:路由器开始向邻居发送DD报文。主从关系是在此状态下形成的(比较routerID,确定主从关系。routerID大的为主路由器,小的为从路由器);初始DD序列号是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
Loading:相互发送LS Request报文请求LSA,发送LS Update通告LSA。
Full:收到确认报文,LSDB同步,邻接关系建立。