今年3月,国家人大会议提出,要加快5G网络、数据中心等新型基础设施的建设进度。新型基础设施建设,包括信息基础设施、融合基础设施以及创新基础设施。
信息基础设施包括以5G、物联网、工业互联网、卫星互联网为代表的通信网络基础设施;以人工智能、云计算、区块链等为代表的新技术基础设施;以数据中心、智能计算中心为代表的算力基础设施等。其中,云计算作为智能世界的冷静大脑,能够更好地计算数据,是未来数字经济的基础设施,也将在推动经济与社会的进步中,发挥更加重要的作用。
随着新基建建设速度的不断加快、建设规模的不断扩大,云计算中对网络的要求也越来越高,尤其以大型数据中心网络上云为代表,构建云数据中心,如何解决云数据中心与物理数据中心联接的问题也愈发明显。以往,多数云平台一般是通过加载“外部网络”到达物理交换机或防火墙设备上,然后再通过物理交换机或防火墙,与物理数据中心网络实现路由互通;但这种方式也增加了硬件及运维的成本。在此情况下,OSPF就成了能够很好解决云平台内部网络和物理外部网络之间连接问题的“桥梁”。
在了解OSPF的基本概念之前,我们先大概介绍下路由。
众所周知,路由分为直连路由、静态路由和动态路由。其中,动态路由通过动态路由协议进行维护,动态路由协议包括了RIP、OSPF、IS-IS等内容。动态路由协议通过路由信息的交换生成并维护转发所需的路由表,当网络拓扑结构改变时动态路由协议可以自动更新路由表,并负责决定数据传输的较佳路径。在此环境下,管理员不需要像对待静态路由一样,通过人工方式对路由器上的路由表进行维护,而是在每台路由器上运行一个路由协议。这个路由协议会根据路由器上接口的配置及所连接的链路状态,生成路由表中的路由表项。
OSPF是一种基于SPF算法的链路状态的内部网关路由协议,全称叫开放最短路径优先协议。下图为OSPF路由协议实现“自力更生”的过程:
每台运行OSPF的路由器都了解整个网络的链路状态信息。首先,OSPF的收敛过程由链路状态公告LSA(Link State Advertisement)泛洪开始,收到LSA的路由器根据LSA提供的信息,建立自己的链路状态数据库LSDB(Link State Database)。之后,通过SPF算法,在LSDB的基础上自行计算,构建起到每个网络的最短路径树。最后,通过最短路径树,得出到达目的网络的最优路由,并将其加入到IP路由表中。
在此过程中,只有建立起邻接关系才会计算路由信息。在使用OSPF之后,路由器会周期性的发送Hello报文;当收到邻居发来的Hello包以后,状态变更为Init状态;路由器互相收到了从邻居发来的Hello报文,就会切换为2-Way状态;在此状态下,双向通信已经建立,但是尚未与邻居建立起邻接关系,这是建立邻接关系以前的较高级状态。
如果网络为广播网络,这个时候就会选举DR/BDR(DR:广播网络中的指定路由器,所有邻居只和DR/BDR同步LSA条目,以此减少OSPF流量;BDR:备份指定路由器),与后续所有路由器建立关系,减少邻居会话;再之后,网络会经过ExStart、Exchange、Loading、Full状态建立起邻接关系,再由DR将计算出的整个网络的拓扑信息发送给所有路由器;最后,所有路由器以自己为根,根据算法计算出到各网段的较优路径并写入路由表。该段所描述过程如下图所示:
数据链路层协议分为多种,Ethernet、PPP、HDLC及帧中继等,一般常用的为Ethernet。那么当数据链路层协议是Ethernet的时候,OSPF支持的默认网络类型为广播类型,在此网络类型下,需要进行DR和BDR的选举,选举的目的是减少邻居会话,产生网络LSA。一般在邻居发现完成之后,路由器会根据网段类型、以及参与选举的每个接口的优先级,进行DR选举,值越高越优先,默认为1;当优先级相同时,再去比较Router ID,值越大越优先。为了给DR做备份,还要选举一个BDR。DR、BDR会与网络上所有的路由器建立邻接关系。
为了控制LSA 泛洪的范围,减小LSDB的大小,实现网络快速地收敛,OSPF协议会按照一定标准,将一个自治系统划分为不同区域,用于分层管理路由器。
1、Standard:标准区域(Standard Area),支持所有类型的LSA;
2、Stub:末节区域(Stub Area),不支持第4、5类型的LSA;
3、NSSA:Stub衍变的末节区域(Not So Stubby Area),只支持学习第7类型的LSA。
其中,Stub区域中路由器的路由表规模,以及路由信息传递的数量,都会大大减少。Stub区域是不能引入外部路由的,这样可以避免大量外部路由对Stub区域路由器带宽和存储资源的消耗。
那么,对于既需要引入外部路由又要避免外部路由带来资源消耗的场景,Stub区域就不再满足需求了。因此,Stub区域的变形——NSSA区域(not so stub area)就产生了。
我们在ZStack云平台中的网络资源-VPC-路由协议资源里面,可以配置OSPF路由协议。
区域ID:在一个自治系统中,每个OSPF区域采用区域ID标识,全局唯一。0号区域(区域ID:0.0.0.0)称为骨干区域,所有区域必须与骨干区域连通。
区域类型:OSPF区域包括Standard、Stub及NSSA三种类型。同一VPC路由器可以添加到不同OSPF区域;但同一VPC路由器上的网络(VPC网络、公有网络)只能添加到一个OSPF区域。
认证方式:为增强协议包的安全性,OSPF协议支持区域认证加密,OSPF区域共支持三种认证方式。1、None:接收报文时不进行身份认证;2、Plaintext:接收报文时通过报文中携带的密码进行身份认证;3、MD5:接收报文时通过报文中携带的Key ID和密码散列值进行身份认证。
最后,我们通过实战来演示OSPF的配置过程。我们先看下OSPF的配置流程图,这里我们拿应用场景一为例。首先,创建两个VPC网络,验证未使用OSPF协议时网络的连通性;然后,创建OSPF区域,将VPC路由器加入OSPF区域;最后,验证OSPF协议生效后的网络连通性。
具体步骤如下:
第一步:创建两个VPC网络,分别为VPC网络-01(192.168.3.0/24)和VPC网络-01(192.168.4.0/24)。
第二步:分别使用两个VPC网络创建两台云主机,分别为VPC云主机-01(地址:192.168.3.254)和VPC云主机-02(地址:192.168.4.101)。
第四步:创建OSPF区域并将VPC路由器加入到OSPF区域中,区域ID为0.0.0.0,类型为Standard标准区域,认证方式None。
等待一段时间后,可以看到DR和BDR已经选举成功,且邻居状态为Full状态,邻接关系建立成功。
第五步:验证使用OSPF协议时网络的连通性,在VPC云主机-01上ping测试VPC云主机-02,可以看到能够正常通信。
通过OSPF为不同VPC网络之间、云平台内部网络与物理外部网络之间,搭建起通信的桥梁,简化了网络架构,减少了硬件及运维的成本,也提高了云平台的简单易用性。
今后,ZStack也将在产品化道路上持续发力,提供一个简单、健壮、弹性、智能的可信赖的、产品化的云平台。