CN114866469B - 一种支持并行转发的多标识路由器架构实现方法及系统 - Google Patents
一种支持并行转发的多标识路由器架构实现方法及系统 Download PDFInfo
- Publication number
- CN114866469B CN114866469B CN202210807052.4A CN202210807052A CN114866469B CN 114866469 B CN114866469 B CN 114866469B CN 202210807052 A CN202210807052 A CN 202210807052A CN 114866469 B CN114866469 B CN 114866469B
- Authority
- CN
- China
- Prior art keywords
- packet
- forwarding
- interest
- data
- identifier
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/14—Routing performance; Theoretical aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- 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
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种支持并行转发的多标识路由器架构实现方法及系统,包括以下步骤:步骤S1,对多标识符路由器在输入阶段进行处理;步骤S2,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;步骤S3,通过拉式转发线程和推式转发线程在转发阶段进行通信;步骤S4,对所有将要转发的多标识网络分组进行汇总;步骤S5,对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出。本发明能够充分利用多处理器系统的资源,极大地提高多标识路由器的转发能力。
Description
技术领域
本发明涉及一种路由器架构,尤其涉及一种支持并行转发的多标识路由器架构实现方法,并涉及采用了该支持并行转发的多标识路由器架构实现方法的多标识路由器架构实现系统。
背景技术
目前的互联网架构创建于20世纪60年代和70年代,受限于硬件性能和资源,在当时计算机网络主要解决的问题是如何在主机之间共享稀缺的资源,所以采用端到端的推送式交互设计可以很好地契合当时的需求。在接下来的几十年间,随着集成电路的快速发展,网络设备的功能日益丰富,计算能力也日益强大,同时造价也越来越低,得益于硬件能力的增强,计算机网络也得到了快速发展。在过去的十年里,网络规模的快速增长带动了电子商务、数字媒体、社交网络等新兴应用的高速发展,内容分发成为了互联网的主要用途。互联网用户更关心的是内容本身,而不是如何以及从何处获得。由于目前的互联网体系结构设计与现有的用户需求不一致,使得研究人员在未来网络领域不断探索新的体系架构设计。
学术界针对以上问题,提出两种解决问题的技术路线:第一种采用“渐进改良”的思想,对现有的网络模型进行修订和扩充,并以此来适应新的网络需求,典型的就是通过IPv6来解决IPv4地址耗尽的问题;第二种采用“革命颠覆”的思想,对现有的网络体系结构进行重构,重新设计一种以信息内容为首位的网络架构,典型架构如信息中心网络(Information-Centric Networking,ICN),包括DONA和NDN等。
命名数据网络(Named Data Networking,NDN)提出于2010年,它的前身是内容中心网络(Content-Centric Networking,CCN)。其使用接收端驱动的拉取式通信语义来替换IP网络中发送端驱动的推送式通信语义。在NDN中,内容消费者(Consumer)通过向网络中发出兴趣包(Interest)来获取内容,任意缓存有对应内容的中间路由器或者内容生产者(Producer)收到Interest都会响应一个数据包(Data),每个Interest可以拉取一个Data,Interest和Data是一一对应的关系。NDN设计了待定兴趣表(Pending Interest Table,PIT)来支持有状态的转发平面,每个PIT条目记录了Interest是从哪个网络接口接收到的,Interest转发路径上的所有PIT条目记录构建出了一条反向路径,对应的Data只需要沿着PIT构建的反向路径原路返回即可。通过这种拉取式的交互,NDN实现了内容和生产者的解绑,可以更好地支持内容分发这一业务场景。为了保护内容的安全,NDN要求Producer对每个发出的Data进行签名,这使得消费者可以信任内容本身而不用关心内容是如何以及从何处获得的。但是由于NDN采用了颠覆式的架构设计,且只使用单一的通信语义,重新构建了一个难以扩展的网络层,因此无法很好地兼容现有的IP网络,也无法解决未来可能出现的新的通信需求。在新的通信需求出现时可能又需要对网络架构进行大刀阔斧的重构,甚至提出一种新的网络架构来进行替代。
为了解决上述NDN存在的问题,多标识网络(Multi-Identifier Network,MIN)应运而生。MIN网络提出于2019年,由北京大学深圳市信息论与未来网络重点实验室MIN小组提出并维护,其继承了IP网络和NDN网络中的优良设计,同时支持推拉两种通信语义以及对多种网络标识(Identifier)的解析和路由。在拉取式通信语义的基础上加入对推送式通信语义的支持,可以更好的兼容现有的IP网络,而且推拉两种通信语义共存可以给网络带来更多可操作性,用户可以根据不同的业务场景采用不同的通信语义,甚至可以在一个业务场景下使用推拉两种通信语义。MIN网络中的每一种网络标识都可以被赋予不同的通信语义,不同网络标识也可以采用相同的通信语义,比如身份标识和IP标识都采用类似IP的推送式通信语义。MIN支持通过新增标识,并给其赋予新的通信语义来扩展网络层,结合基于标识回退的标识扩展算法可以使得新的网络标识在旧的网络域中回退到旧标识进行转发。为了保护数据的安全,并提供数据溯源支持,MIN支持对所有类型的网络分组添加数字签名,路由器或者端侧节点可以对网络分组中的数字签名进行验证。
多标识路由器(Multi-Identifier Router,MIR)是MIN网络中路由节点的原型实现,承载着转发MIN网络流量的任务。由于MIR需要支持对MIN网络分组中的数字签名进行验证,而验证数字签名需要消耗较大的算力,因此MIR的最新实现采用部分并行的架构设计来提高路由器的吞吐量。MIR在接收端口使用线程池对收到的网络分组进行并行签名验证,验证通过的网络分组传递给后续的转发处理流程,核心的转发部分采用串行处理。MIR通过与转发表(Forwarding Information Base,FIB)、待定兴趣表(Pending Interest Table,PIT)、策略表(Strategy Table,ST)和内容缓存(Content Store,CS)等表结构进行交互,决定是否以及如何处理和转发网络分组。目前基于该部分并行设计实现的软件路由器原型的转发性能基本取决于运行转发处理线程的CPU核心的处理能力,在拥有96个Intel(R) Xeon(R) Gold5118 CPU @2.30 GHz的高性能服务器上测得的吞吐量在400Mbps ~ 600Mbps。虽然测试所用的服务器核心数较多,但是由于MIR的转发部分采用串行处理,无法充分利用系统的资源,所以转发性能受限。到目前为止,如何有效地利用多处理器系统的算力来实现高性能的MIN网络流量转发仍然是一个亟待解决的问题。此外,MIR目前的设计并没有加入对服务质量(Quality of Service,QoS)保障的支持,所以无法保障时延敏感业务的时延,也无法对管理控制信令进行优先处理,因此在网络状况较差的情况下可能导致网络控制管理信令被丢弃无法正常工作。
其中,一种现有技术中,Jun Wang等人提出的支持QoS的高性能IP路由器(High-performance Qos-capable IP Router,HPQR)是典型的通过并行架构设计来提升转发性能的第四代路由器设计方案。这种方案主要由以下五个组件组成:1、线卡(Line Cards,LCs):主要有两个功能,一个是从输入链路中接收数据包,另一个是将数据包发送到输出链路,为了适应高速链路,LC的处理速度应该非常快。2、路由代理(Routing Agents,RAs):执行并行路由表查找。3、控制代理(Control Agents,CAs):负责实现路由表计算以及QoS控制任务。4、高速交换结构(High Speed Switch Fabric,HSSF):用于LCs、RAs和CAs之间相互通信的数据结构,交换结构本身也可以是并行的,例如采用一些纵横式交换结构(crossbarswitch fabric)。5、总线(Bus):专门用于广播,例如在CAs和RAs之间传播路由更新。
每一个从LC接收到的IP包首先会被放到接收队列当中,接着由分类器执行区分服务分类以及其它策略的检查,然后通过分发算法决定由哪个RA处理并通过HSSF传递给该RA,RA通过查询路由表决定是丢弃还是转发,决定转发的IP包通过HSSF传递到指定LC的发送队列当中。
上述这种路由器的设计在大幅提升吞吐量的同时也会导致数据包乱序。为了解决该问题,HPRQ提出一种增强的基于散列的IP数据包分发算法(Enhanced Hash-based IPPacket Distribution Algorithm,EHDA),如图2所示的是EHDA算法的流程图,使用上述EHDA算法来对IP数据包进行分发。但由于IP网络中只支持端到端的推送式通信语义,因此上述方案欠缺对拉式通信语义的并行转发设计思考,并且上述方案的架构设计与多标识路由器的架构设计相去甚远,不能迁移到多标识路由器的并行转发设计当中。
另一种现有技术中,采用的是命名数据网络转发守护进程(Named DataNetworking Forwarding Daemon,NFD)是NDN网络中典型的转发器实现,NFD整体采用串行转发设计,这导致NFD的转发性能受限。Junxiao Shi等人在2020年提出NDN-DPDK,可以在商用硬件上最高达到100Gbps的吞吐量。这种NDN网络统称采用NDN-DPDK架构设计,DPDK指的是Data Plane Development Kit,这种NDN-DPDK可以在支持高吞吐量的同时维持ICN网络的特性。但是如果要将该方案用于MIN网络这种同时支持推拉两种通信语义的网络架构将存在以下不足:1、没有将推式通信纳入考虑范围,理由在于该方案本就设计给NDN使用,并不适用于MIN网络;2、NDN-DPDK中使用的两阶段最长前缀匹配查询算法(2-stage LPMlookup algorithm)不够高效;3、NDN-DPDK为了实现无锁的高速查找,在每个转发线程内部都维护了一个FIB的子表,包含部分FIB数据,虽然提高了查询速度,但是将存在较大的内存开销。
发明内容
本发明所要解决的技术问题是需要提供一种能够同时满足推拉两种通信语义的特性需求,充分利用多处理器系统的资源,极大地提高多标识路由器的转发能力的支持并行转发的多标识路由器架构实现方法。在此基础上,还进一步提供采用了该支持并行转发的多标识路由器架构实现方法的多标识路由器架构实现系统。
对此,本发明提供一种支持并行转发的多标识路由器架构实现方法,包括以下步骤:
步骤S1,对多标识符路由器在输入阶段进行处理;
步骤S2,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;
步骤S3,通过拉式转发线程和推式转发线程在转发阶段进行通信;
步骤S4,对所有将要转发的多标识网络分组进行汇总;
步骤S5,对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出。
本发明的进一步改进在于,步骤S1中包括以下子步骤:
步骤S101,通过传输器从底层的传输链路中接收字节数据并保存到输入缓存中;
步骤S102,通过所述传输器的解析器从输入缓存中读取字节数据,并解码出虚拟链路层包,然后传递给链路服务模块;
步骤S103,通过所述链路服务模块中的包重组器将输入的虚拟链路层包序列重组生成新的虚拟链路层包;
步骤S104,通过所述链路服务模块的解析器取出虚拟链路层包的负载,并在进行解码后传递给后续的预处理阶段进行处理。
本发明的进一步改进在于,所述步骤S2包括以下子步骤:
步骤S201,使用标识选择器在标识区内从前往后选出第一个PMIR支持转发的标识作为转发标识,然后根据该选出的标识来区分其类型,如果是兴趣包Interest和数据包Data,则放到拉式标识转发器的接收队列当中,并跳转至步骤S202;如果是通用推式包GPPkt则放到推式标识转发器的接收队列当中,并跳转至步骤S203;
步骤S202,所述拉式标识转发器内部从接收队列中取出兴趣包Interest和数据包Data,先使用并行包验证器执行并行签名验证,验证失败的直接丢弃,验证通过的则传递给拉式包分发器进行处理,所述拉式包分发器根据内部的分发算法将兴趣包Interest和数据包Data分配给拉式转发线程进行处理;
步骤S203,所述推式标识转发器内部从接收队列中取出通用推式包GPPkt,并根据通用推式包GPPkt的KeepInOrder字段判断是否需要保持有序,所述KeepInOrder字段为PMIR在通用推式包GPPkt的只读区新增的有序验证字段,如果通用推式包GPPkt的KeepInOrder字段为真,则将其传递给有序并行包验证器进行处理,否则传递给并行包验证器进行处理。
本发明的进一步改进在于,所述步骤S203中,传递给并行包验证器进行处理的过程包括以下步骤:
步骤A1,先判断是否开启签名验证,如果未开启签名验证,则直接触发验证成功回调;如果开启签名验证则跳转至步骤A2;
步骤A2,判断当前线程池中是否还有空闲线,如果没有则阻塞等待直至有可用的空闲线程,如果有则选出一个可用的空闲线程;
步骤A3,通过选出的空闲线程执行签名验证任务,验证成功则触发验证成功回调,验证失败则触发验证失败回调。
本发明的进一步改进在于,所述步骤S203中,传递给有序并行包验证器进行处理的过程包括以下步骤:
步骤B1,判断是否开启签名验证,如果未开启签名验证,则直接触发验证成功回调;如果开启签名验证则跳转至步骤B2;
步骤B2,判断当前线程池中是否还有空闲线,如果没有则阻塞等待直至有可用的空闲线程,如果有则给当前处理的通用推式包GPPkt分配一个序列号,所述序列号用于表示数据包的顺序;
步骤B3,选择选出一个空闲线程用于执行签名验证任务,并将签名验证的结果保存至上下文中;
步骤B4,将验证之后的包放进滑动窗口中;
步骤B5,照所述序列号从滑动窗口中顺序取出通用推式包GPPkt,依次从每一个通用推式包GPPkt对应的上下文判断签名验证是否成功,验证成功则触发验证成功回调,验证失败则触发验证失败回调。
本发明的进一步改进在于,所述步骤S202中通过拉式转发线程进行处理的过程包括以下步骤:
步骤C1,判断网络分组类型,如果是兴趣包Interest则跳转至步骤C2进行处理,如果是数据包Data则跳转至步骤C3进行处理;
步骤C2,取出兴趣包Interest的名字的前m个组件组成前缀,m表示可配置参数,并使用哈希xxh3[64]算法将所述前缀映射成一个64位整型值,接着取哈希结果的低16位对拉式转发线程的总数n取模,计算的结果为选中的线程标识i;
步骤C3,通过所述数据包Data的前向线程标识符FTIToken字段的值作为线程标识i;
步骤C4,将兴趣包Interest或数据包Data分发给第i个拉式转发线程进行处理。
本发明的进一步改进在于,所述步骤S3中通过拉式转发线程在转发阶段进行通信的过程包括以下子步骤:
步骤S301,从接收队列中取出一个MIN网络分组,并判断网络分组的类型,如果取出的是兴趣包Interest,则跳转至步骤S302;取出的是数据包Data,则跳转至步骤S306;
步骤S302,提取出兴趣包Interest的名字,然后根据精确匹配规则先查询CS表,所述CS表为内容缓存表,若存在匹配的数据包Data,则直接将该数据包Data从兴趣包Interest对应的LogicFace发出,所述LogicFace为兴趣包Interest到来的逻辑接口,否则跳转至步骤S303根据精确匹配规则查询PIT表,所述PIT表为待定兴趣表;
步骤S303,若所述PIT表中存在同名条目,则将接收到兴趣包Interest的传输器模块和链路服务模块添加到PIT条目当中,然后丢弃该兴趣包Interest,否则跳转至步骤S304根据最长前缀匹配规则查询ST表,所述ST表为策略表;
步骤S304,若存在匹配的ST表条目,则生效对应的转发策略,否则生效默认策略;
步骤S305,转发策略内部使用兴趣包Interest的名字查询拉式转发表,如果没有匹配的条目则直接丢弃,否则根据转发策略的定义选出一个或多个LogicFace,并将兴趣包Interest转发给所有选出的LogicFace;
步骤S306,提取出数据包Data的名字,然后根据精确匹配规则查询PIT表,若没有匹配的PIT条目则根据网络管理员的配置决定是缓存还是丢弃;若有匹配的PIT条目,则将数据包Data缓存到CS表当中,再跳转至步骤S307根据最长前缀匹配规则查询ST表;
步骤S307,若有匹配的ST条目,则生效对应的转发策略;若没有匹配的条目,则生效默认策略;
步骤S308,转发策略内部从PIT条目中选出一个或多个接收到对应兴趣包Interest的LogicFace,并将数据包Data转发给所有的选出的LogicFace。
本发明的进一步改进在于,所述步骤S3中通过推式转发线程在转发阶段进行通信的过程包括以下子步骤:
步骤S301’,从接收队列中取出一个通用推式包GPPkt并使用其目的身份标识查询ST表,所述ST表为策略表,若有匹配的ST条目,则生效对应的转发策略,若没有匹配的条目,则生效默认策略;
步骤S302’,转发策略内部使用通用推式包GPPkt的身份标识查询推式转发表,若没有匹配的条目则直接丢弃,如果有匹配的条目则根据转发策略的定义选出一个或多个LogicFace,并将通用推式包GPPkt转发给所有选出的LogicFace。
本发明的进一步改进在于,所述步骤S5包括以下子步骤:
步骤S501,通过链路服务模块依次从输出队列中取出最小包MINPacket,并通过编码器将最小包MINPacket编码成字节数组;
步骤S502,通过链路服务模块的包分片器判断编码出来的字节数组是否超过了底层通信链路的最大传输单元MTU,如果没有超过则直接构造一个虚拟链路层包LpPacket,并将编码的结果放到虚拟链路层包LpPacket的负载中,否则进行分片构造出若干个虚拟链路层包LpPacket,每个虚拟链路层包LpPacket的负载存放部分的数据,然后将虚拟链路层包LpPacket传递给传输器模块;
步骤S503,传输器模块的虚拟链路层包编码器将虚拟链路层包LpPacket编码成字节数组传递给输出缓存;
步骤S504,传输器模块通过底层的通信机制将输出缓存中的数据传送到链路上。
本发明还提供一种支持并行转发的多标识路由器架构实现系统,包括了如上所述的支持并行转发的多标识路由器架构实现方法,并包括:
输入阶段模块,用于对多标识符路由器在输入阶段进行处理;
预处理阶段模块,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;
转发阶段模块,通过拉式转发线程和推式转发线程在转发阶段进行通信;
后处理阶段模块,用于对所有将要转发的多标识网络分组进行汇总;
输出阶段模块,用于对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出。
与现有技术相比,本发明的有益效果在于:提出了一种支持并行转发的多标识路由器架构实现方法及系统,能够同时满足推拉两种通信语义的特性需求,针对拉式通信使用基于前缀的分发算法可以最大程度地保持有状态的转发平面,并支持逐前缀的转发策略;针对推式通信,本发明技术首先根据是否需要保持有序将推式流量划分为两类,不需要保持有序的流量采用随机分发算法指定一个转发线程进行处理,需要保持有序的流量基于只读区随机生成的标识包FlowId来进行分发。本发明整体技术方案可以充分利用多处理器系统的资源,极大地提高多标识路由器的转发能力,所需要的内存开销小。
附图说明
图1是本发明一种实施例的工作流程示意图;
图2是一种现有技术的EHDS算法流程图;
图3是本发明一种实施例的PMIR架构设计图;
图4是本发明一种实施例的虚拟链路层包LpPacket的分组格式示意图;
图5是本发明一种实施例的输入阶段处理流程示意图;
图6是本发明一种实施例的预处理阶段处理流程示意图;
图7是本发明一种实施例在网络分组新增KeepInOrder字段示意图;
图8是本发明一种实施例的并行包验证器内部处理流程图;
图9是本发明一种实施例的有序并行包验证器内部结构图;
图10是本发明一种实施例的有序并行包验证器内部处理流程图;
图11是本发明一种实施例的在兴趣包Interest和数据包Data中添加前向线程标识符FTIToken字段示意图;
图12是本发明一种实施例的拉式包分发器内部结构图;
图13是本发明一种实施例的拉式包分发器内部处理流程图;
图14是本发明一种实施例在网络分组添加FlowId字段示意图;
图15是本发明一种实施例的推式包分发器内部处理流程图;
图16是本发明一种实施例的拉式转发线程内部处理流程图;
图17是本发明一种实施例的推式转发线程内部处理流程图;
图18是本发明一种实施例在输出阶段的处理流程图。
具体实施方式
下面结合附图,对本发明的较优的实施例作进一步的详细说明。
传统相关研究表明不管在什么网络架构下,路由器的发展历程中必然经历硬件处理能力不足导致吞吐量难以满足高速网络需求的阶段。在此阶段提升路由器吞吐量的常用方法有两类:一类是通过优化数据结构和查找算法提升单位计算资源的处理效率;另一类是将并行性引入到路由器的架构设计当中,通过计算资源的叠加来提升路由器的整体吞吐量。目前MIN网络中典型的路由器实现MIR也面临吞吐量低下无法满足高速网络需求的问题。虽然MIR通过引入一定的并行性来提高签名验证的效率,但是核心转发部分仍然存在较大的优化空间。
本实施例旨在设计并实现一种支持并行转发的多标识路由器架构,支持并行转发的多标识路由器指的是Parallel Multi-Identifier Router,简称PMIR。在预处理阶段,使用三种分发算法将MIN网络分组分发给不同的转发线程,在转发阶段使用一组转发线程执行并行转发处理,在转发线程内部实现缓存、路由查找和转发决策等一系列的任务,以便能够充分利用多处理器系统的资源,提高路由器的转发能力。
本实施例提供的是如图3所示的PMIR的架构设计。一个MIN网络分组经由链路传输到达路由器的逻辑接口LogicFace,简称LogicFace;LogicFace内部完成对网络分组的解码和重组,然后将重组完成的MIN网络分组传递给标识选择器,即传递给标识选择器;标识选择器选出可用于转发的标识,并交给对应的标识转发器处理,即交给对应的标识转发器Identifier Forwarder处理;接着标识转发器会完成对网络分组的签名验证并通过包分发器将网络分组分发给某个特定的转发线程处理,包分发器为Packet Dispatcher,转发线程为Forwarding Thread;包分发器内部使用随机分发算法或者基于前缀/流ID的分发算法来将MIN网络分组分发给对应的转发线程;转发线程内部通过与各种表结构交互,最终通过转发策略决定是否以及从哪个LogicFace将MIN网络分组转发出去;最后由出口LogicFace将MIN网络分组进行分片和编码,然后注入到底层传输链路当中。
下面将根据多标识路由器对MIN网络分组处理的五个阶段对本实施例的整体技术进行详细的介绍,如图1所示,本实施例提供一种支持并行转发的多标识路由器架构实现方法,包括以下步骤:
步骤S1,对多标识符路由器在输入阶段进行处理;
步骤S2,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;
步骤S3,通过拉式转发线程和推式转发线程在转发阶段进行通信;
步骤S4,对所有将要转发的多标识网络分组进行汇总;
步骤S5,对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出。
本实施例所述步骤S1用于实现的是输入阶段,PMIR的输入阶段与MIR的设计一致,都发生在LogicFace的内部。LogicFace由传输器模块和链路服务模块两个部分组成,传输器指的是Transport,链路服务指的是Link Service,传输器模块主要用于搭建路由器之间的通信链路,实现底层的通信逻辑;链路服务模块主要完成网络分组的分片和重组,分片指的是fragmentation,重组指的是reassembly,给上层提供统一的收发包接口,屏蔽底层通信通道的差异性。
根据MIN网络分组的格式定义,理论上一个MIN网络分组是可以无限大的,但是出于实际链路的MTU考虑,MTU指的是Maximum Transmission Unit,即最大传输单元,目前PMIR给MIN网络分组的大小设置了一个上限值8800字节,超过8800字节的MIN网络分组将编码失败拒绝传输。这是由于目前常见网卡的MTU最大为9000,所以在纯MIN场景下预留了200字节用于放置MIN的虚拟链路层头部以及以太网包头部。虽然8800的上限值可以保证在纯MIN场景下,所有网卡的MTU都设置为9000时不需要分片,每个MIN网络分组都可以使用一个单独的以太网分组携带传输,但是实际部署过程中无法要求所有网卡的MTU设置为9000,且MIN底层还支持其它类型的通信链路,MTU的值没有办法确保一定大于某个值。因此PMIR设计了一个虚拟链路层包,虚拟链路层包也称LpPacke;目前主要用于实现对MIN网络分组的分片、重组以及故障检测,如图4展示的是虚拟链路层包的格式定义:虚拟链路层包由虚拟链路层包头和负载两个字段组成,虚拟链路层包头中包含三个用于实现包分片和包重组的字段,表示的是虚拟链路层包的包头,负载部分携带一个完整的MIN网络分组或者是一个MIN网络分组的分片。分片ID字段存储一个单调递增的整型值,用于标识属于哪个包的分片;分片数量字段指示了总共有几个分片;分片号指示了当前是第几个分片。
传输器底层要传输的实际数据并不是MIN网络分组,而是LpPacket,即便一个MIN网络分组足够小,不需要分片,也会被封装进一个LpPacket中进行传输。传输器定义了两个用于传输的通用接口:Send接口用于将LpPacket发送到底层链路当中;Receive接口用于从底层通信链路中接收LpPacket。路由器的开发者可以通过实现不同类型的传输器来兼容不同类型的通信链路。目前PMIR已经定义了五种类型的传输器,分别是:InnerTransport、UnixTransport、EthernetTransport、TCPTransport和UDPTransport。InnerTransport底层采用go channel进行通信,主要用于PMIR内部各个模块之间进行通信;UnixTransport底层使用Unix套接字进行通信,与PMIR部署在同一个机器上的本地应用可以通过这种通信方式接入,不需要经过系统自带的网络协议栈,所以是本地最快的接入方式;TCPTransport底层使用TCP套接字进行通信,主要供远程主机通过TCP隧道的方式穿越IP网络接入到PMIR当中;UDPTransport底层使用UDP套接字进行通信,主要供远程主机通过UDP隧道的方式穿越IP网络接入到PMIR当中;EthernetTransport底层直接使用以太网链路进行通信,通过libpcap与物理网卡交互来进行收发网络分组,主要用于实现两个PMIR之间的纯MIN通信,此处纯MIN通信特指直接使用以太网分组携带MIN网络分组进行传输,完全不依赖IP网络协议栈。
如图5所示,本实施例所示的是所述步骤S1中PMIR的逻辑接口在输入阶段处理流程示意图,具体包括以下子步骤:
步骤S101,通过逻辑接口的传输器模块从底层的传输链路中接收字节数据并保存到输入缓存(Input Buffer)中;
步骤S102,通过所述传输器模块的解析器从输入缓存中读取字节数据,并解码出虚拟链路层包,然后传递给链路服务模块;这里所述的解析器指的是LpPacket解析器,即LpPacket Decoder或虚拟链路层包解析器;
步骤S103,通过所述链路服务模块中的包重组器(Packet Reassembler)将输入的虚拟链路层包序列(LpPacket序列)重组生成新的虚拟链路层包;该虚拟链路层包指的是一个个包含完整MINPacket的虚拟链路层包,MINPacket指的是最小包,也称MIN包;
步骤S104,通过所述链路服务模块的解析器取出虚拟链路层包的负载,并在进行解码后传递给后续的预处理阶段进行处理;这里所述的解析器指的是MINPacket Decoder,即最小包解析器,解码后得到最小包MINPacket。
本实施例所述步骤S2用于实现预处理阶段。预处理阶段特指MIN网络分组被LogicFace接收到其被转发线程处理之前的一个阶段,通常在此阶段完成标识的选择以及对属于不同类型的网络分组做一些统一的处理,包括且不限于:数字签名验证、静态数据统计等。
在MIR中,预处理阶段首先使用包验证其来对所有流经的MIN网络分组进行数字签名验证,验证失败则丢弃,验证成功则使用标识选择器选出用于转发的标识并根据所选出的标识区分不同类型的网络分组,接着传递给转发线程处理即可。由于MIR只有一个转发线程,所以不需要分发算法来决定应该由哪个转发线程处理。MIR目前的设计存在一个明显的问题,就是并行签名验证导致的数据包乱序问题。因为包验证器是通过开启一个线程池来执行并行签名验证的,所以会导致数据包乱序,即包验证器输出的MIN网络分组的顺序和输入的顺序不一致,这个对拉取式通信影响较小,但是在推送式场景下实现类似TCP的传输层可靠传输协议时会受到较大的影响。因为TCP的设计中数据包乱序会造成冗余ACK增多,进而造成发送窗口下降,吞吐量降低。此外任何需要依赖网络分组到达顺序的协议和应用都会受到一定的影响。
为了解决上述MIR中存在的问题,并且更好的与后续转发阶段的并行设计衔接,PMIR在预处理阶段提出了以下改进:
1、首先,将推拉两种类型的网络分组的签名验证分开,这样可以分别对两种类型的网络分组设置是否进行签名验证,同时可以对属于不同语义的网络分组在签名验证时做一些差异化的处理。
2、其次,PMIR提供两种类型的包验证器:并行包验证器(Parallel PacketValidator)单纯执行并行签名验证,不保输出的MIN网络分组有序;有序并行包验证器(Ordered Parallel Packet Validator)执行并行签名验证的同时还保证输出的MIN网络分组有序。
3、最后,PMIR为推拉两种类型的网络分组各自实现了一个包分发器,运行分发算法决定应该由哪个转发线程处理。
如图6所示,本实施例所述步骤S2包括以下子步骤:
步骤S201,对于每个接收到的MIN网络分组,先使用标识选择器在标识区内从前往后选出第一个PMIR支持转发的标识作为转发标识,即在标识区内从前往后选出第一个PMIR支持转发的标识作为转发标识,然后根据该选出的标识来区分其类型,如果是兴趣包Interest和数据包Data,则放到拉式标识转发器(Pull Identifier Forwarder)的接收队列当中,并跳转至步骤S202;如果是通用推式包GPPkt则放到推式标识转发器(PushIdentifier Forwarder)的接收队列当中,并跳转至步骤S203;
步骤S202,所述拉式标识转发器内部从接收队列中取出一个个的兴趣包Interest和数据包Data,先使用并行包验证器执行并行签名验证,验证失败的直接丢弃,验证通过的则传递给拉式包分发器(Pull Packet Dispatcher)进行处理,所述拉式包分发器根据内部的分发算法将兴趣包Interest和数据包Data分配给拉式转发线程(Pull ForwardingThread)进行处理;
步骤S203,所述推式标识转发器内部从接收队列中取出一个个的通用推式包GPPkt,本实施例所述通用推式包GPPkt简称GPPkt,并根据通用推式包GPPkt的KeepInOrder字段判断是否需要保持有序,如图7所示,所述KeepInOrder字段为PMIR在通用推式包GPPkt的只读区新增的有序验证字段,如果通用推式包的KeepInOrder字段为真,则将其传递给有序并行包验证器进行处理,否则传递给并行包验证器进行处理。两种类型的包验证器都会校验通用推式包中的数字签名是否合法,验证失败则丢弃,验证成功则传递给推式包分发器(Push Packet Dispatcher)处理。推式包分发器根据内部的分发算法将通用推式包分发给某个推式转发线程(Push Forwarding Thread)处理。
本实施例已经介绍了预处理阶段的交互流程,下面将对并行包验证器、有序并行包验证器、拉式包分发器和推式包分发器展开进行介绍。其中,并行包验证器的设计较为简单,内部包含一个线程池,可以把单个网络分组的签名验证过程视作一个任务(Task),每次从线程池中取出一个空闲线程处理一个签名验证任务。如图8所示的是并行包验证器内部处理的流程图。
本实施例所述步骤S203中,传递给并行包验证器进行处理的过程包括以下步骤:
步骤A1,先判断是否开启签名验证,如果未开启签名验证,则直接触发验证成功回调;如果开启签名验证则跳转至步骤A2;在实际应用中,网络管理员可以在PMIR的配置文件中指定是否要开启签名验证;
步骤A2,判断当前线程池中是否还有空闲线(idle thread),如果没有则阻塞等待直至有可用的空闲线程,如果有则选出一个可用的空闲线程;
步骤A3,通过选出的空闲线程执行签名验证任务,验证成功则触发验证成功回调,验证失败则触发验证失败回调。
有序并行包验证器在并行验证器的基础上加入了数据包顺序保持处理,既能实现并行签名验证,又能保证输入的顺序和输出的顺序一致,不过由于需要额外保证数据包有序,其处理能力会有所下降。如图9所示的是有序并行包验证器的内部结构图:有序并行包验证器使用一个线程池执行并行签名验证,接着传递给滑动窗口(Sliding Window)模块进行顺序整理,最后通过验证成功过滤器(Verify Success Filter)从有序的GPPkt序列中过滤出签名验证通过的包作为输出。
如图10所示,本实施例所述步骤S203中,传递给有序并行包验证器进行处理的过程包括以下步骤:
步骤B1,判断是否开启签名验证,如果未开启签名验证,则直接触发验证成功回调;如果开启签名验证则跳转至步骤B2;
步骤B2,判断当前线程池中是否还有空闲线,如果没有则阻塞等待直至有可用的空闲线程,如果有则给当前处理的通用推式包GPPkt分配一个序列号,所述序列号用于表示数据包的顺序;
步骤B3,选择选出一个空闲线程用于执行签名验证任务,即执行验证通用推式包GPPkt的数字签名,并将签名验证的结果保存至上下文中;PMIR中每个包在整个处理的生命周期内都会有一个上下文对象,用于在模块间共享数据,签名验证的结果保存至该上下文对象中,简称保存至上下文中;
步骤B4,将验证之后的通用推式包GPPkt插入至滑动窗口模块中;值得说明的是,由于序列号是在验证之前分配的,为了保证滑动窗口模块能够按序输出,验证失败的通用推式包GPPkt也需要插入;
步骤B5,按照所述序列号从滑动窗口中顺序取出一个个的通用推式包GPPkt,依次从每一个通用推式包GPPkt对应的上下文判断签名验证是否成功,验证成功的通用推式包GPPkt则触发验证成功回调,验证失败的通用推式包GPPkt则触发验证失败回调。
推式包分发器主要用于将Interest/Data分配给某个拉式转发线程处理。由于PMIR出于并行优化目的将PIT表分散在每个转发线程内部实现,因此每个转发线程都有自己单独维护的PIT表,这种设计可以加快PIT的查询速度,其原因是因为PIT是一个增删改查都频繁的数据结构,如果所有转发线程并发的对一个PIT进行操作会有较大的并发访问开销。又因为在拉取式通信中Data是沿着Interest转发时在PIT中记录的反向路径原路返回的,所以Interest对应的Data需要由同一个转发线程处理。为此本实施例在Interest和Data的可变危险区中添加一个FTIToken(Forward Thread Id Token)字段,即FTIToken表示的是前向线程标识符,FTIToken字段表示的是前向线程标识符字段,如图11所示,记录了Interest流经当前路由器时,是由哪个转发线程处理的,这是一个逐跳设置的字段,Data在逐跳返回时,需要将Interest中的对应字段回显,这样中间路由器在接收到一个Data时,可以根据其携带的FTIToken决定使用哪个转发线程转发。其中,本例所述兴趣包Interest可简称为Interest,所述数据包Data可简称为Data。
如图12所示的是拉式包分发器的内部结构图:对于收到的Interest,根据名字计算出一个线程id,然后将其分发给对应转发线程处理,转发线程内部需要将Interest中原有的FTIToken值保存到对应的PIT条目中,然后将当前转发线程的ID保存到Interest的FTIToken中;对于收到的Data,直接取出其FTIToken字段值作为选中的线程id,然后分发给对应的线程处理即可,转发线程内部需要将PIT条目中存储的FTIToken替换掉Data中的对应字段。PIT指的是Pending Interest Table,即待定兴趣表。
如图13所示,本实施例 所述步骤S202中通过拉式转发线程进行处理的过程包括以下步骤:
步骤C1,判断网络分组类型,如果是兴趣包Interest则跳转至步骤C2进行处理,如果是数据包Data则跳转至步骤C3进行处理;
步骤C2,取出兴趣包Interest的名字的前m个组件组成前缀,m表示可配置参数,并使用哈希xxh3[64]算法将所述前缀映射成一个64位整型值,接着取哈希结果的低16位对拉式转发线程的总数n取模,计算的结果为选中的线程标识i;
步骤C3,通过所述数据包Data的前向线程标识符FTIToken字段的值作为线程标识i;
步骤C4,将兴趣包Interest或数据包Data分发给第i个拉式转发线程进行处理。
推式包分发器主要用于将GPPkt分配给某个推式转发线程处理。本实施例上面提到数据包乱序会影响部分推式通信场景下的传输性能,因此PMIR通过设计有序并行包验证器来解决并行签名阶段的数据包乱序问题。在转发阶段由于PMIR使用了多个推式转发线程执行并行转发,所以该阶段也会造成数据包乱序,为了解决该问题,PMIR要求推式包分发器在分发网络分组时将单个方向属于同一个数据流且需要保持有序的所有GPPkt都传递给同一个转发线程处理,例如:A和B使用TCP协议来通信,要求所有A发给B的包都由同一个转发线程处理,所有B发给A的包都由同一个转发线程处理,但是不要求两个方向的包都由同一个转发线程处理。因为在路由器层面解码网络层之上的业务字段会引入一些臃肿的侵入性设计,同时增大路由器的解码开销,所以PMIR目前只对网络层的字段进行解码,并不关心上层业务的细节。
为了能够在网络层区分属于不同推式流的包,本实施例PMIR在GPPkt的只读区中引入了一个新的FlowId字段,如图14所示,所述FlowId 字段为只读区随机生成的标识包,即该FlowId字段是一个可变长整型,该值由端侧随机生成,PMIR可以粗略的将FlowId相同的通用推式包认定为属于同一个流的包,分配给同一个转发线程处理即可。
如图15所示的是推式包分发器内部处理的流程图,具体包括以下步骤:
步骤D1,先提取出通用推式包的KeepInOrder字段,判断是否需要有序处理,若是则跳转至步骤D3,若否则跳转至步骤D2;通用推式包也称GPPkt;
步骤D2,如果不需要有序处理,则直接使用随机算法从[0, n)中选出一个线程标识i;
步骤D3,如果需要有序处理则提取出通用推式包的FlowId 字段,使用xxh3算法进行hash处理,然后使用低16位对推式转发线程的总数n取模,得到选中的线程标识i;
步骤D4,最后将通用推式包分发给第i个推式转发线程处理即可。
本实施例步骤S3用于实现转发阶段。其中,标识转发器(Identifier Forwarders)是PMIR中对网络标识进行处理的组件集合,PMIR启动时会为每一个受支持的网络标识注册一个标识转发器,每种类型的标识转发器封装了特定通信范式的处理逻辑。目前PMIR定义了拉式标识转发器(Pull Identifier Forwarder)和推式标识转发器(Push IdentifierForwarder)两种转发器。拉式标识转发器用于处理内容标识(Content Identifier),Interest和Data就是采用内容标识来进行通信;推式标识转发器用于处理身份标识(Identity Identifier),GPPkt就是使用身份标识来进行通信。
拉式标识转发器由一个并行包验证器、一个拉式包分发器和m个拉式转发线程组成,此处m为拉式转发线程的个数,推式标识转发器由一个并行包验证器、一个有序并行包验证器、一个推式包分发器和n’个推式转发线程组成,此处n’为推式转发线程的个数。PMIR的转发阶段就发生在拉式转发线程和推式转发线程内部,下面将对两种类型的转发线程内部的处理流程进行详细的介绍。
如图16所示的是拉式转发线程的内部处理流程图,本实施例所述步骤S3中通过拉式转发线程在转发阶段进行通信的过程包括以下子步骤:
步骤S301,从接收队列中取出一个MIN网络分组,并判断网络分组的类型,如果取出的是兴趣包Interest,则跳转至步骤S302;取出的是数据包Data,则跳转至步骤S306;
步骤S302,提取出兴趣包Interest的名字,然后根据精确匹配规则先查询CS表,所述CS表为内容缓存表,若存在匹配的数据包Data,则直接将该数据包Data从兴趣包Interest对应的LogicFace发出,所述LogicFace为兴趣包Interest到来的逻辑接口,否则跳转至步骤S303根据精确匹配规则查询PIT表,所述PIT表为待定兴趣表;
步骤S303,若所述PIT表中存在同名条目,则将接收到兴趣包Interest的传输器模块和链路服务模块添加到PIT条目当中,然后丢弃该兴趣包Interest,否则跳转至步骤S304根据最长前缀匹配规则查询ST表,所述ST表为策略表;
步骤S304,若存在匹配的ST表条目,则生效对应的转发策略,否则生效默认策略;
步骤S305,转发策略内部使用兴趣包Interest的名字查询拉式转发表,如果没有匹配的条目则直接丢弃,否则根据转发策略的定义选出一个或多个LogicFace,不同的转发策略可能会选出不同的LogicFace,例如最佳路由策略会选出其中开销最小的下一跳,而广播策略则会选出所有可用的下一跳,并将兴趣包Interest转发给所有选出的LogicFace;
步骤S306,提取出数据包Data的名字,然后根据精确匹配规则查询PIT表,若没有匹配的PIT条目则表示收到的Data是一个未经请求的(Unsolicited)Data,此时根据网络管理员的配置决定是缓存还是丢弃;若有匹配的PIT条目,则将数据包Data缓存到CS表当中,再跳转至步骤S307根据最长前缀匹配规则查询ST表;
步骤S307,若有匹配的ST条目,则生效对应的转发策略;若没有匹配的条目,则生效默认策略;
步骤S308,转发策略内部从PIT条目中选出一个或多个接收到对应兴趣包Interest的LogicFace,通常的策略实现都会选择往所有兴趣包Interest到来的LogicFace都转发一个数据包Data的拷贝,并将数据包Data转发给所有的选出的LogicFace。
如图17所示的是推式转发线程的内部处理流程图,本实施例所述步骤S3中通过推式转发线程在转发阶段进行通信的过程包括以下子步骤:
步骤S301’,从接收队列中取出一个通用推式包GPPkt并使用其目的身份标识(Destination Identity Identifier,dii)查询ST表,所述ST表为策略表,若有匹配的ST条目,则生效对应的转发策略,若没有匹配的条目,则生效默认策略;ST表示的是StrategyTable;
步骤S302’,转发策略内部使用通用推式包GPPkt的身份标识(DestinationIdentity Identifier,dii)查询推式转发表(Push FIB),若没有匹配的条目则直接丢弃,如果有匹配的条目则根据转发策略的定义选出一个或多个LogicFace,并将通用推式包GPPkt转发给所有选出的LogicFace。
本实施例所述步骤S4用于实现后处理阶段,所述后处理阶段特指MIN网络分组经由转发阶段处理决定转发后,且在传递给LogicFace输出之前的阶段。此阶段对所有将要转发的MIN网络分组进行汇总,便于实现统一的后处理。因为输出阶段发生在LogicFace内部,而LogicFace之间的处理是相互独立的,所以想要实现统一的后处理只能在此阶段进行。目前PMIR只在后处理阶段添加了MIN网络分组的静态统计,后续也可以在此阶段扩展更多的功能。
本实施例所述步骤S5 用于实现输出阶段。PMIR的输出阶段发生也在LogicFace内部,主要的任务是对MIN网络分组进行必要地分片和打包,并通过底层的通信链路传出。
如图18所示的是PMIR的LogicFace在输出阶段的处理流程示意图。本实施例所述步骤S5包括以下子步骤:
步骤S501,首先LogicFace通过链路服务模块依次从输出队列中取出一个个的最小包MINPacket,并通过编码器将最小包MINPacket编码成字节数组;这里的编码器指的是最小包编码器,即MINPacket编码器或MINPacket Encoder;
步骤S502,通过链路服务模块的包分片器(Packet Segmenter)判断编码出来的字节数组是否超过了底层通信链路的最大传输单元MTU,该最大传输单元MTU的值可以从Transport中获得,如果没有超过则直接构造一个虚拟链路层包LpPacket,并将编码的结果放到虚拟链路层包LpPacket的负载中,否则进行分片构造出若干个虚拟链路层包LpPacket,每个虚拟链路层包LpPacket的负载存放部分的数据,然后将虚拟链路层包LpPacket传递给传输器模块;
步骤S503,传输器模块的虚拟链路层包编码器(LpPacket Encoder)将虚拟链路层包LpPacket编码成字节数组传递给输出缓存(Output Buffer);
步骤S504,传输器模块通过底层的通信机制将输出缓存中的数据传送到链路上,包括且不限于网卡、TCP隧道、UDP隧道和Unix隧道等。
因此,本实施例提供的是一种推拉一体的并行转发架构的技术方案,依托MIN网络对推拉通信语义的支持,可以在推拉语义并存的场景下实现高性能并行转发处理,本实施例的设计思想同样适用于任意同时支持推拉两种通信语义的网络架构。
本实施例通过对每种标识进行分流处理,可以对逻辑无关的多种通信流进行隔离,实现多种标识之间的并行的转发处理,并且在新的标识和通信语义加入时,可以复用现有的转发器,也可以通过新增标识转发器进行简单扩展。
在此基础上,本实施例针对拉式通信,提出使用多个拉式转发线程来实现并行的转发处理,并设计了一个基于标识前缀的分发算法,保障具有相同前缀的网络分组由同一个转发线程处理,同时使用字段回显的设计让兴趣包Interest对应的数据包Data不需要散列计算也能被正确的分发给同一个转发线程处理,在提升拉式转发吞吐量的同时极大的保留了拉式通信语义的特性。针对推式通信,提出对是否需要保持有序的推式通信流进行区分处理,对于不需要保持有序的流直接应用随机分发算法分发给任意的转发线程处理即可,可以最大程度的提高转发的吞吐量;对于需要保持有序的流使用基于FlowId的分发算法,可以保障FlowId相同的网络分组不乱序,在保持有序和提高吞吐量之间做了一个很好的折中。
本实施例还提供一种支持并行转发的多标识路由器架构实现系统,包括了如上所述的支持并行转发的多标识路由器架构实现方法,并包括:
输入阶段模块,用于对多标识符路由器在输入阶段进行处理;
预处理阶段模块,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;
转发阶段模块,通过拉式转发线程和推式转发线程在转发阶段进行通信;
后处理阶段模块,用于对所有将要转发的多标识网络分组进行汇总;
输出阶段模块,用于对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出。
综上所述,本实施例提出了一种支持并行转发的多标识路由器架构实现方法及系统,能够同时满足推拉两种通信语义的特性需求,针对拉式通信使用基于前缀的分发算法可以最大程度地保持有状态的转发平面,并支持逐前缀的转发策略;针对推式通信,本发明技术首先根据是否需要保持有序将推式流量划分为两类,不需要保持有序的流量采用随机分发算法指定一个转发线程进行处理,需要保持有序的流量基于只读区随机生成的标识包FlowId来进行分发。本实施例整体技术方案能够充分利用多处理器系统的资源,极大地提高多标识路由器的转发能力,所需要的内存开销小。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (8)
1.一种支持并行转发的多标识路由器架构实现方法,其特征在于,包括以下步骤:
步骤S1,对多标识符路由器在输入阶段进行处理;
步骤S2,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;
步骤S3,通过拉式转发线程和推式转发线程在转发阶段进行通信;
步骤S4,对所有将要转发的多标识网络分组进行汇总;
步骤S5,对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出;
所述步骤S2包括以下子步骤:
步骤S201,使用标识选择器在标识区内从前往后选出第一个PMIR支持转发的标识作为转发标识,然后根据该选出的标识来区分其类型,如果是兴趣包Interest和数据包Data,则放到拉式标识转发器的接收队列当中,并跳转至步骤S202;如果是通用推式包GPPkt,则放到推式标识转发器的接收队列当中,并跳转至步骤S203;
步骤S202,所述拉式标识转发器内部从接收队列中取出兴趣包Interest和数据包Data,先使用并行包验证器执行并行签名验证,验证失败的直接丢弃,验证通过的则传递给拉式包分发器进行处理,所述拉式包分发器根据内部的分发算法将兴趣包Interest和数据包Data分配给拉式转发线程进行处理;
步骤S203,所述推式标识转发器内部从接收队列中取出通用推式包GPPkt,并根据通用推式包GPPkt的KeepInOrder字段判断是否需要保持有序,所述KeepInOrder字段为PMIR在通用推式包GPPkt的只读区新增的有序验证字段,如果通用推式包GPPkt的KeepInOrder字段为真,则将其传递给有序并行包验证器进行处理,否则传递给并行包验证器进行处理;
所述步骤S202中通过拉式转发线程进行处理的过程包括以下步骤:
步骤C1,判断网络分组类型,如果是兴趣包Interest则跳转至步骤C2进行处理,如果是数据包Data则跳转至步骤C3进行处理;
步骤C2,取出兴趣包Interest的名字的前m个组件组成前缀,m表示可配置参数,并使用哈希xxh3[64]算法将所述前缀映射成一个64位整型值,接着取哈希结果的低16位对拉式转发线程的总数n取模,计算的结果为选中的线程标识i;
步骤C3,通过所述数据包Data的前向线程标识符FTIToken字段的值作为线程标识i;
步骤C4,将兴趣包Interest或数据包Data分发给第i个拉式转发线程进行处理。
2.根据权利要求1所述的支持并行转发的多标识路由器架构实现方法,其特征在于,步骤S1中包括以下子步骤:
步骤S101,通过传输器从底层的传输链路中接收字节数据并保存到输入缓存中;
步骤S102,通过所述传输器的解析器从输入缓存中读取字节数据,并解码出虚拟链路层包,然后传递给链路服务模块;
步骤S103,通过所述链路服务模块中的包重组器将输入的虚拟链路层包序列重组生成新的虚拟链路层包;
步骤S104,通过所述链路服务模块的解析器取出虚拟链路层包的负载,并在进行解码后传递给后续的预处理阶段进行处理。
3.根据权利要求1或2所述的支持并行转发的多标识路由器架构实现方法,其特征在于,所述步骤S203中,传递给并行包验证器进行处理的过程包括以下步骤:
步骤A1,先判断是否开启签名验证,如果未开启签名验证,则直接触发验证成功回调;如果开启签名验证则跳转至步骤A2;
步骤A2,判断当前线程池中是否还有空闲线程 ,如果没有则阻塞等待直至有可用的空闲线程,如果有则选出一个可用的空闲线程;
步骤A3,通过选出的空闲线程执行签名验证任务,验证成功则触发验证成功回调,验证失败则触发验证失败回调。
4.根据权利要求1或2所述的支持并行转发的多标识路由器架构实现方法,其特征在于,所述步骤S203中,传递给有序并行包验证器进行处理的过程包括以下步骤:
步骤B1,判断是否开启签名验证,如果未开启签名验证,则直接触发验证成功回调;如果开启签名验证则跳转至步骤B2;
步骤B2,判断当前线程池中是否还有空闲线程 ,如果没有则阻塞等待直至有可用的空闲线程,如果有则给当前处理的通用推式包GPPkt分配一个序列号,所述序列号用于表示数据包的顺序;
步骤B3,选择选出一个空闲线程用于执行签名验证任务,并将签名验证的结果保存至上下文中;
步骤B4,将验证之后的包放进滑动窗口中;
步骤B5,按照所述序列号从滑动窗口中顺序取出通用推式包GPPkt,依次从每一个通用推式包GPPkt对应的上下文判断签名验证是否成功,验证成功则触发验证成功回调,验证失败则触发验证失败回调。
5.根据权利要求1或2所述的支持并行转发的多标识路由器架构实现方法,其特征在于,所述步骤S3中通过拉式转发线程在转发阶段进行通信的过程包括以下子步骤:
步骤S301,从接收队列中取出一个MIN网络分组,并判断网络分组的类型,如果取出的是兴趣包Interest,则跳转至步骤S302;取出的是数据包Data,则跳转至步骤S306;
步骤S302,提取出兴趣包Interest的名字,然后根据精确匹配规则先查询CS表,所述CS表为内容缓存表,若存在匹配的数据包Data,则直接将该数据包Data从兴趣包Interest对应的LogicFace发出,所述LogicFace为兴趣包Interest到来的逻辑接口,否则跳转至步骤S303根据精确匹配规则查询PIT表,所述PIT表为待定兴趣表;
步骤S303,若所述PIT表中存在同名条目,则将接收到兴趣包Interest的传输器模块和链路服务模块添加到PIT条目当中,然后丢弃该兴趣包Interest,否则跳转至步骤S304根据最长前缀匹配规则查询ST表,所述ST表为策略表;
步骤S304,若存在匹配的ST表条目,则生效对应的转发策略,否则生效默认策略;
步骤S305,转发策略内部使用兴趣包Interest的名字查询拉式转发表,如果没有匹配的条目则直接丢弃,否则根据转发策略的定义选出一个或多个LogicFace,并将兴趣包Interest转发给所有选出的LogicFace;
步骤S306,提取出数据包Data的名字,然后根据精确匹配规则查询PIT表,若没有匹配的PIT条目则根据网络管理员的配置决定是缓存还是丢弃;若有匹配的PIT条目,则将数据包Data缓存到CS表当中,再跳转至步骤S307根据最长前缀匹配规则查询ST表;
步骤S307,若有匹配的ST条目,则生效对应的转发策略;若没有匹配的条目,则生效默认策略;
步骤S308,转发策略内部从PIT条目中选出一个或多个接收到对应兴趣包Interest的LogicFace,并将数据包Data转发给所有的选出的LogicFace。
6.根据权利要求1或2所述的支持并行转发的多标识路由器架构实现方法,其特征在于,所述步骤S3中通过推式转发线程在转发阶段进行通信的过程包括以下子步骤:
步骤S301’,从接收队列中取出一个通用推式包GPPkt并使用其目的身份标识查询ST表,所述ST表为策略表,若有匹配的ST条目,则生效对应的转发策略,若没有匹配的条目,则生效默认策略;
步骤S302’,转发策略内部使用通用推式包GPPkt的身份标识查询推式转发表,若没有匹配的条目则直接丢弃,如果有匹配的条目则根据转发策略的定义选出一个或多个LogicFace,并将通用推式包GPPkt转发给所有选出的LogicFace。
7.根据权利要求1或2所述的支持并行转发的多标识路由器架构实现方法,其特征在于,所述步骤S5包括以下子步骤:
步骤S501,通过链路服务模块依次从输出队列中取出最小包MINPacket,并通过编码器将最小包MINPacket编码成字节数组;
步骤S502,通过链路服务模块的包分片器判断编码出来的字节数组是否超过了底层通信链路的最大传输单元MTU,如果没有超过则直接构造一个虚拟链路层包LpPacket,并将编码的结果放到虚拟链路层包LpPacket的负载中,否则进行分片构造出若干个虚拟链路层包LpPacket,每个虚拟链路层包LpPacket的负载存放部分的数据,然后将虚拟链路层包LpPacket传递给传输器模块;
步骤S503,传输器模块的虚拟链路层包编码器将虚拟链路层包LpPacket编码成字节数组传递给输出缓存;
步骤S504,传输器模块通过底层的通信机制将输出缓存中的数据传送到链路上。
8.一种支持并行转发的多标识路由器架构实现系统,其特征在于,包括了如权利要求1至7任意一项所述的支持并行转发的多标识路由器架构实现方法,并包括:
输入阶段模块,用于对多标识符路由器在输入阶段进行处理;
预处理阶段模块,使用标识选择器从其标识区中选出一个用于转发的标识,然后根据该选出的标识来区分其类型,将其放到对应标识转发器的接收队列当中,最后通过并行包验证器、有序并行包验证器、拉式包分发器以及推式包分发器完成预处理阶段的交互过程;
转发阶段模块,通过拉式转发线程和推式转发线程在转发阶段进行通信;
后处理阶段模块,用于对所有将要转发的多标识网络分组进行汇总;
输出阶段模块,用于对多标识网络分组进行分片和打包,并通过底层的通信链路进行输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210807052.4A CN114866469B (zh) | 2022-07-11 | 2022-07-11 | 一种支持并行转发的多标识路由器架构实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210807052.4A CN114866469B (zh) | 2022-07-11 | 2022-07-11 | 一种支持并行转发的多标识路由器架构实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114866469A CN114866469A (zh) | 2022-08-05 |
CN114866469B true CN114866469B (zh) | 2022-09-30 |
Family
ID=82626852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210807052.4A Active CN114866469B (zh) | 2022-07-11 | 2022-07-11 | 一种支持并行转发的多标识路由器架构实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114866469B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115426308B (zh) * | 2022-11-08 | 2023-04-11 | 北京大学深圳研究生院 | 一种多标识网络下的链路状态路由方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611613A (zh) * | 2020-04-28 | 2020-09-01 | 网络通信与安全紫金山实验室 | 基于icn的工业互联网标识解析系统及数据访问方法 |
CN112737964A (zh) * | 2020-12-25 | 2021-04-30 | 北京大学深圳研究生院 | 一种融合推拉语义的传输控制方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713004B (zh) * | 2016-07-12 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 一种路由器适配方法及系统 |
US10596602B2 (en) * | 2016-11-30 | 2020-03-24 | Pathover, Inc. | Delivery and routing management based on multi-identifier labels |
US11212183B1 (en) * | 2019-06-14 | 2021-12-28 | Zscaler, Inc. | Network device identification |
CN112804152B (zh) * | 2020-12-30 | 2022-06-17 | 佛山赛思禅科技有限公司 | 一种支持分组通信网络寻址路由标识不断演进的方法及系统 |
CN112965750B (zh) * | 2021-05-19 | 2021-08-13 | 北京小鸟科技股份有限公司 | Ip化多媒体资源的显示与控制系统及方法 |
-
2022
- 2022-07-11 CN CN202210807052.4A patent/CN114866469B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611613A (zh) * | 2020-04-28 | 2020-09-01 | 网络通信与安全紫金山实验室 | 基于icn的工业互联网标识解析系统及数据访问方法 |
CN112737964A (zh) * | 2020-12-25 | 2021-04-30 | 北京大学深圳研究生院 | 一种融合推拉语义的传输控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114866469A (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220368635A1 (en) | Network traffic load balancing | |
US7643486B2 (en) | Pipelined packet switching and queuing architecture | |
US7742480B2 (en) | Selective header field dispatch in a network processing system | |
US7184444B2 (en) | System and method for packet classification | |
US8799507B2 (en) | Longest prefix match searches with variable numbers of prefixes | |
US6987735B2 (en) | System and method for enhancing the availability of routing systems through equal cost multipath | |
US8169910B1 (en) | Network traffic analysis using a flow table | |
US7623455B2 (en) | Method and apparatus for dynamic load balancing over a network link bundle | |
CN108462646B (zh) | 一种报文处理方法及装置 | |
CN108833299B (zh) | 一种基于可重构交换芯片架构的大规模网络数据处理方法 | |
US7751319B2 (en) | Method and processor for classifying data packet units | |
US8767757B1 (en) | Packet forwarding system and method using patricia trie configured hardware | |
CN110505147B (zh) | 分组片段转发方法和网络设备 | |
CN114866469B (zh) | 一种支持并行转发的多标识路由器架构实现方法及系统 | |
KR100612315B1 (ko) | 핑퐁 방지 기능이 구비된 분산형 라우터 및 그를 이용한핑퐁 방지 방법 | |
CN104641607A (zh) | 超低延迟多协议网络设备 | |
US20240179095A1 (en) | Method and apparatus for determining hash algorithm information for load balancing, and storage medium | |
US8488489B2 (en) | Scalable packet-switch | |
US20130024541A1 (en) | Sending request messages to nodes indicated as unresolved | |
US7724737B1 (en) | Systems and methods for memory utilization during packet forwarding | |
CN108512771A (zh) | 一种数据流负载分担的方法和设备 | |
CN113824781B (zh) | 一种数据中心网络源路由方法与装置 | |
US20240179094A1 (en) | Service Function Chaining Parallelism and Diversions | |
Alhisnawi et al. | Designing Cuckoo Based Pending Interest Table for CCN Networks. | |
CN117714378A (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 |