自一个调度输出队列出列多个封包及/或使用过调度来调度输出队列的封包输出控制器...的制作方法_2

文档序号:9650864阅读:来源:国知局
列出列时,储存该特定封包的封包ID的节点自封包链接列表被移除,且该特定封包自封包缓冲器112被读取并被输出至下一级(例如,出列设备104),以通过输出端口进行封包转发。
[0025]由于待通过输出端口转发的封包可来自任一输入端口,调度器106执行一个调度操作以作出输出队列决定,用于决定输出队列115_1_115_N中的哪一个被授权输出其封包数据。亦即,调度器106 了解输出队列115_1-115_N的队列状态,其中一个输出队列的队列状态可指示输出队列是否具有待被服务的封包;此外,调度器106适当调度具有等待通过相同输出端口被转发的输出队列115_1-115_N。在调度器106作出一个输出队列决定以授权一个输出队列之后,调度器106不作出下一输出队列决定,直到收到指示调度输出队列的封包传输的最终状态的确认消息(acknowledgment message)ACK。举例来说,确认消息ACK可为指示在由封包传输出列后调度输出队列是否将成为空队列的EmptyQ_ACK。从而,由调度器106执行的一个调度操作包含至少等待对应于当前优胜输出队列的封包传输的确认消息ACK的操作以及自多个输出队列选出下一优胜输出队列的操作。换句话说,由调度器106执行的一个调度操作所需的处理时间包含至少等待时间以及决策时间。因此,在收到先前出列操作的确认消息ACK之后,调度决策操作被触发,且不晚于封包传输结束完成。为释放调度时间限制,本发明提出基于调度器106的操作特性对于一个调度输出队列出列多个封包。举例来说,调度器106的操作特性可包含由调度器106作出的两个连续输出队列决定之间的最小时间间隔。
[0026]请参考图2,其为依据本发明一个实施例的释放调度时间限制的第一解决方案的时序图。假设调度器106执行的每一调度操作需要等于A字节封包传输时间(亦即,具有A字节大小的封包数据的传输时间)的处理时间,其中一个单一调度操作的处理时间包含至少上述等待时间及决策时间。亦即,依据调度器106的操作特性,调度器106作出的两个连续输出队列决定之间的最小时间间隔等于具有大小为A字节的封包数据的传输时间。在时间T。,调度器106结束一个调度操作SCH。以输出一个输出队列决定D 0= 0Q0,并开始下一调度操作SC& (其等待关联调度输出队列0Q0的封包传输的确认消息ACK并随后作出输出队列决定)。在被由输出队列决定0。= 0Q0决定的调度输出队列的队列标示Q ID通知之后,出列设备104对由输出队列决定0。= 0Q0指定的调度输出队列0Q0执行封包出列操作。
[0027]在本实施例中,出列设备104被允许出列一个调度输出队列的多个封包。然而,如果待自调度输出队列出列的单一封包的封包长度不小于阈值(例如,A),由于该长封包的传输时间足够覆盖用于作出下一输出队列决定的一个调度操作所需的处理时间,出列设备104可仅自调度输出队列出列一个封包。换句话说,在当前出列封包的封包传输结束时,下一输出队列决定将是可用的,从而在本情况下将不会发生封包泡沫(空闲输出端口)。如图2所示,由于待自调度输出队列0Q0出列的封包PKT?^封包长度不小于阈值A,出列设备14仅自调度输出队列0Q0出列封包PKL。
[0028]由于封包PKL的传输时间长于阈值A (亦即由调度器106作出的两个连续输出队列决定之间的最小时间间隔),在获取输出队列决定D1=0Q1之后,调度操作SCH^f等待当前出列封包PKL的封包传输结束。在时间T1,出列封包PKT ?的封包传输完成,调度器106被触发以输出输出队列决定D1= 0Q1并开始下一调度操作SCH2 (其将等待关联调度输出队列0Q1的封包传输的确认消息ACK并随后作出输出队列决定)。在被由输出队列决定D1 =0Q1决定的调度输出队列的队列标示QID通知之后,出列设备104对由输出队列决定D !=0Q1指定的调度输出队列0Q1执行封包出列操作。
[0029]在本实施例中,由于待自调度输出队列0Q1出列的单一封包PKTn&封包长度小于阈值A,该短封包PKTn的传输时间不足够覆盖用于作出下一输出队列决定的一个调度操作所需的处理时间。从而,出列设备104可自调度输出队列0Q1出列多于一个封包,从而允许调度器106在不晚于多于一个封包的封包传输结束时获取输出队列决定D2。在本实施例中,待被自调度输出队列0Q1顺序出列的两个封包PKTjP PKT n+1的总封包长度不小于阈值A。因此,在封包PKTJP PKT n+1的封包传输结束时,下一输出队列决定D 2将是可用的,从而在该情况下不会发生封包泡沫(空闲输出端口)。如图2所示,出列设备106将自调度输出队列0Q1出列多个封包,包含PKTjP PKT n+1。
[0030]由于封包PKTjP PKT n+1的传输时间长于阈值A(亦即由调度器106作出的两个连续输出队列决定之间的最小时间间隔),在获取输出队列决定D2= 0Q2之后,调度操作SCH2将等待出列封包PKTjP PKT n+1的封包传输结束。在时间T2,出列封包PKT ?和PKT n+1的封包传输完成,调度器106被触发以输出输出队列决定D2= 0Q2。在被由输出队列决定D 2 =0Q2决定的调度输出队列的队列标示QID通知之后,出列设备104对由输出队列决定D 2 =0Q2指定的调度输出队列0Q2执行封包出列操作。
[0031]在本实施例中,当被授权输出其封包数据时,输出队列0Q2仅具有三个封包PKTk 2、PKTk pPKTk,其中待自调度输出队列0Q2出列的单一封包PKTk 2的封包长度小于阈值A,待自调度输出队列0Q2顺序出列的多个封包PKTk 2及PKT k:的总封包长度不小于阈值A,且调度输出队列0Q2中的所有封包PKTk 2、PKTk ^ PKTk的总封包长度小于另一阈值2A。若出列设备104仅自调度输出队列0Q2出列多个封包PKTk 2&PKTk i,单一短封包PKTk被留在输出队列0Q2中。当输出队列0Q2被再次决定为优胜输出队列时,可能发生封包泡沫(空闲输出端口 )。为避免该现象的发生,出列设备104出列调度输出队列0Q2中的所有封包PKTk 2、PKTk 0PKTk,从而阻止单一短封包?1(1;被留在调度输出队列0Q2中。具体来说,出列设备104可比较调度输出队列中的所有封包的总封包长度与阈值(例如,2A),并参考比较结果来决定待自调度输出队列中出列的多个封包。
[0032]由于待自调度输出队列0Q2顺序出列的所有封包PKTk 2、PKTk ρΡΚ?;的总封包长度不小于阈值Α,这些封包PKTk 2、PKTk 0 PKTk的传输时间足够覆盖用于作出下一输出队列决定的一个调度操作所需的处理时间。从而,在所有封包PKTk 2、PKTk pPKTk的封包传输之前,下一输出队列决定将是可用的,以在这种情况下避免封包泡沫(空闲输出端口)的发生。
[0033]请注意,图2中所示的输出队列决定以及自调度输出队列中出列的封包仅用作说明之用,并非为本发明的限制。举例来说,任一自由单一调度操作决定的一个调度输出队列出列多个封包的封包出列设计均落入本发明的范围之内。
[0034]请参考图3,其为依据本发明一个实施例的封包输出方法的流程示意图。若能达到基本相同的结果,该封包输出方法的步骤并不需要严格按照图3中所示顺序执行。该封包输出方法可用于图1所示的网络交换器100,且可简要的概况如下。
[0035]步骤300:开始。
[0036]步骤302:检查出列封包的当前封包传输是否完成。若是,转至步骤304 ;否则,继续检查当前封包传输是否完成。
[0037]步骤304:输出一个输出队列决定,以及开始用于获取下一输出队列决定的调度操作。
[0038]步骤306:检查由输出队列决定指示的调度输出队列中的所有封包的总封包长度是否小于阈值2A(亦即,Total_PktL(调度输出队列)〈2A ?)。若是,转至步骤308 ;否则,转至步骤310。
[0039]步骤308:出列调度输出队列中的所有封包。
[0040]步骤310:出列具有总封包长度不小于阈值A(亦即,SPktL彡A)的多个封包。
[0041]步骤312:结束。
[0042]本领域技术人员在读完上述段落后,可以轻易理解图3所示的每一步的细节,为简洁起见,此处不再赘述。
[0043]在一个范例性的设计中,出列设备104自一个调度输出队列出列多个封包以释放调度时间限制。从而,调度器106可使用任意常规调度器设计实现。在一替代性设计中,出列设备可使用任意常规出列设计实现,而调
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1