一种在DPDK中实现BGP报文交互的方法及服务器与流程

专利2024-10-15  15


本发明涉及互联网技术领域,特别涉及一种在dpdk中实现bgp报文交互的方法及服务器。



背景技术:

dpdk(dataplanedevelopmentkit,数据平面开发工具集)可以绕过内核态的数据通路,通过向量指令、大页内存、绑核等技术,优化用户态的数据通路,从而可以提高物理网卡和虚拟机网卡的报文处理速度。bgp(bordergatewayprotocol,边界网关协议)属于外部网关路由协议,可以在自治系统之间交换网络可达信息,常被用于自治系统的边界路由器。frr(freerangerouting,自由程路由)是一款linux平台的边界路由器软件,由于frr是通过linux内核收发bgp报文,而dpdk是绕过内核直接从网卡收发网络报文,这样就会导致dpdk无法直接使用frr的bgp组件进行bgp报文交互。



技术实现要素:

本申请的目的在于提供一种在dpdk中实现bgp报文交互的方法及服务器,使得在dpdk框架下frr程序能够与bgp对等体之间建立通信连接。

为实现上述目的,本申请一方面提供一种在dpdk中实现bgp报文交互的方法,所述方法包括:配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第一五元组信息和第四五元组信息,以及根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第二五元组信息和第三五元组信息;dpdk在接收到所述frr程序以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向所述bgp对等体发送替换了五元组信息的数据包;dpdk在接收到所述bgp对等体以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述frr程序发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

为实现上述目的,本申请另一方面还提供一种在dpdk中实现bgp报文交互的方法,所述方法包括:配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第一五元组信息和第四五元组信息,以及基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第二五元组信息和第三五元组信息;dpdk在接收到bgp对等体以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向frr程序发送替换了五元组信息的数据包;其中,所述第二五元组信息中的目的端口为内核网卡接口的bgp端口;dpdk在接收到所述frr程序以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述bgp对等体发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

为实现上述目的,本申请另一方面还提供一种服务器,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的方法。

由上可见,本申请一个或者多个实施方式提供的技术方案,可以兼容bgp协议下的主动连接和被动连接两种模式。主动模式下,frr程序以第一五元组信息向dpdk发送用于建立连接的数据包,该第一五元组信息是基于第一虚拟网卡和第二虚拟网卡的配置信息生成的。当dpdk接收到该数据包后,为了将该数据包发送至bgp对等体,需要将第一五元组信息替换为第二五元组信息,该第二五元组信息是基于第三虚拟网卡和bgp对等体的配置信息生成的。这样,替换了五元组信息后,数据包便可以正常由dpdk发往bgp对等体。后续,在接收到bgp对等体发来的回复数据包后,同样需要将回复数据包中的五元组信息进行替换,最终该回复数据包可以由frr程序接收,从而完成通信连接的建立过程。

在被动模式下,frr程序可以监听bgp对等体发来的连接请求。此时,bgp对等体可以向dpdk发送用于建立连接的数据包,并且该数据包可以由dpdk进行五元组信息的替换过程。类似的,frr程序接收到该数据包后,可以向dpdk反馈回复数据包,该回复数据包在经过五元组信息替换后可以由dpdk发送至bgp对等体,从而完成通信连接的建立过程。

可见,无论是主动模式还是被动模式,dpdk均可以在frr程序和bgp对等体之间进行五元组信息的识别和替换过程。这样,在dpdk框架下,frr程序能够与bgp对等体之间建立通信连接,并且frr程序与bgp对等体之间可以实现bgp报文的交互。

附图说明

为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施方式中主动模式下的bgp报文交互方法的步骤示意图;

图2是本发明实施方式中主动模式下的bgp报文交互示意图;

图3是本发明实施方式中被动模式下的bgp报文交互方法的步骤示意图;

图4是本发明实施方式中被动模式下的bgp报文交互示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施方式及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施方式仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。

本申请提供一种在dpdk中实现bgp报文交互的方法,该方法可以应用于如图2和图4所示的系统架构中。在该系统中,frr程序可以通过dpdk与bgp对等体(peer)建立通信连接。

请参阅图1,针对bgp协议中的主动连接模式,本申请一个实施方式提供的在dpdk中实现bgp报文交互的方法,可以包括以下多个步骤。

s11:配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第一五元组信息和第四五元组信息,以及根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第二五元组信息和第三五元组信息。

在本实施方式中,dpdk可以预先创建第一虚拟网卡intf1、第二虚拟网卡intf2以及第三虚拟网卡intf3,同时可以创建kni(kernelnicinterface,内核网卡接口)网卡。其中,第一、第二以及第三虚拟网卡是仅dpdk可见的虚拟网卡,这三个虚拟网卡对frr程序并不可见。而kni网卡是frr程序可见的虚拟网卡。在创建了这些网卡之后,可以将所述第一虚拟网卡intf1与kni网卡相绑定。在创建了第一虚拟网卡intf1、第二虚拟网卡intf2以及第三虚拟网卡intf3之后,还可以分别为这三个虚拟网卡设置各自的ip地址。其中,inft1的ip地址可以配置为kni_ip,表征kni网卡的ip地址;inft2的ip地址可以配置为dpdk_ip,表征dpdk的ip地址;inft3的ip地址可以配置为bgp_ip,表征bgp的ip地址。其中,kni_ip与dpdk_ip可以在同一个直连网段。

在本实施方式中,在创建了第一虚拟网卡intf1、第二虚拟网卡intf2以及第三虚拟网卡intf3,并且完成绑定以及设置ip地址之后,对应的数据可以作为这些虚拟网卡的配置信息。这样,配置信息中可以至少包含虚拟网卡的绑定关系,以及各个虚拟网卡对应的ip地址。

在本实施方式中,为了使得后续的数据包能够正常地在网络中传输,可以预先生成多组五元组信息。其中,frr程序需要与dpdk进行数据交互,dpdk需要与bgp对等体进行数据交互。这样,可以基于第一虚拟网卡和第二虚拟网卡的配置信息,生成第一五元组信息。在第一五元组信息中,支持的协议的是tcp协议,源ip地址和源端口分别为kni的ip地址和kni的端口,目的ip地址和目的端口分别为dpdk的ip地址和dpdk的端口,表现形式可以为a1(tcp、kni_ip、kni_port、dpdk_ip、dpdk_port)。其中,kni_port与dpdk_port相等,这样可以避免重新查找端口映射的过程。在实际应用中,kni_port可以由frr程序在端口池中生成。在frr的端口池中,可以具备一个预先设定的端口号范围(例如50000至60000),然后frr程序可以从第一个端口号开始,判断当前的端口号是否被使用,如果未被使用,就直接将当前的端口号设置为kni_port;而如果被使用,则可以对下一个端口号继续进行判断,直至查找到未被使用的端口号为止。

为了实现bgp报文的交互,bgp对等体接收到的数据包中,源ip地址和源端口需要是bgp相关的ip地址和端口。这样,根据第三虚拟网卡intf3的配置信息和bgp对等体的配置信息,可以生成第二五元组信息。在第二五元组信息中,源ip地址和源端口分别为bgp的ip地址和bgp的端口,目的ip地址和目的端口分别为bgp对等体的ip地址和bgp对等体的端口,表现形式可以为a2(tcp、bgp_ip、bgp_port、peer_ip、peer_port)。其中,bgp_port也可以与kni_port相等,这样也可以避免重新查找端口映射的过程。其中的peer_ip和peer_port,可以是gbp对等体的ip地址和bgp对等体用于监听bgp连接的端口。

s13:dpdk在接收到所述frr程序以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向所述bgp对等体发送替换了五元组信息的数据包。

在本实施方式中,在生成上述的第一五元组信息a1和第二五元组信息a2后,frr程序可以通过ipc(inter-processcommunication,进程间通信)机制,告知dpdk,a1对应的五元组信息是a2,从而建立a1和a2之间的映射关系。请参阅图2,frr程序可以与kni网卡之间创建tcp连接,从而通过kni网卡向外发送数据包,以及从kni网卡处接收数据包。

在一个实施方式中,如果kni网卡没有dpdk_ip对应的mac地址,那么会发送arp(addressresolutionprotocol,地址解析协议)广播数据包,以寻找dpdk_ip对应的mac地址。dpdk接收到kni发来的广播数据包后,针对该广播数据包可以向kni反馈intf2的mac地址,从而使得kni将intf2的mac地址作为数据包中的目的mac地址。

后续,dpdk从kni收到frr程序发出的数据包后,可以判断该数据包中的五元组信息是否为a1,如果是,那么可以用a2替换a1,并把数据包中的源mac地址和目的mac地址分别替换成intf3的mac地址和bgp对等体的mac地址,并通过intf3将修改后的数据包发送至bgp对等体。

s15:dpdk在接收到所述bgp对等体以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述frr程序发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

在本实施方式中,bgp对等体接收到dpdk发来的数据包后,可以针对该数据包反馈回复数据包。bgp对等体以第三五元组信息a3发送该回复数据包。由于回复数据包是从bgp对等体发往dpdk的,因此第三五元组信息可以基于bgp对等体的配置信息和intf2的配置信息生成。在a3中,源ip地址和源端口分别为bgp对等体的ip地址和bgp对等体的端口,目的ip地址和目的端口分别为bgp的ip地址和bgp的端口,表现形式可以为a3(tcp、peer_ip、peer_port、bgp_ip、bgp_port)。此外,当dpdk需要将该回复数据包转发给frr程序时,可以生成第四五元组信息,该第四五元组信息与dpdk和frr程序相关,因此可以基于intf1和intf2的配置信息生成。在第四五元组信息中,源ip地址和源端口分别为dpdk的ip地址和dpdk的端口,目的ip地址和目的端口分别为kni的ip地址和kni的端口,表现形式为a4(tcp、dpdk_ip、dpdk_port、kni_ip、kni_port)。

dpdk从intf3收到bgp对等体发来的回复数据包后,可以判断五元组是否为a3,如果是,可以用a4替换a3,并把源mac地址和目的mac地址分别替换成intf2的mac地址和intf1的mac地址,并将修改了mac地址的数据包从intf2发送至frr程序。

frr程序从kni网卡处接收到回复数据包,这样就建立起frr程序与bgp对等体之间的通信连接,后续的bgp报文交互就可以在建立的连接上进行。如果连接被frr或者bgp对等体的某一方断开,frr可以通过ipc机制通知dpdk解除相应的五元组映射关系。

本申请一个实施方式还提供一种在dpdk中实现bgp报文交互的系统,所述系统包括:

配置单元,用于配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成frr程序对应的第一五元组信息和第四五元组信息,以及根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成dpdk对应的第二五元组信息和第三五元组信息;

请求单元,用于在接收到所述frr程序以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向所述bgp对等体发送替换了五元组信息的数据包;

回复单元,用于在接收到所述bgp对等体以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述frr程序发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

在本申请另一个实施方式中,针对bgp协议中的被动连接模式,也可以提供在dpdk中实现bgp报文交互的方法。请参阅图3,该方法可以包括以下多个步骤。

s21:配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第一五元组信息和第四五元组信息,以及基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第二五元组信息和第三五元组信息。

s23:dpdk在接收到bgp对等体以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向frr程序发送替换了五元组信息的数据包;其中,所述第二五元组信息中的目的端口为内核网卡接口的bgp端口。

s25:dpdk在接收到所述frr程序以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述bgp对等体发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

在本实施方式中,可以按照前述的方式,预先创建第一虚拟网卡intf1、第二虚拟网卡intf2以及第三虚拟网卡intf3,同时可以创建kni网卡。其中,第一、第二以及第三虚拟网卡是仅dpdk可见的虚拟网卡,这三个虚拟网卡对frr程序并不可见。而kni网卡是frr程序可见的虚拟网卡。在创建了这些网卡之后,可以将所述第一虚拟网卡intf1与kni网卡相绑定。在创建了第一虚拟网卡intf1、第二虚拟网卡intf2以及第三虚拟网卡intf3之后,还可以分别为这三个虚拟网卡设置各自的ip地址。其中,inft1的ip地址可以配置为kni_ip,表征kni网卡的ip地址;inft2的ip地址可以配置为dpdk_ip,表征dpdk的ip地址;inft3的ip地址可以配置为bgp_ip,表征bgp的ip地址。其中,kni_ip与dpdk_ip可以在同一个直连网段。

请参阅图4,frr程序可以监听kni网卡的bgp端口(kni_ip:bind_port1),该bgp端口可以表示为bind_port1,等待bgp对等体发起的连接请求。bgp对等体可以通过第一五元组信息p1(tcp、peer_ip、peer_port、bgp_ip、bind_port2)向dpdk发送用于建立连接的数据包,其中peer_port表示bgp对等体的端口,该端口可以随机生成,peer_ip是bgp对等体的ip地址。bgp_ip为第三虚拟网卡intf3的ip地址,bind_port2可以是待识别的端口。可见,第一五元组信息中,源ip地址和源端口分别为bgp对等体的ip地址和bgp对等体的端口,目的ip地址和目的端口分别为所述第三虚拟网卡的ip地址和待识别的端口。该第一五元组信息可以根据第三虚拟网卡的配置信息和bgp对等体的配置信息生成。此外,dpdk还可以将intf3和bgp对等体的mac地址通告给bgp对等体,以使得bgp对等体在发送数据包时,可以将bgp对等体的mac地址和intf3的mac地址分别作为源mac地址和目的mac地址。

在本实施方式中,dpdk从intf3网卡收到bgp对等体的数据包后,可以判断其中的待识别的端口是否为kni的bgp端口,也就是判断p1中的bind_port2是否等于bind_port1,如果是,则表示该数据包是frr程序需要监听的数据包。此时,dpdk可以进一步判断数据包是否具备对应的已缓存的五元组信息,若不存在,则表示该数据包是新连接对应的数据包,该数据包应当被发送至frr程序,以建立frr程序与bgp对等体之间的通信连接。具体地,可以生成第二五元组p2(tcp、dpdk_ip、dpdk_port、kni_ip、bind_port1),并将数据包中的1替换为p2。以及把源mac地址和目的mac地址分别替换成intf2和intf1的mac地址,并将修改后的数据包从intf2发出。

可见,第二五元组信息是基于第一虚拟网卡和第二虚拟网卡的配置信息生成的,在第二五元组信息中,源ip地址和源端口分别为dpdk的ip地址和dpdk的端口,目的ip地址为kni的ip地址,而目的端口需要是kni的bgp端口bind_port1。

在本实施方式中,frr程序将会通过kni收到该数据包,然后frr程序可以通过ipc机制向dpdk查询p2对应的peer_ip(该peer_ip由p1提供),在确认peer_ip是bgp对等体的ip地址后,frr程序可以向dpdk反馈回复报文。该回复报文以第三五元组信息p3(tcp、kni_ip、bind_port1、dpdk_ip、dpdk_port)从kni网卡发出。可见,第三五元组信息是基于第一虚拟网卡和第二虚拟网卡的配置信息生成的。

dpdk从intf1网卡收到frr程序的回复报文后,可以判断回复报文中的五元组信息是否为p3,如果是,则可以用第四五元组信息p4(tcp、bgp_ip、bind_port1、peer_ip、peer_port)替换,并把源mac地址和目的mac地址分别替换成intf3和bgp对等体的mac地址,并从intf3网卡将回复报文发给对等体。这样就建立起frr程序与bgp对等体之间的连接,后续的bgp报文交互就可以在建立的连接上进行。同样地,如果连接被frr或者bgp对等体的某一方断开,frr通过ipc通知dpdk解除相应的五元组映射关系。

本申请还提供一种在dpdk中实现bgp报文交互的系统,所述系统包括:

配置单元,用于配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第一五元组信息和第四五元组信息,以及基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第二五元组信息和第三五元组信息;

请求单元,用于在接收到bgp对等体以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向frr程序发送替换了五元组信息的数据包;其中,所述第二五元组信息中的目的端口为内核网卡接口的bgp端口;

回复单元,用于在接收到所述frr程序以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述bgp对等体发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

本申请还提供一种服务器,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,用于实现上述的方法。

由上可见,本申请一个或者多个实施方式提供的技术方案,可以兼容bgp协议下的主动连接和被动连接两种模式。主动模式下,frr程序以第一五元组信息向dpdk发送用于建立连接的数据包,该第一五元组信息是基于第一虚拟网卡和第二虚拟网卡的配置信息生成的。当dpdk接收到该数据包后,为了将该数据包发送至bgp对等体,需要将第一五元组信息替换为第二五元组信息,该第二五元组信息是基于第三虚拟网卡和bgp对等体的配置信息生成的。这样,替换了五元组信息后,数据包便可以正常由dpdk发往bgp对等体。后续,在接收到bgp对等体发来的回复数据包后,同样需要将回复数据包中的五元组信息进行替换,最终该回复数据包可以由frr程序接收,从而完成通信连接的建立过程。

在被动模式下,frr程序可以监听bgp对等体发来的连接请求。此时,bgp对等体可以向dpdk发送用于建立连接的数据包,并且该数据包可以由dpdk进行五元组信息的替换过程。类似的,frr程序接收到该数据包后,可以向dpdk反馈回复数据包,该回复数据包在经过五元组信息替换后可以由dpdk发送至bgp对等体,从而完成通信连接的建立过程。

可见,无论是主动模式还是被动模式,dpdk均可以在frr程序和bgp对等体之间进行五元组信息的识别和替换过程。这样,在dpdk框架下,frr程序能够与bgp对等体之间建立通信连接,并且frr程序与bgp对等体之间可以实现bgp报文的交互。

本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对系统和服务器的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。

本领域内的技术人员应明白,本发明的实施方式可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施方式、完全软件实施方式、或结合软件和硬件方面的实施方式的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施方式的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施方式而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。


技术特征:

1.一种在dpdk中实现bgp报文交互的方法,其特征在于,所述方法包括:

配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第一五元组信息和第四五元组信息,以及根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第二五元组信息和第三五元组信息;

dpdk在接收到所述frr程序以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向所述bgp对等体发送替换了五元组信息的数据包;

dpdk在接收到所述bgp对等体以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述frr程序发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

2.根据权利要求1所述的方法,其特征在于,配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡包括:

创建第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并将所述第一虚拟网卡与内核网卡接口相绑定;

分别为所述第一虚拟网卡、第二虚拟网卡和第三虚拟网卡设置各自的ip地址;其中,所述第一虚拟网卡和所述第二虚拟网卡的ip地址在同一个直连网段。

3.根据权利要求1所述的方法,其特征在于,所述第一虚拟网卡的ip地址表征所述内核网卡接口的ip地址,所述第二虚拟网卡的ip地址表征dpdk的ip地址,所述第三虚拟网卡的ip地址表征bgp的ip地址。

4.根据权利要求1或3所述的方法,其特征在于,所述第一五元组信息中,源ip地址和源端口分别为内核网卡接口的ip地址和内核网卡接口的端口,目的ip地址和目的端口分别为dpdk的ip地址和dpdk的端口,其中,所述内核网卡接口的端口与所述dpdk的端口号相等。

5.根据权利要求1或3所述的方法,其特征在于,所述第二五元组信息中,源ip地址和源端口分别为bgp的ip地址和bgp的端口,目的ip地址和目的端口分别为bgp对等体的ip地址和bgp对等体的端口,其中,所述bgp的端口与内核网卡接口的端口号相等。

6.根据权利要求1所述的方法,其特征在于,dpdk在接收所述frr程序以所述第一五元组信息发来的数据包之前,所述方法还包括:

若内核网卡接口中不具备dpdk的ip地址对应的mac地址,dpdk接收所述内核网卡接口发来的广播数据包,并针对所述广播数据包向所述内核网卡接口反馈所述第二虚拟网卡的mac地址,以使得所述内核网卡接口将所述第二虚拟网卡的mac地址作为所述数据包中的目的mac地址。

7.根据权利要求1或6所述的方法,其特征在于,在将所述数据包中的第一五元组信息替换为所述第二五元组信息之后,所述方法还包括:

将所述数据包中的源mac地址和目的mac地址分别替换为所述第三虚拟网卡的mac地址和所述bgp对等体的mac地址,并将修改了mac地址的数据包从所述第三虚拟网卡发出。

8.根据权利要求1所述的方法,其特征在于,所述第三五元组信息中,源ip地址和源端口分别为bgp对等体的ip地址和bgp对等体的端口,目的ip地址和目的端口分别为bgp的ip地址和bgp的端口;所述第四五元组信息中,源ip地址和源端口分别为dpdk的ip地址和dpdk的端口,目的ip地址和目的端口分别为内核网卡接口的ip地址和内核网卡接口的端口。

9.根据权利要求1所述的方法,其特征在于,在将所述回复数据包中的第三五元组信息替换为所述第四五元组信息之后,所述方法还包括:

将所述回复数据包中的源mac地址和目的mac地址分别替换为所述第二虚拟网卡的mac地址和所述第一虚拟网卡的mac地址,并将修改了mac地址的数据包从所述第二虚拟网卡发出。

10.一种服务器,其特征在于,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,用于实现权利要求1至9中任一所述的方法。

11.一种在dpdk中实现bgp报文交互的方法,其特征在于,所述方法包括:

配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并根据所述第三虚拟网卡的配置信息和bgp对等体的配置信息,生成第一五元组信息和第四五元组信息,以及基于所述第一虚拟网卡和所述第二虚拟网卡的配置信息,生成第二五元组信息和第三五元组信息;

dpdk在接收到bgp对等体以所述第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为所述第二五元组信息,并向frr程序发送替换了五元组信息的数据包;其中,所述第二五元组信息中的目的端口为内核网卡接口的bgp端口;

dpdk在接收到所述frr程序以所述第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为所述第四五元组信息,并向所述bgp对等体发送替换了五元组信息的回复数据包,以建立所述frr程序和所述bgp对等体之间的通信连接。

12.根据权利要求11所述的方法,其特征在于,配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡包括:

创建第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡,并将所述第一虚拟网卡与内核网卡接口相绑定;

分别为所述第一虚拟网卡、第二虚拟网卡和第三虚拟网卡设置各自的ip地址;其中,所述第一虚拟网卡和所述第二虚拟网卡的ip地址在同一个直连网段。

13.根据权利要求11所述的方法,其特征在于,frr程序监听内核网卡接口的bgp端口,以等待所述bgp对等体发起的连接。

14.根据权利要求11所述的方法,其特征在于,所述第一五元组信息中,源ip地址和源端口分别为bgp对等体的ip地址和bgp对等体的端口,目的ip地址和目的端口分别为所述第三虚拟网卡的ip地址和待识别的端口;

dpdk通过所述第三虚拟网卡接收到bgp对等体以所述第一五元组信息发来的数据包后,判断所述待识别的端口是否为内核网卡接口的bgp端口,若是,判断所述数据包是否具备对应的已缓存的五元组信息,若不存在,将所述数据包中的第一五元组信息替换为生成的所述第二五元组信息。

15.根据权利要求11所述的方法,其特征在于,所述第二五元组信息中,源ip地址和源端口分别为dpdk的ip地址和dpdk的端口,目的ip地址为内核网卡接口的ip地址。

16.根据权利要求11所述的方法,其特征在于,在将所述数据包中的第一五元组信息替换为所述第二五元组信息之后,所述方法还包括:

将所述数据包中的源mac地址和目的mac地址分别替换为所述第二虚拟网卡的mac地址和所述第一虚拟网卡的mac地址,并通过所述第二虚拟网卡将替换了mac地址的数据包发出。

17.根据权利要求11所述的方法,其特征在于,在将所述回复数据包中的第三五元组信息替换为所述第四五元组信息之后,所述方法还包括:

将所述回复数据包中的源mac地址和目的mac地址分别替换为所述第三虚拟网卡的mac地址和所述bgp对等体的mac地址,并通过所述第三虚拟网卡将替换了mac地址的回复数据包发出。

18.一种服务器,其特征在于,所述服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,用于实现权利要求11至17中任一所述的方法。

技术总结
本发明公开了一种在DPDK中实现BGP报文交互的方法及服务器,其中,所述方法包括:配置第一虚拟网卡、第二虚拟网卡以及第三虚拟网卡;DPDK在接收到所述FRR程序以第一五元组信息发来的数据包后,将所述数据包中的第一五元组信息替换为第二五元组信息,并向所述BGP对等体发送替换了五元组信息的数据包;DPDK在接收到所述BGP对等体以第三五元组信息反馈的回复数据包后,将所述回复数据包中的第三五元组信息替换为第四五元组信息,并向所述FRR程序发送替换了五元组信息的回复数据包,以建立所述FRR程序和所述BGP对等体之间的通信连接。本申请提供的技术方案,使得在DPDK框架下FRR程序能够与BGP对等体之间建立通信连接。

技术研发人员:曾旭
受保护的技术使用者:网宿科技股份有限公司
技术研发日:2020.12.09
技术公布日:2021.04.06

转载请注明原文地址:https://xbbs.6miu.com/read-21807.html