




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
我,本 时间:20146DesignandImplementationoftheSystemMonitoringCommunicationbetweenKVMVirtualMachinesonaHostAuthor:YueXichunTutor:XiaoAlongwiththeprogressofhardwaretechnology,virtualizationhasobtainedcomprehensivedevelopmentincomponents,systemandapplicationlevel.Cloudcomputing,asarevolutionoftheITindustry,hasgotmuchunprecedentedattention.Asthemostimportantsupportingtechnologyofthegreatideaofcloudcomputing,virtualizationtechnologyhasalsobeenimprovedrapidly.Virtualizationtechnologyhasitssecurityproblemalongwithconvenientinitshighspeeddevelopment.Somevirtualmachinehasimplementedsomesecuritymechanismpreliminarilyatpresent,includingtrustedbootTbootandencryptiontechnologyonimagefiles.Butthesesecuritymechanismcannotresolveallthevirtualizationsecurityproblems.Someproblemsinvolvedsecurityproblemsofcommunicationbetweenvirtualmachinesonahosthavenotbeensolvedwell.Inthispaper,weyzesomerelevanttechnologyaboutKVMandespeciallythecommunicationarchitectureinKVM.Onthisbasis,weproposetheideatomonitorcommunicationamongvirtualmachinesinuseofOpenvSwitchtechnology.Thenwemanagetodesignandimplementthesystem,improvingthesecurityperformance.Themainworkofthispaperdisysasfollow.Firstly,weyzetheKVMcommunicationarchitecture,theoperatingprincipleofOpenvSwitch,thepacketcapturemechanismandotherrelated.Secondly,weproposetheideaofthedesignandtheoveralldesignarchitecture.Thesystemisdividedintotwoparts,themonitoringcommunicationmoduleandtheremotemanagementmodule.Andwealsoprovidethedetaileddesigns.Thirdly,accordingtothedesignrequirements,weachievethepacketcaptureandfilteringofthemonitoringcommunicationmoduleusingthelibpcaplibraryandBPFpacketfilteringmechanism.Finally,weachievethesystemfunctiontestmakinguseoftheSocketAfterthefunctiontest,weverifytheavailabilityandaccuracyofthe:CommunicationMonitor,Inter-VMsCommunication,KVM,Virtual绪 研究背 云计算的发 虚拟化与内核虚拟 研究意 研究目 研究内 课题来 组织结 国内外相关研究及发展趋 “发卡弯”技 分布式虚拟交换机技 软件定义网 发展趋势分 本章小 相关技术概 内核虚拟机网络通信架 OpenvSwitch工作原 包捕获机 本章小 同一物理机上KVM虚拟机间通信系统设 设计思 总体设 通信模块设 数据包的捕 数据包的过 远端管理模块设 管理模块的功能需 管理模块的设 本章小 同一物理机上KVM虚拟机间通信系统实 通信模块实 通信模块的实现框 主要的结构 主要函数介 管理模块实 本章小 同一物理机上KVM虚拟机间通信系统测 测试环 测试平台搭 OpenvSwitch安装和配 物理机上的相关设 测试方 分 本章小 总结与展 主要工作总 研究展 致 参考文 于KVM(内核虚拟机,KernelVirtualMachine)的虚拟化技术被广泛认可。RHEL、Fedora、Ubuntu等。KVM内核模块在运行时按需加载进入内核1.1QEMU虚拟设备模拟,虚拟网桥等,这OpenFlow协议。OpenFLowKVM的良好支持,是我们选择OpenFlow的原因。虚拟机间通信的系统。OpenvSwitch作为一种基于软件实现的开源虚拟交换机,其最主要的工作就是实现由于网卡是同时工作在I开放式系统互联体系结构中的物理层和数据链路层,BPF(BSDPacketFiletr、CSPF(CMU/StanfordPacketFilter)SUNNIT块和管理模块提出了比较详细设计方法。第六章同一物理机上KVM虚拟机间通信系统测试说明,最后得到并进行分析。IEEE802.1工作组制定了新标准802.1QbgEdgeVirtualBridging(EVB),其思想理可扩展性问题得以很好的解决。但因为流量被从虚拟机上引入到外部网络,使EVB目前仍在Cisco自己的解决方案中使用。其思想是在标准以太网帧中增加一段的标记——VN-Tag,用以区分不同的VIF,从而识别特定虚拟机的流量。在软件定义网络环境下,控制节点可以根据相应算法、逻辑、分析和规则,以软件定义规范方式将配置信息推到交换和路由节点,完成路由或交换从控制节点接据落地转发由每个特定交换或路由节点完成。当计算或资源变化时,控制节点和精细化动态配置管理。同时由于其控制节点的统一管理,也可以任一节点的率。随着SDN技术浪潮的兴起,网络产业将被打造成一个开放的三层生态架构,即交换设备层、平台层(网络操作系统)和应用层。SDN将是IT化、软件化、虚拟化的网的方向[7]SDNSDN来统一管理Linux系统中,TUNTAP设备是内核提供的虚拟网络设备。一般的网络设备太网设备,在第二层协议层处理以太网帧。TUN设备模拟了网络层设备操作网络层数TAP/TUN设备发送数据包被定向到与该设备绑定的用户程序中。用协议栈处理,来模拟从外部数据源收程。3.1KVM3.1TAP设备本身作为一块独立的虚拟网卡,与真实的物理网卡如果在交换机地址表找到目的MAC地址,则在特定的端口上发送这个数据包,如果发KVMXen上的虚拟交换机。在虚拟化平台上,OVS2层交换功能,卡,同时虚拟交换机内部会一张映射表,根据MAC3.23.2所示,当数据包从虚拟机发出后,首先将通过虚拟机上配置的虚拟网卡。在被网卡放行后将转发至虚拟交换机,与其他虚拟交换机不同的是,提供了OpenFlow支持能力的OVS将根据自身保存的流表对数据包进行匹配,如果匹配成功则按照相应图3.3OVS架如图3.3所示,OVS的数据转发通路(datapath)主要用于执行数据交换工作,即利用专门的Linux内核模块的快速通道。OVS在实现中分为用户空间和内核空间两个部分。其中,OVS在用户空间程序拥OVS的组件及其关联关系如图3.4所示。
数据库操作
图3.4OVS组件及其关联关中,ovs-vswitchdovsdb中。ovsdb-serverovs-vswitchdovsdb-server通过UNIXsocket机制进行通信以获得或者保存配置信息。ovs-vsctl、ovs-apptcl、ovs-dpctl库操作时,可以通过运行ovsdb-组件ovsdb-server,或者直接使用ovsdb-tooldatapath3.53.5所示,除了“ovs-vswitchd进程查看数据包,找到目的端口”阶段,其他VLANVLANtag就需要首先从数据包中被去除,然后再将其转发到正确是3.5OVSLinux在2.2及以后的版本中提供协议族PF_PACKET来实现捕获机制。PF_PACKET的调用形式为socket(PF_PACKET,intsocket_type,intprotocol),其中socketSOCK_RAWSOCK_DGRAM。SOCK_RAW类型使得数据包从SOCK_DRRAM则要对数sockaddr_ll来保存链路信息。protocolIP0x0800,当其为htons(ETH_P_ALL)(其宏定义为0)时表示收发所有的协议。initinitsocket-find3.6socket()函数进入sys_socketcall(),根据子系统调用号,执行sys_socket()函数创建socket()是该结构体中的inode成员。套接字保存在inetsw中的同一链表中,因此需要遍历链表来查找;本章主要介绍了本系统在研究、设计过程中的相关技术及理论基础。3.1节OpenvSwitchOpenvSwitch的组件之间的关系,以及datapath中对数据包转发的内部细节。3.3节介绍了数据4.1虚拟机通过OVS4.1OVS进行通信的架构图,首先我们先了解几个Hypervisor:也称为VirtualMachineMonitor,虚拟机器。它的主要职能是tap3.2节中的数据流上的通信程序,主要负责对虚拟机通信过程中数据包的抓取,过滤,解析工作;第设计思路是利用ssh(SecureS)协议,进行登录、文件传输等功能。些参数传给程序,然后再获得由程序返回的数据包,如图4.2所示。
4.2并根据管理员的需求获得各个tap上的通信数据。通信程序在获得数据之后再进行 4.3着互连网的快速普及和网络行为的频繁出现,保护网络的运行安全也成为软件获得一个捕获句柄:结构体pcap_t。函数pcap_open_live()的调用形式是pcap_t*pcap_open_live(constchar*device,intsnaplen,intpromisc,intto_ms,char*ebuf),其中如deviceNULL或“any”,则对所有接口捕获;snaplen代表用户期望的捕获数据包最大长度,我们可以设置这个值来只抓每个数据包的头部,而不关心具体的内容。典型的以太网帧长度是1518字节,65535个字节;promisc指定是否打开混杂模式(PromiscuousMode),0表示非混杂模式,只有在设备给定的情况下有意义;to_ms代表函数超时返回的时间,0表示一直等待直到有数据包到来;ebuf是存放出错信息的数组。如图4.4所示,其执行步骤如下:pcap_t分别利用函数live_open_new()或live_open_old()尝试创建PF_PACKET方socketpcap_tlinux系统下的特定函数,其中最重要的是读数据包函数和设置过滤器函数。handle->read_op=pcap_read_linux;handle->setfilter_oppcap_setfilter_linux4.4和110(pop3)的TCP数据包,对DNS系统进行就只需要端为53的UDP为,滤机制在包捕获机制中心地位。true,则通只需要TCP类型且端口为110的数据包或ARP类型的数据包。滤机制在具体的而谓词判断会根据具体的协议映射到数组特定位置的值。如判断ARP类型数据包,只需要判断数组中第13、14个字节(以太头中的数据包类型)是否为0X0806。从理论BPFBSDPacketFilterUNIX平台上多数嗅包工具(tcpdump,络接口时,数据链路层的驱动会把它向系统的协议栈传送。但如果BPF接口,驱动首先调用BPF。BPF首先进行过滤操作,然后把数据包存放在过滤器相关的缓冲区的NIT过滤机制先缓冲每个数据包直到用户读数据时再过滤所造成的效率问题[11]。BPF对无环控制流图(CFG,controlflowgraph)算法的代码实现非常复杂,它使用伪机器方式。BPF伪机器是一个轻量级的,高效的状态机,对BPF过滤代码进行解释处理。BPF过滤代码形式为"opcodejtjfk",分别代表了操作码和寻址方式、判断正确的跳转、判断失败的跳转、操作使用的通用数据域。BPF过滤代码从逻辑上看很类似显然,由用户来写过滤代码太过复杂,因此libpcap允许用户书写的、容易理解的过滤字符串,然后将其编译为BPF代码[12]。BPF包捕获技术是一种基于内核的过滤和缓冲,在高速网络中可获得良好的性能。libpcap开发包来具体实现数据包捕获系统。libpcapBPF数据过滤,它工如图4.5为包捕获系统的结构图。4.5BPF4.4.1管理模块的功能需比较简单,用例图如图4.6所示。其中,参与者是管理员。主要用例有Authenticate——使用用户名和进行认证包;Stopmonitor——停止,结束捕获数据包。图 4.4.2管理模块的设员同样需要经常地登录到各个物理机,获取各个物理机上不同虚拟机之间的通信数 SSH(SecureS)协议是一种在两个主机之间通过加密和验证机制提供安全连接的协议。目前广泛应用的支持ssh协议的工具是开源的OpenSSH。WorkingGroup所制定的一族协议,其目的是要在非安全网络上提供安全的登录和SSH协议框架最主要的部分是三个协议:传输层协议、用户认证协议和连接协议。同时SSH协议框架中还为许多的应用协议提供扩展支持[14]。SSH安全验4.7SSH4.7所示,SSHTCPTCP连接 4.8SSH4.8SSH;服务器将客户端发送的用户名和信息,与设备上或者认证服务器上保 图4.9管理模块设计步本章主要介绍了系统的设计方法。4.1节根据前几章对相关技术的分析,介绍了系其设计思路。4.4节介绍了远端管理模块的设计方案,给出了功能需求和设计思路。通信模块实通信模块的实现框通信模块的实现步骤主要分为七步,实现框架如图5.1所示图5.1通信模块实现框char*device;/*char*device;/*用来捕获数据包的网络接口的名称*/pcap_t*p;/*捕获数据包句柄,最重要的数据结构*/structbpf_programfcode;/*BPF过滤代码结构*//**/device=pcap_lookupdev(errbuf);/*第二步:创建捕获句柄,准备进行捕获p=pcap_open_live(device,8000,1,500,/**/pile(p,&fcode,filter_string,0,netmask);pcap_setfilter(p,/*第四步:捕获数据包intpcap_loop(pcap_t*p,intcnt,pcap_handlercallback,u_char*/*MAC*/eth=(structlibnet_ethernet_hdr*)ptr;if(eth->ether_type==ntohs(ETHERTYPE_IP))出前执行本条代码*/函数getifaddrs()获得所有网络接口的地址,以及对应的网络掩码、广播地址、目标地址等相关信息,再利用add_addr_to_iflist()、add_or_find_if()、get_instance()把网络接口的信息增加到结构链表pcap_if中,最后从链表中提取第一个接口作为捕获设备。其()控的端口是虚拟网络端口tap系列,所以我们在实现中省略第一步,将要的端口作tapMAC帧格式,为了定义这些结构体,TCPIP数据报[15]IP地址的5.2MAC5.35.3以太网V2MACMAC帧的数据交给上一层的这个协议。例如,当类型字段的值后一个字段是4字节的帧检验序列FCS(使用CRC检验。#define#defineSNAP_LEN1500MAC18字节,所以SIZE_ETHERNE字节,ETHER_ADDR_LEN表示源地址和目的地址的长度都是6个字节。 /*MAC地址/*MAC地址IP协议都具有什么功能。如图5.4所示是IP数据报的完整格式。总长度 可选字段(总长度 可选字段(度可变数据部首部(20字节5.4IPIP数据报由首部和数据两部分组成,首部的前一部分是固定长 /* u_shortip_len;u_shortip_id;u_shortip_off;#defineIP_RF0x8000#defineIP_DF0x4000#defineIP_MF
/*区分服务/*总长度/*标识/*标志和片偏移/*保留标识/*不能分片/*还有分片/*标志的掩码/*生存时间/*协议/*首部检验和in_addr/*#define#defineip_vhlip_vhl进行处理,#define#define我们在使用这个字段是一般都是IP_V(ip)*4形式。由5.1.1小节,可以看到通信模块的实现架构主要有七个步骤,在具体的实现char*dev=/*捕获设备的名称char /*pcap_tchar*dev=/*捕获设备的名称char /*pcap_t/*数据包捕获句柄char*filter_expchar /*过滤表达示bpf_u_int32net;/*编译过滤表达示/*/*IP函数pile(),编译过滤表达式,函数的调用形式为int pile(pcap_t*p,structbpf_program*program,char*buf,intoptimize,bpf_u_int32mask),其中第一个参数p为捕获句柄,第三个参数buf指向用户提供的过滤字符串,在本模块中来自主函数传入structbpf_program*fp),其中的第二个参数fp是在上一步中编译过的过滤表达式。函数pcap_loop(),设置回调函数,开始捕获数据包。函数的调用形式为intpcap_loop(pcap_t*p,intcnt,pcap_handlercallback,u_char*user),第一个参数是捕获句回调函数的形式为voidcallback(u_char*userarg,conststructpcap_pkthdr*pkthdr,数是收到的数据包的pcap_pkthdr类型的指针,第三个参数是收到的数据包数据。staticintcount=/*包计数器staticintcount=/*包计数器conststructmonitor_ethernet /*conststructmonitor_ip /*IPconststructmonitor_tcp*tcp;constchar*payload;intsize_ip;int/*TCP/*Packetpayloadethernetethernet=(structip=(structmonitor_ip*)(packet+SIZE_ETHERNET);size_ip=IP_HL(ip)*4;To:%s\n",inet_ntoa(ip-case case }函数中的表示各种协议的常量都在/usr/include/netinet/in.h中定义,常用的一些协议和相应的协议字段值如表5.1所示。5.112689显示帮助信息的print_app_usage(),清理数据停止捕包的函数pcap_code()和5.2管理模块实中GanymedSSH-2forJava函数库实现了ssh2协议,支持SSH(命令执行和s),本地和端口转发,本地数据流转发,X11转发和SCP。它包含了所有的加密的功能,并且还没有依赖任何JCEprovider[16]。实现步骤如下:ConnectionConnectionconn=new/*它会返回一个布尔值,true代表成功登陆目的服务器,否则登陆失败InputStreamstdout=newStreamGobbler(sess.getStdout());BufferedReaderInputStreamstdout=newStreamGobbler(sess.getStdout());BufferedReaderbr=newBufferedReader(newInputStreamReader(stdout));DateFormatDateFormatdf=newSimpleDateFormat("yyyyMMddHHmmss");Calendarcalendar=Calendar.getInstance();StringfileName=newFileWriterFileWriterfw=new窗口输入相关的数据滤条件,具体窗口实现结果如下图。5.5,tport80(80tcp协议的数据包)等[17]。更详细的过滤规则请查看文献[17]本章主要是根据前一章的设计方案进行实现工作。5.1节首先给出了通信模块的实现框架,然后介绍了实现过程中的主要结构体函数。5.2节介绍了远端控制CPU:Inter(R)Core(TM)i3-2120CPU@操作系统:Ubutnu14.04desktopOpenvSwitchgcc版本:4.8.2操作系统:ubuntu13.04desktop两虚拟机-一虚拟交换机的实验平台,需要的最重要的两个程序就是KVM和OpenvSwitch。KVM的安装非常简单,OpenvSwitch的安装和配置有一定的复杂性,接下来我们分别简要介绍KVMOpenvSwitch的安装配置过程。6.1Ubunt14.04desktopamd64版本,Linux3.14.1。$egrep-o'(vmx|svm)'首先检查CPU是否支持安装KVM,只有支持In -VT和$egrep-o'(vmx|svm)'$sudo$sudoapt-getinstallqemu-kvmlibvirt-binvirt-managerbridge-python语言写的通用API,带有一套基于文本的虚拟机管理工具virsh;virt-manager是一套图形界面管理工具;bridge-utils用于网络桥接。$lsmod$lsmod|grep 明KVM可以成功运行: OpenvSwitch在相应版本的软件环境就绪后,OVS包解压到本地文件夹里,我们实验的版本是2.1.0,地址如下。$./configure$./configure–with-linux=/lib/modules/’uname-$sudomake$sudomakedatapath模块,OpenvSwitchdatapath模块需使用命令“lsmod|grepbridgebridge模块有没有被加载,如果已经加载则需要使用“rmmodbridge”删除该模块。$sudo$sudomake$sudo$sudomkdir-p$sudoovsdb-toolcreate/usr/local/etc/openvswitch/conf.db\KVM虚拟机的上网方式,KVM虚拟机可以有两种上网模式。第一种,默认方式为用户模式网络(UsermodeNetworking数据包通过NAT方式通过Networking$sudo$sudoapt-getinstallbridge-autoautoifaceloinetloopbackautoeth0ifaceeth0inetmanualautobr0ifacebr0inetstaticnetmaskbridge_portseth0bridge_fd0这样就可以保证br0正确地工作。SocketTCPTCP报文段的数据部分。这样在测试时可以即时显示出包的内容,用来判断结实验平台如图6.1VM0MAC00:11:11:EE:EE:EE,IP地93VM100:22:33:EE:EE:EEIPVM0作为Socket文本传输程序的端,VM1作为Socket文本传输程序的server端,绑定的端口是8010。VM1VM26.2图6.2端发送数据示意serverVM26.33131313131313131313131313131313131313131313131313131IPIP地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论