OSPF使用两个多播地址
224.0.0.5---All OSPF Routers.
224.0.0.6---All DR Routers(DR+BDR)
OSPF三张表
1.邻居表:列出每台路由器全部已经建立邻接关系的邻居路由器。
- OSPF的邻居关系通过交互Hello报文建立。
2.链路状态数据库(LSDB):列出网络中其他路由器的信息,由此显示了全网的网络拓扑。
3.路由表:通过SPF算法计算出到达每个网络的最优路径。
OSPF四种网络类型:
P2P:点到点链路 不选举DR hello报文发送时间10s
P2MP:点到多点链路 不选举DR hello报文发送时间30s
MA:广播类型网络 选举DR hello报文发送时间10s
NBMA:非广播-多路访问网络 选举DR hello报文时间30s
hello报文死亡时间是发送时间的4倍
OSPF五种报文:
Hello报文:周期性发送,用于发现和维持OSPF邻居关系。
- 发现邻居
DD报文:交互链路状态数据库摘要,描述本地LSDB的摘要信息,用于两台路由器进行数据库同步。
- 互相问对方你有没有某信息,需不需要
LSR报文:链路状态信息请求报文,向对方请求所需要的LSA。
- 自身查看没有某信息,我需要某信息,我向对方请求发送某信息
LSU报文:链路状态信息更新报文,向对方发送其所需要的LSA或者泛洪自己更新的LSA。
- 我知道了你没有某信息,互相向对方发送对方所需要的某信息
LSAck报文:链路状态确认报文,用于对收到LSU中的LSA进行确认。
- 我收到了某信息,我确认一下
OSPF七种状态:
Down:没有收到Hello包。
Attempt:在帧中继网络中才会出现,表示的是网络是测试、唤醒状态。
Lnit:收到Hello包,但是收到Hello包中的邻居字段没有自己。
2-Way:收到Hello包的邻居列表中有自己,建立邻居关系。
Exstart:只发DD报文,不含摘要信息
Exchange:通过交换DD报文,交换LSA头部信息。
Loading:通过上述获得的LSA头部信息,来确定自己需要哪些LSA。
Full:LSDB同步完成,建立邻接关系。
建立邻居关系步骤
使用Hello报文发现和建立邻居关系
默认发送组播形式发送Hello报文(目的地址224.0.0.5)
OSPF中Hello报文中包含了路由器的Router ID、邻居列表等信息
当R1和R2建立邻居关系时,邻居状态为:
Down:初始状态,没有从邻居收到任何消息。
Init:从邻居收到了hello报文,但自己的router-id不在hello报文中。
2-way:从邻居收到了hello包,自己的router-id存在于hello报文中。邻居关系建立。
Hello报文的主要作用
- 邻居发现:自动发现邻居路由器
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系
参数协商例如:掩码,DR,BDR,区域,特殊区域
- 邻居保持:通过周期性的发送和接收,检测邻居运行状态
建立邻接关系
Exstart:路由器向邻居发送DD报文,不包含摘要信息。router-id大的作为Master设备。
Exchange:发送包含摘要信息的报文。
Loading:相互向对方发送对方所需要的LSDB。
Full:完成LSDB同步。
DR与BDR的作用
先选BDR,后选DR。
DR/BDR的选举是非抢占式的
- 比如已经有了DR/BDR,后面又新增了一台路由器,优先级比现在DR/BDR要更优,为了网络稳定,新增路由器不会去抢占DR/BDR。
DR/BDR的选举是基于接口的(路由器的每个接口角色都不一样,有可能一台路由器的两个接口分别是DR或BDR)
- 接口的DR优先级越大越优先。默认为1.
- 接口的DR优先级相等时,Router ID越大越优先。
DR选举规则:
1、OSPF优先级最大,为DR(缺省情况下,所有OSPF路由器优先级都为1)。如果优先级都相同,则选择Router-ID最大的路由器选举为DR(Router-ID选举:手工配置>Loopback>接口IP)。
2、BDR是优先级仅次于DR的路由器,选举为BDR。
3、如果路由器优先级为0,表示改路由器不参与选举DR/BDR,称为DRother。
P2P,P2MP不选举DB/BDR
邻居建立不了的原因
hello dead间隔时间不一致
区域内网络类型要相同
链路两端区域号要一致
认证方式要相同
router-id要不同
mtu要相同
MA网络子网掩码要相同
MA网络中无DR
接口未设置silent-interface
OSPF几个需要注意的地方:
1)当hello时间不同时是永远起不来邻居的
2)当hello时间不同时会停留在INIT状态
3)如果路由的优先级都改成了0,会停留在TWO-WAY状态
4)当MTU值不同时会停留在EXSTART或EXCHANGE状态
LSA概念
LSA是OSPF进行路由计算的依据。
三元组标识唯一一条LSA:1.链路状态类型;2.链路状态ID号LinkState ID;3.通告路由器AdvRouter。
判断LSA新和旧:序列号,校验和,老化时间。
LSA新旧比较:1.序列号越大,LSA越新;2.序列号相同,校验和越大越新;3.校验和相同,老化时间大于15min以上,age越小越新。15分钟以内,两条LSA则相同。
OSPF LSA类型
由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递 |
||
由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0.NSSA的ABR会将7类LSA转换成5类LSA注入到Area0 |
一类Router LSA(路由器LSA)
Link State ID:OSPF的Router ID。
AdvRouer:产生该LSA的路由器的Router ID。
每台路由器都会产生,只能在本区域传播。
包含路由器的直连接口的信息,如:链路状态、cost值。
Link Type(只有一类LSA有):
1.P2P:本路由器到邻居路由器的点到点链接,传递的是拓扑信息; Link ID:邻居路由器的Rouer ID;Link Data:宣告该Rouer LSAD的路由器接口的IP地址。
2.TransNet:本路由器到TransNet网段(MA网络中才有),传递的是网段信息;Link ID:DR的接口IP地址;Link Data:宣告该Router LSA的路由器接口的IP地址。
3.StubNet:本路由器到Stub网段(如loopback)的路由信息(IP地址+掩码),传递的是路由信息; Link ID:宣告该Router LSA的路由器接口的IP地址;Link Data:该Stub网段的掩码。
4.Virtual:虚连接,传递的是拓扑信息。
二类Network LSA(网络LSA)
Link State ID:DR接口的IP地址。
AdvRouter:DR的Router ID。
由DR产生,描述该DR所接入的MA网络中与它形成邻接关系路由器,以及DR自己,只能在本区域传播。因为P2P和P2MP不选举DR,所以这两种网络类型没有二类LSA。
- 二类是辅助一类的。
三类Network Summary LSA(网络汇总LSA)
Link State ID:路由的目的网络地址。
AdvRouter:生成该LSA的Router ID。
由ABR产生,向一个区域通告到到达另一个区域的路由,在区域间传播。
- 正因为三类描述的信息是路由信息,而不是链路状态信息,所以OSPF区域间是类似于距离矢量的工作原理!所以OSPF规定所有非0区域必须直接和区域0相连(虚链路除外),为了区域间防止环路。
五类AS-External LSA(AS外部LSA)
Link State ID:外部路由的目的网络地址。
AdvRouter:生成该LSA的Router ID。
由ASBR产生,到达AS外部的路由,该LSA会被通告到所有区域,除了Stub区域和NSSA区域。(一台路由器引入了外部路由,这台路由器就成了ASBR)
四类ASBR-Summary LSA()
Link State ID:ASBR的Router ID。
AdvRouter:生成该LSA的Router ID。
由ABR产生,描述到ASBR的路由,通告给除了ASBR所在区域的其他相关区域。
- 四类是为五类服务的,有五类LSA才会有四类,五类可单独存在,四类不可以。
区域间路由计算
区域间路由信息是通过ABR产生的3类LSA实现的。
区域间划分两种路由器角色:
- IR区域内部路由器:所有接口都属于同一个区域。
- ABR区域边界路由器:所有接口分别连接两个或两个以上的区域,其中有一个区域要在骨干区域里。
区域间路由防环机制
- OSPF要求所有的非骨干区域必须与骨干区域直接相连(物理或逻辑相连)。
- 区域间的路由传递不能发生在两个非骨干区域之间。
- ABR不会将到达某个区域的3类LSA再返回给该区域。如R1发给R3三类LSA,R3不会再把该类LSA回发给R1。
OSPF选路规则:区域内的路由>区域间的路由>type 1外部路由>type 2外部路由
OSPF特殊区域
Stub和Totally Stub区域
NSSA和Totally NSSA区域
作用:减少LSA数量和路由表的规模。
N=0 E=1 普通区域
N=0 E=0 Stub区域
N=1 E=0 NSSA区域
Stub区域和Totally Stub区域的区别
Stub区域
该区域存在ABR,不存在ASBR。
Stub区域的ABR不向Stub区域传播接收的AS外部路由,同时为保证Stub区域能到达AS外部,Stub区域的ABR将生成一条缺省路由(使用3类LSA描述)。
Stub区域具有1类,2类,3类LSA,减少了4类,5类,7类LSA。当其他区域有引入的外部路由,Stub区域的ABR会自动下发缺省的3类LSA用于该区域路由器访问其他区域的外部路由。
配置Stub区域需要注意:
- 骨干区域不能配置成Stub区域
- Stub区域中的所有路由器都必须将该区域配置成Stub
- Stub区域内不能引入也不接收AS外部路由
- 虚连接不能穿越Stub区域
Totally Stub区域
Totally Stub区域既不允许AS外部路由在本区域内传播,也不允许区域间路由在本区域传播。
Totally Stub区域内的路由器通过本区域ABR下发的缺省路由(使用3类LSA描述)到达其他区域,以及AS外部。
Totally Stub区域访问其他区域以及AS外部是通过默认路由实现的。
AS外部、其他OSPF区域的拓扑以及路由变化不会导致Totally Stub区域内的路由进行路由重计算,减少了设备性能浪费。
Totally Stub区域具有1类,2类,3类缺省LSA,减少了3类明细LSA,4类,5类,7类LSA。当其他区域有引入外部路由和其他区域的区域间路由,Totally-stub区域的ABR会下发缺省的3类LSA,用于该区域路由器访问其他区域的外部路由和区域间路由。
配置Totally Stub区域需要注意:
- 与Stub区域配置的区别在于,在ABR上需要追加no-summary关键字。
OSPF规定Stub区域是不能引入外部路由的,对于既需要引入外部路由,又要避免外部路由带来的资源消耗,Stub和Totally Stub区域就不能满足了。
NSSA区域和Totally NSSA区域的区别
NSSA区域
存在ASBR。
NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络学习来自OSPF网络其他区域引入的外部路由。
NSSA区域具有1类,2类,3类,7类LSA,减少了4类,5类LSA。NSSA区域可以存在ASBR,即外部路由以7类LSA的形式引入,当7类LSA泛洪进骨干区域和其他非骨干区域时,要转换为5类LSA(实际上7类LSA就是5类LSA的变形,本质上都是外部路由信息)。当其他区域有引入的外部路由,NSSA区域的ABR会自动下发缺省的7类LSA用于该区域路由器访问其他区域的外部路由。
Totally NSSA区域
Totally NSSA具有1类,2类,3类缺省LSA,7类LSA,减少了3类明细LSA,4类,5类LSA。该区域也可以存在ASBR,和NSSA区域相同要由ABR执行7转5的操作。当其他区域有引入外部路由和其他区域的区域间路由,Totally-NSSA区域的ABR会下发缺省的3类LSA和缺省的7类LSA,用于该区域路由器访问其他区域的外部路由和区域间路由。
Totally NSSA区域与NSSA区域的配置区别在于,在ABR上需要追加no-summary关键字。、
OSPF区域间路由汇总和外部路由汇总
路由汇总的类型:
在ABR上执行路由汇总:对区域间的路由执行路由汇总
在ASBR上执行路由汇总:对引入的外部路由执行路由汇总
路由汇总又称为路由聚合,是将前缀相同的路由汇聚成一条路由,减小路由表规模。汇聚前的路由叫做明细路由,汇聚后的路由叫做聚合路由。
在ABR上执行路由汇总
执行路由汇总后,ABR只向区域0通告路由汇总。
配置:abr-summary 路由+聚合掩码
在ASBR上执行路由汇总
在ASBR配置路由汇总后,ASBR将对自己所引入的外部路由进行汇总。
NSSA区域的ASBR也可以对引入NSSA区域的外部路由进行汇总。
在NSSA区域中,ABR执行7类转5类LSA,此时它也是ASBR,也可以在ABR上配置路由汇总。
如果在ABR上配置路由汇总,有多个ABR时,选择Router ID大的汇总。
配置:asbr-summary 路由+聚合掩码
OSPF协议特性
Silent-Interface
通过Silent-Interface的配置,增强OSPF的组网适应能力,减少系统资源的消耗。
Silent-Interface有以下特性:
- Silent-Interface不会接收和发送OSPF报文
- Silent-Interface的直连路由仍可以发送出去
Silent-Interface一般适用于路由器连接PC或服务器的接口,因为PC不会学习hello报文,但缺省下,路由器仍然会发送hello报文,因此会造成路由器资源浪费,所以Silent-Interface一般设置于连接PC接口。
OSPF报文认证
OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收。
路由器有两种报文认证方式,当两种方式都存在时,优先使用接口认证方式。
区域方式认证:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致。
接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致。
区域视图下,配置OSPF区域的认证模式:
在区域下:authentication-mode simple plain <模式:simple md5 keychain hmac-md5> <模式类型:plain cipher>
- plain 表示明文口令类型
- cipher 表示密文口令类型
接口视图下,配置认证方式:
在接口下:ospf authentication-mode ~~~