发明名称 一种在多核环境下的ARP查询优化的方法
摘要 本发明公开了一种在多核环境下的ARP查询优化的方法。所述方法中每个核都维护有自己的私有ARP表,所有核共同维护全局ARP表;ARP查询时首先查询私有ARP表,在查询不成功的情况下再查询全局ARP表;若查询成功,则将该表项从全局ARP表中同步到自己的私有ARP表。该方法旨在加速路由器在多核环境下并发数据流转发过程中ARP查询效率。从而使用本地缓存方式来避免多个核并发访问共享数据带来的数据保护问题。
申请公布号 CN102081603B 申请公布日期 2015.06.03
申请号 CN200910199516.2 申请日期 2009.11.27
申请人 上海博达数据通信有限公司 发明人 汪革;彭双庭;芶利平;方昊;郑炳华
分类号 G06F17/30(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 上海天翔知识产权代理有限公司 31224 代理人 孙景宜
主权项 一种在多核环境下的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表中的所有表项,不分类型,全部进行老化操作。
地址 201203 上海市浦东新区张江高科技园区居里路123号