第四章:动态路由技术
> 作者:行癫
------
第一节:动态路由概述
一:动态路由概述
静态路由的缺点是不能自动适应网络拓扑的变化,需要人工干预
动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量三层设备的网络
1.动态路由类型
**根据路由信息传递的内容、计算路由的算法,可以将动态路由协议分为两大类:**
距离矢量协议
RIP
链路状态协议
OSPF、IS-IS
BGP使用一种基于距离矢量算法修改后的算法,该算法被称为路径矢量(Path Vector)算法。因此在某些场合下,BGP也被称为路径矢量路由协议
**根据工作范围不同,又可以分为:**
内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部运行。RIP、OSPF、ISIS为常见的IGP协议
外部网关协议EGP(Exterior Gateway Protocol):运行于不同自治系统之间。BGP是目前最常用的EGP协议
二:路由高级特性
1.路由递归
路由必须有直连的下一跳才能够指导转发,但是路由生成时下一跳可能不是直连的,因此需要计算出一个直连的下一跳和对应的出接口,这个过程叫做路由递归;路由递归也称路由迭代
![image-20220210132943125](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210132943125.png)
2.等价路由
路由表中存在等价路由之后,前往该目的网段的IP报文路由器会通过所有有效的接口、下一跳转发,这种转发行为被称为负载分担
3.浮动路由
静态路由支持配置时手动指定优先级,可以通过配置目的地址/掩码相同、优先级不同、下一跳不同的静态路由,实现转发路径的备份
浮动路由是主用路由的备份,保证链路故障时提供备份路由,主用路由下一跳可达时该备份路由不会出现的路由表
RTA-RTB之间的链路正常时,20.0.0.0/30的两条路由条目都是有效的条目,此时比较优先级,下一跳为10.1.1.2的优先级60,下一跳为10.1.2.2的优先级70,因此下一跳为10.1.1.2的加入路由表
RTA-RTB之间的链路故障时,10.1.1.2不可达,因此下一跳为10.1.1.2的路由失效,此时前往20.0.0.0/30的路由就只存在一条,该条路由将会被选入路由表。前往20.0.0.1的流量将会被转发到10.1.2.2
4.路由汇总
CIDR(无类别域间路由)采用IP地址加掩码长度来标识网络和子网,而不是按照传统的A、B、C等类型对网络地址进行划分
CIDR容许任意长度的掩码长度,将IP地址看成连续的地址空间,可以使用任意长度的前缀分配,多个连续的前缀可以聚合成一个网络,该特性可以有效的减少路由表条目数量
**路由汇总需求**
子网划分、VLSM解决了地址空间浪费的问题,但同时也带来了新的问题,路由表中的路由条目数量增加
为减少路由条目数量可以使用路由汇总
对于一个大规模的网络来说,路由器或其他具备路由功能的设备势必需要维护大量的路由表项,为了维护臃肿的路由表,这些设备就不得不耗费大量的资源。同时,由于路由表的规模变大,会导致路由器在查表转发时效率降低。因此在保证网络中的路由器到各网段都具备IP可达性的同时,需要减小设备的路由表规模。一个网络如果具备科学的IP编址,并且进行合理的规划,是可以利用多种手段减小设备路由表规模的。一个非常常见而又有效的办法就是使用路由汇总(Route Summarization)。路由汇总又被称为路由聚合(Route Aggregation),是将一组有规律的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由
**路由汇总简介**
RTA上为了能够前往远端地址,需要为每一个远端网段配置一条明细路由。去往10.1.1.0/24、10.1.2.0/24、10.1.3.0/24…拥有相同下一跳。将拥有相同下一跳,一组有规律的路由汇总成一条路由,这叫做路由汇总,路由汇总可以有效减少路由表项大小
**汇总计算**
基于一系列连续的、有规律的IP网段,如果需计算相应的汇总路由,且确保得出的汇总路由刚好“囊括”上述IP网段,则需确保汇总路由的掩码长度尽可能长
5.汇总引发的环路问题
**解决方案**
一般来说一条路由,无论是静态的或者是动态的,都需要关联到一个出接口,路由的出接口指的是设备要到达一个目的网络时的出站接口。路由的出接口可以是该设备的物理接口,例如百兆、千兆以太网接口,也可以是逻辑接口,例如VLAN接口(VLAN Interface),或者隧道(Tunnel)接口等。在众多类型的出接口中,有一种接口非常特殊,那就是Null(无效)接口,这种类型的接口只有一个编号,也就是0。Null0是一个系统保留的逻辑接口,当网络设备在转发某些数据包时,如果使用出接口为Null0的路由,那么这些报文将被直接丢弃,就像被扔进了一个黑洞里,因此出接口为Null0的路由又被称为黑洞路由
6.精确汇总
![image-20220210134926567](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210134926567.png)
![image-20220210134937514](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210134937514.png)
第二节:动态路由协议RIP
一:RIP 路由信息协议
它基于距离矢量算法的协议,使用跳数作为度量来衡量达到目的网络的距离
矢量:从源到目的,源只知道目的是谁
工作原理:设备之间互相发送request(路由更新请求)消息,收到request消息的设备将路由放到response(路由更新)中发送出去,当网络稳定后,RIP周期性发送response消息,周期为30s一次
1.RIP的报文格式
```shell
Command:指令/命令(1:request或2:response)
Version:版本 rip v1 和 rip v2
Address family identitier 地址族标识 固定取值ipv4
Ip address : ip地址 在request消息中不显示
Metric:固定取值16
```
RIP v1 以广播的形式发送response路由更新 255.255.255.255
RIP v2 以组播的形式发送response路由更新 224.0.0.9
RIP度量(Metric):度量等同于开销
RIP使用跳数作为度量值来衡量到达目的的网络
缺省的情况下,直连网络的路由条数为0,当路由器发送路由更新时,会把度量值加1,不能超过15跳
2.RIPv1和RIPv2的比较
V1:有类别路由协议,不支持VLSM和CIDR(无类别域间路由)
以广播的形式发送报文255.255.255.255
V2:无类别路由协议,支持VLSM,支持路由聚合与CIDR
支持以广播或者组播(224.0.0.9)方式发送报文
支持明文认证和MD5密文认证
3.V2的报文格式
Route Tag:路由标记 用来做路由策略使用
Subnet Mask:子网掩码
Next Hop: 下一跳
二:RIP基本配置
**R1:**
```shell
system view
Enter system view, return user view with Ctrl+Z.
[Huawei]
[Huawei]int g0/0/0 //进入接口
[Huawei-GigabitEthernet0/0/0]ip address 10.1.1.1 24 //配置IP地址
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip address 10.1.2.1 24
[Huawei-GigabitEthernet0/0/1]display ip interface brief //查看接口配置
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 3
The number of interface that is DOWN in Physical is 1
The number of interface that is UP in Protocol is 3
The number of interface that is DOWN in Protocol is 1
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.1.1.1/24 up up
GigabitEthernet0/0/1 10.1.2.1/24 up up
GigabitEthernet0/0/2 unassigned down down
NULL0 unassigned up up(s)
```
**R2:**
```shell
system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip address 10.1.2.2 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip address 10.1.3.1 24
[Huawei-GigabitEthernet0/0/1]display ip interface brief
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 3
The number of interface that is DOWN in Physical is 1
The number of interface that is UP in Protocol is 3
The number of interface that is DOWN in Protocol is 1
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.1.2.2/24 up up
GigabitEthernet0/0/1 10.1.3.1/24 up up
GigabitEthernet0/0/2 unassigned down down
NULL0 unassigned up up(s)
```
**R3:**
```shell
sys
Enter system view, return user view with Ctrl+Z.
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]ip add 10.1.3.2 24
[Huawei-GigabitEthernet0/0/0]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 10.1.4.1 24
[Huawei-GigabitEthernet0/0/1]display ip interface brief
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 3
The number of interface that is DOWN in Physical is 1
The number of interface that is UP in Protocol is 3
The number of interface that is DOWN in Protocol is 1
Interface IP Address/Mask Physical Protocol
GigabitEthernet0/0/0 10.1.3.2/24 up up
GigabitEthernet0/0/1 10.1.4.1/24 up up
GigabitEthernet0/0/2 unassigned down down
NULL0 unassigned up up(s)
```
1.结果
2.抓包
第三节:开放式最短路径优先OSPF
一:动态路由协议分类
1.距离矢量路由协议
运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并加载到自己的路由表中
对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远,这即是距离矢量算法的本质
2.链路状态路由协议—LSA泛洪
与巨鹿矢量路由协议不同,链路状态路由协议通告的是链路状态而不是路由表,运行链路状态路由协议的路由器之间是首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement 链路状态通告)
链路状态通告,可以简单的理解为每台路由器都产生一个描述自己直连接口状态(包括接口的开销、与邻居路由器之间的关系等)的通告
3.链路状态路由协议-LSDB组建
每台路由器都会产生LSAs,路由器将接收到的LSAs放入到自己的LSDB(链路状态数据库),路由器通过LSDB,掌握了全网的拓扑
4.链路状态路由协议—SPF计算
每台路由器基于LSDB,使用SPF(Shortest Path First 最短路径优先)算法进行计算,每台路由器都计算出一颗以自己为根的、无环的、拥有最短路径的“树”,有了这颗树,路由器就已经知道了到达网络各个角落的优选路径
SPF是OSPF路由协议的一个核心算法,用来在一个复杂的网络中做出路由优选的决策
5.链路状态路由协议—路由表生成
路由器将计算出来的优选路径,加载进自己的路由表
6.链路状态路由协议总结
**链路状态路由协议有四个步骤:**
第一步是建立相邻路由器之间的邻居关系
第二步是邻居之间交互链路状态信息和同步LSDB
第三步是进行优选路径计算
第四步是根据最短路径树生成路由表项加载到路由表
二:OSPF协议
1.OSPF简介
OSPF是IETF定义的一种基于链路状态的内部网关路由协议。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)
**OSPF有以下优点:**
基于SPF算法,以“累计链路开销”作为选路参考值
采用组播形式收发部分协议报文
支持区域划分
支持对等价路由进行负载分担
支持报文认证
**OSPF应用场景**
大型企业网络中通常部署OSPF实现各个楼宇的网络之间的路由可达
核心和汇聚层部署在OSPF骨干区域
接入和汇聚层部署在OSPF非骨干区域
注意:
接入层:接入层利用光纤、双绞线、同轴电缆、无线接入技术等传输介质,实现与用户连接,并进行业务和带宽的分配。接入层目的是允许终端用户连接到网络,因此接入层交换机具有低成本和高端口密度特性
汇聚层:汇聚层为接入层提供基于策略的连接,如地址合并,协议过滤,路由服务,认证管理等。通过网段划分实现与网络隔离,可以防止网络故障蔓延和影响到核心层。汇聚层同时也可以提供接入层虚拟网之间的互连,控制和限制接入层对核心层的访问,保证核心层的安全和稳定
核心层:核心层的功能主要是实现骨干网络之间的优化传输,核心层任务的重点通常是冗余能力、可靠性和高速的传输
2.OSPF基础术语
**Router ID**
Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数
Router ID选举规则如下:
手动配置OSPF路由器的Router ID(建议手动配置)
如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID
Router ID一旦选定,之后如果要更改的话就需要重启OSPF进程
在实际工程中,推荐手工指定OSPF路由设备的Router ID。首先规划出一个私有网段用于OSPF的Router ID选择,例如:192.168.1.0/24。在启用OSPF进程前在每个OSPF路由器上建立一个Loopback接口,使用一个32位掩码的私有地址作为其IP地址,这个32位的私有地址即作为该路由设备的Router ID。如果没有特殊要求,这个Loopback接口地址可以不发布在OSPF网络中
**区域**
OSPF Area用于标识一个OSPF的区域
区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识
OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(与IPv4地址的格式一样)呈现,例如Area0.0.0.1。为了简便起见,我们也会采用十进制的形式来表示
**度量值**
OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost = 100 Mbit/s ➗接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的
OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和
注意:
在实际应用中,推荐根据接口带宽大小手动配置Cost值,而不是修改OSPF参考带宽
3.OSPF三大表项
**邻居表**
OSPF有三张重要的表项,OSPF邻居表、LSDB和OSPF路由表。对于OSPF的邻居表,需要了解:
OSPF在传递链路状态信息之前,需先建立OSPF邻居关系
OSPF的邻居关系通过交互Hello报文建立
OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看
**LSDB**
LSDB会保存自己产生的及从邻居收到的LSA信息,本例中R1的LSDB包含了三条LSA
Type标识LSA的类型,AdvRouter标识发送LSA的路由器
使用命令行display ospf lsdb查看LSDB表
**OSPF路由表**
OSPF路由表和路由器路由表是两张不同的表。本例中OSPF路由表有三条路由
OSPF路由表包含Destination、Cost和NextHop等指导转发的信息
使用命令display ospf routing查看OSPF路由表
注意:
路由器路由表通常称为全局路由表,并非所有OSPF路由都可以放到路由器路由表
3.OSPF报文格式和类型
OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式
OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89
Version :对于当前所使用的OSPFv2,该字段的值为2
Router ID:表示生成此报文的路由器的Router ID
Area ID:表示此报文需要被通告到的区域
Type:类型字段
Packet length:表示整个OSPF报文的长度,单位是字节
Checksum:校验字段,其校验的范围是整个OSPF报文,包括OSPF报文头部
Auth Type:为0时表示不认证;为1时表示简单的明文密码认证;为2时表示加密(MD5)认证
Authentication:认证所需的信息。该字段的内容随AuType的值不同而不同
4.OSPF工作过程
**建立邻居关系**
OSPF使用Hello报文发现和建立邻居关系
在以太网链路上,缺省时,OSPF采用组播的形式发送Hello报文(目的地址224.0.0.5)
OSPF Hello报文中包含了路由器的Router ID、邻居列表等信息
注意:
R1和R2路由器相互发送Hello报文,第一个Hello报文包含的邻居列表为空
R2收到R1发送的Hello报文后,如果各项参数匹配,再次发送Hello报文时,将R1加入自己的邻居列表
在以太网链路上,通常以组播形式发送Hello报文
224.0.0.5的组播地址为OSPF设备的预留IP组播地址
224.0.0.6的组播地址为OSPF DR/BDR的预留IP组播地址
对于不支持组播的链路,OSPF支持采用单播的方式发送Hello报文
**Hello报文**
Hello报文的主要作用:
邻居发现:自动发现邻居路由器
邻居建立:完成Hello报文中的参数协商,建立邻居关系
邻居保持:通过周期性发送和接收,检测邻居运行状态
Network Mask:发送Hello报文的接口的网络掩码
HelloInterval:发送Hello报文的时间间隔。通常为10s
RouterDeadInterval:失效时间。如果在此时间内未收到邻居发来的Hello报文,则认为邻居失效。通常为40s
Neighbor:邻居,以Router ID标识
Options:
E:是否支持外部路由
MC:是否支持转发组播数据包
N/P:是否为NSSA区域
Router Priority:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举
Designated Router:DR的接口地址
Backup Designated Router:BDR的接口地址
**邻接关系建立**
DD报文部分字段解释:
I:当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0
M (More):当发送连续多个DD报文时,如果是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文
MS (Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master
DD sequence number:DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性
注意:
R1和R2的Router ID分别为10.0.1.1和10.0.2.2并且二者已建立了邻居关系。当R1的邻居状态变为ExStart后,R1会发送第一个DD报文。此报文中,M-bit设置为1,表示后续还有DD报文要发送,MS-bit设置为1,表示R1宣告自己为Master。DD序列号被随机设置为X,I-bit设置为1,表示这是第一个DD报文
同样当R2的邻居状态变为ExStart后,R2也会发送第一个DD报文。此报文中,DD序列号被随机设置为Y(I-bit=1,M-bit=1,MS-bit=1,含义同上)。由于R2的Router ID较大,所以R2将成为真正的Master。收到此报文后,R1会产生一个Negotiation-Done事件,并将邻居状态从ExStart变为Exchange
当R1的邻居状态变为Exchange后,R1会发送一个新的DD报文,此报文中包含了LSDB的摘要信息,序列号设置为R2在步骤2中使用的序列号Y,I-bit=0,表示这不是第一个DD报文,M-bit=0,表示这是最后一个包含LSDB摘要信息的DD报文,MS-bit=0,表示R1宣告自己为Slave。收到此报文后,R2将邻居状态从ExStart变为Exchange
当R2的邻居状态变为Exchange后,R2会发送一个新的DD报文,此报文包含了LSDB的摘要信息。DD序列号设置为Y+1, MS-bit=1,表示R2宣告自己为Master
虽然R1不需要发送新的包含LSDB摘要信息的DD报文,但是作为Slave,R1需要对Master发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为Y+1,该报文内容为空。发送完此报文后,RTA产生一个Exchange-Done事件,将邻居状态变为Loading。R2收到此报文后,会将邻居状态变为Full(假设R2的LSDB是最新最全的,不需要向R1请求更新)
**DD报文**
DD报文包含LSA头部信息,包括LS Type、LS ID、Advertising Router、LS Sequence Number、LS Checksum
Interface MTU:指示在不分片的情况下,此接口最大可发出的IP报文长度。在两个邻居发送DD报文中包含MTU参数,如果收到的DD报文中MTU和本端的MTU不相等,则丢弃该DD报文。缺省情况下,华为设备未开启MTU检查
Optinons:字段同Hello报文
R1开始向R2发送LSR报文,请求那些在Exchange状态下通过DD报文发现的、并且在本地LSDB中没有的链路状态信息
R2向R1发送LSU报文,LSU报文中包含了那些被请求的链路状态的详细信息。R1在完成LSU报文的接收之后,且没有其他待请求的LSA后,会将邻居状态从Loading变为Full
R1向R2发送LSAck报文,作为对LSU报文的确认
**DR与BDR的作用**
MA网络中的问题:
n×(n−1)/2个邻接关系,管理复杂
重复的LSA泛洪,造成资源浪费
解决方案:
在MA网络中选举DR:
DR(Designated Router,指定路由器)负责在MA网络建立和维护邻接关系并负责LSA的同步
DR与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息
为了规避单点故障风险,通过选举BDR(备份指定路由器) ,在DR失效时快速接管DR的工作
MA( Multiple Access,多路访问 )分为BMA( Broadcast Multi-Access,广播多路访问)和NBMA(Non-Broadcast Multiple Access,非广播多路访问)。以太网链路组成的网络是典型的BMA网络。帧中继链路通过逻辑上的划分组成典型的NBMA网络
DRother:既不是DR也不是BDR的路由器就是DRother路由器
**DR与BDR的选举规则**
DR/BDR的选举是非抢占式的
DR/BDR的选举是基于接口的
接口的DR优先级越大越优先
接口的DR优先级相等时,Router ID越大越优先
**广播链路或者NBMA链路上DR和BDR的选举过程如下:**
接口UP后,发送Hello报文,同时进入到Waiting状态。在Waiting状态下会有一个WaitingTimer,该计时器的长度与DeadTimer是一样的。默认值为40秒,用户不可自行调整
在WaitingTimer触发前,发送的Hello报文是没有DR和BDR字段的。在Waiting阶段,如果收到Hello报文中有DR和BDR,那么直接承认网络中的DR和BDR,而不会触发选举。直接离开Waiting状态,开始邻居同步
假设网络中已经存在一个DR和一个BDR,这时新加入网络中的路由器,不论它的Router ID或者DR优先级有多大,都会承认现网中已有的DR和BDR
当DR因为故障Down掉之后,BDR会继承DR的位置,剩下的优先级大于0的路由器会竞争成为新的BDR
只有当不同Router ID,或者配置不同DR优先级的路由器同时起来,在同一时刻进行DR选举才会应用DR选举规则产生DR
**不同网络类型中DR与BDR的选举操作**
P2MP:point-to-multipoint,点到多点
**OSPF状态机**
5.OSPF基本配置
![image-20220210151614195](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210151614195.png)
![image-20220210151623681](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210151623681.png)
6.OSPF配置举例
```shell
以R2为例:
[R2]ospf 1 router-id 10.0.2.2
[R2-ospf-1]area 0.0.0.0
[R2-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0] network 10.0.24.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0] network 10.0.35.2 0.0.0.0
```
注意:
**ospf发布network 192.168.1.1 0.0.0.0 和network 192.168.1.0 0.0.0.255区别**
开放不同
network 192.168.1.1 0.0.0.0:network 192.168.1.1 0.0.0.0指定向外部IP地址开放了192.168.1.1这个ip地址的路由。
network 192.168.1.0 0.0.0.255:network 192.168.1.0 0.0.0.255向外部IP地址开放了192.168.1.0这个ip地址里24位网段里的所有子地址的路由。
通信不同
network 192.168.1.1 0.0.0.0:其他ip地址的路由只能通过network 192.168.1.1 0.0.0.0和同一192.168.1这个ip地址进行通信。
network 192.168.1.0 0.0.0.255:其他ip地址的路由可以通过network 192.168.1.0 0.0.0.255能和同一192.168.1以下网段里的所有子地址之间进行通信。
**OSPF配置验证**
display ospf interface all可查看当前设备所有激活OSPF的接口信息:
时间参数,例如Hello报文发送间隔,死亡时间。
接口的链路类型、接口的MTU。
对于以太网链路,可查看DR的接口地址,DR的优先级。
```shell
[R2]display ospf interface all
OSPF Process 1 with Router ID 10.0.2.2
Area: 0.0.0.0
Interface: 10.0.12.2 (GigabitEthernet0/0/0)
Cost: 1 State: DR Type: Broadcast MTU: 1500 Priority: 1
Designated Router: 10.0.12.2
Backup Designated Router: 10.0.12.1
Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
Interface: 10.0.235.2 (GigabitEthernet0/0/1)
Cost: 1 State: DROther Type: Broadcast MTU: 1500 Priority: 1
Designated Router: 10.0.235.5
Backup Designated Router: 10.0.235.3
Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
Interface: 10.0.24.2 (Serial1/0/1) --> 10.0.24.4
Cost: 48 State: P-2-P Type: P2P MTU: 1500
Timers: HELLO 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
```
display ospf peer可查看当前设备的邻居状态:
邻居路由器的Router ID
邻居状态,例如FULL,TWO-WAY,DOWN等
```shell
display ospf peer
OSPF Process 1 with Router ID 10.0.2.2
Area 0.0.0.0 interface 10.0.12.2(GigabitEthernet0/0/0)'s neighbors
Router ID: 10.0.1.1 Address: 10.0.12.1
State: Full Mode:Nbr is Slave Priority: 1
DR: 10.0.12.2 BDR: 10.0.12.1 MTU: 0
Dead timer due in 28 sec
Retrans timer interval: 5
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
Area 0.0.0.0 interface 10.0.235.2(GigabitEthernet0/0/1)'s neighbors
Router ID: 10.0.3.3 Address: 10.0.235.3
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.235.5 BDR: 10.0.235.3 MTU: 0
Dead timer due in 30 sec
Retrans timer interval: 5
Neighbor is up for 00:01:31
Authentication Sequence: [ 0 ]
```
在P2P网络中不需要选举DR/BDR。因此在本例中,查看R2的OSPF邻居表时,会发现其Serial1/0/1接口的数据结构中DR/BDR字段为None
```shell
display ospf peer
OSPF Process 1 with Router ID 10.0.2.2
Area 0.0.0.0 interface 10.0.235.2(GigabitEthernet0/0/1)'s neighbors
Router ID: 10.0.5.5 Address: 10.0.235.5
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.235.5 BDR: 10.0.235.3 MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 0
Neighbor is up for 00:01:27
Authentication Sequence: [ 0 ]
Area 0.0.0.0 interface 10.0.24.2(Serial1/0/1)'s neighbors
Router ID: 10.0.4.4 Address: 10.0.24.4
State: Full Mode:Nbr is Master Priority: 1
DR: None BDR: None MTU: 0
Dead timer due in 35 sec
Retrans timer interval: 5
Neighbor is up for 00:01:56
Authentication Sequence: [ 0 ]
```
display ospf lsdb可查看当前设备的LSDB:
LSDB由多种类型的LSA构成,所有的LSA都有相同的报文头部格式,其中关键字段如Type、LinkState ID、AdvRouter等。下节课程将重点介绍LSA的详细信息
```shell
display ospf lsdb
OSPF Process 1 with Router ID 10.0.2.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.0.4.4 10.0.4.4 662 72 80000006 48
Router 10.0.2.2 10.0.2.2 625 72 8000000C 1
Router 10.0.1.1 10.0.1.1 638 60 80000007 1
Router 10.0.5.5 10.0.5.5 634 60 8000000B 1
Router 10.0.3.3 10.0.3.3 639 60 80000009 1
Network 10.0.235.5 10.0.5.5 634 36 80000005 0
Network 10.0.12.2 10.0.2.2 629 32 80000003 0
```
display ospf routing可查看当前设备的OSPF路由表:
从R2的OSPF路由表可看出,它已经通过OSPF获知到达全网的路由
```shell
display ospf routing
OSPF Process 1 with Router ID 10.0.2.2
Routing Tables
Destination Cost Type NextHop AdvRouter Area
10.0.12.0/24 1 Transit 10.0.12.2 10.0.2.2 0.0.0.0
10.0.24.0/24 48 Stub 10.0.24.2 10.0.2.2 0.0.0.0
10.0.235.0/24 1 Transit 10.0.235.2 10.0.2.2 0.0.0.0
10.0.13.0/24 49 Stub 10.0.12.1 10.0.1.1 0.0.0.0
10.0.13.0/24 49 Stub 10.0.235.3 10.0.3.3 0.0.0.0
10.0.45.0/24 49 Stub 10.0.235.5 10.0.5.5 0.0.0.0
```
第四节:OSPF路由计算
一:区域内路由计算
1.LSA概述
**LSA的基本概念**
LSA是OSPF进行路由计算的关键依据
OSPF的LSU报文可以携带多种不同类型的LSA
各种类型的LSA拥有相同的报文头部
链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA
链路状态老化时间 、链路状态序列号 、校验和用于判断LSA的新旧
LS Age(链路状态老化时间):此字段表示LSA已经生存的时间,单位是秒
Options(可选项):每一个bit都对应了OSPF所支持的某种特性
LS Type(链路状态类型):指示本LSA的类型
Link State ID(链路状态ID):不同的LSA,对该字段的定义不同
Advertising Router(通告路由器):产生该LSA的路由器的Router ID
LS Sequence Number(链路状态序列号):当LSA每次有新的实例产生时,序列号就会增加
LS Checksum(校验和):用于保证数据的完整性和准确性
Length:是一个包含LSA头部在内的LSA的总长度值
注意:
LS Age:当LSA被始发时,该字段为0,随着LSA在网络中被泛洪,该时间逐渐累加,当到达MaxAge(缺省值为3600s)时,LSA不再用于路由计算
LS Sequence Number:该字段用于判断LSA的新旧或是否存在重复的实例。序列号范围是0x80000001-0x7FFFFFFF,路由器始发一个LSA,序列号为0x80000001,之后每次更新序列号加1,当LSA达到最大序列号时,重新产生该LSA,并且把序列号设置为0x80000001
2.常见LSA的类型
| **类型** | **名称** | **描述** |
| -------- | ---------------------------------- | ------------------------------------------------------------ |
| 1 | 路由器LSA(Router LSA) | 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪 |
| 2 | 网络LSA(Network LSA) | 由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己。该LSA只能在接口所属区域内泛洪 |
| 3 | 网络汇总LSA(Network Summary LSA) | 由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递 |
| 4 | ASBR汇总LSA(ASBR Summary LSA) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 |
| 5 | AS外部LSA(AS External LSA) | 由ASBR产生,用于描述到达OSPF域外的路由 |
| 7 | 非完全末梢区域LSA(NSSA LSA) | 由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0 |
3.Router LSA
Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息
Router LSA只能在所属的区域内泛洪
V (Virtual Link ) :如果产生此LSA的路由器是虚连接的端点,则置为1
E (External ): 如果产生此LSA的路由器是ASBR,则置为1
B (Border ):如果产生此LSA的路由器是ABR,则置为1
links :LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息
**详解**
Router LSA使用Link来承载路由器直连接口的信息
每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息
路由器可能会采用一个或者多个Link来描述某个接口
**Router LSA描述P2P网络**
```shell
display ospf lsdb router self-originate
Type : Router
Ls id : 10.0.1.1
Adv rtr : 10.0.1.1
* Link ID: 10.0.3.3
Data : 10.0.13.1
Link Type: P-2-P
Metric : 48
* Link ID: 10.0.13.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 48
Priority : Low
```
**Router LSA描述TransNet**
4.Network LSA
Network LSA(2类LSA) :由DR产生,描述本网段的链路状态,在所属的区域内传播
Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码
Link State ID :DR的接口IP地址
Network Mask:MA网络的子网掩码
Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述
**Network LSA描述MA网络**
二:区域间路由计算
1.大型网络中,单区域OSPF存在的问题
一系列连续的OSPF路由器构成的网络称为OSPF域(Domain)
OSPF要求网络内的路由器同步LSDB,实现对于网络的一致认知
当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗
当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算
单区域的设计,使得OSPF无法部署路由汇总
2.区域划分
Router LSA和Network LSA只在区域内泛洪,因此通过区域划分在一定程度上降低网络设备的内存及CPU的消耗
**划分区域后,路由器可以分为两种角色:**
区域内部路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。如R1、R4、R5
区域边界路由器(Area Border Router):该类设备接口分别连接两个及两个以上的不同区域。如R2、R3
**区域间路由信息传递**
OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的
以192.168.1.0/24路由信息为例:
R2依据Area 1内所泛洪的Router LSA及Network LSA计算得出192.168.1.0/24路由(区域内路由),并将该路由通过Network Summary LSA通告到Area 0。R3根据该LSA可计算出到达192.168.1.0/24的区域间路由
R3重新生成一份Network Summary LSA通告到Area 2中,至此所有OSPF区域都能学习到去往192.168.1.0/24的路由
**Network Summary LSA**
Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由
LS Type:取值3,代表Network Summary LSA
Link State ID:路由的目的网络地址
Advertising Router:生成LSA的Router ID
Network Mask:路由的网络掩码
metric:到目的地址的路由开销
**Network Summary LSA示例**
此LSA是R2产生的,用于向Area0通告到达192.168.1.0/24的区域间路由
```SHELL
display ospf lsdb summary 192.168.1.0
OSPF Process 1 with Router ID 10.0.2.2
Area: 0.0.0.0
Link State Database
Type : Sum-Net
Ls id : 192.168.1.0
Adv rtr : 10.0.2.2
Ls age : 86
Len : 28
Options : E
seq# : 80000001
chksum : 0x7c6d
Net mask : 255.255.255.0
Tos0 metric: 1
Priority : Low
```
**R1和R3的路由计算**
通过区域内SPF的计算,R1到达R2的Cost值为1,R3到达R2的Cost值为2
R1和R3根据收到的Network Summary LSA进行路由计算
R1将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R1到达192.168.1.0/24的Cost值为2
R3将到达R2和Cost值和Network Summary LSA所携带的Cost值相加,因此R3到达192.168.1.0/24的Cost值为3
**R5的路由计算**
R3作为ABR,它通过Area 0内泛洪的Network Summary LSA计算出到达192.168.1.0/24的路由,然后重新向Area 2注入到达该网段的Network Summary LSA,其中包含自己到达该网段的Cost(值为3)
R5在SPF中计算得知到达R3的Cost为1,因此R5到达192.168.1.0/24的Cost为4
**区域间路由计算结果验证**
**区域间路由的防环机制**
OSPF要求所有的非骨干区域必须与Area0直接相连,区域间路由需经由Area0中转
区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑
注意:
OSPF要求ABR设备至少有一个接口属于骨干区域
ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域
**虚连接的作用及配置**
OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续
虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域
```shell
[R2-ospf-1]ospf 1
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]vlink-peer 10.0.3.3
[R3-ospf-1]ospf 1
[R3-ospf-1]area 1
[R3-ospf-1-area-0.0.0.1]vlink-peer 10.0.2.2
```
三:外部路由计算
1.OSPF外部路由引入背景
网络中存在部分链路未开启OSPF协议如:
路由器连接外部网络使用静态路由或者BGP协议
服务器直连的链路未开启OSPF协议
2.外部路由引入的基本概念
ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR
ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪
```shell
在OSPF进程下,通过如下命令引入外部路由。设备支持引入BGP、ISIS、OSPF、直连以及静态路由。
import-route { limit limit-number | { bgp [ permit-ibgp ] | direct | unr | rip [ process-id-rip ] | static | isis [ process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tag tag | route-policy route-policy-name ] * }
```
**AS-external LSA详解**
AS-external LSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域)
LS Type:取值5,代表AS-external-LSA
Link State ID:外部路由的目的网络地址
Advertising Router:生成该LSA的Router ID
Network Mask:网络掩码
E :该外部路由所使用的度量值类型
0:度量值类型为Metric-Type-1
1:度量值类型为Metric-Type-2
metric:到目的网络的路由开销
Forwarding Address(FA):到所通告的目的地址的报文将被转发到这个地址
**AS-external LSA示例**
R1与服务器直连的网段为192.168.1.0/24,在R1上将直连路由引入OSPF,此时R1会向OSPF注入用于描述192.168.1.0/24路由的AS-external-LSA,该LSA将在整个OSPF域内泛洪
```shell
display ospf lsdb ase self-originate
OSPF Process 1 with Router ID 10.0.1.1
Link State Database
Type : External
Ls id : 192.168.1.0
Adv rtr : 10.0.1.1
Ls age : 1340
Len : 36
Options : E
seq# : 80000004
chksum : 0xb5cc
Net mask : 255.255.255.0
TOS 0 Metric: 1
E type : 2
Forwarding Address : 0.0.0.0
Tag : 1
Priority : Low
```
**ASBR-Summary LSA**
ASBR-Summary LSA(4类LSA):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区
LS Type:取值4,代表ASBR-Summary LSA
Link State ID :ASBR的Router ID
Advertising Router:生成LSA的Router ID
Network Mask:仅保留,无意义
metric:到目的地址的路由开销
**ASBR-Summary LSA示例**
以R3向Area 2通告的ASBR-Summary LSA为例
```shell
display ospf lsdb asbr self-originate
Area: 0.0.0.2
Link State Database
Type : Sum-Asbr
Ls id : 10.0.1.1 //ASBR的Router ID
Adv rtr : 10.0.3.3
Ls age : 15
Len : 28
Options : E
seq# : 80000005
chksum : 0xf456
Tos 0 metric: 1 //R3到达ASBR的开销
```
3.区分OSPF外部路由的2种度量值类型
**Metric-Type-1**
当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信程度较高,将其配置成Metric-Type-1
Metric-Type-1外部路由的开销为AS内部开销(路由器到ASBR的开销)与AS外部开销之和
**Metric-Type-2**
当ASBR到AS之外的开销远远大于在AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Metric-Type-2
Metric-Type-2外部路由的开销等于AS外部开销
| **Type** | **描述** | **开销计算** |
| ---------------------- | -------------------------------------- | --------------------- |
| Metric-Type-1 | 可信程度高 | AS内部开销+AS外部开销 |
| Metric-Type-2 (缺省) | 可信程度低,AS外部开销远大于AS内部开销 | AS外部开销 |
4.OSPF多区域项目实战
第五节:OSPF特殊区域及其他特性
一:Stub区域和Totally Stub区域
1.网络规模变大引发的问题
OSPF路由器计算区域内、区域间、外部路由都需要依靠网络中的LSA,当网络规模变大时,设备的LSDB规模也变大,设备的路由计算变得更加吃力,造成设备性能浪费
2.传输区域和末端区域
传输区域(Transit Area):除了承载本区域发起的流量和访问本区域的流量外,还承载了源IP和目的IP都不属于本区域的流量,即“穿越型流量”,如本例中的Area 0
末端区域(Stub Area):只承载本区域发起的流量和访问本区域的流量,如本例中的Area 1和Area 2
3.Stub区域
Stub区域的ABR不向Stub区域内传播它接收到的AS外部路由,Stub区域中路由器的LSDB、路由表规模都会大大减小
为保证Stub区域能够到达AS外部,Stub区域的ABR将生成一条缺省路由(使用3类LSA描述)
**配置Stub区域时需要注意下列几点:**
骨干区域不能被配置为Stub区域
Stub区域中的所有路由器都必须将该区域配置为Stub
Stub区域内不能引入也不接收AS外部路由
虚连接不能穿越Stub区域
**Stub区域的路由表及3类LSA**
```shell
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 2
[R3-ospf-1-area-0.0.0.2]stub
R5相同
```
R1作为ASBR引入多个外部网段,如果Area 2是普通区域,则R3将向该区域注入5类和4类LSA
**当把Area 2配置为Stub区域后:**
R3不会将5类LSA和4类LSA注入Area 2
R3向Area 2发送用于描述缺省路由的3类LSA,Area 2内的路由器虽然不知道到达AS外部的具体路由,但是可以通过该默认路由到达AS外部
```shell
display ospf lsdb
OSPF Process 1 with Router ID 10.0.5.5
Link State Database
Area: 0.0.0.2
Type LinkState ID AdvRouter Metric
Sum-Net 0.0.0.0 10.0.3.3 1
Sum-Net 10.0.13.0 10.0.3.3 1
Sum-Net 10.0.24.0 10.0.3.3 3
Sum-Net 10.0.12.0 10.0.3.3 2
不存在4、5类LSA,但描述区域间路由的3类LSA仍然存在
```
```shell
display ospf routing
OSPF Process 1 with Router ID 10.0.5.5
Routing Tables
Routing for Network
Destination Cost Type NextHop AdvRouter Area
10.0.35.0/24 1 Transit 10.0.35.5 10.0.5.5 0.0.0.2
0.0.0.0/0 2 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2
10.0.12.0/24 3 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2
10.0.13.0/24 2 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2
10.0.24.0/24 4 Inter-area 10.0.35.3 10.0.3.3 0.0.0.2
```
4.Totally Stub区域
Totally Stub区域既不允许AS外部路由在本区域内传播,也不允许区域间路由在本区域内传播
Totally Stub区域内的路由器通过本区域ABR下发的缺省路由(使用3类LSA描述)到达其他区域,以及AS外部
**配置Totally Stub区域时需要注意:**
与Stub区域配置的区别在于,在ABR上需要追加no-summary关键字
Totally Stub区域访问其他区域及AS外部是通过默认路由实现的
AS外部、其他OSPF区域的拓扑及路由变化不会导致Totally Stub区域内的路由器进行路由重计算,减少了设备性能浪费
```shell
[R3-ospf-1-area-0.0.0.2]stub no-summary
[R5-ospf-1-area-0.0.0.2]stub
```
```shell
display ospf lsdb
OSPF Process 1 with Router ID 10.0.5.5
Link State Database
Area: 0.0.0.2
Type LinkState ID AdvRouter Metric
Sum-Net 0.0.0.0 10.0.3.3 1
```
**当Area 2配置为Totally Stub区域后:**
R3不会将5类LSA和4类LSA注入Area 2
R3不会将3类LSA注入Area 2,但是会向该区域注入一条使用3类LSA描述的缺省路由
R5通过缺省路由到达AS外部网络和其他OSPF区域
**注意:**
Stub区域、Totally Stub区域解决了末端区域维护过大LSDB带来的问题,但对于某些特定场景,它们并不是最佳解决方案
二:NSSA区域和Totally NSSA区域
1.Stub区域与Totally Stub区域存在的问题
OSPF规定Stub区域是不能引入外部路由的,这样可以避免大量外部路由引入造成设备资源消耗
对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub和Totally Stub区域就不能满足需求了
2.NSSA区域与Totally NSSA区域
NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域引入的外部路由
Totally NSSA与NSSA区域的配置区别在于前者在ABR上需要追加no-summary关键字
**NSSA区域能够引入外部路由,同时又不会学习来自OSPF网络其它区域的外部路由**
7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述NSSA区域引入的外部路由信息。NSSA区域的ASBR将外部路由引入该区域后,使用7类LSA描述这些路由
7类LSA的扩散范围仅限于始发NSSA区域,7类LSA不会被注入到普通区域
NSSA区域的ABR会将7类LSA转化为5类LSA,并将该LSA注入到骨干区域,从而在整个OSPF域内泛洪
NSSA区域的ABR会阻挡其他区域引入的外部路由引入本区域,即NSSA区域内不会存在4类及5类LSA,为了让NSSA区域内的路由器能够通过骨干区域到达AS外部,NSSA区域的ABR会自动向该区域注入一条缺省路由,该路由采用7类LSA描述
3.NSSA区域与Totally NSSA区域的LSDB
![image-20220210223227300](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210223227300.png)
![image-20220210223242584](%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9A%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1%E6%8A%80%E6%9C%AF.assets/image-20220210223242584.png)
```shell
[R3-ospf-1-area-0.0.0.2]nssa
[R5-ospf-1-area-0.0.0.2]nssa
[R5-ospf-1]import-route direct
```
场景1(将Area 2配置为NSSA区域):当R5将外部路由192.168.3.0/24引入NSSA区域时,R5作为ASBR生成7类LSA在Area 2内泛洪;R3生成使用7类LSA描述的缺省路由注入Area 2,Area 2内的路由器依然会收到R3注入的3类LSA,并计算出到达其他区域的区域间路由
场景2(将Area2配置为Totally NSSA区域):Totally NSSA区域和NSSA区域类似,只是Totally NSSA区域的ABR会阻挡3类LSA进入该区域,因此在场景2中,R3不会将区域间路由注入Area 2,故而在R5的LSDB中,仅会看到一条描述缺省路由的3类LSA
4.OSPF LSA回顾
| **类型** | **名称** | **描述** |
| -------- | ---------------------------------- | ------------------------------------------------------------ |
| 1 | 路由器LSA(Router LSA) | 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪 |
| 2 | 网络LSA(Network LSA) | 由DR产生,描述该DR所接入的MA网络中所有与之形成邻接关系的路由器,以及DR自己。该LSA只能在接口所属区域内泛洪 |
| 3 | 网络汇总LSA(Network Summary LSA) | 由ABR产生,描述区域内某个网段的路由,该类LSA主要用于区域间路由的传递 |
| 4 | ASBR汇总LSA(ASBR Summary LSA) | 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。 |
| 5 | AS外部LSA(AS External LSA) | 由ASBR产生,用于描述到达OSPF域外的路由 |
| 7 | 非完全末梢区域LSA(NSSA LSA) | 由ASBR产生,用于描述到达OSPF域外的路由。NSSA LSA与AS外部LSA功能类似,但是泛洪范围不同。NSSA LSA只能在始发的NSSA内泛洪,并且不能直接进入Area0。NSSA的ABR会将7类LSA转换成5类LSA注入到Area0 |
特殊区域的使用减小了设备的LSDB规模,从而减少设备性能浪费,且一定程度上也缩小了网络故障的影响范围
5.路由器对LSA的处理原则
如果收到的LSA本地没有,则更新LSDB并泛洪该LSA
如果本地LSDB已存在该LSA,但是收到的更新,则更新LSDB并泛洪该LSA
如果收到的LSA和LSDB中相同,则忽略,并终止泛洪
如果收到的LSA损坏,例如Checksum错误,则不接收该LSA
三:区域间路由汇总和外部路由汇总
1.在ABR执行路由汇总
路由汇总又被称为路由聚合,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由
**OSPF路由汇总的类型:**
在ABR(**区域边界路由器**)执行路由汇总:对区域间的路由执行路由汇总
在ASBR(**自治系统边界路由器**)执行路由汇总:对引入的外部路由执行路由汇总
**注意:**
区域边界路由器ABR(Area Border Routers):
该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域(area 0)
ABR用来连接骨干区域和非骨干区域,可以是实际连接,也可以是虚连接
骨干路由器(Backbong Routers)
该类路由器属于骨干区域(area 0)。只维护骨干区域的LSDB
OSPF中,所有非骨干区域之间的信息都要通过骨干区域进行中转
因此,所有的ABR和位于Area0的内部路由器都是骨干路由器
自治系统边界路由器ASBR(AS Boundary Routers)
与其他AS交换路由信息的路由器称为ASBR。 使用了多种路由协议
只要一台OSPF路由器引入了外部路由的信息,他就称为了ASBR
它有可能是ABR,区域路由器,不一定位于AS边界
**汇总前:**
```
display ospf lsdb
area 0
Type LinkState ID AdvRouter
Sum-Net 172.16.0.0 10.0.2.2
Sum-Net 172.16.1.0 10.0.2.2
Sum-Net 172.16.2.0 10.0.2.2
Sum-Net 172.16.3.0 10.0.2.2
Sum-Net 172.16.4.0 10.0.2.2
Sum-Net 172.16.5.0 10.0.2.2
Sum-Net 172.16.6.0
```
**汇总后:**
```
display ospf lsdb
area 0
Type LinkState ID AdvRouter
Sum-Net 172.16.0.0 10.0.2.2
```
**注意:**
执行路由汇总后,ABR R2只向Area 0通告汇总路由172.16.0.0/21
明细路由对应的网段如果产生翻动(Up/Down),该拓扑变更造成的影响将被限制在Area 1内
2.在ASBR执行路由汇总
在ASBR配置路由汇总后,ASBR将对自己所引入的外部路由进行汇总
NSSA区域的ASBR也可以对引入NSSA区域的外部路由进行汇总
在NSSA区域中,ABR执行7类LSA转化成5类LSA动作,此时它也是ASBR。若配置路由汇总,则对由7类LSA转化成的5类LSA进行汇总
四:OSPF协议特性
1.Silent-Interface
通过Silent-Interface的配置,增强OSPF的组网适应能力,减少系统资源的消耗
**Silent-Interface有以下特性:**
Silent-Interface不会接收和发送OSPF报文
Silent-Interface的直连路由仍可以发布出去
```shell
display ospf interface GigabitEthernet 0/0/1
OSPF Process 1 with Router ID 10.0.1.1
Interface: 10.0.13.1 (GigabitEthernet0/0/1)
Cost: 1 State: Waiting Type: Broadcast MTU: 1500
Priority: 1
Designated Router: 0.0.0.0
Backup Designated Router: 0.0.0.0
Timers: Hello 10 , Dead 40 , Poll 120 , Retransmit 5 , Transmit Delay 1
Silent interface, No hellos
```
**注意:**
R1的GE0/0/1接口在OSPF network命令的网段范围内
到达该接口的路由将被通告到OSPF,使得其他设备能够访问Server
由于该接口上未连接任何其他OSPF路由器,因此管理员将该接口配置为Silent-Interface,该接口将不再收发Hello报文,从而避免了对Server的性能降低
2.OSPF报文认证
OSPF支持报文认证功能,只有通过认证的OSPF报文才能被接收
**路由器支持两种OSPF报文认证方式,当两种认证方式都存在时,优先使用接口认证方式:**
区域认证方式:一个OSPF区域中所有的路由器在该区域下的认证模式和口令必须一致
接口认证方式:相邻路由器直连接口下的认证模式和口令必须一致
```shell
[R2]interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher Huawei
```
```shell
[R2]ospf
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]authentication-mode simple cipher Huawei
```
**区域视图下,配置OSPF区域的认证模式**
执行命令authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF区域的认证模式
plain表示明文口令类型
cipher表示密文口令类型。对于MD5/HMAC-MD5认证模式,当此参数缺省时,默认为cipher类型
配置接口认证方式。
执行命令ospf authentication-mode simple [ plain plain-text | [ cipher ] cipher-text ],配置OSPF接口的认证模式