最近开发私有云产品,那么不得不提的就是VPC(虚拟专有网络)。VPC是什么且具有什么优势呢?虚拟私有云(Virtual Private Cloud,VPC)可部署一个私有的、隔离的云计算环境,用户/租户可在该VPC中的虚拟网络上创建虚拟机、服务等资源。用户/租户可在 VPC上定义一个非常类似传统网络的虚拟网络拓扑,且对该虚拟网络环境拥有完全的控制权,包括选择IP地址范围、 创建子网、配置路由表及网关等等。由于使用隧道封装技术(VXLAN)对云服务器的IP报文进行封装,所以云服务器的数据链路层(二层MAC地址)信息不会进入物理网络,实现了不同云服务器间二层网络隔离,因此也实现了不同专有网络间二层网络隔离。 总结来说就是:软件定义网络(灵活定制)和安全隔离。
为了实现软件定义网络和安全隔离就需要SDN架构的网络体系结构来支撑网络隔离和灵活定制。 SDN:SDN是一种逻辑集中控制的新网络架构,最主要的的是实现了数据平面和控制平面的分离,控制平面和数据平面的之间有统一的开放接口OpenFlow。SDN的最伟大思想是数控分离并对网络资源进行抽象和可编程化。
SDN主要有SDN网络应用、北向接口、SDN控制器、南向接口和SDN数据平面。
我们依次来介绍上述几个组件。
sdn南向协议为网络数据面提供统一的、开放的和具有更多编程能力的接口,使SDN控制器可以基于这些接口对数据平面设备进行编程控制和网络流量转发等行为。
openflow是现在最为流行的南向协议,openflow交换机可以分为流表和安全通道。流表用于存放流表项的表,安全通道用于和控制器的安全通道。既可以是直接建立在TCP上也可以基于TSL加密后的socket通信。 在openflow交换机和控制器连接初始化阶段,需要将openflow交换机的一些特征信息和端口信息等上报给控制器,当数据包从入端口进入交换机且匹配流表项失败时,将数据包放在Packet-in报文中上报给控制器。控制接收到Packet-in报文,可以选择下发流表项和下发Packet-out报文通知交换机如何处理。所以openflow协议的架构中,交换机是策略的执行者,网络的相关策略需要由控制器下发。
openflow主要由流表、组表和Meter表三种类型构成。
openflow通道是控制器和交换机通信的通道,通道中转发的数据为openflow消息/报文。Controller-to-Switch、Asynchronous和Symmetric三种类型通道。 1.Controller-to-Switch:由控制器初始化并发送给交换机。 2.Asynchronous:交换机异步上报给控制器的报文。 3.Symmetric:无须等待对方请求,双方可以任意发送报文。
南向协议:
SDN控制器是SDN的大脑,控制数据平面的转发等行为并提供可编程的抽象化。架构图如下:
SDN主要有SDN网络应用、北向接口、SDN控制器、南向接口和SDN数据平面。
控制平面大致可以划分为:南向接口层、控制核心层、北向接口层和应用层。开源的控制器有如下:POX,Ryu,Floodlight和OpenDaylight/ONOS.比较活跃的是开源控制器:Ryu,OpenDaylight和ONOS. 在后面章节里面,通过demo来不断熟悉控制器。
控制平面负责实现网络的逻辑控制,数据平面则执行网络的逻辑控制。只有数据平面提供足够的可编程能力,控制平面才可以通过南向接口来对网络进行灵活的配置和编程。我们来看一下SDN通用可编程数据平面架构。
通用可编程数据平面设备中所有的网络处理模块,包括解析器(Parser)、包转发(Packet Forwarding)和包调度(Packet Secduling)等模块是可编程配置和协议无关的。 由于现有路由器和交换机中网络转发平面的不足,有人就提出了一种可编程通用转发抽象模型:OpenFlow Switch.OpenFlow Switch将网络数据转发处理抽象成通用的Match-Action map过程,同时对网络系统中的各种查找表记性了通用抽象和处理。 OpenFlow Switch通用转发模型主要包括通用硬件模型和通用处理指令。
通用硬件模型的处理流程:
OpenFlow Switch的网络通用处理器指令分为操作指令、跳转指令和专用指令。
作为SDN初学者,循序渐进的学习SDN网络知识非常重要。下面说一下大众的网络虚拟化平台 1.OpenVirteX. OpenVirteX实现多租户下的网络虚拟化,OVX是介于租户控制器和交换机之间的转换平台,对于租户,OVX就是数据平面的网络;对于交换机,OVX就是交换机。 2.Cbench 用于测量Openflow控制性能开源软件。 3.OFTest和OFLops OFTest入门比较简单易用,是Openflow的交换机的测试框架。 4.Wireshark 网络数据包分析软件 5.发包工具
SDN细节过多,这篇文章是我在看《SDN架构与实现》的读书笔记,给了我很大的帮助。
1.《SDN架构与实现》