一、拓扑图
OSPF为什么会引入/划分区域? 划分区域以后,可以带来以下好处:
1、节省区域中的每一个设备的系统资源 (大区域被划分以后,小区域中的数据库内容就会变少) (同一个区域中的所有的路由器,数据库是完全相同)
2、增强 OSPF 网络的稳定性 (一个不稳定链路造成的不良影响,仅在同一个区域) (中传播,不会影响到其他区域)
二、配置OSPF
R1:将lo0宣告进area2,将物理接口g0宣告进area0
R2:将lo0和物理接口g0宣告进area0
R4:将lo0和物理接口g0宣告进area0
R3:将lo0和g0宣告进area0,将g1(连接R5的接口)宣告进a1
R5:将g0宣告进area1,环回口不宣告
配置步骤:
1.进入ospf进程:ospf 1
2.进入区域:area 0
3.宣告网段(注意,ospf宣告的时候使用反掩码,0表示精确匹配,1表示随机)
栗子:R1的配置
三、查看ospf关系和路由表
命令1.查看OSPF邻居表:dis ospf peer
dis ospf peer 回显中每个字段的含义:
字段 | 含义 |
---|---|
Area | 邻居所属的区域 |
interface | 与邻居相连的接口 |
Router ID | 邻居Router ID |
Address | 邻居接口地址 |
State | 状态机 |
Priority | 优先级 |
DR | 指定路由器 |
BDR | 备份路由器 |
解释:
1.Area
邻居所属的区域:R1、R2、R4属于area0,R5属于area1
2.interface
与邻居相连的接口:R3与邻居们相接的接口是g0/0/0,IP地址为10.1.243.3
3.router id
每个路由器都有独一无二的router id,router id的选择遵循以下3个步骤:
a.通过 OSPF 1 router-id 命令配置的 IP 地址(需reset进程)
b.如果未配置 router-id,则路由器会选择其所有环回接口的最高 IP 地址
c. 如果未配置环回接口,则路由器会选择其所有物理接口的最高活动 IP 地址
也就是说,router id遵循:“手动→环回→物理”的方式来指定
4.DR/BDR
DR/BDR的概念:
在一个OSPF网络中,选举一个路由器做为指定路由器DR。所有其他路由器只和它一个交换整个网络的一些路由更新信息,再由它对邻居路由器发送更新报文,这样节省邻居建立的数量。
再指定一个备份指定路由器BDR,当DR出现故障时,它再发挥作用,确保网络的可靠性。
一旦DR和BDR选取完成,其它的路由器就都是DRother,将只能和DR和BDR建立邻接关系。
选举规则:OSPF priority 最高者为DR,次者为BDR(缺省所有OSPF路由器为1,通过ip ospf priority 接口配置命令更改),如果priority相同,则具有最高的Router-ID的路由器被选举为DR。如果路由器的OSPF 优先级设为“0”,则该路由器不作为DR或BDR,称为DRother。
那为什么priority更低的R1为DR呢?
场景:假设在一个OSPF多路访问网络中已存在一台DR路由器和一台BDR路由器,如果DR死掉(重起),则BDR自动升级为DR,同时选举该多路访问网络中的另一台OSPF路由器作为BDR.当原DR启动以后,虽然检测到目前运行的BDR的Router ID没有自己高,但是仍只能作为BDR或DR Other路由器运行(如果已经选举了另一台BDR).(这样也在一定的程度上就确保了链路状态的稳定性)
5.State
OSPF的7种状态机:
1.Down:没有启用OSPF的状态;邻居失效后变为该状态
2.Init:初始化状态,第一次收到对端发来的hello包(包含对端route-id)时,将对端的状态设置为init
3.two-way:邻居状态,相互间周期发送hello的状态(双方建立会话)
4.Exstart:交换信息的初始化状态
发送DBD(包含本地的LSA的摘要信息)报文,选举主从路由器(利用HELLO报文中的ID和优先权来进行选举,不允许抢占,DR没了,DBDR才能上)
5.Exchange:交换信息的状态
该状态下,相互间发送DBD,告知对端本地所有的LSA的目录;同时,可以发送 LSR,LSU,LSACK来学习对端的LSA
6.Loading:加载状态(没有学习完的状态)
发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息
7.Full:邻接状态(学习完的状态)
彼此的LSDB同步,即所有的LSA相同
为什么R3和R1,R2的状态是Full,但是和R4的状态是2 way呢?
从上一点可以知道:区域内所有路由器均和DR/BDR建立邻接关系,两个DRother之间不会建立邻接关系,只会保持2-way的邻居关系。(一定要区别好邻接和邻居的关系)
起状态时可以验证7种状态:
从DOWN到FULL,一共7种状态
命令2:查看ospf路由表 dis ospf routing
dis ospf rou 回显中每个字段的含义:
字段 | 含义 |
---|---|
Cost | 开销 |
Type | 网络类型 |
NextHop | 下一跳 |
Area | 区域 |
ASE | 引入的外部路由协议的路由信息 |
1.Cost
cost:到达目的地址的开销
OSPF在选路时的优先级:O > O IA > O E1 > O E2 即当去往一个目的地存在多条路径时,Area内路由 > Area间路由 > 外部路由类型1 > 外部路由类型2, 同等路由类型时再比较Cost大小
2.Type
目的网络的类型:
Inter-area:区域间路由。在拓扑图中,由于R1上的环回接口宣告进area2,因此为区域间路由(不是同一个区域)。
Intra-area:区域内路由
Stub:router-lsa发布的路由,对应非广播网络、非NBMA网络的直连路由。
Transit:network-lsa发布的路由。
(router lsa每个路由器都会泛洪,通常包含环回接口;network lsa由DR泛洪,通常包含物理链路信息,可通过network lsa反推拓扑)
四、7型LSA
当链路状态变化时,会产生LSA,默认30min更新一次。
LSA类型 | 含义 |
---|---|
Router LSA | 由区域内所有路由器产生,并且只能在本个区域内泛洪广播,这些最基本的LSA通告列出了路由器所有的链路和接口,并指明了它们的状态和沿每条链路方向出站的代价 |
Network LSA | 由区域内的DR或BDR路由器产生,报文包括DR和BDR连接的路由器的链路信息。网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪 |
Network summary LSA | 由ABR 收集区域内1型和2型的路由后产生,可以通知本区域内的路由器通往区域外的路由信息。 |
ASBR summary LSA | 由ABR产生,告诉其他路由器怎么去ASBR |
Autonomous system external LSA | 由ASBR产生,告诉整个AS的路由器怎么去外部路由 |
Group membership LSA | 组播OSPF |
NSSA External LSA | 由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪 |
基本概念:
ABR:区域边界路由器。位于一个或多个OSPF区域边界上、将这些区域连接到主干网络的路由器。
ASBR:自治系统边界路由器。位于OSPF自主系统和非OSPF网络之间。ASBR可以运行OSPF和另一路由选择协议
我们怎么知道谁是ABR/ASBR?
总结:一个OSPF区域内由两种LSA,跨区域3种,外部路由为5种
1型LSA
dis ospf lsdb router
路由信息:
10.0.4.0:该stub网络的IP地址
255.255.255.0:stub网络的掩码
Metric:开销
每个类型的LSA包都可以抓到,包里展示的内容和dis ospf lsdb 里展示的内容是一样的。
2型LSA (多路访问,存在DR)
dis ospf lsdb network
从上面这张图,我们可以反推出OSPF拓扑:
区域0的DR是R1,其中一共有4台路由器在连着这个网络
3型LSA
dis ospf lsdb summary
简单粗暴:谁发的,IP+掩码是什么?
4,5型LSA
R5上的环回接口没有宣告进OSPF,所以其他路由器是学不到它的路由的,此时我们需要做路由引入,在R5上将直连注入
在R5上抓到一个更新包
再在R1上查看,变发现ASE(外部路由)上有10.0.5.5的路由了
dis ospf lsdb ase
5类很容易理解,只要有外部路由,那么一定有5类,且5类由ASBR引入,并在整个AS内泛洪,ABR不会再泛洪。此时,假如不是与ASBR直连的路由器,就会找不到ASBR,此时4类来帮忙。4类来告诉其他区域,你们怎么来找到ASBR。
上图中,R5为ASBR,R3为ABR,此时R3告诉R1去往R5的路由。
LSA总结:
12只在本区域,3跨区域。
ASBR产生的外部路由(5类)会泛洪到AS内所有area,4类LSA由ABR产生,告知其他路由器ASBR的位置。
7型LSA
7型LSA应用在特殊区域
特殊区域:
NSSA
过滤45(因为nssa区域过滤5类路由,所以ASBR引入的路由为7类,在区域ABR传递路由到其他区域时7转5,跨区域)
存在ASBR(能够产生5类lsa的路由器则为ASBR)
ABR上不会自动下发缺省路由,需要手工配置,否则nssa区域无法访问外部(在nssa区域下发一条7类缺省,7类路由属于区域)
注意:NSSA里的7类路由都是明细路由。
Q:为什么NSSA既然过滤了45,但还要7呢?
A:更优选路。
对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub和Totally Stub区域就不能满足需求了,因为Stub区域不能注入外部路由。假如不使用7(自己注入的外部路由),则所有流量全部都往ABR走,有时候会绕路(次优路径)
上图中,Area2是NSSA区域,ASBR将外部路由引入到OSPF区域,并在Area2内泛洪7型LSA,此时该区域的路由器都拥有该外部路由的明细路由。ABR将该7型LSA转5,并往常规区域发送45。然后ABR向NSSA发送一条7型的缺省路由,告诉NSSA内的路由器,除了这条外部明细路由,其余去往外部的路由,下一跳给我ABR。
所以,NSSA内的路由器,既有引入的外部明细路由(7型),也有下一跳为ABR的默认路由(7型)。
此外,我们还可以根据需求,由ASBR下发一条7型的默认路由,让去往外部的路由都走ASBR而不走ABR(手动选路)
如果手动配置,则NSSA内的路由器,既有引入的外部明细路由(7型),也有下一跳为ABR的默认路由(7型),也有7型缺省路由指向ASBR
假如配置了totally nssa,则把区域间的路由也屏蔽了,此时还会由ABR生成一条3的缺省路由。
OVER