本帖最后由 铁齿铜牙岳晓峰 于 2021-11-30 17:59 编辑
11月25日,深信服云计算架构师Eason在信服云《云集技术学社》系列直播课上进行了《软件SDN技术原理》的分享,继上周介绍了SDN技术发展与应用后,Eason本周又详细介绍了SDN架构、OpenFlow相关技术和网络虚拟化相关技术。以下是他分享内容摘要,想要了解更多可以点击这里观看直播回放。
看点一:SDN架构 SDN的整体架构是一个比较清晰的层次结构。一个SDN架构通常分成三个平面。
第一个是管理平面,它的作用是负责处理来自用户的请求,并转换为内部网络配置,通过北向接口(NBI)下发到控制平面。常见的云管理平面有OpenStack、NSX、Sangfor Cloud Platform等。另外,管理平面也可以基于开放平台构建用户自己的云管理平台。
第二个是控制平面,由SDN控制软件构成,负责将内部网络配置转换成数据平面可理解的语义。控制平面北向通过NBI和应用层对接,南向可通过标准化协议(例如OpenFlow的一些协议)与数据平面通信。
第三个是数据平面,主要为转发设备,根据控制平面的控制逻辑进行转发和处理数据。
这三个平面之间通过两种类型的接口进行通信,一个是北向接口,负责管理平面和控制平面之间的通信,一个是南向接口,负责数据平面和控制平面之间的通信。
通过这样的分层结构,用户就可以将一些用户请求转化成数据平面可以实现的数据转发逻辑,从而通过软件的方式来集中式的管理数据平面的网络转发设备。通过这些接口,数据平面也同样可以把统计数据、行为数据等上报给控制平面或者上报给管理平面,让管理平面或者用户可以拿到这些数据做更多的处理。
看点二:OpenFlow相关技术 谈到SDN就不得不谈OpenFlow相关技术,因为OpenFlow是SDN诞生后的第一个开源协议。数据平面有一个比较著名的实现叫做OVS。OVS包括3个主要模块:运行在内核态的datapath,以及运行在用户态的vswitchd和ovsdb-server。
第一个是Datapath,是负责数据转发的内核模块,属于快路(fast path)转发。该模块从网络接口收取数据报文,并根据报文头部匹配流表(Flow table)中的流表项,如果成功则直接转发,否则将报文递交到vswitchd处理。内核模块在初始化和端口绑定的时候会注册回调函数,从而接管端口的报文处理。
第二个是vswitchd,vswitchd是一个用户态守护进程,是本地OVS的管理和控制服务,属于慢路(slowpath)转发,可以处理内核模块未匹配的报文。vswitchd通过unix socket和ovsdb交互,并通过netlink和内核模块交互。vswitchd北向通过OpenFlow协议与控制平面对接。
第三个模块是ovsdb-server,ovsdb是OVS的数据库,用于保存OVS的配置信息。ovsdb-server对外提供RPC接口。 OVS工作依赖的核心数据结构是Flow table。Flow table是存储Flow的数据结构,Datapath根据Flowtable进行数据转发。Flow Table里面有一些字段,OVS通过将这些字段与数据报文进行匹配,并执行相应的动作就实现了报文转发。
在OVS里面,流表的核心处理流程是报文依次匹配多张表,并执行相应的指令。其中的单表也有对应的匹配流程。当一个报文进来的时候,它就会找到满足匹配条件的优先级最高的表项,接下来会执行指令动作,然后发送匹配数据和动作指令到下一张表。下一张表收到报文和指令后,会紧接着做后续的处理,直到整个流水线都运行完毕后,就会将报文从某一个端口输出或者是丢弃。通过这样的一个流程,OVS就完成了一次报文转发。 而在控制平面,也有一个开源实现叫做OVN(Open Virtual Network)。通常情况下,OVN分为四个模块。
第一个是Northbound DB,它接收并存储来自云管平台(CMS,Cloud Management System)的逻辑网络配置(逻辑交换机、路由器、ACL等)信息,目前基于ovsdb-server实现。它有两个客户端:OVN/CMS插件,ovn-northd。
第二个是ovn-northd,它是集中式控制器,同时连接Northbound DB和SouthboundDB,并负责把云管平台写入Northbound DB的基于传统网络概念的逻辑网络配置转换成Southbound DB的数据表。
第三个是Southbound DB,它也是基于ovsdb-server,包含三类数据:物理网络信息(PhysicalNetwork),它包括了所有overlay封装的必要信息,如IP地址,支持的封装类型等;逻辑网络信息(Logical Network),比如逻辑交换机、路由器的拓扑、ACL、防火墙规则等;物理网络和逻辑网络的绑定关系信息(Binding)。这些数据由各个ovn-controller消费。
第四个是ovn-controller,它是OVN的本地控制进程,是运行在每台主机上的本地SDN控制器。它北向通过ovsdb协议与OVN SouthboundDB通信,南向通过ovsdb协议与本地ovsdb-server通信,以及通过OpenFlow协议与ovs-vswitchd通信。
看点三:网络虚拟化技术 了解网络虚拟化技术首先要理解什么是虚拟网络或者什么是Overlay。Overlay网络是一种建立在另一个网络之上的计算机网络。Overlay网络节点可以被认为是通过虚拟或逻辑链接相连。节点之间通过下层网络(Underlay)中的多个物理连接实现相连。通过Overlay网络可以实现网络虚拟化,从而将虚拟网络与物理网络解耦。
虚拟网络实现有几种比较常见的方式:
第一个是VLAN(802.1Q),通过在物理交换机上划分VLAN实现多个虚拟的交换机。VLAN的限制是最大只支持4096个划分,并且Underlay网络不支持跨三层。
第二个是VPN(虚拟专用网络),通过隧道协议将分支或个人与总部网络连通的技术。Underlay网络一般用于在互联网上分支与总部间的点对点的连接。
第三个是VXLAN,可以在三层连通的Underlay网络上实现虚拟的二层连通性。这个二层连通性是在分布式虚拟交换机上实现的。
报文转发流程首先是虚拟机VM1发送ARP请求虚拟机VM2(IP=192.168.5.22)的MAC地址;其次VTEP1封装ARP请求为多播报文,并且将VNI设置为121;VTEP2收到报文后,将VTEP1和虚拟机VM1的映射关系加入VXLAN表格;VTEP2解封装报文,提取VNI信息,并把ARP请求发送到虚拟机VM2;虚拟机VM2回复ARP请求;VTEP2根据之前学习到VTEP1和VM1的映射关系和VNI信息封装VM2回复的ARP请求,并以单播方式发送给VTEP1;VTEP1收到来自VTEP2的报文,解封装,提取VNI信息,并把解封后的来自VM2回复ARP请求发送给VM1。
理解网络虚拟化技术的另一个重要的方面了解控制面的工作原理。在由控制面的情况下,主机1会将VTEP1和虚拟机VM1的映射关系上送控制器(VNI=121,VM MAC = 00:AC:AA:55:20:C1,VTEP IP = 10.0.0.163),同时主机2也会将VTEP2和虚拟机VM2的映射关系上送控制器(VNI=121,VM MAC = 00:AC:BB:77:44:C2,VTEP IP = 10.0.0.192)。控制器在聚合各主机信息后会将完整的映射关系分别同步到主机1和主机2。
通过网络虚拟化技术,可以实现虚拟路由器。虚拟路由器实现上有两种形态:分布式虚拟路由和集中式虚拟路由。这样实现的好处是虚拟路由器既有分布式路由性能和扩展性方面的优势,也有集中式路由功能服务方面的优点。
分布式虚拟路由器主要处理东西向流量,它可以在源端完成路由计算,实现物理上的一跳转发;集中式虚拟路由器主要处理南北向流量,负责与物理网络连通,实现集中式服务(NAT、DHCP、DNS、集中式防火墙、负载均衡)。 最后,通过网络虚拟化技术,可以实现软件定义防火墙。
软件定义防火墙分成两种,集中式防火墙和分布式防火墙。
集中式的防火墙有四个特点:第一个是中心化的管理;第二是集中式的防火墙部署在边界节点;第三是它主要用来防护的是南北向的流量;第四是通过集中式的防火墙,可以很容易集成第三方的服务。
分布式防火墙同样也是中心化管理,但分布式防火墙直接部署在虚拟机的网络接口上,它主要防护东西向流量,易于水平扩展。
来自外部或者互联网上的流量,通常会经过集中式路由或集中式的防火墙,进入内部网络。来自内部的流量在没有分布式防火墙之前也是通过集中式的防火墙来控制,有了分布式防火墙之后,就可以在虚拟机之间或者在主机之间直接进行防护,而不用再绕行到集中式防火墙的节点上,性能和安全性上会有很大的提升。
以上就是本期直播的主要内容,还想了解更多有关云计算相关的知识与应用吗?敬请关注云集技术学社,信服云还将邀请更多行业大咖来分享云计算干货。
|