具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图3为本发明实施例提供的分布式多核网络设备的组成示意图,如图3所示,其主要包括:至少一个线卡板31、交换网卡32和至少一个集中处理引擎33,其中:
线卡板31:用于检测并记录本线卡板中用于转发报文的各个核的状态:忙还是空闲,获取并记录其它线卡板及集中处理引擎33的报文转发状态:忙还是空闲。从本线卡板的外部接口接收本多核网络设备外部发来的报文,判断本线卡板用于转发报文的核中是否存在空闲核,若存在,则选择一个空闲核对该报文进行查表转发处理;若不存在,则判断本多核网络设备中是否存在空闲集中处理引擎,即是否存在报文转发状态为空闲的集中处理引擎,若是,将该报文通过交换网卡32发送给一个空闲集中处理引擎33;否则,将该报文通过交换网卡32发送给一个报文转发状态为空闲的其它线卡板。从本线卡板的内部接口接收本多核网络设备的其它线卡板发来的报文,在本线卡板用于转发报文的核中选择一个空闲核,由该空闲核对该报文进行转发处理。
交换网卡32:在线卡板之间转发报文,在线卡板与集中处理引擎之间转发报文。
集中处理引擎33:接收交换网卡32转发来的报文,对该报文进行查表转发处理。
在图3所示实施例中,每个分布式多核网络设备中至少包括一个集中处理引擎。集中处理引擎可以是多核网络设备中一个单独的线卡板,也可以是单核主控板的一部分,也可以是交换网卡的一部分,甚至也可以由多核主控板的部分核组成。集中处理引擎除了包括多核处理器、内存、程序、与交换网卡接口部件等外,还包括与线卡板相同的、用于转发报文的分类表、路由转发表等。
在实际应用中,若分布式多核网络设备中不具有集中处理引擎,则线卡板31在接收到本多核网络设备外部发来的报文时,若检测到本线卡板用于转发报文的核中不存在空闲核,则可直接将该报文通过交换网卡32发送给一个报文转发状态为空闲的其它线卡板。
图4为本发明实施例一提供的分布式多核网络设备中的线卡板的组成示意图,如图4所示,其主要包括:分类单元3111、转发处理单元3112和分发单元3113,其中:
分类单元3111:记录本线卡板的转发处理单元3112中各个核的状态信息:忙还是空闲。从本线卡板的外部接口接收本多核网络设备外部发来的报文,判断本线卡板的转发处理单元3112中是否存在空闲核,若是,将该报文发送给本线卡板的转发处理单元3112中的一个空闲核;否则,将报文发送给本线卡板的分发单元3113。从本线卡板的内部接口接收本多核网络设备的其它线卡发来的报文,将报文发送给本线卡板的转发处理单元3112中的一个空闲核。
分类单元3111可以由硬件FPGA、ASIC方式实现,也可以由线卡板上多核处理器的核来实现。
转发处理单元3112:任意一个核接收到分类单元3111发来的报文,对该报文执行查表转发处理。
转发处理单元3112至少包括一个核,一个报文的转发可以由单个核实现,也可以由多个核组合实现,如图4所示,核10~1n为一核组合,核20~2n为一核组合,...,核N0~Nn为一核组合。
分发单元3113:获取并记录所有集中处理引擎及除本线卡板外的其它所有线卡板的报文转发状态信息:忙还是空闲。接收分类单元3111发来的报文,判断是否存在空闲集中处理引擎,即:是否存在报文转发状态为空闲的集中处理引擎,若存在,将该报文发送给一个空闲集中处理引擎33;否则,判断其它线卡板中是否存在空闲线卡板,即:是否存在报文转发状态为空闲的线卡板,若是,将该报文发送给一个空闲线卡板,否则,对该报文进行查表转发处理。
若分发单元3113要将报文转发给集中处理引擎33,则可在报文中携带接收该报文的单板号、槽位号、端口号等,以方便集中处理引擎33执行与转发相关的处理,如:确定报文的转发优先级等。
分发单元3113至少包括一个核。
从图4所示实施例可以看出,只有在本线卡板的转发处理单元3112中的所有核、所有集中处理引擎、其它所有线卡板的转发状态都为忙时,分发单元3113才进行报文的转发处理,这样,分发单元3113大部分情况下都只进行报文的分发处理,因此,分发单元3113只需使用很少的核,提高了分布式多核网络设备中核的利用率。
另外,从图4所示实施例可以看出,每个线卡板的分类单元3111必须能够得知本线卡板的转发处理单元3112中的各个核的状态,同时,每个线卡板的分发单元3113必须能够得知其它线卡板和集中处理引擎的报文转发状态,以便在本线卡板的转发处理单元3112忙时,选择集中处理引擎或其它线卡板转发报文。以下分别给出三种获得线卡板的转发处理单元中的各个核的状态及获得其它线卡板和集中处理引擎的报文转发状态的方式示意图:
方式一、如图5所示,在每个线卡板上设置一个核状态检测单元501、在每个集中处理引擎上设置一个转发状态检测单元502、在主控板上设置一个转发状态识别单元503,同时在每个线卡板上设置一个转发状态记录单元504,其中:
核状态检测单元501:用于检测并记录本线卡板的转发处理单元中各个核的状态:忙还是空闲,并根据各个核的状态,确定本线卡板的报文转发状态,并定时向主控板上的转发状态识别单元503上报本线卡板的报文转发状态。
核状态检测单元501可实时检测转发处理单元中每个核的负载,若某个核的负载超过预先设定的值如:80%,则确定该核忙;否则,确定该核空闲。
转发状态检测单元502:用于检测本集中处理引擎的报文转发状态:忙还是空闲,并定时向主控板上的转发状态识别单元503上报本集中处理引擎的报文转发状态。
转发状态识别单元503:接收并记录每个线卡板的核状态检测单元501发来的该线卡板的报文转发状态信息,接收并记录每个集中处理引擎的转发状态检测单元502发来的该集中处理引擎的报文转发状态信息,并定时向每个线卡板的转发状态记录单元504发送所有线卡板和所有集中处理引擎的最新报文转发状态信息。
转发状态记录单元504,用于接收并记录主控板上的转发状态识别单元503发来的其它所有线卡板和所有集中处理引擎的最新报文转发状态信息。
根据图4所示实施例,核状态检测单元501可位于本线卡板的分类单元3111上,转发状态记录单元504可位于本线卡板的分发单元3113上。
方式二、如图6所示,在每个线卡板上设置一个核状态检测单元601,在每个集中处理引擎上设置一个转发状态检测单元602,在所有集中处理引擎中选择一个集中处理引擎,在所选择的集中处理引擎上设置一个转发状态识别单元603,同时在每个线卡板上设置一个转发状态记录单元604,其中:
核状态检测单元601:用于检测并记录本线卡板的转发处理单元中各个核的状态:忙还是空闲信息,并根据各个核的状态,确定本线卡板的报文转发状态,并定时向所选择的集中处理引擎上的转发状态识别单元603上报本线卡板的报文转发状态。
可以将所选择的集中处理引擎的标识配置在所有线卡板和所有集中处理引擎上。
转发状态检测单元602:用于检测本集中处理引擎的报文转发状态:忙还是空闲,并定时向所选择的集中处理引擎上的转发状态识别单元603上报本集中处理引擎的报文转发状态。
对于所选择的集中处理引擎,该集中处理引擎上的转发状态检测单元602也需要将本集中处理引擎的报文转发状态定时上报给转发状态识别单元603。
转发状态识别单元603:接收并记录每个线卡板的核状态检测单元601发来的该线卡板的报文转发状态信息,接收并记录每个集中处理引擎的转发状态检测单元602发来的该集中处理引擎的报文转发状态信息,并定时向每个线卡板的转发状态记录单元604发送所有线卡板和所有集中处理引擎的最新报文转发状态信息。
转发状态记录单元604,用于接收并记录所选择的集中处理引擎上的转发状态识别单元603发来的其它所有线卡板和所有集中处理引擎的最新报文转发状态信息。
根据图4所示实施例,核状态检测单元601可位于本线卡板的分类单元3111上,转发状态记录单元604可位于本线卡板的分发单元3113上。
方式三、如图7所示,在每个线卡板上设置一个核状态检测单元701,在每个集中处理引擎上设置一个转发状态检测单元702,同时在每个线卡板上设置一个转发状态记录单元703,其中:
核状态检测单元701:用于检测并记录本线卡板的转发处理单元中各个核的状态:忙还是空闲,并根据各个核的状态,确定本线卡板的报文转发状态,并定时向其它每个线卡板的转发状态记录单元上报本线卡板的报文转发状态。
转发状态检测单元702:用于检测本集中处理引擎的报文转发状态:忙还是空闲,并定时向每个线卡板的转发状态记录单元上报本集中处理引擎的报文转发状态。
转发状态记录单元703,用于接收并记录其它每个线卡板的核状态检测单元701发来的该其它线卡板的最新报文转发状态信息,接收并记录每个集中处理引擎上的转发状态检测单元702发来的该集中处理引擎的最新报文转发状态信息。
根据图4所示实施例,核状态检测单元701可位于本线卡板的分类单元3111上,转发状态记录单元703可位于本线卡板的分发单元3113上。
在图4所示实施例中,每个线卡板只包括一个转发处理单元,该转发处理单元中的核既对从本线卡板的外部接口接收到的来自本多核网络设备外部的报文进行转发处理,也对从本线卡的内部接口接收到的、其它线卡板由于忙而发来的其它线卡板接收到的来自本多核网络设备外部的报文进行转发处理。由于对报文的转发处理需要经过查找分类表、查找路由转发表等步骤,因此,当转发处理单元处理的其它线卡板发来的、来自本多核网络设备外部的报文过多时,很可能出现:无法对本线卡板当前接收到的来自本多核网络设备外部的报文进行处理的情况。为了解决该问题,本发明实施例采取了将转发处理单元进行细分的方案,即,将转发处理单元中的一部分核组成第一转发处理单元,另一部分核组成第二转发处理单元。其中,第一转发处理单元专门用于处理本线卡板接收到的来自本多核网络设备外部的报文;第二转发处理单元则在第一转发处理单元中有空闲核时,处理其它线卡板发来的该其它线卡板接收到的、来自本多核网络设备外部的报文,在第一转发处理单元中没有空闲核时,则处理本线卡板接收到的来自本多核网络设备外部的报文。以下给出该实施例:
图8为本发明实施例二提供的分布式多核网络设备中的线卡板的组成示意图,如图8所示,其主要包括:分类单元3121、第一转发处理单元3122、第二转发处理单元3123和分发单元3124,其中:
分类单元3121:记录本线卡板的第一转发处理单元3122中各个核的状态信息:忙还是空闲,记录本线卡板的第二转发处理单元3123中各个核的状态信息:忙还是空闲。从本线卡板的外部接口接收到本多核网络设备外部发来的报文,判断本线卡板的第一转发处理单元3122中是否存在空闲的核,若存在,将该报文发送给本线卡板的第一转发处理单元3122中的空闲核;若不存在,判断本线卡板的第二转发处理单元3123中是否存在空闲核,若是,将报文转发给本线卡板的第二转发处理单元3123中的空闲核,否则,将报文转发给分发单元3124。从本线卡板的内部接口接收到其它线卡板发来的报文,将该报文发送给本线卡板的第二转发处理单元3123中的空闲核。
第一转发处理单元3122:任意一个核接收分类单元3121发来的报文,对该报文进行查表转发处理。
第二转发处理单元3123:任意一个核接收分类单元3121发来的报文,对该报文进行查表转发处理。
分发单元3124:记录所有集中处理引擎及其它所有线卡板的报文转发状态信息:忙还是空闲。接收分类单元3121发来的报文,判断是否存在空闲集中处理引擎,即:是否存在报文转发状态为空闲的集中处理引擎,若存在,将报文发送给一个空闲集中处理引擎33;若不存在,判断其它线卡板中是否存在空闲线卡板,若是,将报文发送给一个空闲线卡板,否则,对该报文进行查表转发处理。
第一转发处理单元3122和第二转发处理单元3123中所包含的核的数量,可以根据本线卡板接收到的来自本多核网络设备外部的报文情况动态调整。例如:本线卡板上的控制单元每隔一段时间对本线卡板接收到的本多核网络设备外部的报文数目等进行统计,并根据在该段时间内,第一转发处理单元处于忙状态的概率等,调整第一转发处理单元3122中所包含的核的数量。
从图8所示实施例可以看出,第一转发处理单元3122专门用于处理本线卡板接收到的来自本多核网络设备外部的报文,这样就在一定程度上保证了本线卡板接收到的来自本多核网络设备外部的报文能够被及时处理;且,第二转发处理单元3123在第一转发处理单元3122忙时,只用于处理本线卡板接收到的来自本多核网络设备外部的报文,而在第一转发处理单元3122空闲时才处理其它线卡板发来的该其它线卡板接收到的来自本多核网络设备外部的报文,进一步保证了本线卡板的报文能够被及时处理,且使得本线卡板的空闲核资源能够被充分利用来处理其它线卡板的报文。
与图4所示实施例类似,图8所示实施例中,每个线卡板的分类单元3121必须能够得知本线卡板的第一转发处理单元3122和第二转发处理单元3123中的各个核的状态,同时,每个线卡板的分发单元3124必须能够得知其它线卡板和集中处理引擎的报文转发状态。以下分别给出三种获得线卡板的第一转发处理单元3122和第二转发处理单元3123中的各个核的状态及获得其它线卡板和集中处理引擎的报文转发状态的方式示意图:
方式一、如图9所示,在每个线卡板上设置一个第一核状态检测单元901和一个第二核状态检测单元902,在每个集中处理引擎上设置一个转发状态检测单元903、在主控板上设置一个转发状态识别单元904,同时在每个线卡板上设置一个转发状态记录单元905,其中:
第一核状态检测单元901:用于检测并记录本线卡板的第一转发处理单元中各个核的状态:忙还是空闲,并根据各个核的状态,确定本线卡的第一转发处理单元的报文转发状态;当检测到第一转发处理单元的报文转发状态由空闲变为忙时,向第二核状态检测单元902发送忙指示;当检测到第一转发处理单元的报文转发状态由忙变为空闲时,向第二核状态检测单元902发送空闲指示。
第二核状态检测单元902:用于检测并记录本线卡板的第二转发处理单元中各个核的状态:忙还是空闲,并根据各个核的状态,确定本线卡板的第二转发处理单元的报文转发状态,并将本线卡板的第二转发处理单元的报文转发状态作为本线卡板的报文转发状态,定时向主控板上的转发状态识别单元904上报该本线卡板的报文转发状态;当收到第一核状态检测单元901发来的忙指示时,将第二转发处理单元的报文转发状态更改为忙;在收到第一核状态检测单元901发来的空闲指示、并根据第二转发处理单元中各个核的状态确定第二转发处理单元的报文转发状态为空闲后,将第二转发处理单元的报文转发状态由忙更改为空闲。
转发状态检测单元903:用于检测本集中处理引擎的报文转发状态:忙还是空闲,并定时向主控板上的转发状态识别单元904上报本集中处理引擎的报文转发状态。
转发状态识别单元904:接收并记录每个线卡板的第二核状态检测单元902发来的该线卡板的报文转发状态信息,接收并记录每个集中处理引擎的转发状态检测单元903发来的该集中处理引擎的报文转发状态信息,并定时向每个线卡板的转发状态记录单元905发送所有线卡板和所有集中处理引擎的最新报文转发状态信息。
转发状态记录单元905:用于接收并记录主控板上的转发状态识别单元904发来的其它所有线卡板和所有集中处理引擎的最新报文转发状态信息。
根据图8所示实施例,第一核状态检测单元901和第二核状态检测单元902可位于本线卡板的分类单元3121上,转发状态记录单元905可位于本线卡板的分发单元3124上。
方式二、如图10所示,在每个线卡板上设置一个第一核状态检测单元1001和一个第二核状态检测单元1002,在每个集中处理引擎上设置一个转发状态检测单元1003,在所有集中处理引擎中选择一个集中处理引擎,在所选择的集中处理引擎上设置一个转发状态识别单元1004,同时在每个线卡板上设置一个转发状态记录单元1005,其中:
第一核状态检测单元1001:用于检测并记录本线卡板的第一转发处理单元中各个核的状态:忙还是空闲;当检测到第一转发处理单元的报文转发状态由空闲变为忙时,向第二核状态检测单元1002发送忙指示;当检测到第一转发处理单元的报文转发状态由忙变为空闲时,向第二核状态检测单元1002发送空闲指示。
第二核状态检测单元1002:用于检测并记录本线卡板的第二转发处理单元中各个核的状态:忙还是空闲,并根据各个核的状态,确定本线卡板的第二转发处理单元的报文转发状态,并将本线卡板的第二转发处理单元的报文转发状态作为本线卡板的报文转发状态,定时向所选择的集中处理引擎上的转发状态识别单元1004上报该本线卡板的报文转发状态;当收到第一核状态检测单元1001发来的忙指示时,将第二转发处理单元的报文转发状态更改为忙;在收到第一核状态检测单元1001发来的空闲指示、并根据第二转发处理单元中各个核的状态确定第二转发处理单元的报文转发状态为空闲后,将第二转发处理单元的报文转发状态由忙更改为空闲。
可以将所选择的集中处理引擎的标识配置在所有线卡板和所有集中处理引擎上。
转发状态检测单元1003:用于检测本集中处理引擎的报文转发状态:忙还是空闲,并定时向所选择的集中处理引擎上的转发状态识别单元1004上报本集中处理引擎的报文转发状态。
对于所选择的集中处理引擎,该集中处理引擎上的转发状态检测单元1003也需要将本集中处理引擎的报文转发状态定时上报给转发状态识别单元1004。
转发状态识别单元1004:接收并记录每个线卡板的第二核状态检测单元1002发来的该线卡板的报文转发状态信息,接收并记录每个集中处理引擎的转发状态检测单元1003发来的该集中处理引擎的报文转发状态信息,并定时向每个线卡板的转发状态记录单元1005发送所有线卡板和所有集中处理引擎的最新报文转发状态信息。
转发状态记录单元1005,用于接收并记录所选择的集中处理引擎上的转发状态识别单元1004发来的其它所有线卡板和所有集中处理引擎的最新报文转发状态信息。
根据图8所示实施例,第一核状态检测单元1001和第二核状态检测单元1002可位于本线卡板的分类单元3121上,转发状态记录单元1005可位于本线卡板的分发单元3124上。
方式三、如图11所示,在每个线卡板上设置一个第一核状态检测单元1101和一个第二核状态检测单元1102,在每个集中处理引擎上设置一个转发状态检测单元1103,同时在每个线卡板上设置一个转发状态记录单元1104,其中:
第一核状态检测单元1101:用于检测并记录本线卡板的第一转发处理单元中各个核的状态:忙还是空闲信息;当检测到第一转发处理单元的报文转发状态由空闲变为忙时,向第二核状态检测单元1102发送忙指示;当检测到第一转发处理单元的报文转发状态由忙变为空闲时,向第二核状态检测单元1102发送空闲指示。
第二核状态检测单元1102:用于检测并记录本线卡板的第二转发处理单元中各个核的状态信息:忙还是空闲,并根据各个核的状态,确定本线卡板的第二转发处理单元的报文转发状态,并将本线卡板的第二转发处理单元的报文转发状态作为本线卡板的报文转发状态,定时向其它每个线卡板的转发状态记录单元上报本线卡板的报文转发状态;当收到第一核状态检测单元1101发来的忙指示时,将第二转发处理单元的报文转发状态更改为忙;在收到第一核状态检测单元1101发来的空闲指示、并根据第二转发处理单元中各个核的状态确定第二转发处理单元的报文转发状态为空闲后,将第二转发处理单元的报文转发状态由忙更改为空闲。
转发状态检测单元1103:用于检测本集中处理引擎的报文转发状态:忙还是空闲,并定时向每个线卡板的转发状态记录单元上报本集中处理引擎的报文转发状态。
转发状态记录单元1104,用于接收并记录其它每个线卡板的第二核状态检测单元1102发来的该其它线卡板的最新报文转发状态信息,接收并记录每个集中处理引擎上的转发状态检测单元1103发来的该集中处理引擎的最新报文转发状态信息。
根据图8所示实施例,第一核状态检测单元1101和第二核状态检测单元1102可位于本线卡板的分类单元3121上,转发状态记录单元1104可位于本线卡板的分发单元3124上。
图12为本发明实施例一提供的在采用图4所示的线卡板的分布式多核网络设备中转发报文的流程图,如图12所示,其具体步骤如下:
步骤1201:线卡板上的核状态检测单元检测并记录本线卡板的转发处理单元中各个核的状态:忙还是空闲,并根据各个核的状态:忙还是空闲,确定本线卡板的报文转发状态,并定时直接或通过主控板或通过集中处理引擎,将本线卡板的报文转发状态信息发送给所有线卡板的转发状态记录单元,且,该线卡板的转发状态记录单元接收并记录其它所有线卡板直接或间接发来的该其它线卡板的报文转发状态信息,接收并记录所有集中处理引擎直接发来的或通过主控板发来的或通过预先选择的集中处理引擎发来的该集中处理引擎的报文转发状态信息。
步骤1202:线卡板上的分类单元接收报文。
步骤1203:线卡板上的分类单元根据接收该报文的接口,判断该报文来自本多核网络设备外部还是来自本多核网络设备内的其它线卡,若来自本多核网络设备外部,执行步骤1205;若来自本多核网络设备内的其它线卡,执行步骤1204。
若报文从本线卡板的外部接口进入,则确定报文来自本多核网络设备外部;若报文从本线卡板的内部接口进入,则确定报文来自本多核网络设备内的其它线卡板。
步骤1204:线卡板上的分类单元从本线卡板的核状态检测单元读取本线卡板的转发处理单元上各个核的状态信息,将报文发送给一个空闲核,该空闲核接收到报文,对报文进行查表转发处理,本流程结束。
步骤1205:线卡板上的分类单元从本线卡板的核状态检测单元读取本线卡板的转发处理单元上各个核的状态信息,判断转发处理单元中是否存在空闲核,若是,执行步骤1206;否则,执行步骤1207。
步骤1206:线卡板上的分类单元在转发处理单元中选择一个空闲核,将该报文发送给所选择的空闲核,该空闲核接收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1207:线卡板上的分类单元将报文发送给本线卡板的分发单元。
步骤1208:分发单元收到该报文,从本线卡板的转发状态记录单元读取所有集中处理引擎的报文转发状态信息,判断是否存在空闲集中处理引擎,若是,执行步骤1209;否则,执行步骤1210。
步骤1209:分发单元选择一个空闲集中处理引擎,将该报文通过交换网卡发送到所选择的空闲集中处理引擎,该空闲集中处理引擎接收到该报文,对该报文进行查表转发处理,本流程结束。
分发单元可在报文中携带上接收该报文的单板号、槽位号、端口号等,以方便集中处理引擎执行与转发相关的处理,如:确定报文的转发优先级等。
步骤1210:分发单元从本线卡板的转发状态记录单元读取其它所有线卡板的报文转发状态信息,判断其它线卡板中是否存在空闲线卡板,若是,执行步骤1211;否则,执行步骤1212。
步骤1211:分发单元选择一个空闲线卡板,将该报文通过交换网卡发送给所选择的空闲线卡板,该空闲线卡板接收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1212:分发单元对该报文进行查表转发处理。
在实际应用中,若分布式多核网络设备中不具有集中处理引擎,则不执行步骤1208、1209。
图13为本发明实施例二提供的在采用图8所示的线卡板的分布式多核网络设备中转发报文的流程图,如图13所示,其具体步骤如下:
步骤1301:线卡板上的第一核状态检测单元检测并记录本线卡板的第一转发处理单元中各个核的状态:忙还是空闲,并根据第一转发处理单元中各个核的状态确定第一转发处理单元的转发状态:忙还是空闲,并在检测到第一转发处理单元的报文转发状态由空闲变为忙时,向第二核状态检测单元发送忙指示,在检测到第一转发处理单元的报文转发状态由忙变为空闲时,向第二核状态检测单元发送空闲指示;同时,线卡板上的第二核状态检测单元检测并记录本线卡板的第二转发处理单元中各个核的状态:忙还是空闲,并根据第二转发处理单元中各个核的状态确定本线卡板的报文转发状态,定时直接或通过主控板或通过集中处理引擎,将本线卡板的报文转发状态信息发送给所有线卡板的转发状态记录单元,在收到第一核状态检测单元发来的忙指示后,将第二转发处理单元的报文转发状态更改为忙,在收到第一核状态检测单元发来的空闲指示后,将第二转发处理单元的报文转发状态更改为空闲;且,该线卡板的转发状态记录单元接收并记录其它线卡板的第二核状态检测单元直接或间接发来的该其它线卡板的报文转发状态信息,接收并记录每个集中处理引擎的转发状态检测单元直接发来的或通过主控板发来的或通过预先选择的集中处理引擎发来的该集中处理引擎的报文转发状态信息。
步骤1302:线卡板上的分类单元接收报文。
步骤1303:线卡板上的分类单元根据接收该报文的接口,判断该报文来自本多核网络设备外部还是来自本多核网络设备内的其它线卡板,若来自本多核网络设备外部,执行步骤1305;若来自其它线卡板,执行步骤1304。
步骤1304:线卡板上的分类单元从自身的第二核状态记录单元读取本线卡板的第二转发处理单元中各个核的状态信息,从第二转发处理单元中选择一个空闲核,将该报文发送给所选择的空闲核,该空闲核收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1305:线卡板上的分类单元从自身的第一核状态记录单元读取本线卡板的第一转发处理单元中各个核的状态信息,判断第一转发处理单元中是否存在空闲核,若是,执行步骤1306;否则,执行步骤1307。
在本步骤中,当第一转发处理单元中不存在空闲核时,说明第一转发处理单元已经满足不了本线卡板接收到的来自本多核网络设备外部的报文的转发处理,必须要第二转发处理单元协助第一转发处理单元对本线卡板接收到的来自本多核网络设备外部的报文进行转发处理。此时,线卡板上的第一核状态检测单元需要通知第二核状态检测单元将第二转发处理单元的报文转发状态更改为忙,以便第二核状态检测单元通知其它所有线卡板:本线卡板的报文转发状态为忙,从而避免其它线卡板再向本线卡板发送报文。此后,当第一核状态检测单元检测到第一转发处理单元中存在空闲核后,通知第二核状态检测单元,第二核状态检测单元在检测到第二转发处理单元中存在空闲核时,通知其它所有线卡板:本线卡板的报文转发状态变为空闲,以便协助其它线卡板转发报文。
或者,当第一转发处理单元中不存在空闲核时,也可增加第一转发处理单元中的核的数量。
步骤1306:线卡板上的分类单元在第一转发处理单元中选择一个空闲核,该空闲核接收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1307:线卡板上的分类单元从本线卡板的第二核状态记录单元读取本线卡板的第二转发处理单元中各个核的状态信息,判断第二转发处理单元中是否存在空闲核,若是,执行步骤1308;否则,执行步骤1309。
步骤1308:线卡板上的分类单元在第二转发处理单元中选择一个空闲核,该空闲核接收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1309:线卡板上的分类单元将报文转发给本线卡板的分发单元。
步骤1310:线卡板上的分发单元接收到该报文,从本线卡板的转发状态记录单元读取所有集中处理引擎的报文转发状态信息,判断是否存在空闲集中处理引擎,若是,执行步骤1311;否则,执行步骤1312。
步骤1311:线卡板上的分发单元选择一个空闲集中处理引擎,将该报文通过交换网卡发送给所选择的空闲集中处理引擎,该空闲集中处理引擎接收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1312:线卡板上的分发单元从本线卡板的转发状态记录单元读取其它线卡板的报文转发状态信息,判断其它线卡板中是否存在空闲线卡板,若是,执行步骤1313;否则,执行步骤1314。
步骤1313:线卡板上的分发单元从其它线卡板中选择一个空闲线卡板,将该报文通过交换网卡发送给所选择的空闲线卡板,该空闲线卡板接收到该报文,对该报文进行查表转发处理,本流程结束。
步骤1314:线卡板上的分发单元对该报文进行查表转发处理。
在实际应用中,若分布式多核网络设备中不具有集中处理引擎,则不执行步骤1310、1311。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。