基于虚拟设备的虚拟交换机设计研讨引言虚拟化技术已经改变了我们的计算方式,例如,许多数据中心完全虚拟化用以提供快速配置,基于虚拟化的云计算可以更好的利用资源。通过虚拟化可以对包括基础计算机设施、计算机系统和软件等资源进行统一管理和抽象,以此来提供弹性可扩展的云服务?。随着虚拟化技术的发展,一个新的网络接入层被引入用以建立虚拟机内部的网络连接,提供许多与物理层相同的功能。服务器虚拟化技术目前发展已经相对成熟,而虚拟化在网络方面的进展才刚刚开始。特别是服务器虚拟化对网络的可移动性,弹性扩展以及网络隔离的要求远远超出了目前物理网络的处理能力。数据中心可以负载成百上千的虚拟机,因此多租户之间的网络隔离要求变的愈加重要。网络虚拟化还提供一些附加功能,使网络管理更容易。例如,在虚拟化环境中,虚拟化层可以提供有关虚拟主机动态迁移的相关信息。本文的其余部分安排如下:第一节描述了虚拟机内部的网络结构;第二节描述了实际物理网络与虚拟网络环境的不同之处;第三节介绍软件实现的虚拟交换层设计;第四节是虚拟交换机的主要应用场景。1基于流的虚拟交换技术基于流的网络交换技术提供了一个有效的网络交换方案,采取用软件定义网络的方式,使得用户叮以忽略底层硬件的具体情况,直接对流量进行管理并设置数据报文以何种方式通过网络。用软件来统一管理物理设备,借鉴网络TCP/IP协议的数据链路层桥接原理和网络层协议的设计思想,利用软件实现和硬件实现结合的方式对现有的网络结构予以重新定义,在系统上实现一个虚拟的交换层,除了具有高效的传输能力还可以为云基础网络提供智能的监控服务。用软件实现的方式具有强壮的伸缩性,灵活性和移动性,方便系统扩展。2流分组交换的层次结构流分组交换分为两层,物理设备虚拟化和网络协议层虚拟化。2.1物理设备虚拟化物理设备虚拟化是指利用软件来对网卡设备进行抽象,使用用户层软件对物理网卡实现逻辑划分,划分后的设备既可以实施流量控制和负载均衡策略又能高效的利用设备资源,虚拟化后的网卡设备具有和物理网卡一样的功能,硬件实现的资源划分不易动态扩展,软件虚拟以后可以按照需求动态进行资源划分。通过虚拟技术将一台或多台独占物理设备虚拟成至少一台逻辑设备,供多个用户进程同时使用,通常把这种经过虚拟的设备称为虚拟设备.虚拟设备一定和实际的物理设备绑定才可以使用。2.1.1虚拟设备模型虚拟设备是建立在一个或者多个真实设备之上的抽象。合理使用虚拟设备可以在一个物理设备上构建多个逻辑上的虚拟设备,通过软件的配置,这些虚拟设备可以实现硬件所具有的功能。虚拟设备和真实设备可能的模型有如下几种,实际上应用可根据需求选择其中几种模式。图1一对一Fig.1onetoone图2多对一Fig.2manytoone图3多对多Fig.3manytomany虚拟设备的建立和管理需要统一的虚拟软件的支持。在虚拟软件的控制下,物理设备可以根据上层需求灵活高效的配置组织出虚拟设备。这可以极大的提高硬件设备的利用率,在规模上可以化大为小又可以积少成多。2.1.2虚拟设备的管理虚拟设备管理分为两个部分:用户态虚拟平台管理,可以用来配置和查看设备的状态,用户可以在用户空间查看和修改虚拟设备的属性文件。通过内核模块编程管理,由内核直接管理,主要负责物理设备运行和数据通信。2.2网络协议层虚拟化利用软件抽象的灵活性重新定义数据链路层和网络层结构,引、入一个虚拟管理层来实现数据链路层和网络层,把传统定义的OSI七层协议的网络层和物理链路层压缩为虚拟网络层。图4重新定义网络层和物理链路层Fig.4redefinednetworklayeranddatalinklayer这样就可以把数据链路层和网络层的数据整合成一个数据流,扁平化了网络结构。每个经过虚拟网络层的数据报文均被重新标记。这个数据报文既包含了链路层信息又包含了网络层信息,基本可以对每个数据报文按照逻辑链路准确分类。网络中的数据报文就可以组织成一个一个的数据流,组织成数据流的好处在于用户可以根据需要对每个数据流进行属性定义,比如QoS策略定制,数据报文的检测和隔离,网络负载均衡等等。报文基于流分类,就不再需要在物理链路层运行生成树协议,减少了数据报文的转发延迟,降低了网络的流量负载。3流分组交换应用基于流分组交换技术对已有的网络协议不用改动,所有的交换工作都在内核协议栈部分完成,大大增加数据交换效率,但是需要在内核协议栈数据结构上添加一些关于数据流控制相关信息用以标识当前处理的数据报文属于哪个数据流。虚拟端口信息虚拟连接表信息生存时间TTL校验和防火墙信息(Netfilter规则)VLAN信息图5数据报文控制信息Fig.5packetcontrolmessage经过标记后的逻辑数据报文头部结构如下,逻辑报文的生存时间TTL是为了防止逻辑报文在网络中过久滞留而导致网络队列太长而溢出,同时也能保证数据帧不会在成环的链路中被无限次转发,这是实现两点之间多路径转发的基础。虚拟生存防火以太网IP协议TCP协议端口连接时间墙信校验信息表信TTL息和源地目的源地目的协议源端目的息址地址类型址地址信息口端口图6逻辑报文头结构Fig.6structureoflogicalpacketheader虚拟机的虚拟网卡对每个发出的数据报文的控制信息进行标记,与之相连的交换节点接收到数据包后,会根据全局控制器的数据建立一张虚拟连接表,交换节点根据数据报文的控制信息查找虚拟表然后将数据报文转发到目的端口完成一次数据报文交换。每条虚拟连接可以包含多个虚拟端口,这些虚拟端口被划分为一个逻辑组。有了这个逻辑组可以进行更复杂的交换功能,例如多路径转发,快速路由,链路集成,负载均衡,流量整形,例如图X所示,每个数据流会根据流量使用多个端口,以加快数据报文的转发,多个虚拟连接的数据流可以转发到具有同样操作需求的端口。基于流的分组交换可以在虚拟机内部网络通信时设定较大的MTU数据包来提高数据报文的转发效率,因为在内核协议栈可以避免IP分组和重装的过程,降低了数据报文的转发延时。对于每个虚拟端口和虚拟连接,可以自由配置匹配规则用以对数据报文进行匹配和过滤。比如某个端口限制IP地址为IO.o.o.的数据包发送,如果接收到类似的数据包,就抛弃掉。图7逻辑端口组Fig.7logicalvirtualvportgroup流分组交换需要维护一张虚拟连接表,每个表项唯一标识了一条数据流、应用在经过该数据流的报文需要执行的操作和该数据流的统计信息。图8级联的虚拟连接表Fig.8connectedvirtuallinktable虚拟连接表表项组成匹配规则这个域可以唯一的确定一条数据流,里面包含数据报文的物理地址,IP地址,虚拟局域网ID等等。虚拟连接计数器该域定义了一组计数器,用来统计该虚拟连接接收和发送数据包总数,连接的端口总数等等。虚拟连接规定执行的操作这个域定义了数据报文经过该虚拟连接时需要执行的操作,例如,匹配规则的修改,数据报文转发,数据报文丢弃等等,用户可以自定义。3.1流分组交换控制流分组交换可以实现的重要前提就是流分组交换控制器。流分组交换控制器负责建立和移除虚拟连接表,虚拟连接表的规则设置,物理虚拟设备的参数配置,数据统计信息获取,QoS设置,虚拟防火墙配置,VLAN划分等等。流分组交换控制器负责监控所有的虚拟连接表,这样虚拟机内部网络的流量状况就可以全方位的被监测,凭借以前的物理设备这是做不到的。图9控制器Fig.9controller基于流交换的数据报文若不与外界通信,则数据报文就可以不用经过物理网卡而直接在内存中进行交换,这个机制也非常大的提高了交换的性能,提高了报文的转发速度。传统的数据链路层需要运行生成树协议来去除回环通路,MAC地址学习也占用了数目可观的网络流量,现在可以用控制器来为所有的虚拟设备维护一个全局的转发路径,这就省去了生成树协议造成的数据帧转发的延迟以及增加的额外网络流量。流交换分组控制器要根据配置文件生成虚拟连接表,刨建或者移除虚拟连接,维护虚拟端口和虚拟连接的存储队列,为虚拟连接和虚拟端口配置数据报文处理规则。3.2流分组控制协议流分组交换控制器通过Netlink套接字和内核进程通信通信,也是网络应用程序与内核通信的最常用的接口。Netlink是一种异步通信机制,在内核与用户态应用之间传递的消息保存在socket缓存队列中,发送消息只是把消息保存在接收者的socket的接收队列,而不需要等待接收者收到消息。计算机发展计算机发展阶段时间备注第一代电子计算机1946年至1958年体积较大,运算速度较低,存储容量不大,而且价格昂贵。使用也不方便,为了解决一个问题,所编制的程序的复杂程度难以表述。这一代计算机主要用于科学计算,只在重要部门或科学研究部门使用。第二代电子计算机1958年到1965年采用晶体管作为电子器件,其运算速度比第一代计算机的速度提高了近百倍,体积为原来的几十分之一。在软件方面开始使用计算机算法语言。这一代计算机不仅用于科学计算,还用于数据处理和事务处理及工业控制。第三代电子计算机1965年到1970年以中、小规模集成电路为电子器件,并且出现操作系统,使计算机的功能越来越强,应用范围越来越广。第四代电子计算机1970年以后采用大规模集成电路(LSI)和超大规模集成电路(VLSI)为主要电子器件制成的计算机。流分组交换控制器和流分组交换模块之间通过Netlink建立一个普通的TCP连接,是一种基于进程间通信机制。流交换控制器和交换模块之间信息交换采用自定义的一套协议。协议头结构:控制信息类型控制信息报文长度(含控制信息头部)控制信息事务ID,用以标记一次完整的交互过程图10控制信息头部结构Fig.10theheaderofcontrolmessage控制信息事务ID用以标识同一对流分组交换控制器和流交换模块之间的配置过程,例如本次A发送给B的控制信息,B必须要用同一个事务ID来回复A的请求,以区分A发送给B的另外的控制信息。控制信息类型:控制信息大致分为下列几种配置信息状态请求状态回应队列设置信息队列获取信息端口信息设置端口信息获取链路心跳信息图ii控制信息分类Fig.11Thecategoryofcontrolmessage配置信息主要是通知流分组交换模块端口配置数据,端口队列配置数据等等。流分组交换控制器通过控制协议获取各个交换模块和内置的虚拟端口信息,可以对虚拟连接表进行全局性操作,又可以高效的检测网络的状态,未来的工作还会实现根据网络监控结果自动化的调节各个交换节点的配置信息。4结论利用虚拟网络设备的特性以及软件抽象的灵活,构建虚拟交换机来实现可扩展的数据链路层。虚拟化技术在一般的网络基础设施本身方面还有很多工作要做。旨在获得虚拟化的优势,如隔离性,灵活性和流动性。可实现弹性、安全、自适应以及易管理的云计算基础网络。----------1302024134于亚坤