前言算法
今年3月,国家人大会议提出,要加快5G网络、数据中心等新型基础设施的建设进度。新型基础设施建设,包括信息基础设施、融合基础设施以及创新基础设施。数据库
信息基础设施包括以5G、物联网、工业互联网、卫星互联网为表明的通讯网络基础设施;以人工智能、云计算、区块链等为表明的新技术基础设施;以数据中心、智能计算中心为表明的算力基础设施等。其中,云计算做为智能世界的冷静大脑,可以更好地计算数据,是将来数字经济的基础设施,也将在推进经济与社会的进步中,发挥更加剧要的做用。安全
随着新基建建设速度的不断加快、建设规模的不断扩大,云计算中对网络的要求也愈来愈高,尤为以大型数据中心网络上云为表明,构建云数据中心,如何解决云数据中心与物理数据中心联接的问题也愈发明显。以往,多数云平台通常是经过加载“外部网络”到达物理交换机或防火墙设备上,而后再经过物理交换机或防火墙,与物理数据中心网络实现路由互通;但这种方式也增长了硬件及运维的成本。在此状况下,OSPF就成了可以很好解决云平台内部网络和物理外部网络之间链接问题的“桥梁”。网络
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协议会按照必定标准,将一个自治系统划分为不一样区域,用于分层管理路由器。
一、Standard:标准区域(Standard Area),支持全部类型的LSA;
二、Stub:末节区域(Stub Area),不支持第四、5类型的LSA;
三、NSSA:Stub衍变的末节区域(Not So Stubby Area),只支持学习第7类型的LSA。
其中,Stub区域中路由器的路由表规模,以及路由信息传递的数量,都会大大减小。Stub区域是不能引入外部路由的,这样能够避免大量外部路由对Stub区域路由器带宽和存储资源的消耗。
那么,对于既须要引入外部路由又要避免外部路由带来资源消耗的场景,Stub区域就再也不知足需求了。所以,Stub区域的变形——NSSA区域(not so stub area)就产生了。
OSPF在ZStack云平台中的实现
咱们在ZStack云平台中的网络资源-VPC-路由协议资源里面,能够配置OSPF路由协议。
区域ID:在一个自治系统中,每一个OSPF区域采用区域ID标识,全局惟一。0号区域(区域ID:0.0.0.0)称为骨干区域,全部区域必须与骨干区域连通。
区域类型:OSPF区域包括Standard、Stub及NSSA三种类型。同一VPC路由器能够添加到不一样OSPF区域;但同一VPC路由器上的网络(VPC网络、公有网络)只能添加到一个OSPF区域。
认证方式:为加强协议包的安全性,OSPF协议支持区域认证加密,OSPF区域共支持三种认证方式。一、None:接收报文时不进行身份认证;二、Plaintext:接收报文时经过报文中携带的密码进行身份认证;三、MD5:接收报文时经过报文中携带的Key ID和密码散列值进行身份认证。
OSPF的应用场景
场景一:用户存在于云平台上的两个不一样的虚拟VPC网络环境。为了两个VPC网络环境可以相互通讯,在ZStack环境中,建立同一区域的OSPF区域,将两个三层网络隔离的虚拟VPC路由器加入到同一个OSPF区域;路由器间经过OSPF协议创建邻居关系,相互通讯,便可实现两个不一样的虚拟VPC路由器中网络之间的相互通讯。过程以下图所示:
场景二:用户存在两套网络环境:一套为云平台上的虚拟VPC网络环境、一套为物理环境中已配置OSPF协议的传统网络环境。为了两套网络环境可以相互通讯,在ZStack环境中,建立一个与物理环境中同样的OSPF区域,将三层网络隔离的虚拟VPC路由器和传统路由器加入到同一个OSPF区域;路由器间经过OSPF协议创建邻居关系,相互通讯,就可实现虚拟VPC路由器中的网络与传统网络间相互通讯。过程以下图所示:
不一样VPC网络经过OSPF实现网络互通实战
最后,咱们经过实战来演示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云主机-01上ping测试VPC云主机-02,能够看到没法正常通讯。
第四步:建立OSPF区域并将VPC路由器加入到OSPF区域中,区域ID为0.0.0.0,类型为Standard标准区域,认证方式None。
等待一段时间后,能够看到DR和BDR已经选举成功,且邻居状态为Full状态,邻接关系创建成功。
第五步:验证使用OSPF协议时网络的连通性,在VPC云主机-01上ping测试VPC云主机-02,能够看到可以正常通讯。
总结
经过OSPF为不一样VPC网络之间、云平台内部网络与物理外部网络之间,搭建起通讯的桥梁,简化了网络架构,减小了硬件及运维的成本,也提升了云平台的简单易用性。
从此,ZStack也将在产品化道路上持续发力,提供一个简单、健壮、弹性、智能的可信赖的、产品化的云平台。