02 OSPF(2020.0415)

OSPF,开放式最短路径优先算法,SPF算法:迪杰科斯特拉算法,工作在IP层,协议号89

基本特点

  1. 收敛速度比较快(相对RIP快些,在IGP协议中,收敛最快的为EIGRP协议)
  2. 无类路由协议,VLSM(可变长子网掩码,由小变大)和CIDR(无类别域间路由,由大变小)
  3. OSPF支持负载均衡
  4. 支持区域划分,提供分级管理,使得SPF的算法更优,算法使用频率更低,节约了链路状态数据库,降低了路由的开销。【只有区域0为骨干区域,OSPF要求所有非骨干区域都要和骨干区域(即area0)连接】
  5. OSPF支持3种认证:0是不认证,1是明文认证,2是MD5认证
  6. 支持触发更新(不仅防环,还能更快的收敛)
  7. OSPF的路由优先级10(内部,OSPF自身产生的)和150(外部,从其他协议引入的)
  8. OSPF的度量值采用开销cost作为标准(RIP使用跳数选路,容易产生次优路径)
  9. OSPF要维护3张表:邻居表、拓扑表、路由表【配置好OSPF之后,设备之间先泛洪LSA构建邻居表,相互交换信息之后构建数据库LSDB,运行SPF算法形成路由表
  10. OSPF采用组播【组播地址:224.0.0.5(所有设备监听)和224.0.0.6(仅DR和BDR监听)】的方式来收发报文,可以减少对没有运行OSPF设备的干扰(RIP的组播地址:224.0.0.9,EIGRP的组播地址:224.0.0.10)
  11. OSPF为了确保链路状态数据库的同步,每1800秒(30分钟)更新一次
  12. OSPF是没有环路的协议,但仅限于一个区域内,在一个区域内是绝对无环的,基于算法的天然无环。OSPF在区域内是链路状态协议,在区域间是距离矢量协议算法。

概念术语

  1. 链路:OSPF路由器的一个接口
  2. 链路状态:各条链路的状态信息,例如接口的IP地址、开销等等
  3. 区域:同一组路由器组成,共享共同的信息
  4. 自制系统:一个自制系统是指使用同一种路由协议交换路由信息的一组路由器
  5. LSA(链路状态通告)和LSU(链路状态更新)
  • LSA:用来描述路由器的信息和链路的状态
  • LSU:可以包含一个或者多个LSA,通过LSA给邻居
  1. SPF算法:迪杰科斯特拉算法,和ISIS使用同种算法
  2. 邻居(Neighbor)关系和邻接(Adjacency)关系
  • 邻居关系:两台设备共享同一条链路,并且交互了一些参数(hello报文),形成邻居关系(2-way状态)【有端口连接到同一个网段的两个路由器就是邻居路由器,邻居关系由OSPF的Hello协议维护(女朋友)】
  • 邻接关系:相互交换LSA同步数据库的OSPF设备【从邻居关系中选出的为了交换路由信息而形成的关系(领证了)】
    邻居是形成邻接关系的必要条件
  1. DR(指定路由器)和BDR(备份指定路由器)
  2. Router ID,用来标识运行OSPF的设备,是一个类IP地址。每一个路由器必须要有一个RouterID,如果没有手工指定,会自动选举,选举规则为【比较逻辑接口,选择地址最大的一个;如果没有逻辑接口,比较激活的物理接口IP,选择地址最大的。如果修改RouterID,不会立即生效,需要重启OSPF进程reset ospf process或者设备】
    配置方法:进程下配置(进程下配置的优先于全局的)ospf 10 router-id 2.2.2.2或者全局下配置(各进程会自动调用)router-id 1.1.1.1

OSPF路由器的分类

  1. 内部路由器(IR):内部路由器是指所有所连接的网段都在一个区域的路由器,属于同一个区域的IR维护相同的LSDB
  2. 区域边界路由器(ABR):区域边界路由器是指连接到多个区域的路由器,ABR为每一个所连接的区域维护一个LSDB,连接骨干区域和非骨干区域的设备。【位于一个或多个OSPF区域边界上、将这些区域连接到主干网络的路由器。ABR被认为同时是OSPF主干和相连区域的成员,可以同时属于两个以上的区域,但其中一个必须是骨干区域(area 0)。因此,它们同时维护着描述主干拓扑和其他区域拓扑的路由选择表。】
  3. 骨干路由器(BR):骨干路由器是指至少有一个端口(或者虚连接)连接到骨干区域的路由器,包括所有的ABR和所有端口都在骨干区域的路由器
  4. AS边界路由器ASBR:和其他AS中的路由器交换路由信息的路由器,这种路由器向整个AS通告AS外部路由信息。AS边界路由器可以是内部路由器IR,或者是ABR,可以属于骨干区域也可以不属于骨干区域。【与其他AS交换路由信息的路由器称为ASBR,使用了多种路由协议。它位于OSPF自主系统和非OSPF网络之间。ASBR可以运行OSPF和另一路由选择协议(如RIP),把OSPF上的路由发布到其他路由协议上。只要一台OSPF路由器引入了外部路由的信息,它就成为了ASBR。ASBR必须处于非存根OSPF区域中由ASBR发出的LSA5,用于向自治系统区域通告网络拓扑ABSR一般是位于非OSPF区域和OSPF区域间互联的路由器,而ABR是OSPF多个区域连接区域0间的路由器。】

OSPF报文

报文头部

OSPF报文头部

如何验证OSPF报文头部是否合法?

1.版本号必须为2
2.Area ID必须要和接收端的Area ID一致
3.认证类型和认证密码必须一致

  1. RouterID不能冲突

报文分类

Hello(Hello Packet)

作用:(刚进饭店,服务员打招呼)周期性的发送,用来发现、建立和维护OSPF的邻居关系,报文内容包括一些定时器的数值、DR、BDR以及自己已知的邻居
OSPF-hello
静默端口(silent-interface)既不接收hello报文,也不发送hello报文

  • Network Mask:
    发送Hello报文的接口的网络掩码,只有在广播网络或者NBMA网络才有意义(在P2P和P2MP链路上是不检测的)
  • HelloInterval:
    发送Hello报文的时间间隔,单位为秒,在广播网络中是10秒一次,在NBMA中是30秒一次修改hello时间:进入接口视图执行ospf timer hello 5,相应的RouterDeadInterval时间也会修改为20秒
  • Options:
    标识发送此报文的OSPF路由器所支持的可选功能,具体的可选功能不在本课程的讨论范围之列
    • DN位:Down比特位,是用来防环的(MPLS VPN应用)
    • O位:用来支持9、10、11类LSA的能力
    • DC位:当始发链路支持按需链路时该比特位会置位
    • N位:N位表明是否支持7类LSA,N=0表明不接收和发送7类LSA
    • P位:用在NSSA LSA(7类LSA),是否做7类转成5类
    • E位:能否接收外部路由(5类LSA),默认E位是1,是可以接收外部路由
  • Rtr Pri:
    发送Hello报文的接口的Router Priority,路由的优先级,用来选举DR和BDR的
  • RouterDeadInterval:
    宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒,通常为4倍HelloInterval,即在广播网络中是40秒,在NBMA中是120秒修改死亡时间:进入接口视图后执行ospf timer dead 80,此时不会影响hello时间,即hello时间影响dead时间,但是dead时间不影响hello时间
  • Designated Router:
    发送Hello报文的路由器所选举出的DR接口的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。
  • Backup Designated Router:
    发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。
  • Neighbor:邻居路由器的Router ID列表,表示本路由器已经从该邻居收到合法的Hello报文,邻居路由器的Rtouer ID(表明OSPF的邻居状态)
    同一个区域内的路由器上的ospf的hello时间和dead时间必须一致,否则无法启动

验证一个Hello报文是否合法之前首先需要验证一个OSPF报文是否合法。
验证一个接收到的Hello报文是否合法包括:

  1. 如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段;
  2. 所接收的Hello报文中的HelloInterval字段必须和接收端口的配置保持一致;
  3. 所接收的Hello报文中的RouterDeadInterval字段必须和接收端口的配置保持一致;
  4. 所接收的Hello报文中的Options字段中的E位(表示是否接收外部路由信息)必须和相关区域的配置保持一致。关于此比特的具体意义将在《OSPF特殊区域》中详细解释。

邻居状态机

ospf-邻居状态机
Down

这是邻居的初始状态,表示没有从邻居收到任何信息或者邻居失效后变为该状态。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval间隔相同。

Attempt

此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。

Init

在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。

  • 1-WayReceived
    此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的。
  • 2-WayReceived
    此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way

成为邻居的6个条件:

1.RID不同
2.特殊区域的flag字段相同
3.子网掩码相同
4.验证相同
5.区域号相同
6.hello/dead相同

2-Way

在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。DR和BDR是从达到2-way或者更高状态的邻居中选举出来的,即此状态是选举DR和BDR的开始(选举周期为40秒,选举期之后没有抢占性)

两端同时进入2-way标志着邻居关系的建立,进入2-way后,要建立邻接关系(Full)的情况如下:

  1. 接口类型为p2p(点到点),p2MP(点到多)
  2. 自己为DR,或者为BDR
  3. 邻居为DR,或BDR

2-way状态(邻居关系)建立的过程:RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2

  1. RTA启动OSPF后,RTA会发送第一个Hello报文(以组播的方式发送,目的地址为224.0.0.5),此时状态为Down,需要注意的是,首次发送hello报文的时候不包含邻居字段,报文长度为44。RTB收到RTA的Hello报文后,状态置为init。
  2. RTB发送Hello报文,RTA收到RTB发送的报文之后,状态为Init。
  3. RTB向RTA发送邻居列表为1.1.1.1的Hello报文,Hello报文发送三个周期(也有超过3个周期),RTA在收到RTB发来的报文邻居列表中发现自己的Router ID,而且匹配6个条件(建立邻居的6个条件)成功之后,状态为2-way,也称为邻居状态。
  4. RTA向RTB发送邻居列表为2.2.2.2的hello报文,Hello报文发送三个周期(也有超过3个周期),RTB在收到hello报文邻居列表中发现自己的Router ID,而且匹配6个条件(建立邻居的6个条件)成功之后, 状态置为2-way,也称为邻居状态。

DR和BDR的作用:

  1. 减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,减少路由器硬件的负担。
  2. 一个既不是DR也不是BDR的路由器只与DR和BDR形成邻接关系并交换链路状态信息以及路由信息,这样就大大减少了大型广播型网络和NBMA网络中的邻接关系数量

DR和BDR的选举规则:两端同时进入2-way,开始选举

  1. 首先检查Hello报文中的DR字段和BDR字段是否为空,如果都为空(意味着没有DR和BDR),会首先选举出BDR选举规则:比较优先级,越大越优(默认为1,取置范围为0-255, 0表示不参与选举),如果相同,比较Router ID,越大越优;BDR选举出后,会自动升级为DR,然后重新选举BDR,规则和之前一样
  2. 如果DR字段为空,BDR不为空,则BDR升级为DR,重新再选举出BDR;如果BDR为空,DR不为空,重新选举出BDR
Exstart

交换信息的初始化状态。发送DBD(包含本地的LSA的摘要信息)报文,选举主从路由器,并确定初始的DBD序号,达到此状态或者更高状态的邻居才能称为邻接发送第一个DBD报文,由2-way转成Exstart

Exchange

交换信息的状态。该状态下,相互间发送DBD,告知对端本地所有的LSA的目录;同时,可以发送 LSR,LSU,LSACK来学习对端的LSA主从选举完毕之后,由Exstart转换成Exchange

Loading

加载状态(没有学习完的状态)。发送LSR,LSU,LSACK,专门学习对端的LSA的详细信息当DBD报文中的M=0时,由Exchange转成Loading

Full

邻接状态(学习完的状态)。彼此的LSDB同步,即所有的LSA相同重传列表为空,由Loading转成Full

DBD(Database Description Packet,数据库描述报文)

作用:(服务员给的菜单)描述本地LSDB的摘要信息,用于两台路由器进行数据库的同步。DBD报文只是一个LSA(LSDB)的摘要信息,里边不包括LSA。报文内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少路由器之间的协议报文流量,对端路由器根据LSA Header就可以判断出是否已有这条LSA。在两台路由器交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
OSPF-DBD
前两个DBD报文是空报文,用来选举主从。详细邻接关系建立,可以参考本链接
OSPF的两种确认机制:1.显式确认-LSA、LSU、LSAck;2.隐式确认
DR和BDR的选举和主从选举没有任何关系。DR和BDR选举看优先级,主要是同步数据库;主从选举看RouteID,主要是做一个隐式确认。

主从选举以及数据交互过程简述(从Exstart开始到Exchange结束)RTA和RTB的Router ID分别为1.1.1.1和2.2.2.2

  1. A->B:seq=x,I=1,M=1,MS=1(空报文)。A变为Exstart状态。
  2. B->A:seq=y,I=1,M=1,MS=1(空报文)。B变为Exstart状态。此时已经通过RouterID确认了主从,主为B,从为A
  3. A->B:seq=y,I=0,M=1,MS=0。当OSPF接口收到一个DBD包且其中I=0的时候,它就知道与该邻居的exstart阶段已经过去了,于是将邻居的状态置为exchange。从没有权利修改seq,只能使用主的seq,表示确认收到主的发送的那个seq
  4. B->A:seq=y+1,I=0,M=1,MS=1。AB通过DBD的交互,了解到对方OSPF DB中的摘要情况。在这个过程中,可能交互数个DBD报文,这些报文的I位都置0,且M位一般置1,除非这是某个OSPF接口发送的最后一个DBD包。
    ....(多个DBD报文)
  5. B->A:seq=y+n,I=0,M=0,MS=1。当A收到一个M位置0的DBD包的时候,它就知道,这是邻居B发来的最后一个DBD包了,如果它搜集完这个邻居B发来的DBD并且发现这些DBD里有它感兴趣的LSA,它期望更详细的LSA信息时,它将B置为Loading状态,并且开始发送LSR报文去请求特定LSA的详细信息。
  6. A->B:seq=y+n,I=0,M=0,MS=0。
  7. A->B:LSR。(Loading到Full状态的转换)B收到这个LSR后,会以LSU进行回应,其中就包含了对方请求的LSA详细信息,因此,只有在LSU报文中,才能看到LSA的完整信息
  8. B->A:LSU。
  9. A->B:LSAck。收到LSU后,A将LSU中所包含的LSA放进自己的LSDB,并且给B发一个LSAck进行确认。当OSPF接口上所有的待请求的LSA全部收到更新后,它会将邻居置为Full状态

MTU对邻接关系建立的影响

  1. MTU在DBD报文中携带,所以MTU不一致不会影响OSPF邻居关系的建立,但是会影响邻接的建立
  2. 思科设备默认是检测MTU的。华为设备默认是不检测MTU的,华为可以通过命令配置检测,如果MTU不一致,会进入什么状态
    2.1 如果主的MTU大于从的MTU,两端会同时卡在Exstart状态。【假设AR1的MTU1400,AR2的为1500】原因:AR1发送一个DBD(1400,MS=1),状态由2-way转换成Exstart,同时,AR2也会发送一个DBD(1500,MS=1),状态由2-way转换成Exstart;由于AR2的MTU大于AR1的MTU,AR1无法接受AR2的DBD报文,AR1不知道谁是主(AR1自己认为自己是主),AR2这个主也得不到AR1的确认(即AR2收不到 与自己发出的那个报文相同seq 的 AR1发出的确认报文),即无法进行主从选举,导致卡在Exstart状态
    2.2 如果主的MTU小于从的MTU,从会进入Exchange,主会卡在extart状态。【假设AR1的MTU1400,AR2的为1300】原因:AR2发送一个DBD(1300,MS=1),状态由2-way转换成Exstart,同时,AR1发送一个DBD(1400,MS=1),状态由2-way转换成Exstart;由于AR1的MTU比AR2的MTU大,从而可以正常接收AR2的报文,知道AR2是主,则AR1的状态由Exstart转为Exchange;AR1发送第二个DBD报文(MS=0),这个报文AR2无法正常接收,导致状态仍然为Exstart
    2.3 如果忽略MTU检测(MTU不一致),路由条目多的情况下,有可能会卡在Loading状态;如果路由条目比较少,报文长度没有超过MTU,则可以达到full状态

OSPF的接口状态机

Loopback

这时,路由器到网络的接口处于回环Loopback,回环可能以硬件或软件的方式实现。回环接口不能用于正常的数据传输,但仍能通过ICMP ping或位错误检测来收集接口信息。IP包仍需要被发往回环接口。为此,要在Router-LSA中宣告此接口为接口IP地址的主机路径。

Down

这是接口的初始状态,这时下层协议指出接口为断开,接口上没有协议流量的收发。这时,接口上的所有参数都被设为初始值,关闭所有的接口记时器,该接口上也没有相关联的邻接。

Point-to-Point

这时,连接到物理点对点网络或虚拟通道的接口开始工作。进入此状态之后,路由器试图与邻居路由器形成邻接。并按HelloInterval的间隔发送Hello包。
端口状态转换--p2p、p2mp或虚连接

Waiting

在此状态时,路由器试图判定网络上DR和BDR。为此,路由器对其接收到的Hello包进行监听。在结束等待前,路由器不能被选举为DR或BDR。这可以避免不必要地改变DR和BDR。

DROther

广播或NBMA网络上的其他路由器被选举为DR,其自身也没有被选为BDR。路由器开始与DR和BDR(如果存在的话)形成邻接。

BDR

在此状态时,路由器是所接入网络的BDR。并将在当前的DR失效时成为DR。该路由器与接入该网络的所有其他路由器形成邻接。在洪泛过程中,BDR的工作与DR稍有不同。

DR

在此状态时,路由器是所接入网络的DR。该路由器与接入该网络的所有其他路由器形成邻接。路由器必须为网络节点生成一个Network-LSA。该Network-LSA包含了所有接入该网络的路由器(包括DR自身)。
端口状态转换-广播或NBMA网络

OSPF支持的网络类型

  1. P2P网络(只把两台路由器直接相连的网络,例如运行PPP的64K串行线路就是一个点到点网络不需要选举DR和BDR,hello时间10s,dead时间40s,5种报文全部组播
  2. Broadcast网络(支持两台以上路由器,并且具有广播能力的网络,例如含有四台路由器的以太网需要选举DR和BDR,hello时间10s,dead时间40s,hello报文组播、DBD和LSR是单播、LSU和LSAck有单播也有组播
  3. NBMA网络(例如使用SVC进行通信的ATM网络【全连接ATM网络】,需要选举DR和BDR,hello时间30s,dead时间120s,5种报文均是单播
  4. P2MP网络(不需要选举DR和BDR,hello时间30s,dead时间120s,hello报文组播、其他报文全是单播))
  5. 虚链接(【注意事项:虚连接不能配置在骨干区域(Area0)和末节区域(实验中的Area20),不能跨越多个区域】)
网络类型 Hello时间 dead时间 Hello报文 DBD报文 LSR报文 LSU报文 LSACK报文 是否选举DR/BDR
NBMA 30 120 单播 单播 单播 单播 单播 需要
P2MP 30 120 组播 单播 单播 单播 单播 不需要
P2P 10 40 组播 组播 组播 组播 组播 不需要
Broadcast 10 40 组播 单播 单播 单播/组播 单播/组播 需要

不同的网络类型之间是否可以建立邻接关系?是否有路由?

P2P与Broadcast:可以建立邻接关系,但是没有路由。原因:P2P没有DR和BDR,即没有二类LSA,导致Broadcast无法识别相应报文
P2MP与Broadcast:因为hello时间不相同,无法建立邻居关系。如果将P2MP的hello时间修改为10s,可以建立邻接关系,但是没有路由。原因同上
NBMA和Broadcast:因为hello时间不相同,无法建立邻居关系。即使修改hello时间也无法建立邻接关系。原因:NBMA的hello报文为单播,Broadcast的hello报文为组播
P2P和P2MP:因为hello时间不相同,无法建立邻居关系。修改P2MP的hello时间为10s之后可以建立邻接关系并且有路由

常见的链路层类型对应的默认网络类型
网络类型 常见链路层协议
Point-to-point PPP链路、LAPB链路、HDLC链路
Broadcast 以太网链路
NBMA 帧中继链路、ATM链路

作用:(看菜单点菜)用于向对方请求所需的LSA,只有在OSPF邻居双方成功交换了DBD后才会向对方发送LSR。两台路由器互相交换过DD报文之后,知道对端的路由器有哪些LSA是本地的LSDB所缺少的和哪些LSA是已经失效的,这时需要发送LSR报文向对方请求所需的LSA。内容包括所需要的LSA的摘要,其中LS type、Link State ID和Advertising Router可以唯一标识出一个LSA,当两个LSA一样时,需要根据LSA中的LS sequence number、LS checksum和LS age来判断出所需要LSA的新旧。
OSPF-LSA
OSPF的LSA每1800秒更新一次,如果3600秒没有收到更新,则认为失效(老化);OSPF不能删除非自身产生的LSA

什么情况下更新LSA?

  1. 1800秒更新一次
  2. 触发更新(接口地址、开销值等发生变化)

作用:(服务员上菜)用于向对方回复具体的LSR。用来向对端Router发送其所需要的LSA或者泛洪自己更新的LSA,内容是多条LSA(全部内容)的集合。LSU报文在支持组播和广播的链路上是以组播形式将LSA泛洪出去。为了实现泛洪的可靠性传输,需要LSAck报文对其进行确认。对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
OSPF-LSU

LSA的头部和5种报文

LSA相同的头部
OSPF-LSAHead
  • LAS的序列号(LS Sequence Number):32位有符号整数,用于检测过期和重复的LSA。数值0x80000000(过渡使用,从0x7FFFFFFF到0x80000001的过渡),也就是 -2^31 是最小的数值,但此数值被保留,可用的最小数值为0x80000001(初始序号,-2^31+1 ),每次更新该LSA,序列号+1,序列号越大则该LSA越新,最大为0x7FFFFFFF,达到最大值之后,,必须先将当前LSA从路由域中废止(LSA提前老化),然后重新泛洪,当所有邻接的邻居收到确认后,重新从0x80000001开始。

LSA的新旧比较

  1. 先比较LSA的序列号,越大越新
  2. LSA的序列号相同情况下,比较校验值(Checksum),越大越新
  3. LSA的序列号、校验值均相同的情况下,比较LSA的Age是否等于Max-age时间3600,相等则最新
  4. LSA的序列号、校验值均相同的情况下,LSA的Age不等于3600,会比较age与3600之间的差值,如果差值大于900(即15分钟),越小月新
  5. LSA的序列号、校验值均相同的情况下,LSA的Age不等于3600,且age与3600之间的差值小于900,则会认为是同一条LSA,忽略其中一条
Router-LSA(Type1)

每个路由器都会产生,描述了路由器的链路状态和开销只在所属的区域内泛洪
OSPF-Router-LSA

OSPF选路依据?

OSPF依据Metric(即Cost)来进行选路,参考带宽为100Mb/s,Metric的参考值为10^8/带宽(100M/接口带宽),即56kb/s的串口为1785、64kb/s的串口为1562、2.048Mb/s的E1为48、100Mb/s的Ethernet为1。【注意】1000Mb/s以上的Metric均为1,为了能够在100Mb/s以上的接口上实现负载分担,则需要进行参考带宽的调整,命令如下:ospf 10 && bandwidth-reference 1000,此数据需要在实施OSPF的每个设备上都修改,单位是Mbits/s。


OSPF的网段类型
LSDB通过描述一个有向线段图来描述网络拓扑结构,该有向图的端点有三种类型:路由器节点、Stub网段、Transit网段

  1. Stub网段(末节网络):该网段只有数据入口,例如y几个Loopback接口就是一个Stub网段。
  2. Transit网段:有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。从一个Transit网段到连接到这个网段的路由器的开销为0
  3. 点到点网段:两个接口处于不同网段时,两台路由器经由两条有向线段相连,两个接口的网段被表示成stub网段,每个路由器通告一个stub连接到该路由器所连得网段;两个接口处于同一网段时,两台路由器经由两条有向线段相连,每个方向一条,连接两个接口的网段被表示成stub网段,两个路由器同时通告stub连接到该PPP网段
    stub
    transit
    点到点

一类LSA支持的四种链路类型:

Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接
TransNet:描述一个从本路由器到一个Transit网段(例如广播型网段或者NBMA网段)的链接
StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接
Virtual:表示这是一个从本路由器到虚连接对端ABR的链接,虚连接是属于骨干区域的一条虚拟路由,且虚连接不能跨区域建立【虚连接不能在骨干区域、stubnet和NSSA上配置,虚连接只能在ABR上配置】


虚连接的应用场景:

1.解决非骨干区域没有连接到骨干区域的问题
2.解决骨干区域被分割的问题
3.解决没有骨干区域的场景(可以建立虚连接充当骨干区域,即虚连接相当于骨干区域,只有华为设备可以,思科设备不支持)
4.保障骨干区域的健壮性(预防骨干区域被分割或者ABR只接受三类LSA不选路的问题)
5.解决次优路径问题(三类LSA的优先级低于一类LSA,即内部OSPF优先级(AR19)>外部OSPF优先级(AR18))**
虚连接应用场景


虚连接的缺点

  1. 容易产生环路
  2. 不能做汇总
    虚连接--环路

虚连接的远端地址:

虚连接的两个端点需要相互交换协议报文,但是虚连接的邻居是用Router ID来标识的,不能作为协议报文的目的IP地址。每个虚连接的端点都要计算两个最短路径树,一个是本地最短路径树,另一个是虚连接邻居的最短路径树。计算虚连接邻居的最短路径树之后,在最短路径树上查找如何到达本地路由器(通过Router ID来标识),虚连接邻居到达本地路由器的出端口的IP地址为本地路由器发送给虚连接诶邻居的协议报文目的IP地址。

广播类型的接口的链路类型是transnet,环回口链路类型是stubnet,点到点链会生成p2p和stubnet两种类型。OPSF是先计算p2p和transnet,再计算stubnet

Type Link ID Link Data
Point-to-point 邻居的Router ID 该网段上本地接口的IP地址
TransNet DR的接口IP地址 该网段上本地接口的IP地址
StubNet 该Stub网段的IP网络地址 该Stub网段的网络掩码
Virtual 虚连接邻居的Router ID 去往该虚连接邻居的本地接口的IP地址
Network-LSA(Type2)

广播网或NBMA网络中的DR产生,Network-LSA中记录了这一网络上所有路由器的Router ID和该网络的掩码,描述本网段的链路状态在所属的区域内传播
OSPF-Network-LSA

计算过程的两个阶段

  1. 计算transit和p2p节点,忽略stub节点,生成一个最短路径树,即构建SPF树。依据Router-LSA和Network-LSA。
  2. 只计算stub节点,将stub网段挂到最短路径树上去,即计算最优路由。依据SPF树干和Router-LSA、Network-LSA中的路由信息

计算的详细过程

第一阶段

AR1:(dis lsdb router 1.1.1.1)最短路径树-1.1.1.1(0);候选列表(p2p)-2.2.2.2(48)、4.4.4.4-1562。对比候选列表之后,将2.2.2.2放入最短路径树,形成最短路径树-1.1.1.1(0)、2.2.2.2(48)。1
查看到2.2.2.2所有路由(dis lsdb router 2.2.2.2),查找不在最短路径树中metric最小的放入最短路径树,形成最短路径树-1.1.1.1(0)、2.2.2.2(48)、10.3.1.3(48+1)2
由于10.3.1.3是广播类型,需要查看其邻居(即查看二类LSA,dis ospf lsdb network 10.3.1.3),其中2.2.2.2已经包含在最短路径树中,只需要考虑3.3.3.3和4.4.4.4,由于到达10.3.1.3的开销值为49,即到达10.3.1.0/24这个网络的开销值为49,所以到达3.3.3.3和4.4.4.4的开销值为493
现在查看3.3.3.3和4.4.4.4中(dis ospf lsdb router 3.3.3.3)4
由于10.3.1.3和1.1.1.1已经存在最短路径树中,所以最短路径树仍然为1.1.1.1 5

第二阶段

第二阶段
Network-summary-LSA(Type3)

描述区域内所有网段的路由,并通告给其他相关区域(即跨区域进行路由传递Type3和Type4的LSA有相同的格式,它们都是由ABR产生,可以跨区域传递,描述的是路由信息,与拓扑无关。ABR会将区域内的一类LSA和二类LSA转成三类LSA(此功能只有ABR具有,这也是为了防环),然后泛洪到其他区域,ABR产生的三类LSA将用于计算区域间路由
OSPF-Network-summary-LSA
通告缺省路由时,Link State ID和Network Mask都设置为0.0.0.0,查看三类LSA命令:dis ospf lsdb summary xx.xx.xx.xx

OSPF的防环

为了避免区域间的环路,OSPF规定不允许直接在两个非骨干区域间发布路由信息,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息;只有ABR具有将一类LSA和二类LSA转成三类LSA的功能(必须为真ABR)


根据三类LSA计算区域间路由步骤

  1. 根据三类LSA中的Adv Rou字段判断出ABR
  2. 根据sid、Net Mask、Metric字段获得ABR到达目的网络号、掩码、开销
  3. 如果多个ABR产生了指向相同目的网络的三类LSA,则根节点将根据本路由器到达目的网络的累计开销进行比较,最终生成最小开销路由;如果根节点到达目的网络的累计开销值相同,则产生等价负载的路由

真假ABR

假ABR:骨干区域或者非骨干区域有一端是环回接口
真ABR:连接骨干与非骨干区域的设备,并且在骨干区域有活动的邻接
真ABR从非骨干区域收到的三类LSA只接收(更新LSDB)、不选路(即不加入路由表);假ABR即接收又选路

ASBR-summary-LSA(Type4)

描述ABR到ASBR的路由,通告给除ASBR所在区域的其他相关区域,四类LSA不能跨区域报文格式与Network-summary-LSA相同由ABR发出,ASBR汇总LSA除了所通告的目的地是一个ASBR而不是一个网络外,其他同Network Summary LSA

  • LS id:ASBR的RID
  • Adv rtr:ABR的RID
  • metric:ABR到ASBR的开销值

为什么三类LSA无法取代四类LSA?

因为三类LSA描述的是路由信息,四类LSA描述的是ASBR的拓扑信息(LsID是ASBR的RouterID )

AS-External-LSA(Type5)

由ASBR产生,是自治系统外的路由引入OSPF产生的,描述的是ASBR到外部路由(目标网络)的开销(华为默认为1),这是五种LSA中,唯一一种通告到所有区域(除了Stub区域和NSSA区域)的LSA。5类LSA可以跨区域,而且在传递过程中是不能被改变的发自ASBR路由器,用来通告到达OSPF自治系统外部的目的地,或者OSPF自治系统那个外部的缺省路由的LSA。这种LSA将在全AS内泛洪(4个特殊区域除外)
OSPF-AS-External-LSA
Type5的LSA可以用来通告缺省路由,此时Link State ID和Network Mask都设置为0.0.0.0

  • LS id:网络前缀
  • Adv rtr:ASBR的RID
  • FA地址:防止次优路径和环路。携带FA地址的三个条件:1.接口类型不能是P2P、P2MP;2.接口不能配置为静默接口(silent接口);3.下一条地址要为域内或者域间可达OSPF的五类LSA如果携带了FA地址,计算路由时会优先考虑FA地址,如果没有携带FA地址,则会考虑ASBR

外部度量值类型(E比特位)

OE1:第一类外部路由引入其他协议的路由时修改为OE1的指令:import-route rip 1 type 1。在传递过程中开销值累加OE1的路由优先于OE2。OE1的路由比较的是总开销值,不区分内外。
OE2:第二类外部路由,默认类型。在传递过程中开销值不会累加,只计算引入时的外部开销值,不计算内部开销值。OE2只看外部开销(忽略内部开销);如果外部开销相同,则比较内部开销;如果内部和外部开销都相同,则进行负载。

LSA报文简略总结

LSA种类 名称 内容 Link State ID Adv Router 传输区域
一类LSA Router-LSA 链路状态信息的集合 产生LSA的RouterID 设备的RouterID 区域内
二类LSA network-LSA 链路内的设备的RouterID DR接口的IP DR的RouterID 区域内
三类LSA Network-Summary-LSA 路由信息 网络前缀 ABR的RouterID 可以跨区域(除stub、NSSA)
四类LSA ASBR-Summary-LSA ASBR的信息 ASBR的RouterID ABR的RouterID 区域内
五类LSA AS-External-LSA 路由信息 网络前缀 ASBR的RouterID 跨区域(除stub、NSSA)

不同报文中LinkStateID的区别

  1. Router-LSA中的LsID为生成此LSA的RouterID
  2. Network-LSA中的LsID为DR的接口IP地址
  3. Network-summary-LSA中的LsID为通告的网络地址
  4. ASBR-summary-LSA中的LsID为ASBR的RouterID
  5. AS-External-LSA中的LsID为通告的网络地址

LSA报文分类型详细汇总

Router-LSA

路由LSA ,是ospf 区域内的所有路由器产生的,包含的信息:该路由有几个接口参与了OSPF,以及它们所在的网段,只在本区域内泛洪。

  1. 报文内容
Type      : Router
  Ls id     : 2.2.2.2
  Adv rtr   : 2.2.2.2  
  Ls age    : 24 
  Len       : 36 
  Options   :  ABR      #当前数据采自stub区域,普通区域该位会置ABR E
  seq#      : 80000005 
  chksum    : 0x819e
  Link count: 1
   * Link ID: 12.1.1.2     
     Data   : 12.1.1.2     
     Link Type: TransNet     
     Metric : 1
  1. 作用
    1. 描述该路由器所有接口的链路信息(transenet、stub、p2p、virtual-link)、是否为ABR或者ASBR、开销值等
    2. P2P和P2MP区域内仅存在该lsa
    3. 所有路由器发出、仅存于区域内
    4. 通告者为产生该lsa的路由器的router id
Network-LSA

网络LSA ,它是ospf区域内的DR产生的,它包含的信息:多少路由器在它的网络上,该网络的前缀和掩码,也只在本区域内泛洪。

  1. 报文内容
Type      : Network
  Ls id     : 12.1.1.2
  Adv rtr   : 2.2.2.2  
  Ls age    : 40 
  Len       : 32 
  Options   : None         #当前数据采自stub区域,普通区域该位会置 E
  seq#      : 80000002 
  chksum    : 0x1027
  Net mask  : 255.255.255.0
  Priority  : Low
     Attached Router    2.2.2.2
     Attached Router    1.1.1.1
  1. 作用
    1. 描述多点网络伪节点连接的路由器
    2. DR发出、仅存于区域内
    3. net mask与link id进行与运算,可获知网络号
    4. 通告者为DR,相当于是一个补充,仅MA网络的补充描述(MA、NBMA)
Network-summary-LSA

汇总LSA,它是ABR路由器产生的,在整个AS里泛洪。通过三类LSA,可以知道目标路由器在哪个AS里;通过二类LSA,可以知道目标路由器在哪个区域;通过一类LSA,可以知道目标路由器具体是哪一个

  1. 报文内容
Type      : Sum-Net
  Ls id     : 12.1.1.0
  Adv rtr   : 2.2.2.2  
  Ls age    : 581 
  Len       : 28 
  Options   :  E  
  seq#      : 80000004 
  chksum    : 0x7fc3
  Net mask  : 255.255.255.0
  Tos 0  metric: 1
  Priority  : Low
  1. 作用
    1. 区域间链路状态信息的汇总,告知其他区域,本区域内的链路状态信息(本区域内的LSA1+LSA2)
    2. ABR发出,向相邻区域通告,通告给其他区域后,通告者会修改为ABR的router id
    3. 相当于城际列车(跨区的列车,但没有出市)
ASBR-summary-LSA

也叫汇总LSA,它是ASBR路由器产生的。

  1. 作用
    1. 告知asbr的位置
    2. ABR发出,引入外部路由的区域不存在4类lsa
    3. 相当于本区的代理告诉你去国外得先去机场
AS-External-LSA
  1. 报文内容
Type      : External
  Ls id     : 44.44.44.44
  Adv rtr   : 4.4.4.4  
  Ls age    : 856 
  Len       : 36 
  Options   :  E  
  seq#      : 80000002 
  chksum    : 0x947a
  Net mask  : 255.255.255.255 
  TOS 0  Metric: 1 
  E type    : 2
  Forwarding Address : 0.0.0.0 
  Tag       : 1 
  Priority  : Medium
  1. 作用
    1. 告知引入外部路由的路由器
    2. 由ASBR发出,引入外部路由的区域通过1类LSA去往外部路由
    3. 相当于机场,去往国外的通道
NSSA-LSA
  1. 报文内容
Type      : NSSA
  Ls id     : 44.44.44.44
  Adv rtr   : 4.4.4.4  
  Ls age    : 89 
  Len       : 36 
  Options   :  NP  
  seq#      : 80000001 
  chksum    : 0xe8f6
  Net mask  : 255.255.255.255 
  TOS 0  Metric: 1 
  E type    : 2
  Forwarding Address : 34.1.1.4 
  Tag       : 1 
  Priority  : Low
  1. 作用
    1. 仅nssa网络中存在
    2. 缺省存在默认路由,当引入外部路由后,该外部路由也会体现为nssa类型

作用:(结账买单)用来对收到的LSU的确认。用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认),LSAck报文根据不同的链路以单播或组播的形式发送。
OSPF-LSAck

OSPF特殊区域

Stub 末节区域

  • 将区域设置为末节区域,需要在末节区域的所有设备上配置stub命令
  • 末节区域会过滤五类LSA(四类LSA也会被过滤掉),ABR会向该区域下放一条默认路由(三类LSA)
  • 无法配置外部路由(即便强行配置也无法配置上去)
# 需要在该区域的所有设备上都配置
ospf 10 router-id 2.2.2.2
area 10
stub

Totally Stub 完全末节区域

  • 只需要在ABR上配置,区域内其他设备配置为末节区域即可
  • 完全末节区域不仅会过滤掉四类和五类LSA,也会过滤掉三类LSA,同时ABR会向该区域下放一条默认路由(三类LSA)(一共有三类LSA:一类、二类和下放路由使用的三类)
ospf 10 router-id 2.2.2.2
area 10
stub no-summary

Stub和Totally Stub的一些条件

  1. 建议该区域只能有一个出口,即只有一个ABR
  2. 虚连接不能跨越Stub区域
  3. Stub区域不能有ASBR
  4. 不能将骨干区域配置为Stub区域
  5. Stub区域发送的Hello报文中的E比特位会置0

NSSA 非完全末节区域

  • 产生背景:OSPF规定Stub区域不能引入外部路由,这样可以避免大量外部路由对Stub区域路由器带宽和存储资源的消耗。对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,stub区域就不在满足需求,因此产生了NSSA区域
  • 将区域设置为NSSA区域,需要在末节区域的所有设备上配置nssa命令
  • NSSA区域会过滤五类LSA(四类LSA也会被过滤掉),同时引进七类LSA(即NSSA-LSA,是由五类LSA转换而成),同时ABR会向该区域下放一条默认路由(七类LSA)
  • 七类LSA的优先级:ON1(类似OE1)和ON2(类似OE2)
  • FA地址:对于五类LSA是可选项,但是七类LSA是必选项
    • 在五类LSA中,FA地址只有满足那三个条件才会携带,携带的是下一条的地址
    • 在七类LSA中,如果满足五类LSA的三大条件,FA地址是ASBR上外部路由的下一条地址;如果不满足条件,FA地址是ASBR上某个接口的IP,优选环回口
# 需要在该区域的所有设备上都配置
ospf 10 router-id 2.2.2.2
area 10
nssa

Totally NSSA

  • 只需要在ABR上设置,区域内其他路由设备设置为naas即可
  • 过滤掉三类、四类和五类LSA,同时引入外部路由作为七类LSA存在,同时ABR会向该区域通告两条默认路由:一个是三类sum-net(优先级高),一个是七类nssa
ospf 10 router-id 2.2.2.2
area 10
naas no-summary

OSPF路由的优先级

思科:O(一类和二类)>OIA(三类)>OE1(五类外部度量值类型1)>ON1(七类外部度量值类型1)>OE1(五类外部度量值类型2)>ON2(七类外部度量值类型2)
华为:O(一类和二类)>OIA(三类)>OE1=ON1>OE2=ON2(五类和七类的优先级相同,即华为不区分五类和七类LSA)


七类LSA转五类LSA的条件

如果有多个ABR,则RouterID大的进行七转五,也可以使用nssa translator-always命令来指定ABR进行七转五(一个区域中只有一个设备进行七转五)。如果做七转五时抑制掉FA地址则需要使用命令nssa translator-always suppress-forwarding-address


LSA的汇总
汇总之后,非本区域设备无法看到相应的明细路由

三类LSA:在ABR上配置,需要汇总的网段所在OSPF的区域进行配置
五类LSA:在ASBR上配置,在OSPF进程下配置

#.............................................三类LSA汇总
# AR2
ospf 10
area 10 # 需要汇总的网段在Area10中
abr-summary 10.1.0.0 255.255.248.0
#.............................................五类LSA汇总
# AR5
ospf 10
asbr-summary 192.168.0.0 255.255.248.0

路由的过滤

方法一:先做acl匹配路由,然后在路由的起始区域的出或者入方向配置(即出入方向上配置均可)
方法二:对路由进行汇总时携带参数not-advertise,即汇总但是不通告
方法三:使用filter-policy进行过滤。运行完SPF算法,在进入路由表是进行的过滤,即只过滤路由不过滤LSA。如果该方法在普通设备上,只影响本地;如果在ABR上配置。还会影响其他设备,主要是通过影响三类LSA导致路由无法传递
方法四:在接口下针对LSA进行过滤,可以过滤三类、五类、七类、全部等等

# ......................................................................方法一
# AR2
acl 2001
rule deny source 10.1.0.0 0.0.3.255
rule permit source any
ospf 10
area 10
filter 2001 export    #或者filter 2001 import
# ......................................................................方法二
# AR2
ospf 10
area 10
abr-summary 10.1.0.0 255.255.0.0 not-advertise #对三类LSA汇总不通告,进行过滤
# AR5
ospf 10
asbr-summary 192.168.0.0 255.255.0.0 not-advertise  #对五类LSA汇总不通告,进行过滤
# ......................................................................方法三
# AR1
acl 2001
rule deny source 10.1.0.0 0.0.7.255
rule permit source any
ospf 10
filter-policy 2001 import   # 此时AR1上没有相应路由,但是AR2上有,即此方法只过滤路由,不过滤LSA
# AR5:在引入外部路由时过滤
ospf 10
filter-policy 2001 export rip 1
import-route rip 1
# ......................................................................方法四
# AR2:针对五类LSA
int s1/0/0
ospf filter-lsa-out ase
# AR2:针对三类LSA
int s1/0/0
ospf filter-lsa-out summary
# AR1:过滤掉所有LSA
int g0/0/1
ospf filter-lsa-out all

LSA存在的区域(特殊类型之间的区别)

特殊区域类型 Stub Totally Stub NSSA Totally NSSA
区域中LSA类型 LSA1/2/3
ABR产生LSA3(0.0.0.0)
LSA1/2
ABR产生LSA3(0.0.0.0)
LSA1/2/3/7
ABR(ASBR)产生LSA7(0.0.0.0)
LSA1/2/7
ABR(ASBR)产生LSA3(0.0.0.0)
LSA7(0.0.0.0)
ABR/ASBR 区域内不允许ASBR 区域内不允许ASBR 区域内允许部署ASBR,
区域边界路由既是ABR也是ASBR
区域内允许部署ASBR,
区域边界路由既是ABR也是ASBR

LSA补充

二、三、五类LSA都存在net mask字段,用来携带网络信息
二类LSA既包含拓扑信息也包含网络信息,所以网络改变时,即使物理没有改变,也会触发二类lsa,导致重新的区域内SPF计算
当同区域不相邻的两台路由器AR1和AR2的RouterID冲突,会导致AR1和AR2产生的LSA会迅速累加
仅5类和7类lsa包含FA地址

OSPF的认证

OSPF认证存在于OSPF报文的头部

分类

  • 0:不认证
  • 1:明文认证
  • 2:MD5认证
    OSPF的认证分为区域认证(在区域中配置)和接口认证(在接口下配置),接口认证由于区域认证
# ........................................1:明文认证
# AR2:在区域下配置
ospf 10
area 0
authentication-mode simple huawei12
# AR4
ospf 10
area 0  
authentication-mode simple huawei12
# AR3 :在接口下配置
int g/0/0
ospf authentication-mode simple cipher huawei12

# ........................................2:MD5认证
# AR3
ospf 10
area 0  
authentication-mode md5 1 qyt123
# AR4
int g0/0/1 
ospf authentication-mode md5 1 qyt123

# .............................................配置虚连接的认证
# AR5
ospf 10
area 20
vlink-peer 4.4.4.4 simple cipher qyt123
# AR4
ospf 10
area 20
vlink-peer 5.5.5.5 simple cipher qyt123

OSPF缺省路由的下放

  1. 普通区域:可以在ASBR上通过default-route-advertise下放一条路由(五类LSA)。
    default-route-advertise需要本地有默认路由,才会在OSPF中下放默认路由;
    default-route-advertise always即便本地没有默认路由,也会在OSPF中下放一条默认路由。
  2. Stub区域和Totally Stub区域:会自动下放一条缺省三类LSA,通告这个Stub区域
  3. Nssa区域:ABR会自动生成一条缺省的七类LSA,通告到整个NSSA区域。ASBR需要手工配置,可以产生一条七类LSA的缺省路由,通告整个NSSA区域
  4. Totally Nssa区域:ABR会下放两条缺省的默认路由(三类和七类),通告到整个NSSA区域。
#..................................................普通区域
# AR5:不加always
ip route-static 0.0.0.0 0.0.0.0 56.1.1.6
ospf 10
default-route-advertise
# AR5:加always
ospf 10
default-route-advertise

OSPF的可靠性技术

GR

GR是Graceful Restart的简称,又被称为平滑重启,是一种用于保证当路由协议重启时数据正常转发并且不影响关键业务的技术。
重启之前发送九类LSA(组播224.0.0.5)
平滑重启指令reset ospf 10 process graceful-restart
在主备倒换端,系统支持NSR和GR两种不同的高可靠性保护,他们是互斥的。即,对于一个特定协议,系统倒换后,只能采用NSR或GR两种处理方式的一种。设备在部署NSR时,仍然可以支持GR Helper的功能,以支持自己的邻居GR过程,最大可能的保证用户全网网络节点业务的高可靠性。

NSR

不间断路由NSR(Non-Stopping Routing),是在有主用主控板和备用主控板的设备上,主用主控板发生故障时不影响邻居关系的一种可靠性技术。
通过协议备份机制,实现主备倒换时控制平面(RIB,路由)和转发平面(FIB,业务)均不中断
在设备发生倒换的过程中,路由处理不中断,因为:

  • 邻居和拓扑信息不丢失
  • 邻居关系不中断
    这种方式的优点有:
  • 不依赖也不影响对端设备,没有互通问题
  • 路由的收敛速度要比NSF快

NSF

不间断转发NSF,通过协议的GR(Graceful Restart)机制,支持系统主备倒换时,转发业务不中断

  • 当由于某种原因系统发生故障时,在系统重启过程中,转发平面(业务)不中断
  • 系统恢复后,设备能够重新建立邻居关系,从邻居处获取路由信息并重建路由表

FRR

快速重路由FRR(Fast Reroute)是指当物理层或链路层检测到故障时将故障消息上报至上层路由系统,并立即启用一条备份链路转发报文。IP FRR是一种快速实现路由备份的方式。
IP FRR特性能够保证转发系统快速应对出现的链路故障,直接启用备份路由进行数据转发,尽快让业务恢复正常。

# 开启FRR
ospf 10
frr
loop-free-alternate # 用来是能OSPF IP FRR功能,利用LFA算法计算备份下一条和备份出接口

OSPF的Option选项

区域类型 E位(五类) N位(七类)
普通区域 1(允许) 0(不允许)
Stub区域 0 0
NSSA区域 0 1

OSPF排错

使用命令dis ospf error可以查看OSPF配置的所有错误;使用命令dis ospf error int gx/x/x可以查看接口下OSPF配置的错误

影响OSPF邻居建立的因素(OSPF邻居未建立原因)

  1. 链路层故障:测网线,测光纤,ping
  2. 接口没有宣告:使用命令dis ospf int查看接口宣告情况
  3. 区域ID不一致:使用命令dis ospf peer bri查看邻居情况
  4. 静默端口(被动接口)
  5. Hello时间不一致导致邻居无法建立
  6. Dead时间不一致
  7. MA网络掩码不一致
  8. Option选项不一致导致邻居无法建立:主要查看E(五类)和N位(七类)
  9. 认证类型和认证密码不一致导致邻居无法建立
  10. RouterID冲突,有可能会导致邻居无法建立:同一个区域无法建立邻居;骨干区域普通路由器(非ABR、ASBR)和普通区域的普通路由(非ABR、ASBR)冲突不影响邻居关系的建立
  11. 配置了ACL
  12. MTU会影响邻接的建立,不影响邻居

补充

route-policy

作用

  • route-policy命令用来创建路由策略并进入Route-Policy视图
  • undo route-policy命令用来删除指定的路由策略

命令格式

  • route-policy route-policy-name { permit | deny } node node
  • undo route-policy route-policy-name [ node node ]

参数说明

  • route-policy-name:指定Route-Policy名称。如果该名称的路由策略不存在,则创建一个新的路由策略并进入它的Route-Policy视图。如果该名称的路由策略已经存在,则直接进入它的Route-Policy视图
  • permit(deny):指定Route-Policy节点的匹配模式为允许(拒绝)。如果路由与节点所有的if-match子句匹配成功,则执行此节点apply子句(则该路由将被拒绝通过);否则,进行下一节点。
  • node node :指定Route-Policy的节点号。当使用Route-Policy时,node的值小的节点先进行匹配。一个节点匹配成功后,路由将不再匹配其他节点。全部节点匹配失败后,路由将被过滤

实验

实验一:查看OSPF内部和外部路由的优先级

实验一:查看OSPF内部和外部路由的优先级
#...........................配置IP地址
# AR1
system-view
sysname AR1
int g0/0/0
ip addr 172.16.10.1 24
int s1/0/0
ip addr 12.1.1.1 24
int lo 0
ip addr 1.1.1.1 32

# AR2
system-view
sysname AR2
int g0/0/0
ip addr 24.1.1.2 24
int s1/0/0
ip addr 12.1.1.2 24
int g0/0/1
ip addr 23.1.1.2 24
int lo 0
ip addr 2.2.2.2 32

# AR3
system-view
sysname AR3
int g0/0/0
ip addr 23.1.1.3 24
int g0/0/1
ip addr 34.1.1.3 24
int lo 0
ip addr 3.3.3.3 32

# AR4
system-view
sysname AR4
int g0/0/0
ip addr 24.1.1.4 24
int g0/0/1
ip addr 34.1.1.4 24
int g0/0/2
ip addr 45.1.1.4 24
int lo 0
ip addr 4.4.4.4 32

# AR5
system-view
sysname AR5
int g0/0/0
ip addr 45.1.1.5 24
int g0/0/1
ip addr 56.1.1.5 24
int lo 0
ip addr 5.5.5.5 32

# AR6
system-view
sysname AR6
int g0/0/0
ip addr  56.1.1.6 24
int lo 0 
ip addr 6.6.6.6 32
int lo 10
ip addr 200.200.200.200.32

# AR7
system-view
sysname AR7
int g0/0/0
ip addr 172.16.10.7 24
int lo 0
ip addr 7.7.7.7 32

# AR8
system-view
sysname AR8
int g0/0/0
ip addr 172.16.10.8 24
int lo 0
ip addr 8.8.8.8 32

#.........................................配置OSPF
# AR1
ospf 10 router-id 1.1.1.1   # router-id一般配置和环回接口地址相同
area 10
network 172.16.10.1 0.0.0.0  # 精确宣告
network 12.1.1.1 0.0.0.0
network 1.1.1.1 0.0.0.0
dis ospf int  # 查看ospf接口的相关信息
# AR7
ospf 10 router-id 7.7.7.7
area 10
network 176.16.10.0 0.0.0.255  # 宣告网段
network 7.7.7.7 0.0.0.0
# AR8
ospf 10 router-id 8.8.8.8
area 10
network 176.16.10.0 0.0.0.255
network 8.8.8.8 0.0.0.0
# AR2
ospf 10 router-id 2.2.2.2
area 10
network 12.1.1.2 0.0.0.0
area 0
network 24.1.1.2 0.0.0.0
network 23.1.1.2 0.0.0.0
network 2.2.2.2 0.0.0.0  # 通常情况下宣告进区域0,当然也可以宣告进区域10
# AR3
router-id 3.3.3.3 # 在全局下制定Router-ID
ospf 10
area 0
int g0/0/0
ospf enable 10 area 0  # 在接口下宣告(需要提前启用OSPF进程)
int g0/0/1
ospf enable 10 area 0
int lo 0
ospf enable 10 area 0
# AR4
ospf 10 router-id 4.4.4.4
area 0
network 24.1.1.4 0.0.0.0
network 34.1.1.4 0.0.0.0
network 4.4.4.4 0.0.0.0
area 20
network 45.1.1.4 0.0.0.0
# AR5
ospf 10 router-id 5.5.5.5
area 20 
network 45.1.1.5 0.0.0.0
q
rip 
version 2
undo summary  # 关闭自动汇总
network 5.0.0.0
network 56.0.0.0
ospf 10   # 实施ospf和rip的双向引入
import-route rip
rip
import-route ospf 10
# AR6
rip 
version 2
undo summary  # 关闭自动汇总
network 6.0.0.0
network 56.0.0.0
nerwork 200.200.200.0

# 查看OSPF三张表
# AR1/7
dis ospf peer bri  # 查看邻居表
dis ospf lsdb  # 查看拓扑表(链路状态数据库)
dis ip routing-table pro ospf  # 查看路由表,查看OSPF内外路由的优先级

实验二:查看OSPF的选举过程,通过抓包也可以观察到主从选举以及LSDB同步过程

实验二:查看OSPF的选举过程
# AR1
system-view
sysname AR1 
int g0/0/0
ip addr 192.168.10.1 24
ospf 10 router-id 1.1.1.1
area 0
network 192.168.10.0 0.0.0.255

# AR2
system-view
sysname AR2
int g0/0/0
ip addr 192.168.10.2 24
ospf 10 router-id 2.2.2.2
area 0
network 192.168.10.0 0.0.0.255
# 此时AR2(优先级相同,Router-ID比较大)已经成为DR,AR1是BDR

# AR3
system-view
sysname AR3
int g0/0/0
ip addr 192.168.10.3 24
ospf 10 router-id 3.3.3.3
area 0
network 192.168.10.0 0.0.0.255
# 由于过了选举期,DR仍然为AR2,AR3变成DROther
# 此时AR2重置进程(reset ospf process),则原来的BDR的AR1变成DR,新的BDR为AR3
# 即DR是AR1,BDR为AR3

# AR4
system-view
sysname AR4
int g0/0/0
ip addr 192.168.10.4 24
ospf 10 router-id 4.4.4.4
area 0
network 192.168.10.0 0.0.0.255
# 由于过了选举期,DR仍然为AR1,AR3为BDR,AR4为DROther
# 此时将AR1的优先级改为0(int g0/0/0   &&   ospf de-priority 0)
# 此时AR3由BDR变成DR,AR4由DROther变成BDR,AR2为DROther

## 如果网络中的路由器的优先级全部为0,则所有路由器之间的关系均为2-way

## 全部重新选举
## 将AR1的优先级改为1默认状态(int g0/0/0   &&   ospf de-priority 1)
## 使用CRT连接台路由器,对所有的路由器同时执行reset ospf process重置进程
## 则AR4变为DR,AR3变为BDR,AR2为DROther

## 此时将交换机的g0/0/1和g0/0/2接口放入vlan10中
# sw1
sys
vlan 10
port-group group-member g0/0/1 g0/0/2
port link-type access
port default vlan 10
#  然后使用CRT将所有的ospf进程重置
# 此时AR4变为DR,AR3变为BDR,AR2也为DR,AR1为BDR
# 然后进行vlan之间的选举DR和DR比较,BDR和BDR比较
# 则 AR4变为DR,AR3变为BDR,AR2变成DROther,AR1变成DROther

实验三:查看MTU对邻接关系建立的影响

实验三:查看MTU对邻接关系建立的影响
# AR1
system-view
sysname AR1 
int g0/0/0
ip addr 192.168.10.1 24
ospf 10 router-id 1.1.1.1
area 0
network 192.168.10.0 0.0.0.255

# AR2
system-view
sysname AR2
int g0/0/0
ip addr 192.168.10.2 24
ospf 10 router-id 2.2.2.2
area 0
network 192.168.10.0 0.0.0.255
# 此时AR2(优先级相同,Router-ID比较大)已经成为DR,AR1是BDR;AR2在主从选举中由于Router-ID比较大变为主,AR1是从

# AR1/AR2
int g0/0/0
ospf timer hello 5  # 40秒时间太长,将hello报文缩短,方便实验
ospf mtu-enable  # 开启MTU检测

# 验证:主AR2-MTU1500>从AR1-MTU1400,两端会同时卡在exstart状态
# AR1
int g0/0/0
mtu 1400
# 使用CRT同时对AR1和AR2重置OSPF进程reset ospf process

# 验证:主AR2MTU1300<从AR1MTU1400,从AR1会进入exchange,主AR1会卡在extart状态
# AR2
int g0/0/0
mtu 1300
# 使用CRT同时对AR1和AR2重置OSPF进程reset ospf process

# 验证:忽略MTU检测(MTU不一致),卡在Loading状态。AR1的MTU=1300,AR2的MTU=1400
# AR1/AR2
int g0/0/0
un ospf mtu-enable
# 使用CRT同时对AR1和AR2重置OSPF进程reset ospf process

实验四:OSPF支持的前4种网络类型

实验四:OSPF支持的4种网络类型
# ................................................................NBMA网络
# 添加帧中继交换机的映射
# AR1
system-view
sysname AR1
int s1/0/0
link-protocol fr
ip addr 172.16.10.1 24
fr map ip 172.16.10.2 102 broadcast
fr map ip 172.16.10.3 103 broadcast
int lo 0
ip addr 1.1.1.1 32
router id 1.1.1.1
ospf 10
area 0
network 172.16.10.1 0.0.0.0
network 1.1.1.1 0.0.0.0
q
peer 172.16.10.2
peer 172.16.10.3
# dis ospf peer br  # 查看OSPF邻居,有2.2.2.2和3.3.3.3
# dis ospf int  # AR1是BDR

# AR2
system-view
sysname AR2
int s1/0/0
link-protocol fr
ip addr 172.16.10.2 24
fr map ip 172.16.10.1 201 broadcast
int lo 0
ip addr 2.2.2.2 32
router id 2.2.2.2
network 172.16.10.2 0.0.0.0
network 2.2.2.2 0.0.0.0
q
peer 172.16.10.1
# dis ospf peer br  # 查看OSPF邻居,有1.1.1.1
# dis ospf int  # AR2是DR

# AR3
system-view
sysname AR3
int s1/0/0
link-protocol fr
ip addr 172.16.10.3 24
fr map ip 172.16.10.1 301 broadcast
int lo 0
ip addr 3.3.3.3 32
router id 3.3.3.3
network 172.16.10.3 0.0.0.0
network 3.3.3.3 0.0.0.0
q
peer 172.16.10.1
# dis ospf peer br  # 查看OSPF邻居,有1.1.1.1
# dis ospf int  # AR3也是DR
# 因为NBMA是非广播网络,AR2和AR3无法通信,但是AR1可以与AR2和AR3进行通信
# 导致AR1只承认AR3这个DR,即只有到AR3的路由,缺少去往AR2的路由;AR3上也有一条去往AR1的路由;AR2上无路由
# 解决此问题的唯一方案是修改优先级,使得AR1为DR,同时使得AR2和AR3无法进行选举(防止其中一个路由器重启之后导致重新进行选举)
#【如果仅仅将AR2的优先级修改为0,放弃选举DR,此网络可以正常选举DR(ar3)、BDR(ar1)、DROther(ar2),但是没有对应的路由,无法从根本上上解决问题】
# AR1
int s1/0/0
ospf de-priority 100
# AR2/AR3
int s1/0/0
ospf de-priority 0
# 使用CRT将AR1/2/3的OSPF进程重置reset ospf process

# ................................................................点到多点网络
# AR1
int s1/0/0
undo ospf de-priority
ospf 10
undo peer 172.16.10.2
undo peer 172.16.10.3
int s1/0/0
ospf network-type p2mp  # 修改接口类型为点到多
# AR2
int s1/0/0
undo ospf de-priority
ospf 10
undo peer 172.16.10.1
int s1/0/0
ospf network-type p2mp
# AR3
int s1/0/0
undo ospf de-priority
ospf 10
undo peer 172.16.10.1
int s1/0/0
ospf network-type p2mp

# ................................................................广播网络
# AR1
int g0/0/0 
ip addr 14.1.1.1 24
ospf 10
a 0
network 14.1.1.1 0.0.0.0

# AR4
sys
sys AR4
int g0/0/0 
ip addr 14.1.1.4 24
q
router id 4.4.4.4
int lo 0
ip addr 4.4.4.4 32
ospf 10
a 0
network 14.1.1.4 0.0.0.0
network 4.4.4.4 0.0.0.0

# ................................................................点到点网络
# AR4
int s1/0/0
ip add 45.1.1.4 24
ospf 10
area 0
network 45.1.1.4 0.0.0.0

# AR5
sys
sys AR4
int s1/0/0
ip add 45.1.1.5 24
int lo 0
ip addr 5.5.5.5 32
ospf 10 router 5.5.5.5
area 0
network 45.1.1.5 0.0.0.0
network 5.5.5.5 0.0.0.0

# ..................................不同的网络类型能否建立邻接关系,是否有路由
#....................P2P与Broadcast(AR1和AR4)
# 可以建立邻接关系,但是没有路由
# AR1
int g0/0/0
ospf netowrk-type p2p
#....................P2MP与Broadcast(AR1和AR4)
# 可以建立邻接关系,但是没有路由
# AR1
int g0/0/0
ospf netowrk-type p2mp
ospf timer hello 10
#....................NBMA与Broadcast(AR1和AR4)
# 可以建立邻接关系,但是没有路由
# AR1
int g0/0/0
ospf netowrk-type nbma
ospf timer hello 10
#....................P2P与P2MP(AR1和AR2、AR3)
# 可以建立邻接关系,有路由
# AR1
int s1/0/0
ospf network-type p2mp
ospf timer hello 10
# AR2
int s1/0/0
ospf network-type p2p
# AR3
int s1/0/0
ospf network-type p2p

实验五:OSPF支持的第5种网络--虚链接

实验四:OSPF支持的第5种网络--虚链接
# AR1
sys
sysname AR1
router id 1.1.1.1
ospf 10 
area 0
int lo 0
ip addr 1.1.1.1 32
ospf enable 10 area 0
int g0/0/0
ip addr 12.1.1.1 24
ospf enable 10 area 0
# AR2
sys
sysname AR2
router id 2.2.2.2
ospf 10 
area 0
area 10
int lo 0
ip addr 2.2.2.2 32
ospf enable 10 area 0
int g0/0/0
ip addr 12.1.1.2 24
ospf enable 10 area 0
int g0/0/1
ip addr 23.1.1.2 24
ospf enable 10 area 10
# AR3
sys
sysname AR3
router id 3.3.3.3
ospf 10 
area 10
# network 3.3.3.3 0.0.0.0
# network 23.1.1.3 0.0.0.0
# network 34.1.1.3 0.0.0.0
int lo 0
ip addr 3.3.3.3 32
ospf enable 10 area 10
int g0/0/0
ip addr 23.1.1.3 24
ospf enable 10 area 10
int g0/0/1
ip addr 34.1.1.3 24
ospf enable 10 area 10
# AR4
sys
sysname AR4
router id 4.4.4.4
ospf 10 
area 10
area 20
int lo 0
ip addr 4.4.4.4 32
ospf enable 10 area 10
int g0/0/0
ip addr 34.1.1.4 24
ospf enable 10 area 10
int g0/0/1
ip addr 45.1.1.4 24
ospf enable 10 area 20
# AR5
sys
sysname AR5
router id 5.5.5.5
ospf 10 
area 20
int lo 0
ip addr 5.5.5.5 32
ospf enable 10 area 20
int g0/0/0
ip addr 45.1.1.5 24
ospf enable 10 area 20

#查看OSPF的邻居和路由表
dis ospf peer br
dis ip rou pro ospf
# 邻居关系正常
# 路由关系。AR1仅有到AR2/3/4的路由,AR2仅有到AR1/3/4的路由,AR3仅有到AR1/2/4的路由,AR4有到AR1/2/3/4的路由。原因:Area20没有连接到骨干区域,无法相互学习路由。
# 解决方法:配置虚连接。虚连接只能在ABR上配置.
# AR2
ospf 10
area 10
vlink-peer 4.4.4.4
# AR4
ospf 10
area 10
vlink-peer 2.2.2.2
# 此时在去查看路由表就有5.5.5.5的路由了

实验六:计算最短路径树--物理拓扑

实验拓扑
有向图

# AR1
sys
sys AR1
ospf 10 route 1.1.1.1
area 0
int lo 0
ip addr 1.1.1.1 32
ospf enable 10 area 0
int s1/0/1
ip addr 10.1.1.1 30
ospf enable 10 area 0
int s1/0/0
ip addr 10.5.1.1 30
ospf cost 1562
ospf enable 10 area 0

# AR2
sys
sys AR2
ospf 10 route 2.2.2.2
area 0
int lo 0
ip addr 2.2.2.2 32
ospf enable 10 area 0
int g0/0/0 
ip addr 10.3.1.1 24
ospf enable 10 area 0
int s1/0/1
ip addr 10.2.1.1 30
ospf enable 10 area 0

# AR3
sys
sys AR3
ospf 10 route 3.3.3.3
area 0
int lo 0
ip addr 3.3.3.3 32
ospf enable 10 area 0
int g0/0/0 
ip addr 10.3.1.2 24
ospf enable 10 area 0

# AR4
sys
sys AR4
ospf 10 route 4.4.4.4
area 0
int lo 0
ip addr 4.4.4.4 32
ospf enable 10 area 0
int s1/0/1
ip addr 10.4.1.1 30
ospf cost 1562
ospf enable 10 area 0
int g0/0/0 
ip addr 10.3.1.3 24
ospf enable 10 area 0

# 查看数据库
dis ospf lsdb

实验七:OSPF综合实验

实验要求

  1. 配置AR1/AR2/AR3/AR14的OSPF区域0,要求最快收敛
  2. 将R2的环回口Lo10引入OSPF区域,R10的环回口Lo10宣告进RIP
  3. 将R7/R8的环回口的10网段引入进OSPF,其他非Area 40区域不能看到10网段的明细路由;Area40不能有2/3/4/5类LSA,(默认路由除外),但是可以访问100.100.100.100
  4. Area0做MD5认证,密码为QYT@123
  5. R5将RIP引入OSPF路由,其他各站点都可以访问100.100.100.100
  6. R2的环回口Lo10通过串行路访问100.100.100.100网络,串行链路出现故障后要通过R4-R9-R1访问
  7. 全网互通
    备注:每个设备都配置Lo0接口为router-id,Lo0接口的地址为x.x.x.x/32,例如R1的地址为1.1.1.1/32
    实验七:OSPF综合实验
# ........................................预配置:配置IP地址并配置OSPF区域
#AR1
sys
sys AR1
router id 1.1.1.1
int lo 0
ip addr 1.1.1.1 32
int s1/0/0
ip addr 172.16.10.1 24
int g0/0/0
ip addr 15.1.1.1 24
int g0/0/1
ip addr 19.1.1.1 24
ospf 10
area 0 
net 1.1.1.1 0.0.0.0
net 172.16.10.1 0.0.0.0
area 10 
net 15.1.1.1 0.0.0.0
area 50
net 19.1.1.1 0.0.0.0
#AR2
sys
sys AR2
router id 2.2.2.2
int lo 0
ip addr 2.2.2.2 32
int lo 0
ip addr 22.22.22.22 32
int s1/0/0
ip addr 172.16.20.2 24
int g0/0/0
ip addr 24.1.1.2 24
ospf 10
area 0 
net 2.2.2.2 0.0.0.0
net 172.16.20.2 0.0.0.0
area 20 
net 24.1.1.2 0.0.0.0
#AR3
sys
sys AR3
router id 3.3.3.3
int lo 0
ip addr 3.3.3.3 32
int s1/0/0
ip addr 172.16.30.3 24
int g0/0/0
ip addr 36.1.1.3 24
ospf 10
area 0 
net 3.3.3.3 0.0.0.0
net 172.16.30.3 0.0.0.0
area 30 
net 36.1.1.3 0.0.0.0
#AR4
sys
sys AR4
router id 4.4.4.4
int lo 0
ip addr 4.4.4.4 32
int g0/0/0
ip addr 24.1.1.4 24
int g0/0/1
ip addr 49.1.1.4 24
ospf 10
area 20
net 4.4.4.4 0.0.0.0
net 24.1.1.4 0.0.0.0
net 49.1.1.4 0.0.0.0
#AR5
sys
sys AR5
router id 5.5.5.5
int lo 0
ip addr 5.5.5.5 32
int g0/0/0
ip addr 15.1.1.5 24
int g0/0/1
ip addr 51.1.1.5 24
ospf 10
area 10
net 5.5.5.5 0.0.0.0
net 15.1.1.5 0.0.0.0
#AR6
sys
sys AR6
router id 6.6.6.6
int lo 0
ip addr 6.6.6.6 32
int g0/0/0
ip addr 36.1.1.6 24
int g0/0/1
ip addr 192.168.10.6 24
ospf 10
area 30
net 6.6.6.6 0.0.0.0
net 36.1.1.6 0.0.0.0
area 40
net 192.168.10.6 0.0.0.0
#AR7
sys
sys AR7
router id 7.7.7.7
int lo 0
ip addr 7.7.7.7 32
int lo 10
ip addr 10.1.0.1 24
int lo 11
ip addr 10.1.1.1 24
int g0/0/0
ip addr 192.168.10.7 24
ospf 10
area 40
net 7.7.7.7 0.0.0.0
net 192.168.10.7 0.0.0.0
#AR8
sys
sys AR8
router id 8.8.8.8
int lo 0
ip addr 8.8.8.8 32
int lo 10
ip addr 10.1.2.1 24
int lo 11
ip addr 10.1.3.1 24
int g0/0/0
ip addr 192.168.10.8 24
ospf 10
area 40
net 8.8.8.8 0.0.0.0
net 192.168.10.8 0.0.0.0
#AR9
sys
sys AR9
router id 9.9.9.9
int lo 0
ip addr 9.9.9.9 32
int g0/0/0
ip addr 19.1.1.9 24
int g0/0/1
ip addr 49.1.1.9 24
ospf 10
area 20
net 9.9.9.9 0.0.0.0
net 49.1.1.9 0.0.0.0
area 50
net 19.1.1.9 0.0.0.0
#AR10
sys
sys AR10
router id 10.10.10.10
int lo 0
ip addr 10.10.10.10 32
int lo 10
ip addr 100.100.100.100 32
int g0/0/0
ip addr 51.1.1.10 24
#AR14
sys
sys AR3
router id 14.14.14.14
int lo 0
ip addr 14.14.14.14 32
int s1/0/0
ip addr 172.16.10.14 24
int s1/0/1
ip addr 172.16.20.14 24
int s2/0/0
ip addr 172.16.30.14 24
ospf 10
area 0
net 14.14.14.14 0.0.0.0
net 172.16.10.14 0.0.0.0
net 172.16.20.14 0.0.0.0
net 172.16.30.14 0.0.0.0
# 1. 配置AR1/AR2/AR3/AR14的OSPF区域0,要求最快收敛
# AR1/2/3/14在预配置中已经配置过

# 2. 将R2的环回口Lo10引入OSPF区域,R10的环回口Lo10宣告进RIP
# AR2
acl 2001
rule permit source 22.22.22.22 0
q
route-policy Import-dir permit node 10
if-match acl 2001
ospf 10
import-route direct route-policy Import-dir 
# AR10
rip
ver 2
undo summary
net 51.0.0.0
net 100.0.0.0

# 3. 将R7/R8的环回口的10网段引入进OSPF,其他非Area 40区域不能看到10网段的明细路由;Area40不能有2/3/4/5类LSA,(默认路由除外),但是可以访问100.100.100.100
# AR7
acl 2001
rule permit source 10.1.0.0 0.0.3.255
q
route-policy Import-dir permit node 10
if-match acl 2001
ospf 10
import-route direct route-policy Import-dir
area 40
nssa
int g0/0/0
ospf network-type p2mp
# AR8
acl 2001
rule permit source 10.1.0.0 0.0.3.255
route-policy Import-dir permit node 10
if-match acl 2001
ospf 10
import-route direct route-policy Import-dir
area 40
nssa
int g0/0/0
ospf network-type p2mp
# AR6
ospf 10
asbr-summary 10.1.0.0 255.255.252.0  # 如果不想让其他区域看到明细路由,需要在ASBR上使用五类LSA汇总
area 40
nssa no-summary
int g0/0/1
ospf network-type p2mp
ospf 10
area 30
vlink-peer 3.3.3.3
# AR3
ospf 10
area 30
vlink-peer 6.6.6.6

# 5. R5将RIP引入OSPF路由,其他各站点都可以访问100.100.100.100
# AR5
# 需要双向引入,不然无法访问100.100.100.100
ospf 10
import-route rip
rip
import-route ospf 10

# 6. R2的环回口Lo10通过串行路访问100.100.100.100网络,串行链路出现故障后要通过R4-R9-R1访问
# AR2为什么不能自行选择R4-R9-R1这条路呢?OSPF的防环机制,两个非骨干区域之间发布路由信息,即区域20和50之间无法相互之间发布路由信息,导致区域20和50无法通信。
# AR2
ospf 10
area 20 
vlink-peer 9.9.9.9
# AR9
ospf 10
area 20
vlink-peer 2.2.2.2
area 50 
vlink-peer 1.1.1.1
# AR1
ospf 10
area 50 
vlink-peer 9.9.9.9
# AR2
int g0/0/0
ospf cost 200
# AR1
int g0/0/1
ospf cost 200

# 4. Area0做MD5认证,密码为QYT@123
# AR1/2/3/14/9/6
ospf 10
area 0
authentication-mode md5 1 QYT@123