多层面网络装置的输出队列和具有多封包链表的输出队列的相关管理方法_2

文档序号:8947742阅读:来源:国知局
00来转发。第一处理电路102具有序列数计数器108,序列数计数器108被配置为产生用于封包PKT中每一个的序列数SEQ_NUM以通过输出队列100来转发。因此,通过第一处理电路102产生的封包选择信息包括封包PKT的序列数。
[0019]在此实施方式中,由于多层面网络装置100具有两个层面,两个存储装置(存储装置104_1和存储装置104_2)分别存储用于输出队列100的多个封包链表110_1和封包链表110_2。存储装置104_1和存储装置104_2中的每一个允许仅在一个时钟周期中的单一入队列操作。因此,存储装置104_1和存储装置104_2可利用低成本存储装置来实现。举例来说,存储装置104_1和存储装置104_2中的每一个为一个全条目(full-entry) IRlffSRAM。由于封包链表104_1和封包链表104_2分别对应于不同的入端口(即,具有多个入端口(例如,端口 IP0-1P63)的层面O和具有多个入端口(例如,端口 IP64-1P127)的层面I)。来自入层面的特定层面并需要通过输出队列100来转发的封包被入队列至对应于特定层面的封包链表。举例来说,当第一封包被入队列至封包链表时,代表第一封包的封包标识符PID被存储于第一链表条目中,以及当在第一封包之后的第二封包被入队列至同一封包链表中时,代表第二封包的封包标识符PID被存储于第二链表条目中,以及第一链表条目将进一步通过第二封包的封包标识符PID设置下一封包标识符。因此,在已接收的封包被入队列至同一封包链表中之后,封包链表将具有数个链表条目。如图2所示,封包链表110_1具有由多个链表条目112_1,112_2,112_3,112_4,…112_m形成的封包链;以及封包链表110_2具有由多个链表条目114_1,114_2,114_3,114_4,…114_n形成的另一封包链。
[0020]关于封包链表110_1,一个存储单元116_1存储参数Qhead以指示在封包链表110_1中的头封包的封包标志符(S卩,在封包链表110_1中具有最高出队列优先级的封包的标识符),以及另一存储单元116_2存储参数Qtail以指示在封包链表110_1中的尾封包的封包标志符(即,在封包链表110_1中具有最低出队列优先级的封包的标识符)。相似地,关于封包链表110_2,一个存储单元118_1存储参数Qhead以指示在封包链表110_2中的头封包的封包标志符(即,在封包链表110_2中具有最高出队列优先级的封包的标识符),以及另一存储单元118_2存储参数Qtail以指示在封包链表110_2中的尾封包的封包标志符(即,在封包链表110_2中具有最低出队列优先级的封包的标识符)。举例来说,存储单元116_1,116_2,118_1,118_2可利用触发器来实现。
[0021]对于封包的入队列过程,参数Qhead被检测以确定封包链表110_1/110_2是否为空,以及参数Qtail被检测以了解在封包被入队列之前尾封包的封包标识符。在封包入队列之后,若已入队列的封包为新的头封包(即,由于已入队列的封包,封包链表110_1/110_2留下空状态),则参数Qhead和参数Qtail均被更新,以及若入队列的封包为新的尾封包(即,已入队列的封包被链接至非空封包链表110_1/110_2的原始尾封包),则仅参数Qtail被更新。由于本领域技术人员可了解封包入队列操作的实施细节,为求简洁省略进一步描述。
[0022]对于封包的出队列过程,参数Qhead被检测以了解头封包的封包标识符(即,要被出队列的封包的封包标志符),以及参数Qtail被检测以确定要被出队列的封包是否为在封包链表110_1/110_2中的最后的封包。在封包被出队列之后,若已出队列的封包为最后的封包(即,由于已出队列的封包,封包链表110_1/110_2进入空状态),参数Qhead和参数Qtail均被更新,以及若已出队列的封包不是最后封包(即,在封包链表110_1/110_2的原始头封包被未链接之后,封包链表110_1/110_2为非空),则仅参数Qhead被更新。由于本领域技术人员可了解封包出队列操作的实施细节,为求简洁省略进一步描述。
[0023]如上所述,基于封包PKT的到达序列(也称为封包PKT的入队列序列),序列数计数器108分配序列数SEQ_NUM至封包PKT。在一个示范性设计中,分配给每一个封包的序列数SEQ_NUM被记录于封包的链表条目中。如图2所示,来自层面O的封包被分配由PID11S置的封包标识符,以及序列数SEQ_NUM被设置为“I”;来自层面I的下一封包被分配由PID21设置的封包标识符,以及序列数SEQ_NUM被设置为“2” ;来自层面I的下一封包被分配由PID22设置的封包标识符,以及序列数SEQ_NUM被设置为“3”;来自层面I的下一封包被分配由PID23设置的封包标识符,以及序列数SEQ_NUM被设置为“4” ;来自层面O的下一封包被分配由PID12设置的封包标识符,以及序列数SEQ_NUM被设置为“5” ;来自层面O的下一封包被分配由PID13设置的封包标识符,以及序列数SEQ_NUM被设置为“6” ;来自层面O的下一封包被分配由PID14设置的封包标识符,以及序列数SEQ_NUM被设置为“7” ;以及来自层面I的下一封包被分配由PID24设置的封包标识符,以及序列数SEQ_NUM被设置为“8”。
[0024]单一的封包自输出队列100出队列一次。然而,提出的输出队列100利用多个封包链表110_1和封包链表110_2。每一个封包链表具有等待被转发至与输出队列100相关的出端口的已入队列的封包。第二处理电路106具有重排序的能力,并用于确定封包链表110_1和封包链表110_2中的哪一个被允许由此而出队列一个封包。具体地,根据由第一处理电路102产生的封包选择信息(例如,序列数),第二处理电路106用于通过自封包链表110_1和封包链表110_2选择链表条目而自输出队列100出队列封包。由于每一个链表条目具有封包的封包识别信息(封包标识符)和出队列优先级信息(序列数),第二处理电路106可比较在封包链表110_1和封包链表110_2中可用的所有头封包的序列数以产生比较结果,并引用比较结果以自输出队列100出队列具有最小序列数的头封包。如图2所示,在封包链表110_1中具有封包标识符PID11的头封包具有设置为“I”的序列数SEQ_NUM,以及在封包链表110_2中具有封包标识符PID21的头封包具有设置为“2”的序列数SEQ_NUM。因此,由于具有最小序列数,具有封包标识符PID1J^头封包将自输出队列100而出队列。
[0025]基于如上所述的相同的封包选择规则,第二处理电路106将顺序地出队列具有封包标识符PID21的封包、具有封包标识符PID 22的封包(其在出队列具有封包标识符PID 21的封包之后成为在封包链表110_2中的新的头封包)、具有封包标识符PID23的封包(其在出队列具有封包标识符PID22的封包之后成为在封包链表110_2中的新的头封包)、具有封包标识符PID12的封
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1