OSPF | RIP v1 | RIP v2 |
---|---|---|
链路状态路由协议 | 距离矢量路由协议 | 距离矢量路由协议 |
没有跳数的限制 | RIP的十五跳限制,超过15跳的路由被认为不可达 | 同版本一一样 |
支持可变长子网掩码(VLSM) | 不支持可变长子网掩码(VLSM) | 支持可变长子网掩码(VLSM) |
收敛速度快 | 收敛速度慢 | 收敛速度慢 |
使用组播发放链路状态更新 | 周期性广播更新整个路由表 | 周期性组播更新整个路由表 |
相同点
不同点
由于rip自身的劣势:只有一种包,选路不佳,收敛慢,导致rip只适用于中小型的网络环境中。而ospf有5种数据包,分工明确;通过spf算法保证选路无环;有触发更新,收敛块,加上ospf其他各种减少占用资源的措施使ospf可以应用于中大型的网络环境中。
我们知道,OSPF区域划分需要遵循两个要求:
而我们不规则区域就是讲的是,如果区域划分没有按照星型拓扑结构来不知,该如何实现通讯。
不规则区域主要有两种情况:
搭建模拟拓扑来寻求解决方案:
(该图中区域2即为远离骨干的非骨干区域)
解决方案:(我们可以总结出三种,推荐使用后两种)
在AR4和AR2之间构建一条隧道,之后,将这个隧道宣告到区域0中,相当于将AR4非法的ABR合法话,则AR4将正常传递区域2和区域0,1之间的路由信息。
注意:在这个环境中,在没有隧道之前,AR4可以通过AR2转发的路由信息学习到达区域0的路由,而存在隧道之后,AR4可以直接通过隧道学习到区域0的拓扑信息。而AR4会优先选择自己通过拓扑信息学来的路由信息,就算是开销值巨大。
使用VPN隧道解决不规则区域的问题
1,可能造成选路不佳;
2,可能造成重复更新;
3,因为虚拟链路的存在,AR2和AR4之间也需要建邻。导致他们之间维护的周期性数据将穿越中间区域区域1.导致中间区域的资源消耗
(这种方法因为问题很多,所以在工程中几乎见不到,所以,因为其思考难度较低,仅作为了解,不推荐使用。)
虚链路是OSPF针对不规则区域提出的一种解决方案,也被称为虚连接。
虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
[r4-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2
— 虚链路的配置方法,后面跟需要创建虚链路设备的RID。
注意:虚链路的建立是双向的。— 虚链路永远属于骨干区域。
使用虚链路解决不规则区域的问题
1、因为虚链路的存在,AR2和AR4之间也需要建邻。导致他们之间维护的周期性数据将穿越中间区域区域1,导致中间区域的资源消耗。
2、虚链路只能穿越1个区域
先说下多进程,我们在创建ospf进程的时候都会增加一个进程号,主要就是用来区分不同的进程的,各个进程是彼此独立的,信息是没有办法互通的。
因为不同的路由协议运行的机理各不相同,包括对路由的理解也不同,所以,不同的路由协议包括不同进程之间存在信息隔离。
重发布就是在运行不同协议或不同进程的边界设备 (ASBR— 自治系统边界路由器,协议边界路由器)上,将种协议按照另一种协议的规则发布出去。— ASBR设备要求必须存在重发布行为才行。
在这个场景下,我们可以让AR4充当ASBR的角色,在其上运行两个OSPF协议。然后利用重发布进行共享。然后在R4上把区域2的信息宣告在ospf 2进程中。
进入OSPF1,导入OSPF2的路由
进入OSPF2,导入OSPF1的路由
[r2]ospf
[r2-ospf-1]import-route ospf 2
[r2-ospf-1]q
[r2]ospf 2
[r2-ospf-2]import-route ospf 1
这是双向重发布,这样即不会出现选路不佳,也没有周期性数据,所以,使用最广
还有一种特殊区域是— 不连续骨干区域,其解决方案也可以使用如上三种方法
OSPF是典型的链路状态路由协议,便用LSA(Link State Advertisement,链路状态通告)来承载链路状态信息。LSA是OSPF的一个核心内容,如果没有LSA,OSPF是无法描述网络的拓扑结构及网段信息的,也无法传递路由信息,更加无法正常工作。OSPF定义了多种类型的LSA,深入了解并掌握常见的LSA类型是非常有必要的。
OSPF定义的LSA种类很多,在OSPFV2中,需要我们掌握的主要有6种。
在看具体各类LSA之前,我们先来看下LSA头部内容。 (所谓LSA头部,指的就是不管是哪一类LSA都会具有的公共部分)
序列号空间
1、直线型序列空间— 从最小值开始一直到最大值,依次加1,新旧关系容易判断,但是数量有限。若超出上限,则将无序号可用,导致新旧关系无法判断。
2、循环型序列空间— 序号可以循环使用,不会出现序号使用完的情况,但是若两个序号差值比较大的时候,可能会导致新旧关系无法判断。
3、棒棒糖型序列空间— 0SPF使用的就是这种序列空间,但是,其进入循环部分后,依旧会面临循环型序列空间的问题,所以,OSPF要求其不能进行循环,相当于是一个直线型序列空间,其取值X80000001-0X7FFFFFFE。
序列号刷新方法:
OSPF刷新序列号空间的方法: 当一条LSA信息的序列号达到0X7FFFFFFE是,发出的路由器会将他的老化时间改为3600S,其他设备收到这条LSA信息后,会根据序号判断这是一条最新的LSA信息,将改信息刷新到本地LSDB中。之后,因为这条LSA信息的老化时间达到3600S,则将这条LSA信息删除掉。始发的路由器会再发送一条相同的LSA信息,其序列号使用0x80000001,其他设备收到后将会把最新的LSA信息刷新到LSDB中,则刷新了序列号空间。
每个LSA头部中的“链路状态类型”链路状态ID”以及“通告路由器”这三个字段唯一地标识了一个LSA。当然,在同时间有可能在网络中会出现同一个LSA 的多个实例,那么LSA头部中的”链路状态老化时间“链路状态序列号”及”“校验和”字段就可以用来判断实例的新旧。
部署R1和R2,之后在点到点环境中运行OSPF协议,之后观察设备上的LSDB数据库,我们可以发现,其中仅存在一种类型的LSA,其Type名称为Router,此类LSA便是1类LSA。
路由器通过该LSA描述自己“家门口的状况”。每一台运行OSPE 的路由器均会产生Type-1LSA,该LSA描述了路器的直连接口状况和接口Cost,同属一个区域的接口共用一个Type-1LSA描述,当路由器有多个接口属于不同区时,它将为每个区域单独产生一个Type-1 LSA,并且每个LSA只描述接入该区域的接口。另外,Type-1LSA中也包含着一些特殊的比特位,用于指示该路由器的特殊角色,例如该路由器如果是ABR、ASBR或者是Virtual Link的端点,则这些比特位就会进行相应的置位。
对于Router LSA而言,LSA头部中的“链路状态类型”字段的值为1,“链路状态ID”字段的值是产生这个Type-1 LSA的路击器的Router-ID。
(这里展示的是1类LSA根据连接的网络,定义的几种LINK类型,及其参数的取值方法)
注意: 由于TOS及TOS度量值在RFC2328中不再支持(这些字段被保留仅是为了兼容早期的OSPF版本)。
这里可以根据LINK的描述,将拓扑结构进行还原。(这个过程这里不做描述)
继续扩大网络拓扑,添加R3,运行OSPF,之后我们观察设备上的LSDB,我们发现,除了有之前见过的1类LSA之外,还存在一种新的LSA,其名称为Network,这样的LSA我们称为2类LSA。
经过Type-1LSA的泛洪,区域内的路由器已经能够大致地描述出本区域内的网络拓扑,但是,要想完整地描述区域内的网络拓扑结构及网段信息,光有Type-1LSA是不够的,留意到如果路由器的接口接入一个MA网络并且在该网络上存在形成了邻接关系的邻居,则用于描述该接口的Lin的路类型为2,链路D为DR的接口IP地址,而链路数据为本路由器接口的IP地址,但是这个MA网络的掩码呢?有多少路由器连接在这个MA网络上呢?这些信息暂时还是未知的(至少通过Type-1 LSA还无法知晓)。因此就需要用到Type-2 LSA了。
在MA网络中,OSPF会选举D及BDR,所有的DROther路由器都只能和DR及BDR建立邻接关系,DROther路由器之间不会建立全毗邻的OSPF邻接关系。DR会在本区域内泛洪Type-2 LSA,来列举出接入该MA网络的所有路由器的Router-D(其中包括DR自身),以及这个网络的掩码。因此 Type-2 LSA仅存在于拥有MA网络的区域中,该LSA由DR产生。
在Type-2 LSA中,LSA头部中“链路状态类型”字段的值为2,“链路状态ID”字段的值为产生这个Type-2 LSA的DR的接口IP地址。
2类LSA虽然简单,但是也不可或缺,和1类LSA一起,将所谓的”拓扑信息“描述完整了。之后的LSA传递的均为路由信息。
因为1类和2类LSA已经可以将区域内部的拓扑信息携带完整了,所以,想要看到其他携带路由信息的LSA,则必须创建多区域才行,因为区域之间才传递路由信息。所以,我们可以在R3后面再添加R4,之后,将R3和R4连接接口及R4所有接口宣告在区域1中。之后,我们观察设备的LSDB数据库,发现,里面除了有1类2类LSA之外,还存在很多条,名称为Sum-Net的LSA,这些LSA就是我们说的3类LSA。
Type-3 LSA也就是网络汇总LSA(Networksummary LSA),这里的汇总”二字,其实理解为“归纳“更为贴切它和路由汇总是完全不同的概念。Type-3 LSA是由ABR产生的,用于解决区域之间的路由传递问题。由于ABR同时连接着非骨干区域以及AreaQ,因此它分别为这些区域维护着LSDB并且计算出到达直连区域的区域内部路由,它向某个区域注入 Type-3 LSA,以便向该区域通告到达其他区域的区域间路由。
在Type-3 LSA中,“链路状态ID”字段的值为区域间路由的目的网络地址,其他字段及其含义如下
3类LSA传递的是域间路由信息,主要携带的是目标网段信息和开销值。目标网段信息通过LSID来进行携带,里面也会包含其掩码信息。其中的开销值指的是通告者到达目标网段的开销值。 — 这个开销值计算是一个重点,所以,可以根据拓扑结构进行分析计算。
注意:3类LSA传递路由信息的玩法有点类似于距离矢量型协议的玩法,通告者就是到达目标网段的下一跳。所以,这里有个很重要的点,就是,我们设备在接收到3类LSA之后,需要根据1类和2类LSA计算的拓扑信息来寻找三类LSA的通告者。(准确的说,所有传递路由信息的LSA都需要通过1类和2类LSA去寻找通告者的位置。),如通告者是所在区域的ABR设备,那自然是可以寻找到的。但如果不是,则需要转换通告者。
例如,我们在R1后面再加入一个R5,按照拓扑所示划归到区域2中。则我们观察R5的LSDB,我们可以发现区域1里的路由信息到达区域2后,通告者就不再是始发的R3了,而是转换成了R1。说明3类LSA的传递范围进行ABR相邻的单区域,跨区域传递的时候,需要进行通告者的转换。(通告者变了,则将不是同一条LSA了)
有了三类LSA之后,多区域OSPF网络中的路由信息也可以正常传递了,想要看到更多的LSA类型,则将需要继续扩展我们的拓扑,需要再R4后面再增加一个环回网段,将该网段宣告再RIP中,模拟其他网络。之后将RIP中的路由信息通告到OSPF中,我们看下这些域外的路由信息该如何传递。
之后,我们观察设备的LSDB,可以发现,里面除了前面说过的三种LSA之外,还存在一种叫做External的LSA,我们将他称为5类LSA。
5类LSA主要任务就是传递域外的路由信息,这种类型的LSA一旦被产生后I 会在整个OSPF域内传播(除了一些特殊区域)。Type-5 LSA也就是AS外部LSA(AS ExternalLSA)
对于Type-5 LSA,“链路状态ID”字段的值是外部路由的目的网络地址。其他主要字段的描述如下。
[r4-ospf-1]import-route rip 1 cost 2
[r4-ospf-1limport-route rip 1 type 1
[r4-ospf-1limport-route rip 1 tag
前面说的所有传递路由信息的LSA都需要通过1类和2类LSA进行验算(寻找通告者),5类LSA是全OSPF区域传递的,处理ASBR通过者所在的区域可以通过1类和2类LSA进行验算,其他区域都无法验算通告者的位置,所以,需要引入4类LSA来辅助寻找ASBR通告者的位置。
所以,我们观察拓扑,发现除了区域1以外,其他区域设备的LSDB中都出现了一个名为Sum-Asbr的LSA,这个就是4类LSA。
Type4LSA披称为ASBR汇总LSA(ASER5ummary L5A),由ABR产生,实际上是一条到达A5R的主机路白Type-4LSA的格式与Type3L5A是一型的在Type-4LSA中,“链路状态ID"字段的值是ASBR的Router-ID而且“网络掩码”字段的值为全0,另外,"度量值”字段写的是该ABR目己到达ASBR的Cost值。一和3类LSA比较相似,只不过通告的不是目标网段,而是ASBR。
类型 | LS ID | 通告者 | 传播范围 | 携带的信息 |
---|---|---|---|---|
Type - 1LSA:Router | 通告者 | ospf域内所有运行ospf的设备的RID | 单区域 | 本地接口直连的拓扑信息 |
Type - 2LSA:Network | DR的接口IP | MA网路中的DR的RID | 单区域 | 单个MA网络的拓扑信息的补充 |
Type - 3LSA:Sum-net | 路由网段 | ABR,在经由其他ABR转发时会修改为新的ABR | 单区域 | 其他区域的路由信息 |
Type - 5LSA:External(ase) | 域外路由网段 | ASBR | ospf域内 | 域外路由 |
Type - 4LSA: Sum-Asbr(summary) | ASBR的RID | 和ASBR同区域的ABR,在经由其他ABR转发时修改为新的ABR | 除ASBR所在区域外的OSPF单区域 | ASBR的位置信息 |