CN101547209B - 一种信息表项的更新方法和设备 - Google Patents

一种信息表项的更新方法和设备 Download PDF

Info

Publication number
CN101547209B
CN101547209B CN2009101367958A CN200910136795A CN101547209B CN 101547209 B CN101547209 B CN 101547209B CN 2009101367958 A CN2009101367958 A CN 2009101367958A CN 200910136795 A CN200910136795 A CN 200910136795A CN 101547209 B CN101547209 B CN 101547209B
Authority
CN
China
Prior art keywords
control information
sign
module
corresponding relation
fib
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.)
Expired - Fee Related
Application number
CN2009101367958A
Other languages
English (en)
Other versions
CN101547209A (zh
Inventor
张雪锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN2009101367958A priority Critical patent/CN101547209B/zh
Publication of CN101547209A publication Critical patent/CN101547209A/zh
Application granted granted Critical
Publication of CN101547209B publication Critical patent/CN101547209B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种信息表项的更新方法和设备,所述方法包括以下步骤:接收控制信息,为所述控制信息设置第一标识和第二标识;将所述控制信息添加到软件对应关系中,为所述控制信息解除所述第一标识;将所述控制信息添加到硬件对应关系中,清除所述第二标识。本发明中,通过为每个控制信息设置读写锁和待处理标志,当在同一时间内接收到相同的两个控制信息时,为其中一个控制信息设置读写锁和待处理标志,另外一个控制信息进入等待状态,从而解决相同的控制信息发生的冲突。

Description

一种信息表项的更新方法和设备
技术领域
本发明涉及移动通信技术领域,特别涉及一种信息表项的更新方法和设备。
背景技术
数据处理包括软件层面的数据处理和硬件层面的数据处理,软件主要负责生成用于数据处理的控制信息,并进行软件层面的数据处理。为了提高网络设备的数据处理能力,将数据的处理交给硬件完成已成为一种趋势,为了使用硬件进行数据处理,软件需要将生成的控制信息下发到硬件中,网络设备收到待处理的数据后将首先由网络设备中的硬件根据存储在硬件中的控制信息进行数据处理(即数据转发),硬件不能处理的,例如需要对数据包做深度解析与处理的,则需要将这些数据包上送软件,由软件进行处理,或者由软件处理后再交给相应的硬件进行处理。这样,硬件中需要保留一套数据处理所需要的控制信息,即保存由软件下发的控制信息,该控制信息具体的可以如FIB(Forwarding Information Base,转发信息表)、ARP(Address ResolutionProtocol,地址解析协议)表,通过使用该控制信息来指导相应的数据处理。其中,在将控制信息下发到硬件时,为了实现高性能需求,高端网络设备通信软件通常采用基于多核的软件系统(例如基于linux系统),从而实现多核并发处理数据达以到高性能的要求。
在软件层面中,ARP表项与主机路由相对应,在创建一个ARP表项后,上层软件会通知底层硬件创建一条与ARP表项对应的主机路由,ARP发生变化时,上层软件通知底层硬件修改对应的主机路由。为了适应CEF(CiscoExpress Forwarding,Cisco特快交换)转发的需要,ARP主机路由需要添加到FIB表中进行统一管理,转发表子系统的架构如图1所示,ARP模块学习到ARP表项中的主机路由信息后通知FIB模块添加主机路由信息,由FIB模块在FIB软件表项中添加主机路由信息,路由模块学习非主机路由(含32位路由)信息后,通知FIB模块添加非主机路由信息,由FIB模块在FIB软件表项中添加非主机路由信息,其中,该非主机路由信息与上述的主机路由信息是添加在同一个FIB软件表项中的;添加完成后,FIB模块根据预设的策略选择其中一个路由信息(主机路由信息或非主机路由信息),通知底层硬件在硬件表项中添加该路由信息,并通过硬件表项存储上述的路由信息。
在FIB软件表项中添加主机路由信息和32位路由信息,以及在硬件表项中添加路由信息(主机路由信息或非主机路由信息)时,会出现32位路由和主机路由冲突的情况,其中,对于创建FIB软件表项,当路由模块通知FIB模块添加32位路由,同时ARP模块通知FIB模块添加主机路由,而该32位路由和该主机路由相同(属于相同的FIB软件表项)时,会出现32位路由和主机路由冲突;对于创建硬件表项,当同时添加主机路由或32位路由时,由于硬件表项资源属于临界资源(每次仅允许一个进程访问的资源),也会出现32位路由和主机路由的冲突。
现有技术中,解决32位路由和主机路由冲突的情况的方法包括:
(1)ARP模块采用路由消息的方式通知FIB模块创建主机路由,同时路由模块也采用路由消息的方式通知FIB模块创建32位路由,在FIB模块中,单独建立一个线程,将来自ARP模块的路由消息和来自路由模块的路由消息进行排队,FIB模块逐一处理队列中的路由消息,从而避免创建FIB软件表项中添加32位路由和主机路由时冲突的问题(FIB模块需要不同时添加主机路由和32位路由)。
(2)FIB模块在创建硬件路由表项(主机路由和32位路由)时,为每个FIB表项增加一个内核信号量,在对FIB表项操作前先获取该内核信号量,只有申请到该内核信号量时才会创建硬件路由表项,没有申请到该内核信号量时则只能睡眠等待,其中,一个FIB表项内核信号量只有一个,即同一时间只有一个创建硬件路由表项的任务会申请到该内核信号量,从而避免创建硬件路由表项时32位路由和主机路由冲突的问题。
(3)通过使用基于单核不可抢占的操作系统,或使用多核不可抢占操作系统但指定创建表项的过程运行在一个CPU上,并使用全局信号量同步32位路由和主机路由,由于是不可抢占的操作系统,从而避免创建硬件路由表项时32位路由和主机路由冲突的问题。
可以看出,在使用上述的方法1避免32位路由和主机路由的冲突时,FIB模块中建立单线程,将来自ARP模块的路由消息和来自路由模块的路由消息进行排队时,增加了ARP模块处理的复杂度,当消息队列满时,在收到消息时,ARP模块不能够处理,而且还会出现性能瓶颈。
在使用上述的方法2避免32位路由和主机路由的冲突时,每个表项均增加信号量时占用了太多的信号量资源,浪费内存;而且信号量不能确保存在,例如,一个线程在删除表项,另一个线程在修改表项时,当删除表项的操作在前面,信号量已经被删除了,正在修改表项的线程无法访问到这个信号量了。
在使用上述的方法3避免32位路由和主机路由的冲突时,当32位路由和主机路由没有发生冲突时,不能够并发处理32位路由和主机路由,性能比较差,不能满足高性能的需要。
发明内容
本发明提供一种信息表项的更新方法和设备,以避免32位路由和主机路由的冲突。
为达到上述目的,本发明一方面提供一种信息的更新表项方法,包括以下步骤:
接收控制信息,为所述控制信息设置第一标识和第二标识;
将所述控制信息添加到软件对应关系中,为所述控制信息解除所述第一标识;
将所述控制信息添加到硬件对应关系中,清除所述第二标识。
优选的,所述接收控制信息,为所述控制信息设置第一标识和第二标识,包括:
在同一时间内接收到第一控制信息和第二控制信息,所述第一控制信息和所述第二控制信息具有相同的对应关系;
当所述第一控制信息获得所述第一标识和第二标识时,为所述第一控制信息设置第一标识和第二标识,将所述第二控制信息置于等待状态。
优选的,第一控制信息添加完成,回复到初始状态之后,还包括:
为所述第二控制信息设置第一标识和第二标识;
将所述第二控制信息添加到所述软件对应关系中,为所述第二控制信息解除所述第一标识;
将所述第二控制信息添加到所述硬件对应关系中,清除所述第二控制信息的第二标识。
优选的,所述清除第二标识之后,还包括:
为所述控制信息设置第三标识,并根据所述软件对应关系更新所述硬件对应关系;
清除所述第三标识。
优选的,所述清除第二标识之后,还包括:
当需要使用所述软件对应关系转发数据时,根据所述数据中携带的关键字信息查询所述软件对应关系中的控制信息;
根据所述查询结果获取所述软件对应关系中的控制信息,为所述控制信息设置第三标识;
通过使用所述控制信息转发所述数据,并清除所述第三标识。
优选的,所述方法应用于在基于抢占式多核的环境下,多个任务可以并发处理的设备;
当所述控制信息为路由信息时,所述第一控制信息为主机路由,所述第二控制信息为非主机路由信息;
当所述控制信息为IP地址信息时,所述第一控制信息为来自命令行的IP地址,所述第二控制信息为来自DHCP服务器的IP地址。
本发明还提供一种信息表项的更新设备,所述设备基于抢占式多核,且多个任务可以并发处理,包括:
接收模块,用于接收控制信息;
设置模块,与所述接收模块连接,用于为所述接收模块接收的控制信息设置第一标识和第二标识;
添加模块,与所述设置模块和接收模块分别连接,用于将所述接收模块接收的控制信息添加到软件对应关系中;解除所述设置模块为所述控制信息设置的第一标识,之后将所述控制信息添加到硬件对应关系中;
清除模块,与所述设置模块连接,用于将控制信息添加到硬件对应关系后清除所述设置模块为所述控制信息设置的第二标识。
优选的,
所述接收模块具体用于:
在同一时间内接收第一控制信息和第二控制信息,所述第一控制信息和所述第二控制信息具有相同的对应关系;
所述设置模块具体用于:
当所述第一控制信息获得所述第一标识和第二标识时,为所述第一控制信息设置第一标识和第二标识,所述第二控制信息置于等待状态。
优选的,
所述设置模块还用于:在第一控制信息添加完成,回复到初始状态之后,为所述第二控制信息设置第一标识和第二标识;
所述添加模块还用于:
将所述第二控制信息添加到所述软件对应关系中;为所述第二控制信息解除所述第一标识,之后将所述第二控制信息添加到所述硬件对应关系中;
所述清除模块还用于:
所述第二控制信息添加到所述硬件对应关系后,清除所述第二控制信息的第二标识。
优选的,
所述设置模块还用于:
在所述清除模块清除第二标识之后,为所述控制信息设置第三标识,并根据所述软件对应关系更新所述硬件对应关系;并清除所述第三标识。
优选的,还包括:
处理模块,用于当需要使用所述软件对应关系转发数据时,根据所述数据中携带的关键字信息查询所述软件对应关系中的控制信息;根据所述查询结果获取所述软件对应关系中的控制信息,为所述控制信息设置第三标识;通过使用所述控制信息转发所述数据,并清除所述第三标识。
与现有技术相比,本发明具有以下优点:
通过为每个控制信息设置一个写锁和待处理标志,当在同一时间内接收到相同的两个控制信息时,为其中一个控制信息设置写锁和待处理标志,另外一个控制信息进入等待状态,在软件对应关系中添加相同的两个控制信息时不会发生冲突,在向硬件对应关系中添加两个控制信息时也不会发生冲突。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中转发表子系统的架构图;
图2是本发明提出的一种信息表项的更新方法流程图;
图3是本发明一种应用场景下提出的一种信息表项的更新方法流程图;
图4是本发明应用场景下状态机的示意图;
图5是本发明另一种应用场景下对IP地址进行管理时的架构示意图;
图6是本发明另一种应用场景下提出的一种信息表项的更新方法流程图;
图7是本发明提出的一种信息表项的更新设备结构图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中的核心思想是在基于抢占式多核的环境下,通过使用读写锁和待处理标志,解决32位路由和主机路由更新FIB软件表项发生的冲突,和32位路由和主机路由更新FIB硬件表项发生的冲突,而且并发处理32位路由和主机路由更新FIB表项,并不会影响软件转发的性能。
通过对32位路由和主机路由更新FIB表项发生冲突的扩展,可知任何需要同步更新软件表项发生冲突,同步更新硬件表项发生冲突时,均可使用读写锁和待处理标志进行解决。本发明中,在软件表项和硬件表项中需要添加相同的控制信息时(例如上述的路由信息、IP地址信息),为该控制信息设置读写锁和待处理标志。
本发明提供一种信息表项的更新方法,如图2所示,包括以下步骤:
步骤S201,接收控制信息,为所述控制信息设置第一标识和第二标识;
步骤S202,将所述控制信息添加到软件对应关系中,为所述控制信息解除所述第一标识;
步骤S203,将所述控制信息添加到硬件对应关系中,清除所述第二标识。
本发明中,该第一标识为写锁,该第二标识为待处理标志,为该控制信息设置第一标识之后,该控制信息处于写锁状态,此时,只有获得该写锁的控制信息可以写入到软件对应关系中,而没有获得该写锁的控制信息只能进入等待状态。该待处理标志用于控制向硬件发送FIB表项信息,例如,当待处理标志为设置了待处理标志时(例如,将待处理标志设置为1表示设置了待处理标志,或将待处理标志设置为0表示设置了待处理标志,本发明中,以将待处理标志设置为1表示设置了待处理标志),表示一个线程正在向硬件发送FIB表项信息,其他线程查看到待处理标志为1时,只能睡眠等待。
本发明中,以在同一时间接收到第一控制信息和第二控制信息为例进行说明,该第一控制信息和第二控制信息具有相同的对应关系(即该第一控制信息和第二控制信息相同,例如,该第一控制信息为主机路由,该第二控制信息为与主机路由相同的32位路由)。
在多核的环境下,两个CPU分别将两个控制信息(第一控制信息和第二控制信息)添加到软件对应关系和硬件对应关系中,而对于相同的两个控制信息,只有一组第一标识(写锁)和第二标识(待处理标志),两个控制信息中只有一个可以获得该第一标识和第二标识,以第一控制信息获得该第一标识和第二标识为例进行说明;即在同一时间内接收到第一控制信息和第二控制信息,所述第一控制信息和所述第二控制信息具有相同的对应关系;当所述第一控制信息获得所述第一标识和第二标识时;为所述第一控制信息设置第一标识和第二标识,将所述第二控制信息置于等待状态,并将所述第一控制信息添加到软件对应关系中;为所述第一控制信息解除(去掉第一标识的写锁)所述第一标识,并将所述第一控制信息添加到硬件对应关系中;清除所述第一控制信息的第二标识(将待处理标志还原成原始状态);
在清除所述第一控制信息的第二标识之后,处理第二控制信息进程的CPU在看到没有第二标识表示没有线程正在向硬件发送FIB表项信息时(例如,第二标识为0),为所述第二控制信息设置第一标识和第二标识,将所述第二控制信息添加到所述软件对应关系中;为所述第二控制信息解除所述第一标识,并将所述第二控制信息添加到所述硬件对应关系中;清除所述第二控制信息的第二标识。
本发明中,在清除所述第二标识之后,还可以为所述控制信息设置第三标识和第二标识,并根据所述软件对应关系更新所述硬件对应关系(例如,将FIB软件表项所对应的邻接表信息添加到FIB硬件表项);更新完成后,清除所述第三标识和第二标识。
本发明中,当FIB软件表项处于无锁状态,并且需要转发数据时,通过使用所述软件对应关系或所述硬件对应关系转发所述数据;其中,通过使用软件对应关系转发数据具体为:
当需要使用所述软件对应关系转发数据时,根据所述数据中携带的关键字信息查询所述软件对应关系中的控制信息;根据所述查询结果获取所述软件对应关系中的控制信息,为所述控制信息设置第三标识(读锁);通过使用所述控制信息转发所述数据,并清除所述第三标识,返回到无锁状态。此时,可以对其它数据进行转发,再一次的获取读锁,然后转发,与上述数据的转发过程相同,在此不再赘述。
本发明中,所述方法应用于在基于抢占式多核的环境下,多个任务可以并发处理的设备;当所述控制信息为路由信息时,所述第一控制信息为主机路由,所述第二控制信息为非主机路由信息;例如,该第一控制信息为来自ARP模块的主机路由,该第二控制信息为来自路由模块的非主机路由信息。
当所述控制信息为IP地址信息时,所述第一控制信息为来自命令行的IP地址,所述第二控制信息为来自DHCP服务器的IP地址。
可见,本发明中,通过为每个控制信息设置一个写锁和待处理标志,当在同一时间内接收到相同的两个控制信息时,为其中一个控制信息设置写锁和待处理标志,另外一个控制信息进入等待状态,在软件对应关系中添加相同的两个控制信息时不会发生冲突,在向硬件对应关系中添加两个控制信息时也不会发生冲突。
本发明一种应用场景下提供的一种信息表项的更新方法,该方法适用于在基于抢占式多核的环境下,多个任务可以并发处理的情况,如图3所示,该信息表项的更新方法包括以下步骤:
步骤S301,网络设备为FIB表项提供读写锁和待处理标志(FLAG)。
网络设备需要为FIB表中的每个FIB软件表项提供读写锁和待处理标志,FIB表项包括FIB软件表项和FIB硬件表项。其中,读写锁用于控制对FIB表项的读写和访问,待处理标志用于控制向硬件发送FIB表项信息。其中,待处理标志表示正在将FIB表项下发到FIB硬件表项中,例如,将待处理标志设置为1表示设置了待处理标志,或将待处理标志设置为0表示设置了待处理标志,本发明中,以将待处理标志设置为1表示设置了待处理标志,其中,当待处理标志为1时,表示一个线程正在处理FIB表项,其他线程查看到待处理标志为1时,只能睡眠等待。
该网络设备中执行本发明操作的主体包括但不限于网络设备中的主控板、接口板,该网络设备包括但不限于路由器、交换机、终端等,其中,可以通过使用网络设备中的主控板为FIB表项提供读写锁和待处理标志,该主控板(例如,具有多核处理器的主控板)用于完成数据处理、协议处理、数据包转发、接口控制、故障检测等功能。
步骤S302,网络设备通过使用读写锁和待处理标志为FIB表项设置状态机。
该状态机如表1所示。
表1
  状态   描述
  INIT   FIB表项初始状态
  WLOCK_DEAL   FIB表项“写锁+待处理标志”状态
  RLOCK_DEAL   FIB表项“读锁+待处理标志”状态
  DEAL   FIB表项“待处理标志”状态
  RLOCK   FIB表项“读锁”状态
其中,在该状态机中有5个状态,分别为INIT状态、WLOCK_DEAL状态、RLOCK_DEAL状态、DEAL状态和RLOCK状态,上述5个状态之间的转换如图4所示,INIT状态表示FIB表项的初始状态,WLOCK_DEAL状态表示FIB表项的写锁和待处理标志状态,RLOCK_DEAL状态表示FIB表项的读锁和待处理标志状态,DEAL状态表示FIB表项的待处理标志状态,RLOCK表示FIB表项的读锁状态。
具体的,(1)当前状态为INIT状态,获取读锁时,转到RLOCK状态;当前状态为RLOCK状态,解读锁时,转到INIT状态;
(2)当前状态为INIT状态,获取写锁并设置待处理标志时,转到WLOCK_DEAL状态;当前状态为WLOCK_DEAL状态,解写锁时,转到DEAL状态;当前状态为DEAL状态,清除待处理标志后,转到INIT状态;
(3)当前状态为INIT状态,获取读锁并设置待处理标志时,转到RLOCK_DEAL状态;当前状态为RLOCK_DEAL状态,解读锁时,转到DEAL状态;当前状态为DEAL状态,获取到读锁时,转到RLOCK_DEAL状态;当前状态为RLOCK_DEAL状态,清除待处理标志后,转到RLOCK状态。
步骤S303,当需要在FIB软件表项中添加路由信息时,网络设备为FIB软件表项中的路由信息写锁并设置待处理标志,状态机的状态由INIT状态变为WLOCK_DEAL状态。
本发明中,网络设备为在处理FIB软件表项和FIB硬件表项时,均是通过网络设备中的具体任务实现的,例如,ARP模块通知FIB模块在FIB软件表项中添加主机路由是一个具体的任务,路由模块通知FIB模块在FIB软件表项中添加32位路由也是一个具体的任务,为了方便描述,本发明中以网络设备处理FIB软件表项和FIB硬件表项为例进行说明。
其中,当ARP模块通知FIB模块在FIB软件表项中添加主机路由(主机路由信息);和/或路由模块通知FIB模块在FIB软件表项中添加32位路由(32位路由信息或非主机路由信息)时,网络设备为每个添加表项写锁并设置待处理标志。当然,路由模块通知FIB模块在FIB软件表项中添加其他位数的路由时(32位路由信息)时,网络设备也需要为每个路由添加表项写锁并设置待处理标志。本发明中,以路由模块通知FIB模块在FIB软件表项中添加32位路由为例进行说明。
当ARP模块通知FIB模块在FIB软件表项中添加主机路由与路由模块通知FIB模块在FIB软件表项中添加32位路由不同时进行时,网络设备为每个添加表项(主机路由表项或32位路由表项)写锁并设置待处理标志;
当ARP模块通知FIB模块在FIB软件表项中添加主机路由与路由模块通知FIB模块在FIB软件表项中添加32位路由同时进行,而二者不相同时,由于每个FIB表项对应一个读写锁和待处理标志,即网络设备需要为主机路由表项写锁并设置待处理标志,以及为32位路由表项写锁并设置待处理标志;
当ARP模块通知FIB模块在FIB软件表项中添加主机路由与路由模块通知FIB模块在FIB软件表项中添加32位路由同时进行,而二者相同时,主机路由表项和32位路由表项将使用同一个读写锁和待处理标志,即网络设备只能为一个添加表项写锁并设置待处理标志。
具体的,对于每个FIB软件表项,是基于目的地址和掩码的方式存储路由信息的,当ARP模块通知FIB模块在FIB软件表项中添加的主机路由与路由模块通知FIB模块在FIB软件表项中添加的32位路相同时,此时FIB软件表项的目的地址和掩码是相同的,如表1所示,以每个FIB软件表项包含目的地址、掩码长度和下一跳地址为例进行说明,当然,该FIB软件表项中还包含其他内容,在此不再赘述。
表1
  目的地址   掩码长度   下一跳地址
  192.168.1.1   32   1.1.1.1
本发明中,以ARP模块通知FIB模块在FIB软件表项中添加主机路由与路由模块通知FIB模块在FIB软件表项中添加32位路由之前已经存储了表1为例进行说明;ARP模块通知FIB模块在FIB软件表项中添加主机路由以表2所示的路由表项为例,路由模块通知FIB模块在FIB软件表项中添加32位路由以表3所示的路由表项为例。
表2
  目的地址   掩码长度   下一跳地址
  192.168.1.1   32   2.2.2.2
表3
  目的地址   掩码长度   下一跳地址
  192.168.1.1   32   3.3.3.3
由于本发明是基于目的地址和掩码的方式存储路由信息的,可见,表2所示的路由表项和表3所示的路由表项均需要添加到表1中,即表2所示的路由表项和表3所示的路由表项相同。
本发明中,使用基于抢占式多核的操作环境,将会有两个(或以上)的CPU(Central Process Unit,中央处理器)分别对添加主机路由表项和添加32位路由表项进行操作。例如,添加主机路由表项与添加32位路由表项同时进行时,CPU 1处理主机路由表项的添加过程,CPU 2处理32位路由表项的添加过程;当主机路由表项(表2所示的路由表项)和32位路由表项(表3所示的路由表项)相同时,CPU 1的处理过程和CPU 2的处理过程同时进行,但只有一个过程能够获得读写锁和待处理标志(向表1中添加表2所示的路由表项和表3所示的路由表项时,由于每个FIB软件表项只有一个读写锁和待处理标志,即表1只有一个读写锁和待处理标志,例如,将表2所示的路由表项添加到表1时,该路由表项获得该读写锁和待处理标志,表3所示的路由表项无法再获得该读写锁和待处理标志),例如,CPU 1的处理过程(添加表2所示的路由表项的过程)获得了读写锁和待处理标志时,CPU 1为该主机路由表项(表2所示的路由表项)写锁并设置待处理标志(例如,将待处理标志设置为1表示一个线程正在处理FIB表项),CPU 2没有获得读写锁,并获知CPU 1已经设置了待处理标志时,将该32位路由表项的添加过程置于等待状态。
在WLOCK_DEAL状态下,CPU 2是无法将32位路由表项添加到FIB软件表项中的,CPU 2将周期性的获知当前状态,只有当前状态变为INIT状态时,CPU 2才能将32位路由表项添加到FIB软件表项中。
步骤S304,网络设备将主机路由表项或32位路由表项添加到FIB软件表项中。
其中,在该网络设备中包含FIB软件表项和FIB硬件表项,当需要添加主机路由表项和/或32位路由表项时,将该主机路由表项和/或32位路由表项添加到FIB软件表项和FIB硬件表项中。
本发明中,以主机路由表项和32位路由表项相同,且同时进行为例,主机路由表项获得了写锁并设置了待处理标志时,网络设备将主机路由表项添加到网络设备中的FIB软件表项中。
步骤S305,网络设备为主机路由表项解写锁,状态机的状态由WLOCKDEAL状态变为DEAL状态,并将该主机路由表项添加到FIB硬件表项中。
同样的,CPU 2获知当前状态为DEAL状态时,CPU 2是无法将32位路由表项添加到FIB软件表项中的,该CPU 2将32位路由表项添加到FIB软件表项中的过程继续等待状态。
在DEAL状态下,由于已经解写锁,即该路由表项(例如,上述的表1)处于无锁状态,在该状态(DEAL状态)下,网络设备(通过CPU 1)将主机路由表项(上述表2中的路由表项,此时,该路由表项已经添加到表1中)添加到该FIB硬件表项中。
步骤S306,网络设备清除待处理标志,状态由DEAL状态变为INIT状态。
在将主机路由表项添加到FIB硬件表项之后,网络设备将清除待处理标志,状态变为INIT状态,CPU 2在获知当前状态为INIT状态时,可以将32位路由表项添加到FIB软件表项中,为该32位路由表项获取写锁,并设置待处理标志,将该32位路由表项添加到FIB软件表项和FIB硬件表项中,该添加和状态的变换过程与上述主机路由的过程相同,在此不再赘述。
本发明中,在INIT状态下,当需要根据FIB软件表项更新FIB硬件表项时(例如,将FIB软件表项所对应的邻接表信息添加到FIB硬件表项),需要获取读锁并设置待处理标志,即此时为读锁和待处理标志,进入到RLOCKDEAL状态;在该RLOCK_DEAL状态下,根据FIB软件表项更新FIB硬件表项;更新完成后,由于只是更新FIB硬件表项所以直接解锁,进入到DEAL状态。在清除待处理标志之后,回到INIT状态。此时可以继续获取读锁并设置待处理标志,并根据FIB软件表项更新FIB硬件表项。
本发明中,在INIT状态下,当需要使用FIB软件表项中的路由表项(数据中携带的路由信息与FIB软件表项中的路由表项相同)转发数据时,读取FIB软件表项,根据该数据中携带的路由信息,在FIB表项中查找该路由信息,并为该路由信息所对应的FIB表项设置读锁,转到RLOCK状态,在该RLOCK状态下,不能对其他的数据进行转发。将该数据转发完成后,对该路由信息所对应的FIB表项解读锁,当前状态由RLOCK状态变回INIT状态,此时,可以对其它数据(数据中携带路由信息与FIB软件表项中的路由表项相同)进行转发,再一次的获取读锁,然后转发,与上述数据的处理过程相同,在此不再赘述。
其中,本发明方法可以根据实际需要对各个步骤顺序进行调整。
可见,本发明中,通过为每个控制信息设置读写锁和待处理标志,当在同一时间内接收到相同的两个控制信息时,为其中一个控制信息设置读写锁和待处理标志,另外一个控制信息进入等待状态,从而解决相同的控制信息发生冲突的情况。
本发明另一种应用场景下提供的一种信息表项的更新方法,该方法适用于在基于抢占式多核的环境下,多个任务可以并发处理的情况,通过对32位路由和主机路由更新FIB表项发生冲突问题的扩展,使得需要同步更新软件表项发生冲突,同步更新硬件表项发生冲突时,使用读写锁和待处理标志进行解决的情况,本发明中以IP地址的冲突为例进行说明,如图5所示的IP地址进行管理时的架构,DHCP(Dynamic Host Configuration Protocol,动态主机分配协议)和命令行分别通知IP地址管理模块添加IP地址,该信息表项的更新方法如图6所示,包括以下步骤:
步骤S601,网络设备为IP地址表项提供读写锁和待处理标志。其中,IP地址表项包括IP地址软件表项和IP地址硬件表项,网络设备需要为IP地址表中的每个IP地址软件表项提供读写锁和待处理标志。
步骤S602,网络设备通过使用读写锁和待处理标志为IP地址表项设置状态机。
其中,该状态机包括:INIT状态、WLOCK_DEAL状态、RLOCK_DEAL状态、DEAL状态和RLOCK状态。
步骤S603,当需要在IP地址软件表项中添加IP地址信息时,网络设备为IP地址软件表项写锁并设置待处理标志,状态机的状态由INIT状态变为WLOCK_DEAL状态。
本发明中,网络设备为在处理IP地址软件表项和IP地址硬件表项时,均是通过网络设备中的具体任务实现的,例如,命令行通知在IP地址软件表项中添加IP地址是一个具体的任务,DHCP服务器通知在IP地址软件表项中添加IP地址是一个具体的任务,为了方便描述,本发明中以网络设备处理IP地址软件表项和IP地址硬件表项为例进行说明。
步骤S604,网络设备将来自DHCP的IP地址表项或来自命令行的IP地址表项添加到网络设备中的IP地址软件表项中。
步骤S605,网络设备为IP地址表项解写锁,状态机的状态由WLOCK_DEAL状态变为DEAL状态,并将该IP地址表项添加到IP地址硬件表项中。
其中,当在网络设备中的IP地址软件表项中添加来自DHCP的IP地址表项时,为来自DHCP的IP地址表项时解写锁,当在网络设备中的IP地址软件表项中添加来自命令行的IP地址表项时,为来自命令行的IP地址表项时解写锁。
步骤S606,网络设备清除待处理标志,状态由DEAL状态变为INIT状态。例如,在将来自DHCP的IP地址表项添加到IP地址硬件表项之后,网络设备清除待处理标志,并按照上述流程为来自命令行的IP地址表项添加到IP地址硬件表项,在此不再赘述。
其中,上述步骤S601-步骤S606与上述步骤S301-步骤S306的过程类似,状态机变换的过程也相同,只是FIB表项变成了IP地址表项,在此不再详加描述。
其中,本发明方法可以根据实际需要对各个步骤顺序进行调整。
可见,本发明中,通过为每个控制信息设置读写锁和待处理标志,当在同一时间内接收到相同的两个控制信息时,为其中一个控制信息设置读写锁和待处理标志,另外一个控制信息进入等待状态,从而解决相同的控制信息发生冲突的情况。
本发明还提出了一种信息表项的更新设备,所述设备基于抢占式多核,且多个任务可以并发处理,如图7所示,包括:接收模块71、设置模块72、添加模块73、清除模块74、存储模块75、处理模块76。其中:
接收模块71,用于接收控制信息。
设置模块72,与所述接收模块71连接,用于为所述接收模块71接收的控制信息设置第一标识和第二标识。
其中,所述接收模块71在同一时间内接收第一控制信息和第二控制信息,所述第一控制信息获得所述第一标识和第二标识时,设置模块72为所述第一控制信息设置第一标识和第二标识,所述第二控制信息置于等待状态。
所述设置模块72还用于:在第一控制信息添加完成,回复到初始状态之后,为所述第二控制信息设置第一标识和第二标识。
其中,该所述设置模块72还用于:
在所述清除模块74清除第二标识之后,为所述控制信息设置第三标识,并根据所述软件对应关系更新所述硬件对应关系;之后清除所述第三标识。
添加模块73,与所述设置模块72和接收模块71分别连接,用于将所述接收模块71接收的控制信息添加到软件对应关系中,解除所述设置模块72为所述控制信息设置的第一标识,之后将所述控制信息添加到硬件对应关系中。
其中,添加模块73还用于在所述设置模块72为所述第二控制信息设置第一标识和第二标识之后,将所述第二控制信息添加到所述软件对应关系中,为所述第二控制信息解除所述第一标识,之后将所述第二控制信息添加到所述硬件对应关系中。
清除模块74,与所述设置模块72连接,用于将控制信息添加到硬件对应关系后清除所述设置模块72为所述控制信息设置的第二标识。
所述第一控制信息获得所述第一标识和第二标识时,清除所述第一控制信息的第二标识;在添加模块73为所述接收模块71接收的第二控制信息解除所述第一标识,并将所述第二控制信息添加到所述硬件对应关系中之后,清除所述第二控制信息的第二标识。
存储模块75,与所述添加模块73和设置模块72分别连接,用于存储软件对应关系和硬件对应关系。
处理模块76,用于当需要使用所述存储模块75存储的软件对应关系转发数据时,根据所述数据中携带的关键字信息查询所述软件对应关系中的控制信息;根据所述查询结果获取所述软件对应关系中的控制信息,为所述控制信息设置第三标识;通过使用所述控制信息转发所述数据,并清除所述第三标识。
上述模块可以分布于一个装置,也可以分布于多个装置。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (11)

1.一种信息表项的更新方法,其特征在于,包括以下步骤:
接收控制信息,为所述控制信息设置第一标识和第二标识;
将所述控制信息添加到软件对应关系中,为所述控制信息解除所述第一标识;
将所述控制信息添加到硬件对应关系中,清除所述第二标识;
其中,所述第一标识为使得控制信息处于写锁状态的写锁标识,第二标识为用于控制向硬件发送FIB表项信息的待处理标识。
2.如权利要求1所述的方法,其特征在于,所述接收控制信息,为所述控制信息设置第一标识和第二标识,包括:
在同一时间内接收到第一控制信息和第二控制信息,所述第一控制信息和所述第二控制信息具有相同的对应关系;
当所述第一控制信息获得所述第一标识和第二标识时,为所述第一控制信息设置第一标识和第二标识,将所述第二控制信息置于等待状态。
3.如权利要求2所述的方法,其特征在于,第一控制信息添加完成,回复到初始状态之后,还包括:
为所述第二控制信息设置第一标识和第二标识;
将所述第二控制信息添加到所述软件对应关系中,为所述第二控制信息解除所述第一标识;
将所述第二控制信息添加到所述硬件对应关系中,清除所述第二控制信息的第二标识。
4.如权利要求1所述的方法,其特征在于,所述清除第二标识之后,还包括:
为所述控制信息设置第三标识,并根据所述软件对应关系更新所述硬件对应关系;
清除所述第三标识。
5.如权利要求1所述的方法,其特征在于,所述清除第二标识之后,还包括:
当需要使用所述软件对应关系转发数据时,根据所述数据中携带的关键字信息查询所述软件对应关系中的控制信息;
根据所述查询结果获取所述软件对应关系中的控制信息,为所述控制信息设置第三标识;
通过使用所述控制信息转发所述数据,并清除所述第三标识。
6.如权利要求2-5任一项所述的方法,其特征在于,所述方法应用于在基于抢占式多核的环境下,多个任务并发处理的设备;
当所述控制信息为路由信息时,所述第一控制信息为主机路由,所述第二控制信息为非主机路由信息;
当所述控制信息为IP地址信息时,所述第一控制信息为来自命令行的IP地址,所述第二控制信息为来自DHCP服务器的IP地址。
7.一种信息表项的更新设备,其特征在于,所述设备基于抢占式多核,且多个任务并发处理,包括:
接收模块,用于接收控制信息;
设置模块,与所述接收模块连接,用于为所述接收模块接收的控制信息设置第一标识和第二标识;
添加模块,与所述设置模块和接收模块分别连接,用于将所述接收模块接收的控制信息添加到软件对应关系中;解除所述设置模块为所述控制信息设置的第一标识,之后将所述控制信息添加到硬件对应关系中;
清除模块,与所述设置模块连接,用于将控制信息添加到硬件对应关系后清除所述设置模块为所述控制信息设置的第二标识;
其中,所述第一标识为使得控制信息处于写锁状态的写锁标识,第二标识为用于控制向硬件发送FIB表项信息的待处理标识。
8.如权利要求7所述的设备,其特征在于,所述接收模块具体用于:
在同一时间内接收第一控制信息和第二控制信息,所述第一控制信息和所述第二控制信息具有相同的对应关系;
所述设置模块具体用于:
当所述第一控制信息获得所述第一标识和第二标识时,为所述第一控制信息设置第一标识和第二标识,所述第二控制信息置于等待状态。
9.如权利要求8所述的设备,其特征在于,
所述设置模块还用于:在第一控制信息添加完成,回复到初始状态之后,为所述第二控制信息设置第一标识和第二标识;
所述添加模块还用于:
将所述第二控制信息添加到所述软件对应关系中;为所述第二控制信息解除所述第一标识,之后将所述第二控制信息添加到所述硬件对应关系中;
所述清除模块还用于:
所述第二控制信息添加到所述硬件对应关系后,清除所述第二控制信息的第二标识。
10.如权利要求7所述的设备,其特征在于,所述设置模块还用于:
在所述清除模块清除第二标识之后,为所述控制信息设置第三标识,并根据所述软件对应关系更新所述硬件对应关系;并清除所述第三标识。
11.如权利要求7所述的设备,其特征在于,还包括:
处理模块,用于当需要使用所述软件对应关系转发数据时,根据所述数据中携带的关键字信息查询所述软件对应关系中的控制信息;根据所述查询结果获取所述软件对应关系中的控制信息,为所述控制信息设置第三标识;通过使用所述控制信息转发所述数据,并清除所述第三标识。
CN2009101367958A 2009-05-15 2009-05-15 一种信息表项的更新方法和设备 Expired - Fee Related CN101547209B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101367958A CN101547209B (zh) 2009-05-15 2009-05-15 一种信息表项的更新方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101367958A CN101547209B (zh) 2009-05-15 2009-05-15 一种信息表项的更新方法和设备

Publications (2)

Publication Number Publication Date
CN101547209A CN101547209A (zh) 2009-09-30
CN101547209B true CN101547209B (zh) 2012-01-04

Family

ID=41194092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101367958A Expired - Fee Related CN101547209B (zh) 2009-05-15 2009-05-15 一种信息表项的更新方法和设备

Country Status (1)

Country Link
CN (1) CN101547209B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103023673A (zh) * 2011-09-21 2013-04-03 中兴通讯股份有限公司 一种控制单元的启动方法及装置
CN106775995B (zh) * 2015-11-19 2020-01-10 华为技术有限公司 匹配资源的方法和装置
CN107562648B (zh) * 2016-07-01 2021-04-06 北京忆恒创源科技有限公司 无锁ftl访问方法与装置
CN108134855B (zh) * 2017-12-18 2021-03-09 东软集团股份有限公司 Arp表管理方法、处理器核心、存储介质、电子设备
CN114489822A (zh) * 2022-01-27 2022-05-13 苏州盛科通信股份有限公司 热启动实现方法的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881913A (zh) * 2005-06-15 2006-12-20 上海贝尔阿尔卡特股份有限公司 一种网络接入设备中用户接口组播管理方法及其装置
WO2007003370A2 (en) * 2005-06-30 2007-01-11 Interuniversitair Microelektronica Centrum Vzw A memory arrangement for multi-processor systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1881913A (zh) * 2005-06-15 2006-12-20 上海贝尔阿尔卡特股份有限公司 一种网络接入设备中用户接口组播管理方法及其装置
WO2007003370A2 (en) * 2005-06-30 2007-01-11 Interuniversitair Microelektronica Centrum Vzw A memory arrangement for multi-processor systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Arrvindh Shriraman ET.AL.An Intergrated Hardware-Software Approach to Flexible Transactional Memory.《An Intergrated Hardware-Software Approach to Flexible Transactional Memory》.2006, *
Bratin Saha ET.AL.Architectural Support for Software Transactional Memory.《IEEE 39th Annual IEEE/ACM International Symposium》.2006, *

Also Published As

Publication number Publication date
CN101547209A (zh) 2009-09-30

Similar Documents

Publication Publication Date Title
US20180239726A1 (en) Data transmission method, device, and system
US10621138B2 (en) Network communications using pooled memory in rack-scale architecture
CN113535433B (zh) 基于Linux系统的控制转发分离方法、装置、设备和存储介质
CN100442282C (zh) 分布式系统中数据查询的方法及板间数据同步的方法
CN101547209B (zh) 一种信息表项的更新方法和设备
CN110795029B (zh) 一种云硬盘管理方法、装置、服务器及介质
JP6880402B2 (ja) メモリアクセス制御装置及びその制御方法
KR20130128461A (ko) 통신 제어 시스템, 스위치 노드 및 통신 제어 방법
CN110825690B (zh) 多核处理器的核间通信方法及装置
CN102012899A (zh) 一种数据更新的方法、系统及设备
CN103229478A (zh) 一种确定虚拟机漂移的方法和装置
CN104636186A (zh) 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备
US8832215B2 (en) Load-balancing in replication engine of directory server
CN102929958A (zh) 元数据的处理方法,代理、转发设备,服务器及计算系统
US8930640B2 (en) Multiprocessor computer system with reduced directory requirement
US20070088854A1 (en) Apparatus for searching TCP and UDP sockets
CN102801686A (zh) 设备控制方法、主设备、从设备及主从设备组
CN109582242B (zh) 级联存储阵列系统的地址确定方法、装置、电子设备
CN111679918A (zh) 一种消息传输方法及装置
JP6842542B2 (ja) パケット伝送方法及びcb機器
CN113259426B (zh) 微服务中解决数据依赖的方法、系统、设备和介质
EP2090976A2 (en) Method of substituting process in storage system
CN115480934A (zh) 一种分布式数据处理的方法、装置、设备及储存介质
CN113918504A (zh) 一种隔离组的实现方法及装置
CN113497765A (zh) 一种路由管理的方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120104

Termination date: 20200515