一种捕获虚拟交换机用户态数据平面数据报文的方法和系统与流程

文档序号:11709985阅读:226来源:国知局
一种捕获虚拟交换机用户态数据平面数据报文的方法和系统与流程

本申请涉及网络通信领域,特别涉及一种捕获虚拟交换机用户态数据平面数据报文的方法和系统。



背景技术:

随着虚拟化技术的广泛应用,对虚拟交换机提出越来越高的性能要求。为了提高虚拟交换机的性能,新一代的虚拟交换机将数据平面在用户态实现从而可以利用dpdk等高性能数据平面技术,但用户态数据平面也面临着传统的网络故障诊断工具无法使用的问题。为了解决虚拟交换机用户态数据平面故障诊断工具问题,图2提出了一种方案将数据报文io端口的所有发送接收报文都写入一个抓包文件里面,再由tcpdump进行离线分析,该方案由于所有的写文件操作都要做系统调用而且不能设置过滤规则,因此效率低下,而且必须离线分析。图3提出的方案将数据报文重新注入内核,从而可以复用现有的tcpdump等抓包工具,但由于无法在抓包第一时间进行过滤,也面临着严重的性能问题,而且该方案还必须依赖额外的内核模块,从而增加了系统维护代价。因此,本领域存在对虚拟交换机用户态数据平面数据报文进行高效率、高性能、灵活地抓包的方法的需求。



技术实现要素:

本申请叙述的方法用于捕获虚拟交换机用户态数据平面数据报文,从而使得虚拟交换机用户态数据平面可以高效灵活地进行诊断。根据一个实施例,提供了捕获虚拟交换机用户态数据平面数据报文的方法,该方法包括:抓包工具向虚拟交换机请求捕获用户态数据平面数据报文io端口上的数据报文,虚拟交换机创建与指定数据报文io端口关联的抓包代理,抓包工具与抓包代理建立数据通道;抓包代理捕获数据报文io端口上符合过滤规则的数据报文,将其放入与抓包工具之间的数据通道,抓包工具从与抓包代理之间的数据通道接收数据报文;抓包工具向虚拟交换机注销用户态数据平面数据报文io端口上的数据报文捕获,虚拟交换机删除相应的抓包代理。

在前述实施例的上下文中,虚拟交换机数据平面为用户态数据平面。

在前述实施例的上下文中,抓包工具向虚拟交换机抓包管理接口发送指定数据报文io端口上的捕获请求和捕获注销命令。

在前述实施例的上下文中,抓包工具可以设置抓包代理上的过滤规则。

在前述实施例的上下文中,抓包工具和抓包代理之间的数据通道基于共享内存。

在前述实施例的上下文中,多个抓包工具实例可以同时对不同数据报文io端口进行抓包。

本发明的其他实施例提供了一种可由网络设备的一个或多个处理器读取的程序存储设备,其有形地包含可由所述一个或多个处理器执行以便实施用于捕获虚拟交换机用户态数据平面数据报文的方法步骤的指令程序,所述方法步骤包括:抓包工具向虚拟交换机请求捕获用户态数据平面数据报文io端口上的数据报文,虚拟交换机创建与指定数据报文io端口关联的抓包代理,抓包工具与抓包代理建立数据通道;抓包代理捕获数据报文io端口上符合过滤规则的数据报文,将其放入与抓包工具之间的数据通道,抓包工具从与抓包代理之间的数据通道接收数据报文;抓包工具向虚拟交换机注销用户态数据平面数据报文io端口上的数据报文捕获,虚拟交换机删除相应的抓包代理。

本发明实施例的其他特征将从附图和后面的详细叙述中更明显得到。

本发明的突出优点为该方法是一种简单高效捕获虚拟交换机用户态数据平面数据报文的方法,而且抓包工具的使用方式与传统的使用方式完全一致,易于虚拟交换机用户态数据平面的日常诊断。

附图说明

在附图中的视图中借助举例方式对本发明的实施例进行描述,这些实施例并非起局限作用,附图中类似的参考数字将表示类似的元件,其中:

图1是从概念上描述本发明方法的逻辑关系图。

图2描述了一种使用写抓包文件然后离线分析的方法。

图3描述了一种将用户态数据平面导入内核再进行抓包的方法。

图4描述了应用本发明的一个具体实施例的功能模块图。

图5描述了一个具体实施例的抓包建立过程。

图6描述了一个具体实施例的数据报文捕获过程。

图7描述了一个具体实施例的抓包退出过程。

图8是可以使用本发明实施例的计算机系统的实例。

具体实施方式

本申请叙述了一种捕获虚拟交换机用户态数据平面数据报文的方法和系统。本申请实施的技术方案中,抓包工具基于tcpdump,在tcpdump使用的libpcap库中新增一种虚拟交换机抓包适配器。tcpdump通过虚拟交换机的抓包管理接口可以在特定的虚拟交换机用户态数据平面数据报文io端口上请求报文捕获,虚拟交换机创建抓包代理,并建立相应的基于共享内存的数据通道。tcpdump可以向虚拟交换机抓包管理接口请求抓包过滤规则,该过滤规则基于bpf指令,抓包代理利用bpfjit技术将收到的基于bpf指令转化为本地的机器指令以提高过滤速度。tcpdump可以向虚拟交换机抓包管理接口配置用于通知数据通道报文到达的eventfd。抓包代理捕获数据报文io端口上符合过滤规则的数据报文,将其放入基于共享内存的数据通道,tcpdump从基于共享内存的数据通道接收数据报文。抓包过程结束时,tcpdump向虚拟交换机注销用户态数据平面数据报文io端口上的数据报文捕获,虚拟交换机删除相应的抓包代理。多个tcpdump实例可以同时对不同数据报文io端口进行抓包。

在后面的叙述中,为了提供对本发明实施例的全面理解,公开了许多特定的详细内容。然而,本领域的技术人员将明白,在不具有这些具体细节中的某些细节的情况下,也可以实现本发明的实施例。

术语

虚拟交换机:由软件实现的根据以太网报头进行报文转发的系统,也可提供安全访问控制、流量控制和隧道等功能。

控制平面:用于控制和管理所有网络协议的运行,控制平面提供了数据平面数据处理转发前所必须的各种网络信息和转发查询表项。

数据平面io端口:用于接收发送数据报文的端口,可以是连接虚拟机的虚拟端口,连接物理网卡的物理端口,也可以是其它的特殊端口如隧道端口,tap端口等。

数据平面:用于处理数据报文在各种数据平面io端口之间的转发。

用户态数据平面:运行在操作系统用户态的数据平面。

bpf:伯克利数据包过滤器,一种通用的定义报文过滤规则的方法,由bpf指令构成。

bpfjit:一种将bpf指令翻译为本地指令的方法,用于提高执行过滤规则的性能。

libpcap:一种抓包的函数库,可以对不同类型的网络接口进行抓包,还可以将上层过滤规则转化为bpf指令。

tcpdump:一种通用的基于libpcap的抓包工具,可以定义过滤规则以及分析报文。

eventfd:用于不同线程,进程间通知事件。

图4描述了应用本发明的一个具体实施例的功能模块图。在tcpdump(480)中,新增了libpcap虚拟交换机抓包适配器(485)。在虚拟交换机(410)中,抓包管理接口(415)用于接收来自libpcap虚拟交换机抓包适配器(485)上的各种请求消息,它会管理每个抓包代理(460)的创建,配置以及删除。在libpcap虚拟交换机抓包适配器(485)和对应的抓包代理(460)之间会建立一条基于共享内存的数据通道(470),每条数据通道(470)包含一个基于共享内存的报文队列(475),以及报文通知eventfd(471)。

图5描述了抓包的建立过程。

tcpdump(510)首先向虚拟交换机抓包管理接口(520)发起请求查询可以实施抓包的数据报文io端口(步骤540),虚拟交换机抓包管理接口(520)会返回可以实施抓包的数据报文io端口列表(步骤545),tcpdump使用者可以从列表中挑选数据报文io端口进行抓包。

在发起特定数据报文io端口抓包请求以前,tcpdump(510)需要映射虚拟交换机共享内存到本地进程(步骤550)。

tcpdump(510)向虚拟交换机抓包管理接口(520)发起请求创建指定数据报文io端口上的抓包代理(步骤555),虚拟交换机抓包管理接口(520)会创建抓包代理(步骤560)并向指定的用户态数据平面数据报文io端口(530)注册报文接收发送回调(步骤565)。虚拟交换机抓包管理接口(520)向tcpdump(510)返回抓包代理句柄(步骤570)。

tcpdump(510)可以设置抓包代理消息通知eventfd(步骤575)。

tcpdump(510)可以设置抓包代理上的基于bpf指令的过滤规则(步骤580),虚拟交换机抓包管理接口(520)对抓包代理(525)设置过滤规则(步骤585),抓包代理(525)将bpf指令通过bpfjit转换为本地的机器指令(步骤586)。

图6描述了数据报文捕获过程。

数据报文io端口(630)上有数据报文接收发送操作(步骤640),执行已注册的抓包代理回调函数(步骤645)。抓包代理(620)检测是否已配置过滤规则,如果配置了过滤规则但bpfjit过滤器返回不匹配,则对该报文不做任何处理,返回(步骤650)。如果数据通道报文队列已满,对报文不做任何处理,返回(步骤655)。对报文进行克隆,并放入数据通道报文队列(步骤660)。如果抓包代理已设置通知eventfd,则利用eventfd通知tcpdump(步骤665)。tcpdump(610)轮询或根据eventfd通知,在数据通道报文队列读出报文(步骤670)。

图7描述了抓包退出过程。

tcpdump(710)向虚拟交换机抓包管理接口(720)发送请求注销指定数据报文io端口上的抓包代理(步骤740)。抓包管理接口(720)向数据报文io端口(730)注销报文接收发送回调(步骤745),同时删除抓包代理(步骤750)。tcpdump(710)释放抓包代理消息通知eventfd(步骤755),整个抓包过程结束。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可使用软件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1