一种虚拟化网络的数据传输方法,节点控制器及系统的制作方法_3

文档序号:9923821阅读:来源:国知局
8]如图3所示,节点控制器包括如下模块:
[0099]网络互连(NetworkInterface)模块;
[0100]系统接口(systeminterface)模块;
[0101]协议调度控制器(Protocoldispatch controller, PDC)模块;
[0102]远程协议引擎(Remoteprotocol engine,RPE)模块;
[0103]本地协议引擎(Localprotocal engine,LPE)模块;
[0104]虚拟网卡引擎(VirtualNetwork Interface Controller Engine, VNICEngine);
[0105]其中虚拟网卡引擎又包含:直接内存存取引擎(Direct Memory Access Engine,DMA Engine)、直接内存存取管理(Direct Memory Access Engine,DMA Manager)以及路由引擎(Route Engine),DMA Manager 管理着 DMA 上下文(DMA context) 0
[0106]图3中,各部分模块的功能如下:
[0107]RPE模块代理远端的内存,本端节点内的中央处理器(Central Processing Unit,CPU)访问远端节点的内存会先向RPE发送请求;
[0108]LPE模块代理本地内存,所以远端发过来的内存请求都要先发到LPE,LPE再向本地内存发起访问;
[0109]PDC模块用于判断报文的类型然后分配给LPE、RPE来处理。
[0110]在NC的内部还添加一个VNIC Engine模块,负责处理网卡相关的事务。VNICEngine中包含:
[0111]DMA Engine,负责DMA的搬移工作;
[0112]DMA Manager,负责维护所有的DMA队列的状态信息以及决定是否发起DMA读写操作;在本实施例中,一个虚拟机可以对应一个或者多个DMA队列,不同NC上DMA Manager还可以交换DMA信息,后面的处理流程将会进行详细说明;
[0113]Route Engine,负责报文的路由判断。
[0114]三、结合内部控制器的数据报文写入过程:
[0115]本实施例中,是以太报文在两个虚拟机间的传输路径,如图4所示,其中左边的是源虚拟机对应的源NC,右边是目的虚拟机对应的目的NC。本实施例借助于缓存(cache) —致性处理功能,源NC可以直接将数据报文从源端的DMA内存写到目的端的DMA内存中。
[0116]数据传输的详细过程如下:
[0117]401:源端的驱动程序程序将CPU需要发送的数据报文放入DMA发送队列中;即源(source, src)发送队列;
[0118]402:源端的虚拟网卡引擎(Network Informat1n Center Engine, VNIC engine)从源端DMA发送队列中读取数据报文;
[0119]403:源端的VNIC engine通知目的端VNIC engine需要发送新报文,目的端VNICengine返回一块接收DMA队列的内存空间;
[0120]404:源端的VNIC engine发起写内存操作,将报文写入到目的DMA空间;写内存请求到达远程协议引擎(Remote protocol engine, RPE)模块;
[0121]405:RPE将上述写内存请求转发到目的NC的本地协议引擎(Local ProtocolEngine, LPE);
[0122]406:目的NC的LPE接收到RPE的写内存请求后,将数据报文写入到目的虚拟机的接收队列中,即写入目的接收队列(destinat1n,dst)中,并通知源节点写操作完成;
[0123]407:源NC的VNIC Engine通知目的NC的VNIC Engine数据报文发送完成;
[0124]408:目的NC的VNIC Engine通知目的虚拟机的CPU接收到一个新的数据报文;
[0125]409:目的虚拟机的CPU从DMA接收队列中取出报文。
[0126]请参阅图5所示,其中VMl为源虚拟机,CPU2为与VMl对应的CPU,VMl有数据报文发送给VM2,VM2对应的是CPU7 ;在该网络中,还包含有:CPU0、CPU3 ;NC1为源NC,NC3为目标NC,还包含有NCO和NC2。
[0127]图5中的NC内部结构可以参考图3所示,VMl发送数据报文给VM2的流程可以参考图2或者图4。
[0128]若参考图2所示流程,在“205:源NC将数据报文写入到目的虚拟机的DMA内存中”的实现过程中,具体可以参考如下实现方案:
[0129]源NC将数据报文写到目的虚拟机的DMA内存的过程跟NC代理CPU写远端内存的过程类似。根据驱动程序对DMA内存使用的方式可分为两种场景,如下:
[0130]场景一:
[0131]如果DMA内存用软件保证数据的一致性,写内存数据过程如图6所示,包括:
[0132]601:NC0的VNIC engine向NCO的RPE发送写内存请求;
[0133]602:NC0的RPE向NC3的LPE转发上述写内存请求;
[0134]603:NC3的LPE执行完毕后返回完成响应给NCO的RPE ;
[0135]604:NC0 的 RPE 转发完成响应给 NCO 的 VNIC engine。
[0136]场景二:
[0137]如果使用硬件来保证数据一致性,在写内存前需先获取独占权限,具体流程如图7所示,包括:
[0138]701:NC0的VNIC engine向NCO的RPE发送请求目的内存地址的独占权限请求;
[0139]702:NC0的RPE向NC3的LPE转发上述请求目的内存地址的独占权限请求;
[0140]703:NC3的LPE确定独占以后返回确认响应给NCO的RPE ;
[0141]704:NC0 的 RPE 转发确认响应给 NCO 的 VNIC engine ;
[0142]705:NC0的VNIC engine向NCO的RPE发送写内存请求;
[0143]706:NC0的RPE向NC3的LPE转发上述写内存请求;
[0144]707:NC3的LPE执行完毕后返回完成响应给NCO的RPE ;
[0145]708:NC0 的 RPE 转发完成响应给 NCO 的 VNIC engine。
[0146]以上实施例,在数据报文发送流程上,借助了 NC本身可以保证全局cache —致性的功能,简化了数据报文传递的处理。在常规的两个网卡设备间传递数据时,源端网卡从DMA内存中读取数据后,组成以太网报文发给目的端,目的端网卡收到以太网报文后将报文解析开再写到DMA内存中。
[0147]由于NC保证了整个ccNUMA系统全局cache的一致性,所以源端的VNIC Engine可以通过NC直接将数据报文写到目的端的DMA内存中,去除了以太报文组包拆包的功能模块,也去除了以太报文的接收缓存与流控,只需复用NC的一致性协议处理功能即可。因此,可以减少CPU资源消耗,并且消除对NC协议处理能力额外消耗,从而提升整体系统性能。
[0148]本发明实施例还提供了一种节点控制器,作为第一节点控制器使用,如图8所示,包括:
[0149]报文读取单元801,用于从源虚拟机的存储区域读取数据报文;上述第一节点控制器为上述源虚拟机本地的节点控制器;
[0150]报文解析单元802,用于解析上述数据报文获得目的地址;
[0151]控制器确定单元803,用于根据上述目的地址确定第二节点控制器;上述第二节点控制器为上述目的地址指向的目的虚拟机本地的节点控制器;
[0152]数据传输单元804,用于通过上述第二节点控制器,将上述数据报文写入上述目的虚拟机的存储区域地址。
[0153]本发明实施例,源虚拟机一侧的节点控制器解析数据报文,从而确定目的虚拟机一侧的节点控制器,并获得存储空间的地址,从而实现直接将数据报
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1