本帖最后由 深信服认证 于 2023-1-4 14:23 编辑
深信服教学教研中心推出的“SCSA-S学习导图+”系列文章,结合初学者需求以及考试难点易错点,重视实用性、可读性,一经发布,收获一致好评;为此,围绕深信服安全技术认证A级(SCSA-T)需要掌握的知识点,我们开启全新系列,更好地帮助大家自主学习和提升,顺利获得证书,掌握新技能,把握新机遇,提升就业竞争力。
本期引言:路由技术是网络环境中,为不同的节点传输数据提供传输路径的技术,企业网络的拓扑一般会比较复杂,不同的部门或者总部和分支可能处于不同的网段中,此时就需要使用路由协议来连接不同的网段,实现数据的转发,所以路由协议为不同网段之间的互连起到了至关重要的作用,那本文主要讲解到的是路由协议中的OSPF路由协议。
什么是OSPF路由协议
OSPF(Open Shortest Path Fist)开放式最短路径优先是一种基于链路状态的路由协议,隶属于内部网关协议(IGP),其内部采用SPF算法来计算和收敛路由,OSPF一共分为两个版本:OSPFv2,主要适用于IPv4网络环境;OSPFV3,主要适用于IPV6网络环境。该协议主要用于中大型及大型网络环境中,其工作原理和配置过程比较复杂。 OSPF的基本知识
2.1、OSPF区域化的结构
OSPF为了适应大型的网络环境,在自治系统AS内划分了多个区域,每个OSPF路由器维护所在区域内完整的链路状态信息,区域ID可以表示为一个十进制的数字也可以表示为一个IP。其区域分类可以分为骨干区域Area0以及非骨干区域,非骨干区域可以再次细分为正常非骨干区域,末节区域以及完全末节区域。在这里我们只关注骨干区域和正常非骨干区域即可。如下图2-1所示区域划概况:
2.2、OSPF的路由器类型
OSPF路由器的类型决定了什么样的数据流能够进入和离开区域,以上图2-1为例,我们可以将路由器的类型分为以下几类:
路由器类型 | 运行范围 | 内部路由器IR | 只运行在OSPF内部非骨干区域,形如R1 | 骨干路由器BR | 只运行在OSPF骨干区域,形如R3 | 区域边界路由器ABR | 运行在OSPF骨干区域和非骨干区域,形如R2 | 自治系统边界路由器ASBR | 运行多种路由协议且有外部路由协议路由重分发到OSPF域内,形如R4 |
2.3、DR与BDR的概念及作用
在网络中我们选举DR和BDR的目的是为了让DR产生特定的链路状态信息以及简化网络结构,选举规则为:先比较接口优先级,越大越优先。优先级相同,比较RID,越大越优先。
类型 | 作用 | DR(Designate router) | 指定路由器,其负责在MA网络建立和维护邻接关系并负责LSA的同步 | BDR(Backup Disignate router) | 备用指定路由器,当DR出现故障时,BDR能够迅速替代DR的角色 | DR other(Designate router other) | 其余非DR/BDR路由器 |
注意:LSA即链路状态通告,是一种描述OSPF路由器或者网络状态的数据单元,由于在OSPF中有很多种类,比较复杂,本文中不会展开描述。
2.4、OSPF支持的网络类型
OSPF支持的网络类型是指能够支持的二层网络类型,一般有以下几种: 支持的网络类型 | 别名 | 广播网络 | Broadcast网络 | 非广播多路访问网络 | NBMA网络 | 点到点网络 | P2P网络 | 点到多点网络 | P2MP网络 |
注意:只有Broadcast网络和NBMA网络会选举指定路由器DR和备份指定路由器BDR。
2.5、OSPF的五种协议报文
OSPF的协议报文封装在IP报文内部,协议号是89,以下是五种报文的名称及作用: 类型 | 功能 | Hello包 | 用于发现和维持邻居关系,选举DR和BDR | 数据库描述包DBD | 用于向邻居发送摘要信息以同步链路状态数据库 | 链路请求包LSR | 在路由器收到包含新信息的DBD后发送,用于请求更详细的信息 | 链路状态更新包LSU | 收到LSR后,发送链路状态通告LSA,一个LSU数据包可能包含几个LSA | 链路状态确认包LSAck | 确认已经收到DBD/LSU,每个LSA需要被分别确认 |
2.6、邻居和邻接关系
在OSPF中邻居关系就是在两台路由器中进行完两次Hello报文交互之后,建立起来的关系叫邻居关系。邻接关系是指在两台路由器中进行完链路状态数据库(LSDB)同步之后,建立起来的关系叫邻居关系。以下是网络类型与邻居/邻接关系的对应表:
网络类型 | 是否和邻居建立邻接关系 | P2P | 是 | Broadcast | DR和BDR/DR other建立邻接关系;BDR和DR/DR other建立邻居接关系;DR other之间只建立邻居关系 | NBMA | P2MP | 是 |
3.1、配置拓扑结构及IP地址如下图3-1所示: 3.2、网络地址及OSPF(进程号为10)区域规划如下: 设备名称 | 接口名称 | IP地址 | 用途 | 所属OSPF区域 | R1 | GE0/0/0 | 10.1.12.1/24 | 互联地址 | Area 1 | Loopback 0 | 1.1.1.1/32 | Route-id | Loopback 1 | 192.168.10.1/24 | 模拟业务网段A | R2 | GE0/0/0 | 10.1.12.2/24 | 互联地址 | Area1 | GE0/0/1 | 10.1.23.1/24 | 互联地址 | Area0 | Loopback 0 | 2.2.2.2/32 | Route-id | R3 | GE0/0/0 | 10.1.23.2/24 | 互联地址 | Loopback 0 | 3.3.3.3/32 | Route-id | Loopback 1 | 192.168.20.1/24 | 模拟业务网段B |
注意:Route-id是OSPF区域内,唯一标示路由器的IP地址,Route-id的选举方法:选取路由器上Loopback数字最高的IP地址作为Route-id,如果没有Loopback,则选取在物理接口中地址数字最高的IP地址作为Route-id。
3.3、涉及配置命令 R1设备OSPF配置如下: [R1]ospf 10 router-id 1.1.1.1 [R1-ospf-10]area 1 [R1-ospf-10-area-0.0.0.1]network 1.1.1.1 0.0.0.0 [R1-ospf-10-area-0.0.0.1]network 192.168.10.1 0.0.0.0 [R1-ospf-10-area-0.0.0.1]network 10.1.12.1 0.0.0.0 [R1-ospf-10-area-0.0.0.1]quit
R2设备OSPF配置如下: [R2]ospf 10 router-id 2.2.2.2 [R2-ospf-10]area 1 [R2-ospf-10-area-0.0.0.1]network 10.1.12.2 0.0.0.0 [R2-ospf-10-area-0.0.0.1]area 0 [R2-ospf-10-area-0.0.0.0]network 2.2.2.2 0.0.0.0 [R2-ospf-10-area-0.0.0.0]network 10.1.23.1 0.0.0.0 [R2-ospf-10-area-0.0.0.0]quit
R3设备OSPF配置如下: [R3]ospf 10 router-id 3.3.3.3 [R3-ospf-10]area 0 [R3-ospf-10-area-0.0.0.0]network 3.3.3.3 0.0.0.0 [R3-ospf-10-area-0.0.0.0]network 192.168.20.1 0.0.0.0 [R3-ospf-10-area-0.0.0.0]network 10.1.23.2 0.0.0.0 [R3-ospf-10-area-0.0.0.0]quit
3.4、检查配置结果 3.41、在R1设备上可以看到通过OSPF协议学来的不同网段的路由。
3.42、在R1设备上使用Ping命令Ping通R3设备的业务网段。
3.43、在R3设备上可以看到通过OSPF协议学来的不同网段的路由。
3.44、在R3设备上使用Ping命令Ping通R1设备的业务网段。
3.5、综上所述 我们已经通过OSPF路由协议互联了不同的网段,那假设我们R1与R3之间的网段如果ping无法通信的话,那我们也可以做一个简单的排查,我们要知道如果两个主机要通信则需要发送相应的数据包,所以相应节点的路由器就需要对应的路由,那么路由器之间就需要有邻居/邻接关系,那么影响OSPF建立邻居关系的因素有: 当我们看到邻接关系已经建立,仍然还是无法学到对方的路由,我们可以从网段是否宣告正确,相应的IP地址是否配置错误等等。
4、OSPF邻居和邻接关系的分析过程 接下来我们将通过上面的实验案例,来分析R1和R2设备之间的邻居关系/邻接关系以及链路状态信息的传递过程。(因为报文是多次交互的过程,所以在分析时截图不一定全部完整)
4.1、Hello报文的交互 4.11、假设R1先向R2发送Hello报文建立邻居关系,Hello报文目的地址为组播地址:224.0.0.5,因为这个这是第一个报文,DR和BDR字段都为空,所以也没有任何邻居路由器的信息。
4.12、路由器R2也会向R1发送Hello报文,由于R2的接口收到了R1发送的Hello报文,R2会将R1设置为它的邻居,故R1设备收到R2发送的Hello报文中,邻居列表为1.1.1.1。R2也是同理,则R1和R2设备都能在邻居列表中看到对方的Router id,邻居关系建立成功。
4.2、数据库描述报文的交互 4.21、假设R1设备发送了第一个DBD报文(I/M/MS位都置位),选举主从,其序列号为646。
4.22、R2也发送第一个DBD报文,选举主从,其序列号为:661。然后比较两个路由器的ID值,发现R2比较大,所以后续交互报文中使用主路由器R2的序列号。
4.23、主从协商完毕后,开始发送DBD报文,并且携带LSA(链路状态通告)的摘要信息,并且使用R2主路由器的序列号,当M=0时,说明报文发送完成。
4.3、LSR请求报文的交互 4.31、以R1设备为例,在接收到R2设备的DBD报文之后,会发送LSR报文请求具体信息。
4.4、LSU更新报文的交互 4.41、当R2设备收到R1的LSR之后,将会发送LSU报文给R1,里面携带详细的链路信息。
4.5、LSACK确认报文的交互 4.51、最终路由器R1确认收到R2的LSU之后就会发出LSACK报文予以确认。
至此,简单的报文交互过程完毕,其他报文交互过程不再赘述。
总结:本文从路由技术的概念出发,以OSPF路由协议为主,简要的介绍了OSPF的基本知识和多区域互联案例,以Wireshark软件为基础抓取OSPF的交互报文,分析其交互过程,能够帮助我们更好的理解OSPF的工作原理,在实际工作中,OSPF常常也会被用在运营商侧的底层互联协议,上层可能还会运行BGP和MPLS协议来实现路由的传递和网络的通信,这些内容还需要我们好好的学习。
练习题:【扩展】根据下图所示搭建OSPF的多区域环境,思考R1和R4之间之间能否传递相应的路由,如果不能,请说出原因并思考能够传递路由的解决方案。
本文作者:熊亮,深信服云计算认证专家,产业教育中心资深讲师,持有SCCE-C、CCSSP、CCSK、HCIE-Cloud Computing、HCIE-Datacom等多项技能证书,擅长企业级网络规划、云计算解决方案规划、云计算架构设计、私有云部署与管理,云灾备、云安全等技术方向;曾负责并参与金融、医疗及政企行业企业级云网络架构设计、私有云架构设计、企业级云迁移、云灾备等方案的规划与实施;并且作为特聘讲师多次为中国商务部援外研修班、央企、大中型企业、高校进行授课,研究方向为云计算架构深度解析、私有云架构设计、分布式存储架构实践、MPLS VPN骨干网络架构设计等技术领域,具有丰富的云计算一线实战经验以及技术转化和输出能力。 |