CN102081603B - 一种在多核环境下的arp查询优化的方法 - Google Patents
一种在多核环境下的arp查询优化的方法 Download PDFInfo
- Publication number
- CN102081603B CN102081603B CN200910199516.2A CN200910199516A CN102081603B CN 102081603 B CN102081603 B CN 102081603B CN 200910199516 A CN200910199516 A CN 200910199516A CN 102081603 B CN102081603 B CN 102081603B
- Authority
- CN
- China
- Prior art keywords
- arp
- arp table
- overall
- core
- privately owned
- 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
Abstract
本发明公开了一种在多核环境下的ARP查询优化的方法。所述方法中每个核都维护有自己的私有ARP表,所有核共同维护全局ARP表;ARP查询时首先查询私有ARP表,在查询不成功的情况下再查询全局ARP表;若查询成功,则将该表项从全局ARP表中同步到自己的私有ARP表。该方法旨在加速路由器在多核环境下并发数据流转发过程中ARP查询效率。从而使用本地缓存方式来避免多个核并发访问共享数据带来的数据保护问题。
Description
技术领域:
本发明涉及计算机网络和数据通讯技术,特别涉及多核并行处理及核间的数据一致性问题,主要是一种在多核环境下的ARP查询优化的方法。
背景技术:
目前,ARP查询是路由器数据转发过程中不可或缺的一环,因此查询效率也较大的影响转发性能。然而在多核环境下,所有核共同维护ARP表,因此ARP查询操作时要对ARP表进行适当的保护,普通情况下可以使用对ARP表加锁来达到这一目的,比如查询时加读锁、修改时加写锁,加锁方式可以很好的解决多核下ARP表的维护、查询中的同步问题。
但美中不足的是,加解锁本身会引入不小的开销。以ARP查询为例,测试表明新增开销甚至是原查询过程开销的72%,ARP查询开销的增加势必会降低路由器的转发性能。
发明内容:
鉴于现有技术中加解锁的开销较大的影响了ARP查询的性能,从而直接影响了路由器的转发性能,本发明提出了一种在多核环境下的ARP查询优化的方法。该方法旨在加速路由器在多核环境下并发数据流转发过程中ARP查询效率。使用增加本地ARP表缓存的方法,来降低多个核并发访问共享数据时的数据保护操作引入的开销。
为了实现上述发明目的,本发明的具体方案如下:
由于每个核都维护有自己的私有ARP表,所有核共同维护全局ARP表。
ARP查询时首先查询私有ARP表,在查询不成功的情况下再查询全局ARP表;若查询成功,则将该表项从全局ARP表中同步到自己的私有ARP表。
这样在实际环境的使用过程中,绝大多数情况下的ARP查询都可以在私有ARP表中命中,而访问私有表是不需要特殊保护的,由此省去了特殊保护(加锁)带来的开销,也因为每个核只缓存自己关心的ARP表项,所以私有ARP表要比全局ARP表精简,由于以上两点ARP查询的效率可以有不小的提高。
虽然增加了核间同步开销,也增加了实现的复杂度,但这些代价是值得的,与原方式相比,ARP查询性能及路由器的转发性能都有提高。
本发明方法可以实现对全局ARP表、私有ARP表的维护、同步等,具体的过程步骤将在后面的《实施方式》中描述。
附图说明:
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明方法实现过程中执行ARP resolve操作的流程图;
图2为本发明方法实现过程中执行ARP lookup操作的流程图;
图3a为本发明方法实现过程中执行ARP update操作的流程图;
图3b为本发明方法实现过程中执行更新本地缓存的流程图;
图4为本发明方法实现过程中执行ARP add操作的流程图;
图5a为本发明方法实现过程中执行ARP delete操作的静态删除流程图;
图5b为本发明方法实现过程中执行ARP delete操作的动态删除流程图。
具体实施方式:
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
首先,本发明方案描述了一种多核环境下的优化ARP查询的方法,在该多核系统中维护着两种ARP表:全局ARP表、私有ARP表。全局ARP表是所有私有ARP表的并集,是整体系统对外界的抽象;私有ARP表实际上就是全局ARP表的部分拷贝,每个核自己维护。同时使用一种方法来保证全局ARP表与私有ARP表的数据一致性,下面具体描述。
由于每个核都可以更新全局ARP表,这样引入了数据的一致性问题,即私有ARP表的数据是否与全局ARP表一致的问题。比如核0和核1都缓存了一条ARP表项,现在核0更新了该表项(更新包括更新自己的私有ARP表和全局ARP表),这样核1缓存的条目就与全局ARP表中的条目不一致了,核1在使用ARP表时必须先从全局ARP表中获取该条目的更新,全局ARP表是核间同步的标本,任何更新都必须及时更新到全局ARP表。
在多个核时,一个ARP条目可能在部分核上有缓存,而另一部分核并不缓存该条目,当该条目更新时只要同步到缓存该条目的几个核即可,因为为了表征一个条目都缓存在哪些核上,我们为每一个条目增加一个CoreMask项,CoreMask中的每一位对应一个核,一个核缓存该条目时设置相应位,这样在条目有更新时可以根据该项知道要向哪些核进行同步。同时,为每一个核设置一个syn_label标识变量,来标识自己的整个私有ARP表是否有需要更新的表项,在更新一个ARP条目时根据该条目的CoreMask项设置要接收同步的核的标识标量syn_label,另外增加一个同步队列用来保存同步项,一个同步项包括命令cmd字段、CoreMask字段、IP地址字段;当一个核在使用ARP表时查看其标识变量syn_label,如果置位则需要遍历同步队列来获取所有更新。
下面描述了本方法下几种基本ARP操作的具体实现:
1.ARP resolve;
ARP resolve负责解决指定IP地址的ARP条目,它首先查询ARP表,若查询成功则直接返回,否则添加一条不完整的ARP表项,并发出一个ARP请求包,等到收到ARP reply包时更新该条目,从而获得指定IP及其物理地址的对应关系。
当一个核需要resolve一个IP地址时,核首先查询全局ARP表,若查询成功则直接发送该报文,否则在全局ARP表中添加一条不完整的ARP表项,并发送ARP请求,同时将报文挂到该条目下;然后将相应的ARP条目缓存到私有ARP表,设置全局ARP表对应项目的CoreMask的相应位。
考虑这样一种情况,可能多个核同时对一个IP进行resolve操作,但因为访问的是全局ARP表,对全局ARP表的访问是有保护的,修改操作是互斥的,且报文都是挂在全局ARP表条目下的,所以可以保证所有核缓存下来的报文在表项学习完整时均可以发送出去。(参见附图1)
2、ARP lookup;
ARP lookup即ARP查询,负责为指定IP地址查找对应的物理地址。
ARP查询操作是ARP所有处理中执行频度最高的操作,本发明的目的就是为了优化ARP查询操作的效率。
ARP查询时首先检查标识变量syn_label检查私有ARP表中是否有需要更新的表项,若标识变量置位则触发更新操作。更新操作会逐一变量同步队列,根据同步项中的CoreMask字段和IP地址字段从全局ARP表中获取更新。
标识变量没有置位或者更新完毕后开始ARP查询,ARP查询首先在私有ARP表中查询,若查询失败,然后再在全局ARP表中查询,查询成功则在私有ARP表中缓存该表项,失败则返回失败。(参见附图2)
3、ARP update;
ARP update负责更新ARP表项,指定IP地址对应的物理地址发生变化时需要执行该操作。
上面讨论了由于本地缓存引入的数据一致性问题,现在来讨论具体的ARP的更新操作及如何解决一致性问题。
参见图3a,当收到免费ARP报文、收到发给自己的reply报文等情况下,可能会触发ARP的更新,这时首先访问全局ARP表,查询比较来验证是否需要更新,若需要更新,则首先更新全局ARP表,然后根据对应表项的CoreMask项在同步队列中增加一个同步项,一个同步项包括命令cmd字段、CoreMask字段、IP地址字段,同时设置相应核的标识变量。ARP学习可以算作是一种特殊的ARP更新。
参见图3b,为了流程的一直性,更新操作中没有处理对当前核的更新,而是一致的延后到使用ARP表时(ARP查询或show local arp)来获取更新。
4、ARP add;
ARP add是维护ARP表的基本操作,它添加一条ARP条目到ARP表中。
ARP表项的添加分两种:一是静态添加,比如命令添加;二是动态添加,即动态ARP resolve。添加时:首先在全局ARP表中添加该表项,如果是ARPresolve还需要将该表项缓存到私有ARP表,若有待发送的报文,则缓存在全局ARP表表项的队列中;静态添加的表项不需要立即缓存到私有ARP表,所以静态添加只在全局ARP表中添加表项。(附图4)
5、ARP delete;
ARP delete是ARP add的逆操作。
ARP表项的删除分两种:一是静态删除(参见图5a),比如命令;二是动态删除(参见图5b),即ARP老化。对于全局ARP表只有静态删除没有老化操作,当一个表项的CoreMask项全为0时,如果不是静态添加的表项则从全局ARP表中删除该表项;而对于静态添加的表项只有在执行静态删除时进行删除,且需要根据CoreMask触发ARP更新(删除)。而私有ARP表只有动态删除,私有ARP表中的所有表项,不分类型,全部进行老化操作。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (2)
1.一种在多核环境下的ARP查询优化的方法,其特征在于,所述方法中每个核都维护有自己的私有ARP表,所有核共同维护全局ARP表,所述全局ARP表是所有私有ARP表的并集,所述私有ARP表实际上就是全局ARP表的部分拷贝;ARP查询时首先查询私有ARP表,在查询不成功的情况下再查询全局ARP表;若查询成功,则将该查询到的表项从全局ARP表中同步到自己的私有ARP表;
为了表征一个条目都缓存在哪些核上,为每一个条目增加一个CoreMask项,CoreMask中的每一位对应一个核,一个核缓存该条目时设置相应位,这样在条目有更新时可以根据该CoreMask项知道要向哪些核进行同步;同时,为每一个核设置一个标识变量syn_label,来标识自己的整个私有ARP表是否有需要更新的表项,在更新一个ARP条目时根据该条目的CoreMask项设置要接收同步的核的标识标量syn_label,另外增加一个同步队列用来保存同步项,一个同步项包括命令cmd字段、CoreMask字段、IP地址字段;当一个核在使用ARP表时查看其标识变量syn_label,如果置位则需要遍历同步队列来获取所有更新;
所述方法实现以下ARP操作:
ARP resolve;
当一个核需要resolve一个IP地址时,核首先查询全局ARP表,若查询成功则直接发送报文,否则在全局ARP表中添加一条不完整的ARP表项,并发送ARP请求,同时将报文挂到该条目下;然后将相应的ARP条目缓存到私有ARP表,设置全局ARP表对应项目的CoreMask的相应位;
ARP lookup;
ARP查询时首先检查标识变量syn_label检查私有ARP表中是否有需要更新的表项,若标识变量置位则触发更新操作,更新操作会逐一更新变量同步队列,根据同步项中的CoreMask字段和IP地址字段从全局ARP表中获取更新;
标识变量没有置位或者更新完毕后开始ARP查询,ARP查询首先在私有ARP表中查询,若查询失败,然后再在全局ARP表中查询,查询成功则在私有ARP表中缓存该查询到的表项,失败则返回失败;
ARP update:
当收到免费ARP报文、收到发给自己的reply报文情况下,可能会触发ARP的更新,这时首先访问全局ARP表,查询比较来验证是否需要更新,若需要更新,则首先更新全局ARP表,然后根据对应表项的CoreMask项在同步队列中增加一个同步项,一个同步项包括命令cmd字段、CoreMask字段、IP地址字段,同时设置相应核的标识变量,ARP学习可以算作是一种特殊的ARP更新;
ARP add:
ARP表项的添加时:首先在全局ARP表中添加该ARP表项,如果是ARPresolve还需要将该ARP表项缓存到私有ARP表,若有待发送的报文,则缓存在全局ARP表表项的同步队列中;静态添加的表项不需要立即缓存到私有ARP表,所以静态添加只在全局ARP表中添加表项;
ARP delete:
对于全局ARP表只有静态删除没有老化操作,当一个表项的CoreMask项全为0时,如果不是静态添加的表项则从全局ARP表中删除该ARP表项;而对于静态添加的表项只有在执行静态删除时进行删除,且需要根据CoreMask触发ARP更新;而私有ARP表只有动态删除,私有ARP表中的所有表项,不分类型,全部进行老化操作。
2.根据权利要求1的在多核环境下的ARP查询优化的方法,其特征在于,所述方法中由于每个核都可以更新全局ARP表,当核0和核1都缓存了一条ARP表项,现在核0更新了该ARP表项,这样核1缓存的条目就与全局ARP表中的条目不一致了,核1在使用ARP表时必须先从全局ARP表中获取该条目的更新,全局ARP表是核间同步的标本,任何更新都必须及时更新到全局ARP表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910199516.2A CN102081603B (zh) | 2009-11-27 | 2009-11-27 | 一种在多核环境下的arp查询优化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910199516.2A CN102081603B (zh) | 2009-11-27 | 2009-11-27 | 一种在多核环境下的arp查询优化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102081603A CN102081603A (zh) | 2011-06-01 |
CN102081603B true CN102081603B (zh) | 2015-06-03 |
Family
ID=44087571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910199516.2A Active CN102081603B (zh) | 2009-11-27 | 2009-11-27 | 一种在多核环境下的arp查询优化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102081603B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199800A (zh) * | 2014-07-21 | 2014-12-10 | 上海寰创通信科技股份有限公司 | 一种解决多核系统中表项互斥的方法 |
CN104572259A (zh) * | 2014-10-17 | 2015-04-29 | 新浪网技术(中国)有限公司 | 一种数据处理方法及装置 |
CN105227493A (zh) * | 2015-10-15 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 多核平台下提高数据报文转发性能的方法 |
CN106959969B (zh) * | 2016-01-12 | 2020-07-17 | 恒生电子股份有限公司 | 一种数据处理方法及装置 |
CN107124297B (zh) * | 2017-03-31 | 2020-07-17 | 广州九一乐维信息科技有限公司 | 基于zabbix的SNMP网络拓扑发现方法及装置 |
CN107360268B (zh) * | 2017-06-23 | 2020-11-06 | 北京奇艺世纪科技有限公司 | 一种数据包处理方法、装置及设备 |
CN108134855B (zh) * | 2017-12-18 | 2021-03-09 | 东软集团股份有限公司 | Arp表管理方法、处理器核心、存储介质、电子设备 |
CN108366024A (zh) * | 2018-02-07 | 2018-08-03 | 迈普通信技术股份有限公司 | 报文转发方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2409379A (en) * | 2003-12-04 | 2005-06-22 | Samsung Electronics Co Ltd | Rebuilding an address resolution protocol (ARP) table after an access point (AP) restart |
CN1829190A (zh) * | 2005-03-01 | 2006-09-06 | 杭州华为三康技术有限公司 | 一种分布式arp实现方法 |
CN1874310A (zh) * | 2006-06-01 | 2006-12-06 | 杭州华为三康技术有限公司 | 分布式设备中地址解析协议数据同步的方法 |
CN101267435A (zh) * | 2008-04-17 | 2008-09-17 | 中兴通讯股份有限公司 | 一种地址解析协议实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100475436B1 (ko) * | 2003-01-02 | 2005-03-10 | 삼성전자주식회사 | 분산형 라우터 및 그 분산형 라우터의 에이알피 패킷 처리방법 |
-
2009
- 2009-11-27 CN CN200910199516.2A patent/CN102081603B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2409379A (en) * | 2003-12-04 | 2005-06-22 | Samsung Electronics Co Ltd | Rebuilding an address resolution protocol (ARP) table after an access point (AP) restart |
CN1829190A (zh) * | 2005-03-01 | 2006-09-06 | 杭州华为三康技术有限公司 | 一种分布式arp实现方法 |
CN1874310A (zh) * | 2006-06-01 | 2006-12-06 | 杭州华为三康技术有限公司 | 分布式设备中地址解析协议数据同步的方法 |
CN101267435A (zh) * | 2008-04-17 | 2008-09-17 | 中兴通讯股份有限公司 | 一种地址解析协议实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102081603A (zh) | 2011-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102081603B (zh) | 一种在多核环境下的arp查询优化的方法 | |
CN104537119B (zh) | 一种缓存数据的更新方法、数据使用端和系统 | |
US10592475B1 (en) | Consistent data storage in distributed computing systems | |
EP1940107A1 (en) | A method for processing data synchronization and client terminal, server and data synchronization system thereof | |
CN109379432A (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
WO2009007250A3 (en) | Concurrent directory update in a cluster file system | |
CN103209223A (zh) | 分布式应用会话信息共享方法、系统和应用服务器 | |
CN105426321A (zh) | 采用远程位置信息的rdma友好缓存方法 | |
CN107133285A (zh) | 一种分布式主键生成方法与装置 | |
EP3021533B1 (en) | Switching device, controller, and method and system for switching device configuration and packet processing | |
JP5271925B2 (ja) | キャッシュ情報の更新方法、コンピュータ、プログラムおよび記憶媒体 | |
CN108076081A (zh) | 一种业务数据的同步方法、装置和系统 | |
CN106657439B (zh) | 网络地址转换映射表的操作方法及装置 | |
US20190363941A1 (en) | Communication system, communication control method, and communication program | |
US9602615B2 (en) | Masterless cache replication | |
CN104702508A (zh) | 表项动态更新方法及系统 | |
CN102594874A (zh) | 一种同步处理方法和装置 | |
CN101335610B (zh) | 一种高端以太网交换机中的arp同步方法 | |
CN1874310A (zh) | 分布式设备中地址解析协议数据同步的方法 | |
CN101534480B (zh) | 基于移动软件代理的跨网络文件同步方法 | |
US11151082B1 (en) | File system operation cancellation | |
CN104821907B (zh) | 一种电子邮件处理方法 | |
CN116866429A (zh) | 一种数据访问方法及相关装置 | |
KR102275765B1 (ko) | 소프트웨어 정의 네트워크에서 플로우 룰 트랜잭션을 처리하는 방법, 장치 및 컴퓨터 프로그램 | |
CN108337299B (zh) | Nat信息同步方法和装置 |
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 |