本期引言:
路由技术是网络环境中,为不同的节点传输数据提供传输路径的技术,企业网络的拓扑一般会比较复杂,不同的部门或者总部和分支可能处于不同的网段中,此时就需要使用路由协议来连接不同的网段,实现数据的转发,所以路由协议为不同网段之间的互连起到了至关重要的作用,那本文主要讲解到的是路由协议中的OSPF路由协议。
01 什么是OSPF路由协议
OSPF(Open Shortest Path Fist)开放式最短路径优先是一种基于链路状态的路由协议,隶属于内部网关协议(IGP),其内部采用SPF算法来计算和收敛路由,OSPF一共分为两个版本:OSPFv2,主要适用于IPv4网络环境;OSPFV3,主要适用于IPV6网络环境。该协议主要用于中大型及大型网络环境中,其工作原理和配置过程比较复杂。
02 OSPF的基本知识
2.1 OSPF区域化的结构
OSPF为了适应大型的网络环境,在自治系统AS内划分了多个区域,每个OSPF路由器维护所在区域内完整的链路状态信息,区域ID可以表示为一个十进制的数字也可以表示为一个IP。其区域分类可以分为骨干区域Area0以及非骨干区域,非骨干区域可以再次细分为正常非骨干区域,末节区域以及完全末节区域。在这里我们只关注骨干区域和正常非骨干区域即可。如下图2-1所示区域划概况:
2.2 OSPF的路由器类型
OSPF路由器的类型决定了什么样的数据流能够进入和离开区域,以上图2-1为例,我们可以将路由器的类型分为以下几类:
2.3 DR与BDR的概念及作用
在网络中我们选举DR和BDR的目的是为了让DR产生特定的链路状态信息以及简化网络结构,选举规则为:先比较接口优先级,越大越优先。优先级相同,比较RID,越大越优先。
注意:LSA即链路状态通告,是一种描述OSPF路由器或者网络状态的数据单元,由于在OSPF中有很多种类,比较复杂,本文中不会展开描述。
2.5 OSPF的五种协议报文
OSPF的协议报文封装在IP报文内部,协议号是89,以下是五种报文的名称及作用:
2.6 邻居和邻接关系
在OSPF中邻居关系就是在两台路由器中进行完两次Hello报文交互之后,建立起来的关系叫邻居关系。邻接关系是指在两台路由器中进行完链路状态数据库(LSDB)同步之后,建立起来的关系叫邻居关系。以下是网络类型与邻居/邻接关系的对应表:
03 OSPF多区域的常规配置
3.1 配置拓扑结构及IP地址(如下图3-1所示)
3.2 网络地址及OSPF(进程号为10)区域规划
注意: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建立邻居关系的因素有:
Router id冲突;
区域ID配置错误;
认证不一致;
MA网络环境中子网掩码需要一致;
hello/dead时间不一致;
接口网络类型不匹配等等因素。
当我们看到邻接关系已经建立,仍然还是无法学到对方的路由,我们可以从网段是否宣告正确,相应的IP地址是否配置错误等等。
04 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之间之间能否传递相应的路由,如果不能,请说出原因并思考能够传递路由的解决方案。
本期作者:
熊亮,深信服云计算认证专家
产业教育中心资深讲师,持有CCSSP、CCSK、HCIE-Cloud Computing、HCIE-Datacom等多项技能证书,擅长企业级网络规划、云计算解决方案规划、云计算架构设计、私有云部署与管理,云灾备、云安全等技术方向;曾负责并参与金融、医疗及政企行业企业级云网络架构设计、私有云架构设计、企业级云迁移、云灾备等方案的规划与实施;并且作为特聘讲师多次为中国商务部援外研修班、央企、大中型企业、高校进行授课,研究方向为云计算架构深度解析、私有云架构设计、分布式存储架构实践、MPLS VPN骨干网络架构设计等技术领域,具有丰富的云计算一线实战经验以及技术转化和输出能力。