一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种逻辑接口数据通信方法及装置与流程

2022-06-11 22:56:31 来源:中国专利 TAG:


1.本技术属于数据通信技术领域,尤其涉及一种基于数据平面开发套件dpdk的逻辑接口数据通信方法及装置。


背景技术:

2.数据平面开发套件dpdk(data plane development kit)主要基于linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。dpdk提供内核网卡接口kni(kernel nic interface),以便于dpdk应用程序与linux内核之间的通信。该接口允许报文从用户态接收后转发到linux协议栈去,即允许用户空间应用进入linux控制平面,该接口较现有的linux tun/tap接口更快,允许用标准linux网络工具(如ethtool,ifconfig,tcpdump)对dpdk接口进行管理和自身通信。
3.然而,对于应用了dpdk的网络设备,例如安全准入控制网关等,设备上的逻辑接口如链路聚合接口、vlan接口、隧道接口等,dpdk并没有提供这样的kni接口库函数来对接口进行管理和自身通信。因此,如果想要实现对逻辑接口进行管理和自身通信,就必须移植集成封装了自己的协议栈来对接口进行管理。
4.但是由于内核协议栈复杂,重新开发适配逻辑接口承载的虚网卡驱动,工作量大,耗时长。


技术实现要素:

5.本技术的目的是提供一种逻辑接口数据通信方法及装置,在基于dpdk的网络设备上实现逻辑接口通信,减少自身通信协议栈代码适配和开发的工作量,提升产品化开发效率和产品稳定。
6.为了实现上述目的,本技术技术方案如下:
7.一种逻辑接口数据通信方法,应用于基于数据平面开发套件dpdk的网络设备,所述逻辑接口数据通信方法,包括:
8.创建逻辑接口,将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口;
9.接收访问所述逻辑接口自身的数据报文,将接收的数据报文发送给映射的内核网卡接口;
10.接收所述内核网卡接口的回应报文,通过所述逻辑接口发送。
11.可选的,所述将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,包括:
12.在逻辑接口下无成员接口,开始加入成员接口时,将逻辑接口的接口配置映射给第一个成员接口对应的内核网卡接口;
13.在逻辑接口下移除成员接口时,判断所移除的成员接口是否是第一个成员接口,
如果是第一个成员接口,则删除所移除的成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给新的第一个成员接口对应的内核网卡接口。
14.可选的,所述将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,包括:
15.在逻辑接口下已有成员接口时,将逻辑接口的接口配置映射给其中一个成员接口对应的内核网卡接口;
16.在逻辑接口下移除成员接口时,判断所移除的成员接口的内核网卡接口是否映射了接口配置,如果是,则删除该成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给另一个成员接口对应的内核网卡接口。
17.进一步的,所述逻辑接口数据通信方法,还包括:
18.在删除逻辑接口的接口配置时,删除映射的内核网卡接口的接口配置。
19.进一步的,所述逻辑接口数据通信方法,还包括:
20.在删除逻辑接口时,删除映射的内核网卡接口的接口配置。
21.本技术还提出了一种逻辑接口数据通信装置,应用于基于数据平面开发套件dpdk的网络设备,所述逻辑接口数据通信装置,包括:
22.配置模块,用于创建逻辑接口,将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口;
23.自身通信模块,用于接收访问所述逻辑接口自身的数据报文,将接收的数据报文发送给映射的内核网卡接口;接收所述内核网卡接口的回应报文,通过所述逻辑接口发送。
24.可选的,所述配置模块将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,执行如下操作:
25.在逻辑接口下无成员接口,开始加入成员接口时,将逻辑接口的接口配置映射给第一个成员接口对应的内核网卡接口;
26.在逻辑接口下移除成员接口时,判断所移除的成员接口是否是第一个成员接口,如果是第一个成员接口,则删除所移除的成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给新的第一个成员接口对应的内核网卡接口。
27.可选的,所述配置模块将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,执行如下操作:
28.在逻辑接口下已有成员接口时,将逻辑接口的接口配置映射给其中一个成员接口对应的内核网卡接口;
29.在逻辑接口下移除成员接口时,判断所移除的成员接口的内核网卡接口是否映射了接口配置,如果是,则删除该成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给另一个成员接口对应的内核网卡接口。
30.进一步的,所述配置模块,还用于:
31.在删除逻辑接口的接口配置时,删除映射的内核网卡接口的接口配置。
32.进一步的,所述配置模块,还用于:
33.在删除逻辑接口时,删除映射的内核网卡接口的接口配置。
34.本技术提出的一种逻辑接口数据通信方法及装置,通过映射逻辑接口的ip地址给成员接口对应的内核网卡接口,从而采用内核协议栈来处理和响应到自身报文,提高了设
备转发性能。同时减少自身通信协议栈代码适配和开发的工作量,提升产品化开发效率和产品稳定性。减少了链路聚合接口、vlan接口等三层逻辑接口动态路由表项等开发的巨大投入。
附图说明
35.图1为本技术实施例逻辑接口数据通信方法流程图;
36.图2为本技术实施例链路聚合接口通信方法流程图;
37.图3为本技术实施例链路聚合接口网络连接示意图;
38.图4为本技术实施例vlan接口网络连接示意图;
39.图5为本技术实施例逻辑接口数据通信装置结构示意图。
具体实施方式
40.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本技术,并不用于限定本技术。
41.本技术提供的一种逻辑接口数据通信方法及装置,应用于基于dpdk的网络设备,在该网络设备上的逻辑接口,按照本技术的方法进行自身通信。在本技术中逻辑接口以链路聚合接口和vlan接口为例进行说明,对其他逻辑接口同样适用。链路聚合(英语:link aggregation)是一个计算机网络术语,指将多个物理接口汇聚在一起,形成一个逻辑接口,每个物理接口在逻辑接口中就是一个成员接口,以实现出/入流量吞吐量在各成员接口的负荷分担,交换机根据用户配置的接口负荷分担策略决定网络封包从哪个成员接口发送到对端的交换机。当交换机检测到其中一个成员接口的链路发生故障时,就停止在此接口上发送封包,并根据负荷分担策略在剩下的链路中重新计算报文的发送接口,故障接口恢复后再次担任收发接口。链路聚合在增加链路带宽、实现链路传输弹性和工程冗余等方面是一项很重要的技术。虚拟局域网接口(vlan接口)是一组逻辑上的接口,这些接口并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样。在本技术的实施例中,将链路聚合接口或vlan接口中各个物理接口统称为成员接口。对于链路聚合接口,其成员接口就是参加链路聚合的各个物理接口;同样对于vlan接口,其成员接口就是在同一个vlan的各个物理接口。
42.本技术的一个实施例,如图1所示,提供了一种逻辑接口数据通信方法,包括:
43.步骤s110、创建逻辑接口,将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口。
44.目前应用了dpdk的网络设备,例如安全准入控制网关等,其上的每个物理接口都会有对应kni接口,然而对于逻辑接口,并没有提供对应的kni接口。无论是物理接口还是逻辑接口在接收到数据报文后,如果不是访问自身的,就进行转发。而如果是访问接口自身的数据报文,就是自身通信数据报文。对于自身通信数据报文,物理接口通过dpdk提供的kni接口允许报文从用户态接收后转发到linux协议栈去实现自身通信,而dpdk并没有为逻辑接口提供这样的kni接口。因此本技术的技术方案就是希望在逻辑接口上也能利用linux协议栈来实现逻辑接口的自身通信,而不需要额外开发适配逻辑接口承载的虚网卡驱动。
45.通常逻辑接口的创建,一般来说可以先创建逻辑接口,然后将成员接口加入到创建的逻辑接口。例如,在网络设备a上创建链路聚合接口aggregateport1,然后将网络设备a的物理接口ethernet1、物理接口ethernet2加入到aggregateport1。又例如,在网络设备a上创建vlan接口vlan10,然后将网络设备a的物理接口ethernet1、物理接口ethernet2加入到vlan10。所创建的链路聚合接口aggregateport1、vlan10就是逻辑接口,物理接口ethernet1、物理接口ethernet2是成员接口。
46.逻辑接口的创建过程中,还需要对逻辑接口进行配置,逻辑接口的接口配置通常包括ip地址、接口状态、最大传输单元mtu等。接口状态有up和down两种状态。需要说明的是,逻辑接口的接口配置可以在创建逻辑接口后就进行配置,也可以在将成员接口加入后再进行配置,本技术对此不做限制。
47.本技术为了在逻辑接口上也能利用linux协议栈来实现逻辑接口的自身通信,采用将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口来实现。
48.在一个具体的示例中,将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,包括:在逻辑接口下无成员接口,开始加入成员接口时,将逻辑接口的接口配置映射给第一个成员接口对应的内核网卡接口;在逻辑接口下移除成员接口时,判断所移除的成员接口是否是第一个成员接口,如果是第一个成员接口,则删除所移除的成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给新的第一个成员接口对应的内核网卡接口。
49.具体的,逻辑接口创建后,就配置了逻辑接口的接口配置,此时逻辑接口下还没有成员接口,逻辑接口的接口配置在本地保存。然后为逻辑接口配置成员接口,在第一个成员接口加入时,就将逻辑接口的接口配置映射给第一个成员接口对应的内核网卡接口。也就是说,在第一成员接口加入后,就能够实现将访问逻辑接口自身的自身通信数据报文通过第一个成员接口对应的内核网卡接口转入linux协议栈去处理。后续成员接口再加入时,无需额外的配置。
50.同样的,在逻辑接口下移除成员接口时,如果移除的是第一成员接口,由于第一成员接口被移除,其对应的内核网卡接口将无法再提供服务,此时需要删除第一个成员接口对应的内核网卡接口的接口配置。重新寻找该逻辑接口下的第一个成员接口,找到新的第一成员接口后,将逻辑接口的接口配置映射给新的第一个成员接口对应的内核网卡接口。为了便于判断谁是新的第一个成员接口,可以对加入逻辑接口的成员接口顺序编号,根据编号来确定新的第一个成员接口,这里不再赘述。
51.在本实施例中,在删除逻辑接口的接口配置时,删除映射的内核网卡接口的接口配置;在删除逻辑接口时,删除映射的内核网卡接口的接口配置。
52.具体地,如果删除逻辑接口的接口配置,相应的也删除第一成员接口映射的内核网卡接口的接口配置。如果删除逻辑接口,也相应的删除第一成员接口映射的内核网卡接口的接口配置。
53.在另一个具体的示例中,将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,包括:在逻辑接口下已有成员接口时,将逻辑接口的接口配置映射给其中一个成员接口对应的内核网卡接口;在逻辑接口下移除成员接口时,判断所移除的成员接口的内核网卡接口是否映射了接口配置,如果是,则删除该成员接口对应的内核网卡接口的接口
配置,将逻辑接口的接口配置映射给另一个成员接口对应的内核网卡接口。
54.具体的,逻辑接口创建后,就配置了逻辑接口下的成员接口,此后为该逻辑接口配置对应的接口配置,发现已经有成员接口,则需要将接口配置映射给一个成员接口对应的内核网卡接口。此时,选择用来映射的成员接口,可以根据成员加入的顺序编号选择第一个成员接口,也可以任意选择一个成员接口,或者根据成员接口的优先级来选择。成员接口的优先级可以根据成员接口的可用资源来确定,例如根据其剩余带宽来确定,剩余带宽越高其优先级越高。或者根据成员接口上已有的用户数来确定优先级,用户数越少的优先级越高。本示例对如何选择成员接口不做限制。
55.相应的,在移除成员接口时,判断所移除的成员接口的内核网卡接口是否映射了接口配置,如果是,则删除该成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给新选择的一个成员接口对应的内核网卡接口。
56.在本实施例中,在删除逻辑接口的接口配置时,删除映射的内核网卡接口的接口配置;在删除逻辑接口时,删除映射的内核网卡接口的接口配置。
57.具体地,如果删除逻辑接口的接口配置,相应的也删除成员接口映射的内核网卡接口的接口配置。如果删除逻辑接口,也相应的删除成员接口映射的内核网卡接口的接口配置,这里不再赘述。
58.步骤s120、接收访问所述逻辑接口自身的数据报文,将接收的数据报文发送给映射的内核网卡接口。
59.在前面的步骤中,已经将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,因此当逻辑接口接收到访问自身的数据报文时,此数据报文的目的地址是逻辑接口的地址,内核网卡接口就会将数据报文转发到linux协议栈进行处理。
60.步骤s130、接收所述内核网卡接口的回应报文,通过所述逻辑接口发送。
61.网络设备的linux协议栈对接收的数据报文进行处理后,进行回应,回应报文经过内核网卡接口重新送入逻辑接口,匹配已经建立的转发表项,通过逻辑接口发送出去,回应报文的目的地址是原访问自身的数据报文的源地址。
62.本技术的另一个实施例,本实施例可以与上述一个或者多个实施例中各个可选方案结合,以链路聚合接口为例详细阐述本技术的一种逻辑接口数据通信方法,如图2所示,包括:
63.步骤s201、创建链路聚合接口,配置链路聚合的ip地址。
64.本实施例链路聚合接口的接口配置以ip地址为例进行说明,例如在网络设备a上创建链路聚合接口aggregateport1,然后将网络设备a的物理接口ethernet1、物理接口ethernet2加入到aggregateport1。为链路聚合接口aggregateport1配置ip地址,例如配置的ip地址为192.168.1.110。
65.步骤s202、判断链路聚合接口下是否有成员接口,如果没有成员接口,则将链路聚合接口的ip地址保存在本地,如果有成员接口,则将链路聚合接口的ip地址映射给第一成员接口对应的内核网卡接口。
66.具体地,本实施例先判断链路聚合接口下是否有成员接口,如果没有成员接口,则将链路聚合接口的ip地址保存在本地。后续发现开始有成员接口加入到链路聚合接口,则将链路聚合接口的ip地址映射给第一成员接口对应的内核网卡接口。例如,ethernet1是第
一个加入的成员接口,则将ip地址192.168.1.110映射给ethernet1对应的内核网卡接口。
67.如果链路聚合接口下有成员接口,则根据成员接口的加入顺序编号,将链路聚合接口的ip地址映射给第一成员接口对应的内核网卡接口。例如,ethernet1是第一个加入的成员接口,则将ip地址192.168.1.110映射给ethernet1对应的内核网卡接口。
68.步骤s203、在链路聚合接口下移除成员接口时,判断移除的是否是第一成员接口,如果是第一成员接口,则删除所移除的成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给新的第一个成员接口对应的内核网卡接口。
69.如果从链路聚合接口下移除成员接口,例如从链路聚合接口aggregateport1中移除成员接口ethernet1,由于成员接口ethernet1是第一成员接口,其对应的内核网卡接口映射了链路聚合接口的ip地址192.168.1.110,此时需要删除成员接口ethernet1对应的内核网卡接口的接口配置。重新在链路聚合接口下的成员接口中查找到新的第一成员接口,假设此时成员接口ethernet2是第一成员接口,则将链路聚合接口aggregateport1的ip地址192.168.1.110映射给ethernet2对应的内核网卡接口。此时始终保持了链路聚合接口的ip地址映射给了一个成员接口对应的内核网卡接口,能够实现链路聚合接口自身通信。
70.容易理解的是,如果移除的成员接口不是第一成员接口,或者说移除的成员接口对应的内核网卡接口未被映射链路聚合接口的ip地址,则不用做任何处理。
71.特殊地,如果移除成员接口后,链路聚合接口下没有任何成员接口时,则链路聚合接口配置的ip地址保存在本地,此时没有映射的内核网卡接口,不能实现链路聚合接口的自身通信。
72.而在删除链路接口的ip地址,或者删除链路聚合接口时,相应的也删除第一成员接口映射的内核网卡接口的ip地址。
73.步骤s204、接收访问所述链路聚合接口自身的数据报文,将接收的数据报文发送给映射的第一个成员接口对应的内核网卡接口。
74.本实施例中,第一成员接口ethernet1对应的内核网卡接口映射了链路聚合接口的ip地址192.168.1.110,因此当链路聚合接口接收的数据报文的目的ip地址为192.168.1.110时,是对链路聚合接口的自身通信数据报文。由于,第一成员接口ethernet1对应的内核网卡接口映射了链路聚合接口的ip地址192.168.1.110,数据报文被发往第一成员接口ethernet1对应的内核网卡接口,从而数据报文被转发到linux协议栈进行处理,linux协议栈对数据报文进行处理后,返回回应报文。
75.步骤s205、接收第一个成员接口对应的内核网卡接口返回的回应报文,通过链路聚合接口发送。
76.linux协议栈对数据报文进行处理后,返回回应报文,该回应报文被链路聚合接口转发,转发的目的地址是原数据报文(访问所述链路聚合接口自身的数据报文)的源ip地址。
77.例如,访问所述链路聚合接口自身的数据报文的目的地址是192.168.1.110,源ip地址是192.168.220。则回应报文的目的地址是192.168.220,从而成功对访问自身的自身通信进行了响应处理。
78.容易理解的是,图2实施例是以链路聚合接口为例进行的说明,对于其他逻辑接口,例如vlan接口也同样适用,这里不再赘述。
79.本技术一种逻辑接口数据通信方法,通过映射逻辑接口的ip地址给成员接口对应的内核网卡接口,从而采用内核协议栈来处理和响应到自身报文,提高了设备转发性能。同时减少自身通信协议栈代码适配和开发的工作量,提升产品化开发效率和产品稳定性。减少了链路聚合接口、vlan接口等三层逻辑接口动态路由表项等开发的巨大投入。
80.图3是链路聚合接口自身通信的一个实施例,在该实施例中,应用了dpdk的安全准入控制网关fw2和fw3的三个物理接口以成员接口的方式加入到一个链路聚合接口,并分别给fw2、fw3的链路聚合接口配置各自的ip地址,由于fw2和fw3本身没有集成协议栈,网络流量到自身的通信承载在自带的linux系统上,配置的链路聚合接口的ip地址也同步映射到3个物理接口其中一个对应的内核网卡接口上,一般是链路聚合接口的第一个成员接口对应的内核网卡接口。
81.以fw2为例,三个物理接口ethernet1、ethernet2、ethernet3以成员接口的方式加入到链路聚合接口中,假设fw2链路聚合接口的ip地址为ip1,映射的内核网卡接口为物理接口ethernet1对应的内核网卡接口kni1。
82.在移除成员接口时,如果移除的是物理接口ethernet1,则要删除kni1映射的ip地址,重新映射内核网卡接口,例如映射给物理接口ethernet2对应的内核网卡接口kni2。
83.在删除链路聚合接口的ip地址时,或删除链路聚合接口时,要删除kni1映射的ip地址。
84.pc和fw2链路聚合接口通信的数据报文全部送往kni1接口,由linux协议栈来回应报文交互。而其他经过链路聚合接口转发的数据报文,则由链路聚合接口正常转发。
85.图4是vlan接口自身通信的一个实施例,在该实施例中,应用了dpdk的安全准入控制网关fw1上创建vlan接口,fw1选择物理接口ethernet4、ethernet5、ethernet6加入vlan,分别连接pc1、pc2、pc3。vlan接口配置ip地址时,ip地址同步映射给一个物理接口对应的内核网卡接口,可以选择映射给物理接口ethernet4、ethernet5、ethernet6口中第一个加入vlan的物理接口对应的内核网卡接口。假设fw1上vlan接口的ip地址为ip10,映射的内核网卡接口为物理接口ethernet4对应的内核网卡接口kni4。
86.物理接口ethernet4、ethernet5、ethernet6其中一个移除或者工作状态变为down,需要检测判断是否重新映射内核网卡接口。例如移除ethernet4,则要删除kni4映射的ip地址,重新映射内核网卡接口,例如映射给物理接口ethernet5对应的内核网卡接口kni5。
87.vlan接口ip地址修改或者删除时,需要删除映射的内核网卡接口的ip地址,例如要删除kni4映射的ip地址。
88.pc1、pc2、pc3配置和vlan接口同网段的ip地址,pc1、pc2、pc3和vlan接口通信时,全部送往kni4接口,由linux协议栈来回应报文交互。而其他经过vlan接口转发的数据报文,则由vlan接口正常转发。
89.本技术的另一个实施例,如图5所示,还提供了一种逻辑接口数据通信装置,应用于基于数据平面开发套件dpdk的网络设备,所述逻辑接口数据通信装置,包括:
90.配置模块,用于创建逻辑接口,将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口;
91.自身通信模块,用于接收访问所述逻辑接口自身的数据报文,将接收的数据报文
发送给映射的内核网卡接口;接收所述内核网卡接口的回应报文,通过所述逻辑接口发送。
92.关于逻辑接口数据通信装置的具体限定可以参见上文中对于逻辑接口数据通信方法的限定,在此不再赘述。上述逻辑接口数据通信装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
93.与上述逻辑接口数据通信方法对应的,可选的,所述配置模块将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,执行如下操作:
94.在逻辑接口下无成员接口,开始加入成员接口时,将逻辑接口的接口配置映射给第一个成员接口对应的内核网卡接口;
95.在逻辑接口下移除成员接口时,判断所移除的成员接口是否是第一个成员接口,如果是第一个成员接口,则删除所移除的成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给新的第一个成员接口对应的内核网卡接口。
96.可选的,所述配置模块将逻辑接口的接口配置映射给一个成员接口对应的内核网卡接口,执行如下操作:
97.在逻辑接口下已有成员接口时,将逻辑接口的接口配置映射给其中一个成员接口对应的内核网卡接口;
98.在逻辑接口下移除成员接口时,判断所移除的成员接口的内核网卡接口是否映射了接口配置,如果是,则删除该成员接口对应的内核网卡接口的接口配置,将逻辑接口的接口配置映射给另一个成员接口对应的内核网卡接口。
99.与上述逻辑接口数据通信方法对应的,本技术所述配置模块,还用于:
100.在删除逻辑接口的接口配置时,删除映射的内核网卡接口的接口配置。
101.与上述逻辑接口数据通信方法对应的,本技术所述配置模块,还用于:
102.在删除逻辑接口时,删除映射的内核网卡接口的接口配置。
103.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献