OSPF开源路由软件学习移植
开发二部二组:任晓亮
项目背景
OSPF历史
OSPF原理
OSPF协议分析
Quagga开源项目移植
代码分析
操作及基本配置
一.项目背景:
2014年国际部拿到南非铁路的项目标书,标书里面需要一个三层交换板卡,三层交换需要支持ospf路由协议。我们项目组就出了一个应标方案:在GX05硬件平台(NIOS2)上搭建一个三层路由板。实现单臂路由,路由部分采用开源的Quagga(含OSPF协议)。
二.OSPF历史:
为了满足建造越来越大基于IP网络的需要,形成了一个工作组,专门用于开发开放式的链路状态路由协议,以便用在大型、异构的I P网络中。OSPF由IETF在20世纪80年代末期开发。OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(InteriorGateway Protocol,简称IGP,相对的有个EGP,即外部网关协议),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。
链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径
构造路由表。作为一种链路状态的路由协议,OSPF将链路状态组播数据LSA(Link State Advertisement)传送给在某一区域内的所有路由器,这一点与距离矢量路由协议不同。运行距离矢量路由协议的路由器是将部分或全部的路由表传递给与其相邻的路由器。
三.OSPF原理
1.举例说明原理
2.特点及性能
3.基本的几个术语
4.协议执行过程
5.四种路由器身份
OSPF(OPEN SHORTEST PATHFIRST)开放式最短路径优先,它是一种链路状态路由协议,区别RIP的关键就是它是根据链路的成本来选择最佳路径,这也注定了OSPF是一种复杂的协议。
OSPF始终都是围绕着三张表来进行路由的:邻接表,拓扑表,路由表。我将从这三张表的形成过程来简单阐述下OSPF是如何达到路由功能的。
首先,当路由器开启OSPF后,路由器之间就会相互发送HELLO报文,HELLO报文中包含一些路由器和链路的相关信息,发送HELLO报文的目的是为了形成邻居表,然后,路由器之间就会发送LSA(LINK STATE ADVERTISEMENT,链路状态通告),LSA告诉自己的邻居路由器和自己相连的链路的状态,最后,形成网络的拓扑表,其实这个过程是很复杂的,他们经过发LSA,记录LSA,装发LSA,最后形成LSDB
(链路状态数据库,即拓扑表),形成拓扑表之后,在经过SPF算法,通过计算LSDB,最后形成路由表。
形成路由表后,路由器就可以根据路由表来转发数据包,但是,这只是理想情况,如果之后,网络拓扑发生了变化,或是网络链路出现了问题,OSPF协议还是会经过这三张表来重新计算新的路由,只不过不会这么复杂了,路由器在默认情况下,10S就会发送一次HELLO报文,以检测链路状态,保证链路始终是正常的。
当然,OSPF不会就这么完了,通过这三张表最后形成路由表只是OSPF的基础。
下面我就不得不讲下OSPF的多区域性了。
OSPF协议之所以能够加快链路的收敛和提高链路的计算效率,就是通过多区域实现的,每个OSPF区域都分为一个主干区域0和其他多个相连区域,在一个OSPF区域中,主干区域0是必不可少的,其他的区域都必须通过主干区域连接在一起,也就是说,OSPF区域的结构类似于星型结构,所有的其他区域都连接在主干区域0上面(特殊情况下也可以不连在区域0上面,但是这必须通过虚链路技术让他们间接的连在一起)。说到这里,就有几个概念需要说明下:
ABR:区域边界路由器,就是连接OSPF各个区域的路由器
ASBR:自治系统边界路由器,就是连接OSPF协议和其他协议的路由器
OSPF的特点及性能:
适应范围广:支持各种规模的网络,最多可支持几百台路由器。
快速收敛:在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。
无自环:由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。
区域划分:允许自治系统的网络被划分成区域来管理。路由器链路状态数据库的减小降低了内存的消耗和CPU的负担;区域间传送路由信息的减少降低了网络带宽的占用。
等价路由:支持到同一目的地址的多条等价路由。
路由分级:使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。
支持验证:支持基于接口的报文验证,以保证报文交互和路由计算的安全性。
组播发送:在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。
基本概念和术语
1. 链路状态OSPF路由器收集其所在网络区域上各路由器的连接状态信息,即链路状态信息(Link-State),生成链路状态数据库(Link-State Database)。路由器掌握了该区域上所有路由器的链路状态信息,也就等于了解了整个网络的拓扑状况。OSPF路由器利用“最短路径优先算法(Shortest Path First, SPF)”,独立地计算出到达任意目的地的路由。2. 区域
OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域” (Area),“主干”的部分称为“主干区域”。每个区域就如同一个独立的网络,该区域的OSPF路由器只保存该区域的链路状态。每个路由器的链路状态数据库都可以保持合理的大小,路由计算的时间、报文数量都不会过大。
3. OSPF网络类型根据路由器所连接的物理网络不同,OSPF将网络划分为四种类型:广播多路访问型(BroadcastMultiAccess)、非广播多路访问型(None BroadcastMultiAccess,NBMA)、点到点型(Point-to-Point)、点到多点型(Point-to-MultiPoint)。广播多路访问型网络如:Ethernet、Token Ring、FDDI。NBMA型网络如:FrameRelay、X.25、SMDS。Point-to-Point型网络如:PPP、
HDLC。具体结构如后图所示。
4. 指派路由器(DR)和备份指派路由器(BDR)在多路访问网络上可能存在多个路由器,为了避免路由器之间建立完全相邻关系而引起的大量开销,OSPF要求在区域中选举一个DR。每个路由器都与之建立完全相邻关系。DR负责收集所有的链路状态信息,并发布给其他路由器。选举DR的同时也选举出一个BDR,在DR失效的时候,BDR担负起DR的职责。点对点型网络不需要DR,因为只存在两个节点,彼此间完全相邻。协议组成OSPF协议由Hello协议、交换协议、扩散协议组成。本文仅介绍Hello协议,其他两个协议可参考RFC2328中的具体描述。当路由器开启一个端口的OSPF路由时,将会从这个端口发出一个Hello报文,以后它也将以一定的间隔周期性地发送Hello报文。OSPF路由器用Hello报文来初始化新的相邻关系以及确认相邻的路由器邻居之间的通信状态。对广播型网络和非广播型多路访问网络,路由器使用Hello协议选举出一个DR。在广播型网络里,Hello报文使用多播地址224.0.0.5周期性广播,并通过这个过程自动发现路由器邻居。在NBMA网络中,DR负责向其他路由器逐一发送Hello报文。协议操作第一步:建立路由器的邻接关系所谓“邻接关系”(Adjacency)是指OSPF路由器以交换路由信息为目的,在所选择的相邻路由器之间建立的一种关系。路由器首先
发送拥有自身ID信息(Loopback端口或最大的IP地址)的Hello报文。与之相邻的路由器如果收到这个Hello报文,就将这个报文内的ID信息加入到自己的Hello报文内。如果路由器的某端口收到从其他路由器发送的含有自身ID信息的Hello报文,则它根据该端口所在网络类型确定是否可以建立邻接关系。在点对点网络中,路由器将直接和对端路由器建立起邻接关系,并且该路由器将直接进入到第三步操作:发现其他路由器。若为MultiAccess 网络, 该路由器将进入选举步骤。第二步:选举DR/BDR不同类型的网络选举DR和BDR的方式不同。MultiAccess网络支持多个路由器,在这种状况下, OSPF需要建立起作为链路状态和LSA更新的中心节点。选举利用Hello报文内的ID和优先权(Priority)字段值来确定。优先权字段值大小从0到255,优先权值最高的路由器成为DR。如果优先权值大小一样,则ID值最高的路由器选举为DR,优先权值次高的路由器选举为BDR。优先权值和ID值都可以直接设置。第三步:发现路由器在这个步骤中,路由器与路由器之间首先利用Hello报文的ID信息确认主从关系,然后主从路由器相互交换部分链路状态信息。每个路由器对信息进行分析比较,如果收到的信息有新的内容,路由器将要求对方发送完整的链路状态信息。这个状态完成后,路由器之间建
立完全相邻(Full Adjacency)关系,同时邻接路由器拥有自己独立的、完整的链路状态数据库。在MultiAccess网络内,DR与BDR互换信息,并同时与本子网内其他路由器交换链路状态信息。在Point-to-Point 或Point-to-MultiPoint网络中,相邻路由器之间互换链路状态信息。第四步: 选择适当的路由器当一个路由器拥有完整独立的链路状态数据库后,它将采用SPF算法计算并创建路由表。OSPF路由器依据链路状态数据库的内容,独立地用SPF算法计算出到每一个目的网络的路径,并将路径存入路由表中。OSPF 利用量度(Cost)计算目的路径,Cost最小者即为最短路径。在配置OSPF路由器时可根据实际情况,如链路带宽、时延或经济上的费用设置链路Cost大小。Cost越小,则该链路被选为路由的可能性越大。第五步:维护路由信息当链路状态发生变化时,OSPF通过Flooding 过程通告网络上其他路由器。OSPF路由器接收到包含有新信息的链路状态更新报文,将更新自己的链路状态数据库,然后用SPF算法重新计算路由表。在重新计算过程中,路由器继续使用旧路由表,直到SPF完成新的路由表计算。新的链路状态信息将发送给其他路由器。值得注意的是,即使链路状态没有发生改变,OSPF路由信息也会自动更新,默认时间
为30分钟。
OSPF路由器之间使用链路状态通告(LSA)来交换各自的链路状态信息,并把获得的信息存储在链路状态数据库中。各OSPF路由器独立使用SPF算法计算到各个目的地址的路由。OSPF协议支持分层路由方式,这使得它的扩展能力远远超过RIP协议。当OSPF网络扩展到100、500甚至上千个路由器时,路由器的链路状态数据库将记录成千上万条链路信息。为了使路由器的运行更快速、更经济、占用的资源更少,网络工程师们通常按功能、结构和需要把OSPF网络分割成若干个区域,并将这些区域和主干区域根据功能和需要相互连接从而达到分层的目的。OSPF分层路由的思想OSPF把一个大型网络分割成多个小型网络的能力被称为分层路由,这些被分割出来的小型网络就称为“区域”(Area)。由于区域内部路由器仅与同区域的路由器交换LSA信息,这样LSA报文数量及链路状态信息库表项都会极大减少,SPF计算速度因此得到提高。多区域的OSPF必须存在一个主干区域,主干区域负责收集非主干区域发出的汇总路由信息,并将这些信息返还给到各区域。OSPF区域不能随意划分,应该合理地选择区域边界,使不同区域之间的通信量最小。但在实际应用中区域的划分往往并不是根据通信模式而是根据地理或政治因素来完成的。OSPF中的四种路由器在OSPF多区域网络中,路由器可以按不同的需要同时成为以下
四种路由器中的几种:
1. 内部路由器:所有端口在同一区域的路由器,维护一个链路状态数据库。
2. 主干路由器:具有连接主干区域端口的路由器。
3. 区域边界路由器(ABR): 具有连接多区域端口的路由器,一般作为一个区域的出口。ABR为每一个所连接的区域建立链路状态数据库,负责将所连接区域的路由摘要信息发送到主干区域,而主干区域上的ABR则负责将这些信息发送到各个区域。
4. 自治域系统边界路由器(ASBR): 至少拥有一个连接外部自治域网络(如非OSPF的网络)端口的路由器,负责将非OSPF网络信息传入OSPF网络。
五.Ospf协议分析
OSPF的五个包:
1.Hello:9项内容,4个必要
2.DBD:数据库描述数据包(主要描述始发路由器数据库中的一些或者全部LSA信息),主要包括接口的MTU,主从位MS,数据库描述序列号等);
3.LSR:链路状态请求数据包(查看收到的LSA是否在自己的数据库,或是更新的LSA,如果是将向邻居发送请求);
4.LSU:链路状态更新数据包(用于LSA的泛洪扩散和发送LSA去响应链路状态请求数据包);
5.LSACK:链路状态确认数据包(用来进行LSA可靠的泛洪扩散,即对可靠包的确认)。
Hello包作用:
1.发现邻居;
2.建立邻居关系;
3.维持邻居关系;
4.选举DR,BDR
5.确保双向通信。
Hello包所包含的内容:路由器id |
Hello&Dead间隔* |
区域id * |
邻居 |
DR |
BDR |
优先级 |
验证* |
末节区域* |
|
Hello时间间隔:
在点对点网络与广播网络中为10秒;
在NBMA网络与点对多点网络中为30秒。
注:
保持时间为hello时间4倍
虚电路传送的LSA为DNA,时间抑制,永不老化.
OSPF的组播地址:
DR将使用组播地址224.0.0.5泛洪扩散更新的数据包到DRothers
DRothers使用组播地址224.0.0.6发送更新数据包
组播的MAC地址分别为:0100.5E00.0005,0100.5E00.0006
OSPF的包头格式:
| 版本| 类型| 长度| 路由器ID | 区域ID| 验证和| 验证类型|验证| 数据|| 1 byte |1| 2 | 4 | 4 | 2 | 2 | 8 | variance |
OSPF支持的验证类型:
OSPF支持明文和md5认证,用Sniffer抓包看到明文验证的代码是“1”,md5验证的代码是“2”。
OSPF支持的网络类型:
1.广播
2.非广播
3.点对点(若MTU不匹配将停留在EX-START状态)
4.点对多点
5.虚电路(虚电路的网络类型是点对点)
虚链路必须配置在ABR上,
虚链路的配置使用的命令是area transit-area-id virtual-linkrouter-id
虚链路的Metric等同于所经过的全部链路开销之和
DR /BDR选举:
1. 优先级(0~255; 0代表不参加选举;默认为1);
2. 比较Router-id。
次者为BDR。
在Point-to-Point, Point-to-Multipoint(广播与非广播)这三种网络类型不选取DR与BDR; Broadcast, NBMA选取DR与BDR。
先启动OSPF进程的路由器会等待一段时间,这个时间内你没有启动其它路由的OSPF进程的话,第一台路由就认为自己是DR,之后再加进来的也不能在选举了,这个等待时间叫做Wait Timer计时器,CISCO规定的Wait Timer是40秒。这个时间内你启动的路由是参与选举的,所以真实工作环境中,40秒你大概只启动了两台,DR会再前两台启动的路由中产生,工作一段时间以后,活的最久的路由最有可能成为DR
OSPF over FRAME-RELAY 的配置:
(1)NBMA : 在HUB上指定邻居;SPOKE上设置优先级为0。
(2)P-TO-P: 接口下配置命令ip ospf networkpoint-to-point。
(3) P-TO-MULT P:接口下配置命令ip ospf networkpoint-to-multipoint。
按需电路配置:
接口下配置命令ip ospfdemand-cricuit。
按需电路配置:
接口下配置命令ip ospf demand-cricuit。
孤立区域问题解决:
1. 虚电路(虚电路穿过的区域一定是标准区域,标准区域一定是全路由的)
2. 隧道
3. 多进程重分发
注:如果中间间隔区域为stub区域,则只能用隧道解决.
OSPF分区域的原因:
1.LSA数据过大,造成带宽负载过大。
2.计算全网拓扑,对cup要求过高。
3.数据库过大,对内存要求过高。
OSPF的区域类型:
骨干: LSA:1 2 3 4 5
标准: LSA:1 2 3 4 5
stub: LSA1 2 3
nssa:LSA1 2 3 77(default)
AREA 1 NSSA DEFAULTINFORMATION-ORIGINATE
(ABR上产生默认路由LSA 7)
total-stub: 1 2一条默认3
total-nssa: 1 2 7一条默认3
LSA的类型:
类型1:路由器链路信息
内容包括:路由器链路Router-id; 接口地址;接口网络; 接口花费
可使用show ospf database router命令查看。
类型2: 网络链路信息
由DR通告,如果是点对点的网络类型,没有LSA2
类型3、4:汇总链路(都是ABR通告)
3号通告ospf区域间信息
4号通告asbr的router-id信息(通告nssa区域的abr)
类型5:通告外部路由
类型7:nssa区域外部路由
类型11:用于打标签
类型代码 |
类型名称 |
描述 |
|
1 |
路由器LSA |
每台路由器都会产生,在区域内泛洪 |
|
2 |
网络LSA |
DR产生,在区域内泛洪 |
|
3 |
网络汇总LSA |
ABR始发,在整个OSPF域中泛洪 |
|
4 |
ASBR汇总LSA |
ABR始发,在整个OSPF域中泛洪 |
|
5 |
AS外部LSA |
ASBR始发,在整个OSPF域中泛洪 |
|
6 |
组成员LSA |
标识OSPF组播中的组成员,不做讨论 |
|
7 |
NSSA外部LSA |
ASBR始发, |
|
8 |
外部属性LSA |
没有实现 |
|
9 |
Opaque LSA(本地链路范围) |
用于MPLS流量工程,不做讨论 |
|
10 |
Opaque LSA(本地区域范围) |
||
11 |
Opaque LSA(AS范围) |
OSPF邻居建立过程:
A-------------------------B
down
init B收到A 发来hello进入init状态
two way hello4个“*”匹配,选举DR BDR ;A在hello中发现自己的Router-id;
exstart 交换DBD;确立主从关系(多路访问Router-id高为主,低为从;串行接口下接口地址大的为主)
exchange 交换数据DBD(主的先发)
loading 交换完整数据包LSR LSU
full
注:每个LSA由序列号确认为最新的更新。
当路由器收到LSA之后的处理过程:
(1)如果数据库有这样的,再查看序列号,如果序列号相同,忽略这条LSA;如果序列号偏大,将其转到数据库,并进行SPF,更新路由表;如果序列号偏小,将一个包含自己的LSA新信息发送给发送方。
(2)如果数据可没有这样的,将其加到数据库表,并发一个ACK返回,并运行SPF,更新路由表。‘
OSPF的Metric值:
Cost=10的8次方/带宽,简便记做100Mb/带宽值。Metric值是由cost值逐跳累加的。
环回口的路由,掩码为/32,既我们所说的“主机路由”。在实际应用中,环回口以32位的居多,用作ospf的管理接口。但是如果你想让环回口模拟一个网段,我们可以通过以下配置来消除。
R1(config)#int loopback 0
R1(config-if)#ip ospf networkpoint-to-point
环回口只能配置成point-to-point这种类型,不可以配置成其它的类型。
其他:
1.当一个路由器既是ABR又是ASBR时为了不让巨量外部路由分发进nssa区域使用命令:area 1nssa no-redistribution default-information originate
2.配置命令show ip ospf database router用来查询拓扑
3.一个路由器在理论上支持65535个OSPF进程,在实际环境中一个路由器可支持的OSPF
进程数量与其可用物理接口数量相等。
OSPF汇总
在OSPF骨干区域当中,一个区域的所有地址都会被通告进来。但是如果某个子网忽好忽坏不稳定,那么在它每次改变状态的时候,都会引起LSA在整个网络中泛洪。为了解决这个问题,我们可以对网络地址进行汇总。
Cisco路由器的汇总有两种类型:区域汇总和外部路由汇总。区域汇总就是区域之间的地址汇总,一般配置在ABR上;外部路由汇总就是一组外部路由通过重发布进入OSPF中,将这些外部路由进行汇总。一般配置在ASBR上。
区域汇总:
area area-id range ip-address mask
外部路由汇总:
summary-address ip-address mask
我设计的两个试验,把几个知识点串起来
试验一
用一个试验总结一下ospf over 桢中继的时候,OSPF几种网络类型的差别。
封装好FR,DEBUG看到的几种情况
情况一:两边只起了OSPF进程,其它全部默认
这种情况下邻居需要手动配置!
R2(config)#router ospf 10
R2(config-router)#neighbor 12.1.1.3
选举了DR,BDR
hello的间隔是30s
OSPF的数据包是单播传送的。
情况二:两边的网络类型改为Broadcast(命令接口下ip ospf network broadcast)
这种网络类型下是不需要手动配置邻居关系
有DR与BDR的选举。
Hello时间间隔为10s。
使用224.0.0.5这个组播地址传送数据包。
情况三:网络类型改为Point-to-Point(命令接口下ip ospf net point-to-point)
不需要手动指定邻居
没有DR/BDR的选举
Hello时间间隔为10s
使用224.0.0.5这个组播地址传送数据。
情况四:Point-to-Multipoint(命令接口下ip ospf network point-to-multipoint)
不需要手动指定邻居
没有DR和BDR的选举
Hello时间间隔为30s
以224.0.0.5这个组播地址发送数据
情况五:非广播的Point-to-Multipoint
(命令接口下ip ospf network point-to-multipointnon-broadcast)
邻居需要手动指定,但是邻居只要在一边指定即可。
没有DR和BDR的选取
Hello时间间隔为30s
使用单播传送OSPF数据
列出一张表,方便看 网络类型 |
邻居自动发现 |
有无DR选举 |
Hello间隔 |
传输方式 |
默认 |
否 |
有 |
30s |
单播 |
Broadcast |
是 |
有 |
10s |
组播 |
Point-to-Point |
是 |
无 |
10s |
组播 |
Point-to-Multipoint |
是 |
无 |
30s |
组播 |
Point-to-Multipoint(非广播)
|
否,单边指即可 |
无 |
30s |
单播 |
试验二
OSPF的认证总结:
OSPF的认证有2种类型(不验证也算的话是3种),使用DEBUG可以看到type0表示无认证,type1表示明文认证,type2表示MD5认证。明文认证发送密码进行认证,而MD5认证发送的是报文摘要。
OSPF的认证可以在链路上进行,也可以在整个区域内进行认证。另外虚链路同样也可以进行认证。
同样也是分情况来讨论。
情况一:R1和R2明文验证
R1(config)#ints1/0
R1(config-if)#ipospf authentication(启用认证)
R1(config-if)#ipospf authentication-key cisco(配置密码)
不配置R2的话
通过debug工具我们可以看到如下信息:
*Aug 15 22:51:54.275: OSPF: Rcv pktfrom 10.1.1.2, Serial1/0 : Mismatch Authentication type. Input packet specifiedtype 0, we use type 1
这里的type0是指对方没有启用认证,type1是明文认证。
在R2上配置认证,使得邻居关系恢复。
R2(config)#ints1/0
R2(config-if)#ipospf authentication
R2(config-if)#ipospf authentication-key cisco
*Aug 15 22:54:55.815: %OSPF-5-ADJCHG:Process 10, Nbr 1.1.1.1 on Serial1/0 from LOADING to FULL, Loading Done
情况二:在R2和R3的串行链路上进行MD5认证的:
R2(config)#ints1/1
R2(config-if)#ipospf authentication message-digest(定义认证类型为MD5)
R2(config-if)#ipospf message-digest-key 1 md5 cisco(定义key和密码)
R3(config)#ints1/0
R3(config-if)#ipospf authentication message-digest
R3(config-if)#ipospf message-digest-key 1 md5 cisco
情况三:增加R2和R3上串行链路的MD5认证的密码:
在R2原有的配置上加上下面这条命令:
R2(config-if)#ip ospfmessage-digest-key 2 md5 openlab
R2#sho ip ospf neighbor
Neighbor ID Pri State Dead TimeAddress Interface
3.3.3.3 0 FULL/ - - 11.1.1.2 OSPF_VL0
1.1.1.1 1 FULL/BDR 00:00:34 21.1.1.1FastEthernet0/0
1.1.1.1 0 FULL/ - 00:00:37 10.1.1.1Serial1/0
3.3.3.30 FULL/ - 00:00:31 11.1.1.2 Serial1/1
邻居关系没有丢失。
增加新的密码钥匙,然后在将原来的密码删除,候邻居关系不受影响。
情况四:在Area0上进行区域认证(以前没做过吧)
R1(config)#router ospf 10
R1(config-router)#area 0authentication
还没有写下一步,就是刚启用,还没设置密码,邻居就down掉了
同样,R2上启用一下,邻居就恢复
或者都设置相同的密码也可以。
情况五:Area0上进行区域认证以后。。。
R2#clear ip ospf pro清进程,A2区域的学不到邻居了。R3是通过虚链路连接到骨干区域的。因为virtual-link属于Area0,因此在R2配置完成Area0区域认证后,R3也需要相应的配置。
R3(config)#routerospf 10
R3(config-router)#area0 authentication
这样就可以了
情况六:单纯的虚链路的认证(这个以前也没做过吧)
明文认证,MD5认证。配置命令如下:
明文:
R2(config-router)#area1 virtual-link 3.3.3.3 authentication-key cisco
R3(config-router)#area1 virtual-link 2.2.2.2 authentication-key cisco
MD5:
R2(config-router)#area1 virtual-link 3.3.3.3 authentication message-digest
R2(config-router)#area1 virtual-link 3.3.3.3 message-digest-key 1 md5 cisco
R3(config-router)#area1 virtual-link 2.2.2.2 authentication message-digest
R3(config-router)#area1 virtual-link 2.2.2.2 message-digest-key 1 md5 cisco
另外通过实验知道虚链路在建立起来后是DNA LSA(不老化LSA),所以如果没有重启OSPF进程的话,即使一端配置了认证,虚链路也是不会断开的。
后面是sniffer抓得包
Hello包
Lsu包:
LSACK包:
DBD: