发明名称 一种内核虚拟机环境下高效网络I/O的实现方法
摘要 一种内核虚拟机环境下高效网络I/O的实现方法,该方法有四个步骤。步骤一:高效网络报文捕获机制;步骤二:高效MAC层复用机制;步骤三:防扰动的网络I/O路径分析机制;步骤四:网络I/O优化机制。本发明提出的方法弥补了当前内核虚拟机环境下网络I/O分析的空缺,为内核虚拟机环境下网络I/O优化提供了强有力的支持,解决了当前内核虚拟机环境下存在的网络I/O性能问题,使得内核虚拟机能够更好地应用于真实的网络环境,因此,本发明具有良好的应用前景和发展前途。
申请公布号 CN101465863B 申请公布日期 2012.09.26
申请号 CN200910076362.8 申请日期 2009.01.14
申请人 北京航空航天大学 发明人 曾珊;郝沁汾;李卓;肖利民;李强
分类号 H04L29/06(2006.01)I;H04L12/56(2006.01)I;H04L12/46(2006.01)I;G06F9/455(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种内核虚拟机环境下高效网络I/O的实现方法,其特征在于:该方法具体步骤如下:总体系统的实现平台是联想万全R510服务器,处理器为Xeon3230;首先在物理主机内部,采用高效网络报文捕获技术进行高效捕包,利用高效MAC复用技术对捕获的报文进行高效转发,同时,利用步骤三中防扰动的网络I/O路径分析机制给出的网络I/O的主要开销和瓶颈,进行网络I/O优化;另外在虚拟机管理器和虚拟机模块中也采用步骤三中防扰动的网络I/O路径分析机制给出的网络I/O的主要开销和瓶颈,进行网络I/O优化,具体为:步骤一:高效网络报文捕获机制;在Linux系统中,操作系统内核协议栈为用户提供了一种工作在数据链路层的套接字SOCK_PACKET;Libpcap通过该套接字应用程序接口从用户态进入到系统内核态,绕过内核协议栈中的TCP层和IP层处理过程直接从数据链路层捕获原始网络数据帧,这样能够节省数据包在接收过程中所消耗的CPU时间;但是在Libpcap捕包过程中,系统调用、数据拷贝和内核中断处理仍然是系统主要的性能瓶颈,本机制中在Libpcap的基础上,针对Libpcap的几个耗时环节分别进行优化,增加了内核过滤机制以及旁路内核协议栈来对网络报文捕获进行优化,实现高效的网络报文捕获机制;步骤二:高效MAC层复用机制;以虚拟网桥的方式来实现高效MAC层复用机制,将内核虚拟机启动时自动产生的连接内核虚拟机和物理主机网络通信的接口tap添加到虚拟网桥的端口中,等待接收虚拟网桥转发的网络报文;高效MAC层复用机制的具体思路是:虚拟网桥维护一个MAC‑PORT表,通过查找该表找到指定端口而不是广播的方式来转发网络报文;每次收到一个报文,虚拟网桥都会学习其来源MAC地址,并将该地址添加进这个表;整个虚拟网桥的处理,就是一个根据源地址学习即写表和根据目的地址确定发送端口即查表的过程;如果网络报文是发给本机的,则需要将网络报文交到上层处理;如果开启了STP,还要处理STP协议;如果虚拟网桥的虚拟网卡处于混杂模式,那么每个接收到的网络报文都需要克隆一份送到AF_PACKET协议处理体;如果网络报文的目的MAC地址为广播或多播地址,则需要向本机的上层协议栈传送这个网络报文,这里有一个标志变量passedup用于表示是否传送过,如果已传送过,就丢弃;查询CAM表后,如果能够找到表项,并且目的MAC是到本机的虚拟网卡的,就需要把这个报文提交给上层协议;查到表且不是本地虚拟网卡的,转发这个报文;如果表里边查不到,就采用广播方式,这样就将网络报文从物理主 机转发到其端口之一tap,从而实现高效MAC层复用机制;步骤三:防扰动的网络I/O路径分析机制;主要是分析网络报文从物理主机到内核虚拟机的路径以及各路径上相应的开销即路径上消耗的时间、CPU使用率以及内存的占用率,从而得出影响内核虚拟机环境下网络I/O性能的主要瓶颈;主要思路是:利用Linux内核监控机制SystemTap技术实现一种网络I/O路径分析工具,通过对内核函数进行插桩处理,挖掘出网络数据包传输过程中的路径信息和性能开销,包括经过的函数以及在各个函数上所花费的时间,从而得出主要的性能开销所在;同时,建立一种网络I/O事件捕获机制,一旦发现网络I/O就触发该工具进行I/O路径的监控;通过内核函数进行插桩处理研发的网络I/O路径分析机制难免会产生该网络I/O路径分析工具自身带来的扰动问题;利用减少插桩点,来尽最减少网络I/O分析路径工具自身带来的扰动问题;建立一种防扰动的网络I/O路径分析机制;步骤四:网络I/O优化机制;根据防扰动的网络I/O路径分析机制得出的网络I/O路径上的主要性能开销,通过缩短网络数据从物理主机的网卡到内核虚拟机的传递路径,减少传输中网络数据的丢失和由于传输网络数据所带来的系统性能开销,主要技术在于提高内核态向用户态转发数据的效率以及虚拟机内部数据转发的效率,从而提高内核虚拟机环境下网络I/O性能,实现内核虚拟机环境下的高效网络I/O。
地址 100191 北京市海淀区学院路37号北京航空航天大学计算机学院