CN115801629B - 双向转发侦测方法、装置、电子设备及可读存储介质 - Google Patents
双向转发侦测方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN115801629B CN115801629B CN202310054561.9A CN202310054561A CN115801629B CN 115801629 B CN115801629 B CN 115801629B CN 202310054561 A CN202310054561 A CN 202310054561A CN 115801629 B CN115801629 B CN 115801629B
- Authority
- CN
- China
- Prior art keywords
- forwarding detection
- bidirectional forwarding
- message
- bidirectional
- detection message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种双向转发侦测方法、装置、电子设备及可读存储介质。该方法中,通过多个前置线程,分别提取网卡的多个报文队列中的报文;在前置线程确定报文为双向转发侦测报文的情况下,将双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列;通过与环形接收队列对应的双向转发侦测线程,从环形接收队列中提取双向转发侦测报文,并基于对双向转发侦测报文的收发状况,更新双向转发侦测报文的状态;将状态更新后的双向转发侦测报文封装并发送。本发明实现了高性能的双向转发侦测,提高了连通性检测效率,节省了大量硬件成本。
Description
技术领域
本发明属于计算机技术领域,特别是涉及一种双向转发侦测方法、装置、电子设备及可读存储介质。
背景技术
在云网络架构中,需要采用检测手段来检测网元服务器与交换机之间的连通性,从而保证云服务的正常运行。
现有技术中,一种方案可以采用专门开发的硬件芯片来实现高效、快速的连通性检测,另一种方案可以采用以双向转发侦测为技术核心的软件手段来检测设备间的连通性,目前的方案常采用单线程来对双向转发侦测报文进行转发,从而实现连通性检测。
但是,方案一由于硬件芯片的开发和生产成本较高,导致难以广泛应用,方案二的单线程转发实现,又导致检测性能较低,难以满足高性能的检测需求。
发明内容
本发明提供一种双向转发侦测方法、装置、电子设备及可读存储介质,以解决现有技术中成本较高、检测性能较低的技术问题。
第一方面,本发明提供一种双向转发侦测方法,所述方法包括:
通过多个前置线程,分别提取网卡的多个报文队列中的报文,所述前置线程与所述报文队列一一对应;
在所述前置线程确定所述报文为双向转发侦测报文的情况下,将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列;
通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;
将状态更新后的双向转发侦测报文封装并发送。
第二方面,本发明提供一种双向转发侦测装置,所述装置包括:
获取模块,用于通过多个前置线程,分别提取网卡的多个报文队列中的报文,所述前置线程与所述报文队列一一对应;
转发模块,用于在所述前置线程确定所述报文为双向转发侦测报文的情况下,将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列;
处理模块,用于通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;
发送模块,用于将状态更新后的双向转发侦测报文封装并发送。
第三方面,本发明提供一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述双向转发侦测方法。
第四方面,本发明提供一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述双向转发侦测方法。
在本发明实施例中,实现了一种双向转发侦测的软件逻辑,相较于使用双向转发侦测硬件芯片的方案,节省了大量硬件成本,另外,本发明实施例的双向转发侦测方法,基于通过多个前置线程的并行处理,可以提高对报文前置处理的效率,避免报文的前置处理性能出现瓶颈,而且本发明实施例采用了多个双向转发侦测线程并行处理的方案,来对双向转发侦测报文进行状态更新及转发,从而提升了双向转发侦测处理的效率,结合高性能的报文前置处理和双向转发侦测报文处理,本发明实施例实现了高性能的双向转发侦测,提高了连通性检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种双向转发侦测方法的步骤流程图;
图2是本发明实施例提供的一种实施场景图;
图3是本发明实施例提供一种双向转发侦测方法的处理过程示意图;
图4是本发明实施例提供的一种前置线程和Bfd线程的交互处理示意图;
图5是本发明实施例提供的另一种前置线程和Bfd线程的交互处理示意图;
图6是本发明实施例提供的一种双向转发侦测会话的建立示意图;
图7是本发明实施例提供的一种双向转发侦测的系统框架示意图;
图8是本发明实施例提供的另一种双向转发侦测装置的结构图;
图9是本发明实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的一种双向转发侦测方法的步骤流程图,如图1所示,该方法可以包括:
步骤101、通过多个前置线程,分别提取网卡的多个报文队列中的报文,所述前置线程与所述报文队列一一对应。
本发明实施例中,参照图2,其示出了本发明实施例提供的一种实施场景图,服务器可以在操作系统的应用层,部署用于实现双向转发侦测方法的双向转发侦测软件逻辑,该软件逻辑具体可以包括:双向转发侦测(Bfd,Bidirectional,Forwarding Detection)、Tcp/ip(Transmission Control Protocol/InternetProtocol,传输控制协议/网际协议)协议栈、数据平面开发套件(Dpdk,Data Plane Development Kit)。双向转发侦测软件逻辑可以通过Tcp/ip协议栈实现报文的解析,之后采用基于基于Dpdk套件提供的接收队列和发送队列实现的多线程并发Bfd检测机制,进行网卡1和网卡2之间传输连通性的检测,大幅提升了Bfd对报文的处理性能。并且可见上述处理过程绕开了内核,并不会对内核造成过多负担。
其中,Bfd是一种基于RFC 5880标准的高速故障检测机制,两个设备端建立Bfd会话后,在它们之间的通道上可以周期性地发送Bfd报文,如果一方在协商的检测时间内没有接收到Bfd报文,则认为这条双向通道上发生了故障,上层协议通过Bfd感知到链路故障后可以及时采取措施,进行故障恢复。Bfd提供了一个通用的标准化且与介质和协议无关的快速故障检测机制,Bfd可以降低设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。
基于另一种理解,对于Bfd而言,它本身是没有发现机制的,它是通过被服务的上层协议来建立会话,也就是邻居的参数及检测参数(包括目的地址和源地址等)是由上层协议通告给Bfd。Bfd得到邻居参数和检测参数之后,开始建立Bfd会话,会话建立后会周期性地快速发送Bfd报文,如果在检测时间内没有收到Bfd报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
Dpdk应用程序运行在操作系统的用户态,Dpdk可以利用自身提供的数据面库进行高效率的收发包处理,其绕过了内核态协议栈,可以大幅提升报文处理效率,降低内核态的压力。
在该步骤中,参照图3,其示出了本发明实施例提供的一种双向转发侦测方法的处理过程示意图,首先作为发送端的网卡1中具有n个报文队列,报文队列用于存储各种类型的报文,本发明实施例可以对应设置n个与报文队列一一对应的前置线程,前置线程从网卡1的中报文队列提取报文并对报文进行前置处理。
具体的,前置线程对报文进行的前置处理包括解析报文,针对解析结果判断报文是否是双向转发侦测报文,以及确定当前是否开启双向转发侦测功能等。通过多个前置线程的并行处理,可以提高对报文前置处理的效率,避免报文的前置处理性能出现瓶颈,提高双向转发侦测方法的整体处理效率。
步骤102、在所述前置线程确定所述报文为双向转发侦测报文的情况下,将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列。
本发明实施例中,前置线程需要对报文的报头信息进行解析,并根据解析结果判断报文的类型,由于本发明实施例是双向转发侦测的实现方案,因此前置线程可以通过报头信息的特征判断报文是否为双向转发侦测报文,若不是,则将报文发送至应用层软件,实现报文的常规业务转发,若是,则将双向转发侦测报文放入针对双向转发侦测功能设置的多个环形接收队列,以供环形接收队列将双向转发侦测报文传递至双向转发侦测线程。
具体的,参照图3,本发明实施例为了实现高性能的Bfd功能,可以设置多个Bfd线程来进行Bfd报文的处理和转发,并针对每个Bfd线程,对应设置一个环形接收队列(rxring)以及一个报文发送队列(图3中未示出),环形接收队列用于接收前置线程发送的双向转发侦测报文,而报文发送队列用于获取Bfd线程处理后并再次封装的双向转发侦测报文,并将该双向转发侦测报文发送至另一端的网卡2。
步骤103、通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态。
步骤104、将状态更新后的双向转发侦测报文封装并发送。
可选的,步骤104具体可以采用调用数据平面开发套件的环形发送队列,将状态更新且封装后的双向转发侦测报文进行发送的方式进行实现,所述环形发送队列与所述双向转发侦测线程一一对应。
在本发明实施例中,可以通过设置多个双向转发侦测线程,来通过双向转发侦测线程的并发处理,实现高性能的Bfd功能,双向转发侦测线程可以获取环形接收队列发送的双向转发侦测报文,并基于双向转发侦测报文的收发状况,更新双向转发侦测报文的状态,将更新了状态后的双向转发侦测报文再次封装并发送。因此,在网卡1和网卡2之间连通性检测的过程中,若出现通信异常,双向转发侦测线程会更新要传输的双向转发侦测报文的状态,使之记录该异常,接收端网卡则可以通过双向转发侦测报文中的状态参数,确定故障并进行排除。
进一步的,双向转发侦测线程可以调用数据平面开发套件的环形发送队列(txring),将状态更新且封装后的双向转发侦测报文进行发送,在本发明实施例中,环形接收队列(rx ring)是Dpdk套件提供的传输队列,它是一种环形缓冲,环形缓冲很适合大吞吐的场景。环形接收队列(rx ring)负责接收数据包。队列的环形结构经常用于队列管理,其不同于大小可灵活变化的链表,它的空间大小是固定,相较于链表,环形队列具有速度更快、效率更高、实现更加简洁高效且支持批量入队和出队的优势。
可选的,在步骤101之后,还可以包括:
步骤105、通过所述前置线程提取所述报文的报头信息进行解析,获得报头解析结果。
步骤106、在所述报头解析结果符合预设的双向转发侦测报文的报头特征的情况下,确定所述报文为双向转发侦测报文。
在本发明实施例中,针对步骤105-106,前置线程具体可以解析从网卡的报文队列中获取的报文的报头信息,报头信息解析后可以获得各种报头字段的报头特征,而双向转发侦测报文基于其报头的定义,呈现出一种固定形式的报头特征,本发明实施例可以将解析获得的报头特征去与双向转发侦测报文的报头特征匹配,若匹配则认为当前报文是双向转发侦测报文。由于本发明实施例采用了多个前置线程进行并行处理,因此可以大幅提高对报文前置判断处理的效率。
具体的,参照图4来对步骤105-106的过程进行详细说明,图4示出了一种前置线程和Bfd线程的交互处理示意图,其中,前置线程获取报文后,对报文的报头信息的解析,包括依次进行的:L2解析、L3解析和L4解析,L2解析是指对报文的eth头(包含通信信息的字段)的解析,解析后悔得到ip头,再对ip头进行解析(L3解析),可以获得L4头,L4头的特征即可用于判断该报文是否为双向转发侦测报文,判断逻辑是L4头的特征是否命中双向转发侦测报文的报头特征(udp dport 3784/4784),若命中,则认为当前报文为双向转发侦测报文。
在确定当前报文为双向转发侦测报文后,前置线程可以通过哈希匹配,将双向转发侦测报文放入对应的环形接收队列(Bfd rx ring)传输给Bfd线程,Bfd线程可以通过Bfd功能实现对报文的状态处理和再封装,最后发送封装好的双向转发侦测报文;在确定当前报文不为双向转发侦测报文后,认为当前报文为业务报文,前置线程可以将业务报文发送至应用层的应用软件,实现应用功能后再发送报文。
可选的,环形接收队列为数据平面开发套件提供的;所述环形接收队列具有对应的第一哈希值,所述第一哈希值用于表征与所述环形接收队列对应的通信地址;步骤102具体可以包括:
子步骤1021、根据所述双向转发侦测报文的通信地址进行哈希计算,获得第二哈希值。
子步骤1022、从所有第一哈希值中,确定与所述第二哈希值匹配的目标第一哈希值。
子步骤1023、将所述双向转发侦测报文,放入所述目标第一哈希值对应的环形接收队列中。
在本发明实施例中,针对子步骤1021-1023,参照图2和4,前置线程在确定报文为双向转发侦测报文后,需要将双向转发侦测报文发送至对应的环形接收队列(rx ring)中,如何确定将要接收双向转发侦测报文的环形接收队列,则可以通过哈希匹配来实现。在本发明实施例中,可以预先划分每个环形接收队列所管辖的双向转发侦测会话,并基于这些会话的通信地址对进行哈希计算,获得每个环形接收队列的第一哈希值,这样前置线程即可对每个双向转发侦测报文的通信地址进行哈希计算获得第二哈希值,并将与第二哈希值匹配的目标第一哈希值对应的环形接收队列,作为接收该双向转发侦测报文的环形接收队列,本发明实施例通过哈希匹配,可以使得每个双向转发侦测报文可以精确落入对应的环形接收队列,提高了报文处理过程的逻辑清晰度和准确度。
可选的,在步骤103之后,所述方法还可以包括:
步骤107、获取配置信息,所述配置信息包括通信地址和配置内容的对应关系。
步骤108、根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容包括双向转发侦测配置的情况下,确定当前开启了双向转发侦测功能,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态。
步骤109、根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容不包括双向转发侦测配置的情况下,确定当前未开启双向转发侦测功能,将所述双向转发侦测报文丢弃。
在本发明实施例中,针对步骤107-109,用户可以针对实际的连通性检测需求,对应设置双向转发侦测配置,双向转发侦测配置用于启用双向转发侦测功能,建立双向转发侦测会话实现连通性检测。
参照图5,图5示出了另一种前置线程和Bfd线程的交互处理示意图,其中,控制线程用于接收用户配置,创建双向转发侦测配置,在前置线程确定一个报文为双向转发侦测报文时,可以进一步查询包括通信地址和配置内容的对应关系的配置信息,在根据配置信息确定双向转发侦测报文的通信地址对应的配置内容包括双向转发侦测配置时,认为当前创建了双向转发侦测配置,启用双向转发侦测功能,则确定使能Bfd;在根据配置信息确定双向转发侦测报文的通信地址对应的配置内容不包括双向转发侦测配置时,认为当前未创建双向转发侦测配置,未启用双向转发侦测功能,则确定未使能Bfd。
其中,在确定使能Bfd时,可以进一步进行双向转发侦测报文的合法性校验,合法性校验通过的情况下,则基于双向转发侦测报文的收发状况,进行状态翻转(状态翻转机制是建立在一个时间周期内的功能,具体可以采用定时器来进行时间确定),即更新双向转发侦测报文的状态,状态翻转后,依次进行报文封装和报文发送,实现连通性检测。若合法性校验未通过,则丢弃当前双向转发侦测报文。
在确定未使能Bfd时,可以确认当前未启用双向转发侦测功能,并直接丢弃当前的双向转发侦测报文。
综上,本方案用到的数据结构包括:
struct Bfd_session
{
uint32_t sip; //本端ip
uint32_t dip; //远端ip
uint8_t type; //检测类型(单挑/多跳)
struct Bfd_template{
uint8_t auth_mod; //认证类型
uint32_t cfg_detect_num; //配置超时检测倍数
uint32_t cfg_rx_cc_interval; //配置检测报文接收周期
uint32_t cfg_tx_cc_interval; //配置检测报文发送周期
uint32_tcfg_echo_rx_cc_interval; //配置echo报文接收周期
}temp;
struct Bfd_fsm pfsm{
uint32_t local_id; //本端描述符
uint32_t remote_id; //远端描述符
uint8_t poll; //p位,参数改变请求
uint8_t final; //f位,响应p位
uint8_t status; //Bfd会话状态
uint8_t diag; //Bfd最后一次down的原因;
uint8_t remote_detectnum; //远端配置检测超时倍数
uint32_t remote_tx_interval; //远端配置发送检测报文周期
uint32_t remote_rx_interval; //远端配置接收检测报文周期
uint8_t detectnum; //实际检测超时倍数;
uint32_t tx_cc_interval; //实际发送检测报文周期;
uint32_t rx_cc_interval; //实际接收检测报文周期
};
uint64_t thread_timer; //定时器;
uint8_t pos[0];
};
可选的,所述方法还可以包括:
步骤110,为所述双向转发侦测线程创建对应的双向转发侦测会话;所述双向转发侦测会话用于记录所述双向转发侦测线程对双向转发侦测报文的收发情况。
可选的,步骤110具体可以通过配置待参与所述双向转发侦测的两个终端设备之间的通信地址对;根据所述通信地址对,创建所述双向转发侦测线程对应的双向转发侦测会话的方式进行实现。
在步骤110的基础上,步骤103具体可以通过基于所述双向转发侦测会话中双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态的方式进行实现。
在本发明实施例中,双向转发侦测会话是依据用户配置生成的,用户可以通过配置待参与双向转发侦测的两个终端设备之间的通信地址对,来实现双向转发侦测会话的建立,双向转发侦测会话建立后,会在两个终端设备之间转发双向转发侦测报文,并通过双向转发侦测报文的转发情况,实时更新双向转发侦测报文的状态,从而实现终端设备之间连通性的检测。
可选的,所述方法还可以包括:
步骤111、将所述通信地址对进行哈希计算,获得第一哈希值。
步骤112、为所述双向转发侦测会话,以及与所述双向转发侦测会话对应的环形接收队列添加所述第一哈希值。
其中,所述第一哈希值用于与所述双向转发侦测报文的通信地址哈希计算获得的第二哈希值进行匹配,从而将所述双向转发侦测报文放入对应的环形接收队列和双向转发侦测会话中。
在本发明实施例中,针对步骤111-112,前置线程在确定报文为双向转发侦测报文后,需要将双向转发侦测报文发送至对应的环形接收队列中,如何确定将要接收双向转发侦测报文的环形接收队列,则可以通过哈希匹配来实现。在本发明实施例中,可以预先划分每个环形接收队列所管辖的双向转发侦测会话,并基于这些会话的通信地址对进行哈希计算,获得每个双向转发侦测会话以及对应的环形接收队列的第一哈希值。前置线程后续即可对每个双向转发侦测报文的通信地址进行哈希计算获得第二哈希值,并将与第二哈希值匹配的目标第一哈希值对应的环形接收队列,作为接收该双向转发侦测报文的环形接收队列,本发明实施例通过哈希匹配,可以使得每个双向转发侦测报文可以精确落入对应的环形接收队列,提高了报文处理过程的逻辑清晰度和准确度。
进一步的,参照图6,图6示出了一种双向转发侦测会话的建立示意图,Bfd状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。
每个系统都通过发出的Bfd控制报文中的状态域(Sta)来交流各自的状态,并结合收到报文的状态和本地状态来驱动状态机。
Down状态意味着会话是Down的(或刚刚建立)。会话将保持Down,直到远端系统通过发送状态域为除Up以外的Bfd控制包来表明它认同当前的Down状态。如果收到的包是Down,则会话变成Init;如果包是Init,则会话变Up
Init状态表明远端系统正在通信,本地系统希望会话能变Up,但远端系统并没有意识到这一点。会话将保持在Init状态,直到收到一个状态为Init或Up的Bfd控制包(这种情况下会话变为Up),或直到检测时间超时,意味着和远端系统的通信已经丢失(这种情况下会话变为Down状态) ;
Up状态意味着Bfd会话已经成功地建立,且暗示着两系统间的连通性正常,则会话将保持Up,直到连通性失败,或者会话被管理Down。如果远端系统通告Down状态或检测时间超时,则会话变成Down状态;
AdminDown状态意味着会话被管理Down,这将导致远端系统进入Down状态,并将保持Down状态直到本地系统退出管理Down状态。
以Bfd会话建立为例,简单介绍状态机的迁移过程:
1、A设备和B设备各自启动Bfd状态机,初始状态为Down,发送状态为Down的Bfd报文。对于静态配置Bfd会话,报文中Remote Discriminator的值是用户指定的;对于动态创建Bfd会话,Remote Discriminator的值是0。
2、B设备收到状态为Down的Bfd报文后,状态切换至Init,并发送状态为Init的Bfd报文。
3、B设备本地Bfd状态为Init后,不再处理接收到的状态为Down的报文。
4、A设备的BFD状态变化同B设备。
5、B设备收到状态为Init的Bfd报文后,本地状态切换至Up。A设备的Bfd状态变化同B设备。
综上,参照图7,图7示出了一种双向转发侦测的系统框架示意图,其中,前置线程可以从网卡等装置中获取报文,前置线程的解析模块用于对报文的报头信息进行解析,逻辑模块用于对报文是否为双向转发侦测报文进行判断,并基于哈希匹配,将双向转发侦测报文发送至对应的环形接收队列。Bfd线程则通过查询配置信息,来实现双向转发侦测报文的发送或丢弃。控制线程则通过外部客户端的配置,生成配置信息并建立双向转发侦测会话,实现双向转发侦测报文的转发。外部客户端的系统可以是C语言或go语言实现的套接字配置客户端,这部分数据结构采用定义pb生成,保证收发数据的可靠性;内外部配置系统通信可以采用CS架构。
综上所述,本发明实施例提供的双向转发侦测方法,实现了一种双向转发侦测的软件逻辑,相较于使用双向转发侦测硬件芯片的方案,节省了大量硬件成本,另外,本发明实施例的双向转发侦测方法,基于通过多个前置线程的并行处理,可以提高对报文前置处理的效率,避免报文的前置处理性能出现瓶颈,而且本发明实施例采用了多个双向转发侦测线程并行处理的方案,来对双向转发侦测报文进行状态更新及转发,从而提升了双向转发侦测处理的效率,结合高性能的报文前置处理和双向转发侦测报文处理,本发明实施例实现了高性能的双向转发侦测,提高了连通性检测效率。
图8是本发明实施例提供的一种双向转发侦测装置的结构图,该装置可以包括:
获取模块301,用于通过多个前置线程,分别提取网卡的多个报文队列中的报文,所述前置线程与所述报文队列一一对应;
转发模块302,用于在所述前置线程确定所述报文为双向转发侦测报文的情况下,将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列;
处理模块303,用于通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;
发送模块304,用于将状态更新后的双向转发侦测报文封装并发送。
可选的,所述装置还包括:
解析模块,用于通过所述前置线程提取所述报文的报头信息进行解析,获得报头解析结果;
识别模块,用于在所述报头解析结果符合预设的双向转发侦测报文的报头特征的情况下,确定所述报文为双向转发侦测报文。
可选的,所述环形接收队列为数据平面开发套件提供的;所述环形接收队列具有对应的第一哈希值,所述第一哈希值用于表征与所述环形接收队列对应的通信地址;
所述转发模块,包括:
计算子模块,用于根据所述双向转发侦测报文的通信地址进行哈希计算,获得第二哈希值;
匹配子模块,用于从所有第一哈希值中,确定与所述第二哈希值匹配的目标第一哈希值;
添加子模块,用于将所述双向转发侦测报文,放入所述目标第一哈希值对应的环形接收队列中。
可选的,所述装置还包括:
配置模块,用于获取配置信息,所述配置信息包括通信地址和配置内容的对应关系;
第一判断模块,用于根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容包括双向转发侦测配置的情况下,确定当前开启了双向转发侦测功能,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;
第二判断模块,用于根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容不包括双向转发侦测配置的情况下,确定当前未开启双向转发侦测功能,将所述双向转发侦测报文丢弃。
可选的,所述装置还包括:
建立模块,用于为所述双向转发侦测线程创建对应的双向转发侦测会话;所述双向转发侦测会话用于记录所述双向转发侦测线程对双向转发侦测报文的收发情况;
所述处理模块,包括:
更新子模块,用于基于所述双向转发侦测会话中双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态。
可选的,所述建立模块,包括:
配置子模块,用于配置待参与所述双向转发侦测的两个终端设备之间的通信地址对;
创建子模块,用于根据所述通信地址对,创建所述双向转发侦测线程对应的双向转发侦测会话。
可选的,所述装置还包括:
哈希模块,用于将所述通信地址对进行哈希计算,获得第一哈希值;
添加模块,用于为所述双向转发侦测会话,以及与所述双向转发侦测会话对应的环形接收队列添加所述第一哈希值;
其中,所述第一哈希值用于与所述双向转发侦测报文的通信地址哈希计算获得的第二哈希值进行匹配,从而将所述双向转发侦测报文放入对应的环形接收队列和双向转发侦测会话中。
可选的,所述发送模块304,包括:
发送子模块,用于调用数据平面开发套件的环形发送队列,将状态更新且封装后的双向转发侦测报文进行发送,所述环形发送队列与所述双向转发侦测线程一一对应。
综上所述,本发明实施例提供的双向转发侦测装置,实现了一种双向转发侦测的软件逻辑,相较于使用双向转发侦测硬件芯片的方案,节省了大量硬件成本,另外,本发明实施例的双向转发侦测方法,基于通过多个前置线程的并行处理,可以提高对报文前置处理的效率,避免报文的前置处理性能出现瓶颈,而且本发明实施例采用了多个双向转发侦测线程并行处理的方案,来对双向转发侦测报文进行状态更新及转发,从而提升了双向转发侦测处理的效率,结合高性能的报文前置处理和双向转发侦测报文处理,本发明实施例实现了高性能的双向转发侦测,提高了连通性检测效率。
本发明还提供了一种电子设备,参见图9,包括:处理器901、存储器902以及存储在所述存储器上并可在所述处理器上运行的计算机程序9021,所述处理器执行所述程序时实现前述实施例的双向转发侦测方法。
本发明还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述实施例的双向转发侦测方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,本发明实施例中获取的各种信息、数据,均是在得到信息/数据持有方授权的情况下获取的。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明的排序设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明所涉及的用户信息(包括但不限于用户的设备信息、用户个人信息等)、相关数据等均为经用户授权或经各方授权后的信息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (13)
1.一种双向转发侦测方法,其特征在于,所述方法包括:
通过多个前置线程,分别提取网卡的多个报文队列中的报文,所述前置线程与所述报文队列一一对应;
在所述前置线程确定所述报文为双向转发侦测报文的情况下,将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列;
通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;所述双向转发侦测线程设置有多个;
将状态更新后的双向转发侦测报文封装并发送;
所述环形接收队列为数据平面开发套件提供的;所述环形接收队列具有对应的第一哈希值,所述第一哈希值用于表征与所述环形接收队列对应的通信地址;
所述将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列,包括:
根据所述双向转发侦测报文的通信地址进行哈希计算,获得第二哈希值;
从所有第一哈希值中,确定与所述第二哈希值匹配的目标第一哈希值;
将所述双向转发侦测报文,放入所述目标第一哈希值对应的环形接收队列中。
2.根据权利要求1所述的方法,其特征在于,在通过多个前置线程,分别提取网卡的多个报文队列中的报文之后,所述方法还包括:
通过所述前置线程提取所述报文的报头信息进行解析,获得报头解析结果;
在所述报头解析结果符合预设的双向转发侦测报文的报头特征的情况下,确定所述报文为双向转发侦测报文。
3.根据权利要求1所述的方法,其特征在于,在所述通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文之后,所述方法还包括:
获取配置信息,所述配置信息包括通信地址和配置内容的对应关系;
根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容包括双向转发侦测配置的情况下,确定当前开启了双向转发侦测功能,并进入基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态的步骤;
根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容不包括双向转发侦测配置的情况下,确定当前未开启双向转发侦测功能,将所述双向转发侦测报文丢弃。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
为所述双向转发侦测线程创建对应的双向转发侦测会话;所述双向转发侦测会话用于记录所述双向转发侦测线程对双向转发侦测报文的收发情况;
所述基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态,包括:
基于所述双向转发侦测会话中双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态。
5.根据权利要求4所述的方法,其特征在于,所述为所述双向转发侦测线程创建对应的双向转发侦测会话,包括:
配置待参与所述双向转发侦测的两个终端设备之间的通信地址对;
根据所述通信地址对,创建所述双向转发侦测线程对应的双向转发侦测会话。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述通信地址对进行哈希计算,获得第一哈希值;
为所述双向转发侦测会话,以及与所述双向转发侦测会话对应的环形接收队列添加所述第一哈希值;
其中,所述第一哈希值用于与所述双向转发侦测报文的通信地址哈希计算获得的第二哈希值进行匹配,从而将所述双向转发侦测报文放入对应的环形接收队列和双向转发侦测会话中。
7.根据权利要求1所述的方法,其特征在于,所述将状态更新后的双向转发侦测报文封装并发送,包括:
调用数据平面开发套件的环形发送队列,将状态更新且封装后的双向转发侦测报文进行发送,所述环形发送队列与所述双向转发侦测线程一一对应。
8.一种双向转发侦测装置,其特征在于,所述装置包括:
获取模块,用于通过多个前置线程,分别提取网卡的多个报文队列中的报文,所述前置线程与所述报文队列一一对应;
转发模块,用于在所述前置线程确定所述报文为双向转发侦测报文的情况下,将所述双向转发侦测报文,放入针对双向转发侦测功能设置的多个环形接收队列;
处理模块,用于通过与所述环形接收队列对应的双向转发侦测线程,从所述环形接收队列中提取所述双向转发侦测报文,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;所述双向转发侦测线程设置有多个;
发送模块,用于将状态更新后的双向转发侦测报文封装并发送;
所述环形接收队列为数据平面开发套件提供的;所述环形接收队列具有对应的第一哈希值,所述第一哈希值用于表征与所述环形接收队列对应的通信地址;
所述转发模块,包括:
计算子模块,用于根据所述双向转发侦测报文的通信地址进行哈希计算,获得第二哈希值;
匹配子模块,用于从所有第一哈希值中,确定与所述第二哈希值匹配的目标第一哈希值;
添加子模块,用于将所述双向转发侦测报文,放入所述目标第一哈希值对应的环形接收队列中。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
解析模块,用于通过所述前置线程提取所述报文的报头信息进行解析,获得报头解析结果;
识别模块,用于在所述报头解析结果符合预设的双向转发侦测报文的报头特征的情况下,确定所述报文为双向转发侦测报文。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
配置模块,用于获取配置信息,所述配置信息包括通信地址和配置内容的对应关系;
第一判断模块,用于根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容包括双向转发侦测配置的情况下,确定当前开启了双向转发侦测功能,并基于对所述双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态;
第二判断模块,用于根据所述对应关系,在确定所述双向转发侦测报文的通信地址对应的配置内容不包括双向转发侦测配置的情况下,确定当前未开启双向转发侦测功能,将所述双向转发侦测报文丢弃。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
建立模块,用于为所述双向转发侦测线程创建对应的双向转发侦测会话;所述双向转发侦测会话用于记录所述双向转发侦测线程对双向转发侦测报文的收发情况;
所述处理模块,包括:
更新子模块,用于基于所述双向转发侦测会话中双向转发侦测报文的收发状况,更新所述双向转发侦测报文的状态。
12.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-7中任一所述的方法。
13.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310054561.9A CN115801629B (zh) | 2023-02-03 | 2023-02-03 | 双向转发侦测方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310054561.9A CN115801629B (zh) | 2023-02-03 | 2023-02-03 | 双向转发侦测方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115801629A CN115801629A (zh) | 2023-03-14 |
CN115801629B true CN115801629B (zh) | 2023-06-23 |
Family
ID=85429666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310054561.9A Active CN115801629B (zh) | 2023-02-03 | 2023-02-03 | 双向转发侦测方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115801629B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109729024A (zh) * | 2018-12-29 | 2019-05-07 | 中盈优创资讯科技有限公司 | 数据包处理系统及方法 |
CN109783250A (zh) * | 2018-12-18 | 2019-05-21 | 中兴通讯股份有限公司 | 一种报文转发方法及网络设备 |
CN110830485A (zh) * | 2019-11-13 | 2020-02-21 | 苏州盛科科技有限公司 | 一种点到多点双向转发检测的芯片实现方法及装置 |
CN112737880A (zh) * | 2020-12-25 | 2021-04-30 | 北京华三通信技术有限公司 | 一种双向转发检测bfd报文的转发方法及网络设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10069708B2 (en) * | 2015-03-02 | 2018-09-04 | Cisco Technology, Inc. | Monitoring through S-BFD (seamless bidirectional forwarding detection) |
-
2023
- 2023-02-03 CN CN202310054561.9A patent/CN115801629B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783250A (zh) * | 2018-12-18 | 2019-05-21 | 中兴通讯股份有限公司 | 一种报文转发方法及网络设备 |
CN109729024A (zh) * | 2018-12-29 | 2019-05-07 | 中盈优创资讯科技有限公司 | 数据包处理系统及方法 |
CN110830485A (zh) * | 2019-11-13 | 2020-02-21 | 苏州盛科科技有限公司 | 一种点到多点双向转发检测的芯片实现方法及装置 |
CN112737880A (zh) * | 2020-12-25 | 2021-04-30 | 北京华三通信技术有限公司 | 一种双向转发检测bfd报文的转发方法及网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115801629A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9137334B2 (en) | Interconnection method, apparatus, and system based on socket remote invocation | |
CN112438038B (zh) | 一种传输数据的方法和装置 | |
CN105162883B (zh) | 网络负载均衡处理系统及其方法和装置 | |
US20020191604A1 (en) | Application-specific information-processing method, system, and apparatus | |
CN110300081B (zh) | 一种数据传输的方法和设备 | |
CN112165447B (zh) | 基于waf设备的网络安全监测方法、系统和电子装置 | |
CN110677432A (zh) | 一种网络协议内部代理转发方法、装置、介质及终端设备 | |
CN108881425B (zh) | 一种数据包处理方法及系统 | |
US20190260631A1 (en) | Deployable linear bitwise protocol transfromation | |
CN107528923B (zh) | 一种网络适配器的数据传输方法及网络适配器 | |
US11522979B2 (en) | Transmission control protocol (TCP) acknowledgement (ACK) packet suppression | |
CN112910725B (zh) | 一种网络流量检测方法及装置、计算机可读存储介质 | |
CN108064441B (zh) | 一种加速网络传输优化方法以及系统 | |
CN115801629B (zh) | 双向转发侦测方法、装置、电子设备及可读存储介质 | |
CN112165408A (zh) | 一种模拟客户串联部署环境的测试方法和装置 | |
CN110166518B (zh) | 会话信息的传输方法、装置、存储介质及电子装置 | |
CN116055586B (zh) | 分片报文的匹配方法、路由器及存储介质 | |
CN113162922B (zh) | 客户端数据的获取方法及装置、存储介质、电子设备 | |
CN113422760B (zh) | 数据传输方法、装置、电子装置和存储介质 | |
CN110943895A (zh) | 一种网关机、基于Linux系统的网络数据处理方法及装置 | |
CN113973134A (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
CN112202795A (zh) | 一种数据处理方法、网关设备及介质 | |
CN110545256A (zh) | 数据传输方法、系统、电子设备、中转服务器及存储介质 | |
CN117615009A (zh) | 一种报文的代理转发方法、装置及设备 | |
CN112351039B (zh) | 一种信息处理方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |