本发明借助一种全新的输出请求机制来进行分组交换。按照本发明的
分组交换性能相当于输出排队交换的性能,但降低了存储器吞吐量需求,
于是也降低了成本。
图5中用标号500示出了一个具有根据本发明的分组流的分组交换
体系结构的设备的实施例。分组到达N个入口(IP)(502、504、506…
508),然后被存放在缓冲存储器(510、512、514…516),之后从缓冲
存储器转发到交换机构(例如,共享总线526),最后被传递到N个出口
(EP)(518、520、522…524)。每个入/出口都包括一个带有相关存储器
的入口处理器/出口处理器,其中采用三条路径用于分组交换。显然可以
采用多种路径实施方式,例如,时间共享总线和/或专用连接。
在图5所示的结构中,EP使用将要描述的控制路径向IP请求分
组。IP通过使所请求的分组从相关缓冲存储器中读出来应答请求。如果
在每条输入链路上分组到达的速率为R,则从每个缓冲存储器读出分组
的速率限制为k*R(其中k为小于或等于N的预先选择的整数)。如果以高
于K*R的速率向一给定缓冲存储器请求分组,则过量的请求将被拒绝。
遭受拒绝的请求被重复,直至被接受。
对于K>1,该输出请求结构所提供的吞吐量要高于输入排队交换。
当相对于N来说K较小(例如:K=4,N=16)时,该交换的吞吐量可达到
输出排队交换的吞吐量,并且队列的平均长度较小。于是,类似于
Knockout交换,该结构通过将传送速率降至K*R(而不是N*R),而提高
了性能并降低了缓冲存储器的成本。与Knockout交换不同,没有丢失分
组。
本发明区别于输出排队结构的另一个特点是交换机构的总的分组速
率不必为N*R。如图5所示,交换机构的总的分组速率为C*N*R,其中
C为0至1之间的一个预选值。通过选择C,使C*N*R足以支持整个交
换机平均吞吐量需求。
图6(标号600)是一个具有根据本发明的有效分组交换结构的设备的
方框图。每个端口具有入口(IP0…IPN-1)(602…604)和出口(EP0…EP
N- 1)(610…612);多个IP(602…604)中的每一个IP都与一个用于存储接收
到的分组的相关分组存储器(606…608)相连,多个EP(610…612)中的每
一个EP都与一个相应的用于存储关于IP中正在等待传递到连接的EP
的分组的信息的标记存储器(614…616)相连。N是一个预选的表明交换
机中端口数的整数。入口和出口互连(618)。输入分组通过IP到达,输出
分组通过EP离开。
图7(标号700)示出了根据本发明的一个设备的实施例,其中详细地
示出了用于将分组从入口传送到出口的操作的结构。所示步骤包括:A)
接收IP(702…704)根据第一预定方案确定接收到的分组的目的地EP,
并将接收到的分组存储在与接收IP相连的分组存储器(706…708)中;B)
接收IP向目的地EP发送一到达标记,该标记至少具有存储器地址和IP
号表明分组存储在哪里;C)目的地EP接收到达标记并将到达标记存储
在与之相连的标记存储器(714…716)中;D)目的地EP根据第二预定方
案选择存储的到达标记,并将所选择的到达标记返回给发送该到达标记的
IP,以请求传送与该到达标记相关的所接收到的分组;E)IP接收所选择
的已存储的到达标记,检索与到达标记相关的所接收到的分组,将与到达
标记相关的所接收到的分组发送到目的地EP;和F)目的地EP接收到
与到达标记相关的所接收到的分组,并将所接收到的分组从目的地EP送
出。
在图7和图8(标号700和800)所示的典型实现中,IP和EP通过到
达路径(718、818)、请求路径(720、820)以及分组路径(722、822)互连。
在所示例子中,分组到达IP1,并被存储在入口分组存储器(804)中(a)。
在到达路径(818)上发送到达标记(b)并把到达标记存储在EP2(806)的标
记存储器(808)中(c)。从标记存储器(808)中检索到达标记(d),并使用请
求路径(820)将检索的到达标记送回IP1(802)(e)。然后,IP1(802)在
分组路径(822)上向目的地EP发送所请求的分组(f)。很明显,可以使用
多种路径实现,例如,时间共享总线和/或专用连接。
根据选择,到达标记可以包括有关在目的地EP对分组进行调度的信
息。例如,在所选择的实现中,EP可以将表示等待分组的标记组织起来,
形成代表不同连接、优先级、或业务质量的队列。
在上述将分组从入口传送到出口的操作步骤(e)中,IP可以接收多
个到达标志,它们表示来自多个EP的分组请求,在一实现中,IP可以
根据预定的请求速率来满足请求,并拒绝超出预定请求速率的请求。如果
EP的请求被拒绝,EP通常在预定时间之后重复该请求。
在一实现中,分组路径的信息速率低于所有出口的最大速率之和,但
高于所有出口的平均速率之和,在请求路径上EP所允许的分组请求速率
可限制在一预定水平,它不超出分组路径的信息速率。例如,图5示出了
所有出口的最大速率之和为N*R,但分组路径速率只为C*N*R的交换
机。在一个应用中,对于平均链路业务速率基本上小于最大速率的交换机
来说,指定分组路径具有这样降低的速率,是一种节约方式。以下给出限
制来自EP的请求速率以避免按高于分组路径所允许的速率请求分组的机
制的一种实施方式。
本发明的有效分组交换可借助由时钟发生器(918)集中产生的时钟
(CELLCLK)信号同步成单元周期(cell cycle),单元周期是指这样一个
时间段,在此期间多个IP(902…904)中每一个IP都不会有超过一个分组
到达,在每个单元周期里,每个IP只产生一个到达标记,而且多个
EP(906…908)中的每EP都只产生一个请求。进一步说,在每个单元周
期,每个EP在输出链路上发送一个分组的最大值。每个EP具有一个
START值寄存器(910…914)和一个SOURCE计数器(912…916)。于是,
图9(标号900)示出了根据本发明利用预定同步仲裁方案的具有N个IP
和N个EP(ID标号为0至N-1)的交换机的一种实现。在有效分组交换
同步成单元周期时,交换机可以利用预定的仲裁方案,它在每个单元周期
里把每个IP接受的请求数限制为与该IP有关的一个预先选择的整数K,
而把所有IP接受的请求总数限制为预先选择的整数M,其中M≤C*N。
预定极限K对于不同的IP可以不相同。在下述实施方案中,仲裁方案是
“分布式”的,含义是由所有IP和EP并行完成它,而不是由集中仲裁
控制单元来执行。
预定的同步仲裁方案利用两个定时信号:
A)单元周期定时信号CELLCLK,和
B)仲裁周期定时信号CLK,其中对于每个CELLCLK周期,有至
少N+1个CLK周期,其中N是交换机中出口的数目;
还利用三个控制信号:
A)从EP到IP的REQUEST信号,其中REQUEST信号包括一个
VALID位和一个入口标识号,当EP正在请求一分组时VALID为“真”
而入口标识号表示正向其请求分组的IP;
B)从IP到EP的ACKNOWLEDGE位,和
C)“线或”同步(SYNC)位,用于同步EP。如果有任何EP确认它,
则该“线或”SYNC位为“真”,否则为“假”。
在典型的实现中,在请求总线上发送REQUEST信号,在将所有IP
和EP相连的确认线路上发送ACKNOWLEDGE位,而在连接所有EP
的“线或”SYNC线路上发送SYNC位。
在图10(标号1000)的流程图中示出的仲裁方法通常包括步骤:
1.在每个单元周期开始时,所有EP都包含有相同的“START”值。
初始时所有EP将它们的START值设置为零(1002)。按如下方式获得后
续的START值。START值指明EP开始仲裁。从ID号等于START值
的出口开始,EP依次在请求路径上发出REQUEST,对于N个时钟周
期,每个时钟周期一个REQUEST(1004)。REQUEST包括:a)VALID
位,当EP在当前单元周期上有REQUEST时为“真”,否则为“假”;
和b )当VALID为“真”时,包含所请求单元的IP的号。
2.每个REQUEST之后的预定数目的时钟周期(通常为1-2个时钟
周期),所寻址到的IP驱动ACKNOWLEDGE位表示“Accept”或
“Reject”(1006)。如果IP在当前单元周期里已经接收了K个
REQUEST(K是一预定的整数值),或任何IP已在确认通路上接受了M
个REQUEST(M为小于N的预选值,N是入口数),则
ACKNOWLEDGE为“Reject”。否则,ACKNOWLEDGE位为
“Accept”。发出REQUEST的EP接收ACKNOWLEDGE位。
3.所有EP跟踪当前发出REQUEST的EP号,每一时钟周期对该
“请求EP”的值进行增量(模为N)。在每个单元周期第一次REQUEST
遭到拒绝时,所有EP用被拒绝的EP号装载START值。如果没有
REQUEST被拒绝,START值不变(1008)。
4(任选)为了检测错误和使新的EP同步,还有一个“线或”SYNC
信号。当SOURCE计算器值为零时该SYNC信号由所有的EP断言
(1010)。于是,所有的EP同步,在每个单元周期里只在一个时钟周期上
断言SYNC信号。当在一个以上周期里断言SYNC信号,就存在一个同
步错误。当EP检测到在一单元周期里在多于一个时钟周期上断言SYNC
信号,就将EP的START值设置成零,并且在单元周期的其它时钟周期
里该EP断言SYNC信号。
在仲裁处理结束时,每个EP已确定是否EP的REQUEST将被满
足,以及在下一个单元周期里哪一个EP将开始仲裁处理。由于在
REQUEST信号后ACKNOWLEDGE位至少滞后一个时钟周期,所以整
个仲裁处理至少需要N+1个周期。
交换机通常包括具有唯一标识号ID的N个入口和N个出口,以及从
出口到入口的请求路径和从入口到出口的确认线路。预定的仲裁方案包括
步骤:A)具有当前REQUEST的多个出口的每一个在请求路径上发出
REQUEST,其中REQUEST包括一个值为“真”或“假”的VALID
位以及指明入口ID的QPORT号,其中多个出口的REQUEST以预定顺
序每次发出一个;和B)在每个VALID位为真的REQUEST之后,通过
具有和REQUEST中QPORT匹配的ID的入口以ACKNOWLEDGE位
应答,或者为Accept或者为Reject这至少取决于该入口已经接受了K个
REQUEST和在当前单元周期是否已经接收了M个REQUEST(K和M
是预定的整数)
N个出口通常具有从0到N-1的唯一的仲裁序列号,并且在步骤A
按仲裁序列号的循环顺序发出REQUEST信号,根据来自出口的
REQUEST是否被拒绝,在当前单元周期中发出被拒绝的REQUEST的
第一出口被用作下一单元周期的新的起始点。
通常,所有出口都包含START寄存器和SOURCE计数器,并且预
定的仲裁方案包括步骤:A)每个出口都维持一个SOURCE计数器,指
明当前发出REQUEST的出口的仲裁序列号,并且每次当出口的
SOURCE计数器等于一预定值时断言一SYNC信号,和B)每个出口监
视SYNC信号,当在一单元周期中在一个以上时钟周期里断言了SYNC
信号,出口复位START值到一预选值,其中该预选值对于所有出口都相
同。
在图11(标号1100)中,示出了具有N个入口(IP)、N个出口(EP)(标
号为0至N-1)和单元周期定时信号CELLCLK以及定时信号CLK的
交换机。通常每个CELLCLK周期至少具有N+1个CLK周期,将
CELLCLK信号和CLK信号提供给所述交换机的所有入口和所有出口,
并且所有出口都包含一个CLOCK计数器。在该配置中,预定仲裁方案
包括步骤:A)将所有出口的START值初始化成零(1102)并且在下一
CELLCLK周期的开始前进到步骤B;B)在每个出口(EP)将CLOCK
计数器初始化成零(1104)并且在每个EP将START值复制到SOURCE计
数器并前进到步骤H(1116);C)当最后一个REQUEST中的VALID位
为真时(1106)前进到步骤D(1108),否则前进到步骤F(1112);D)当一入
口号与最后一个REQUEST中的QPORT号匹配时,该入口在确认通路
上以ACKNOWLEDGE位应答,如果从当前单元周期开始该IP已经接
受了K个REQUEST或M个REQUEST已由任何入口接受(其中每个IP
所接受的REQUEST数受限于与该IP相关的一个预定整数,并且由多个
IP接受的REQUEST总数受限于一预定整数M),则ACKNOWLEDGE
位为Reject,否则为Accept;E)发出最后一个REQUEST的EP俘获
ACKNOWLEDGE位作为仲裁的最终结果(1110);F)所有EP通过俘获
ACKNOWLEDGE位同步START值(1112),并且当ACKNOWLEDGE
在当前单元周期为第一个Reject时,把START值设置成当前SOURCE
计数器值;G)当CLOCK计数器值低于N时(1114)继续到步骤
H(1116),否则继续到步骤J(1120);H)IP号与当前SOURCE计数器值
匹配的IP发送包括VALID位和QPORT号的REQUEST信号(1116),
当EP正在请求一分组时VALID位为真,而QPORT号指明向其请求分
组的IP;I)对所有EP中的CLOCK计数器值和SOURCE计数器值增
量(1118),当新的SOURCE计数器值等于N时,将其复位为零以提供模
数为N的计数器,并在下一个CLK周期开始时返回步骤C(1106);和J)
在下一个CELLCLK周期开始时(1120),EP返回到步骤B(1104)。
根据选择,仲裁方案可以包括对错误进行恢复的机制,下列步骤加在
步骤I,在下一CLK周期开始时返回步骤C之前,当EP的SOURCE
计数器值等于零时EP断言一个“线或”SYNC信号并且EP在每个时钟
周期监视SYNC信号,当在当前单元周期的一个以上时钟周期里SYNC
信号被断言,则将START值设置成零,并且任选地在当前单元周期的其
它时钟周期里断言SYNC信号。
于是,如图12(标号1200)所示,有效地将多个分组从多个入口交换
到多个出口的交换方法包括步骤:A)将分组存储在存储器中(1202)中;
B)对于每个分组向该分组的目的地出口发送到达信息(1204);C)在每
个目的地出口的控制器存储器中存储到达信息(1206);D)每个目的地出
口的控制器根据预定方案向分组存储器请求分组(1208);和E)分组存储
器向目的地出口发送所请求的分组(1210)。
通常,入口以至多为预定传输速率的速率发送被请求的分组,并且在
需要的传输速率大于预定的传输速率时对被请求的分组的发送失败,并且
在分组发送失败时,目的地出口再次请求被发送失败的分组。
在图12(标号1200)所示的方法的优选实施例中,多个入口和多个出
口通过速率受限交换机构相连,该机构所具有的速率低于所有出口的最大
速率之和,但大于所有出口的平均速率之和。
图13(标号1300)是具有现有技术中典型的存储器共享体系结构中分
组流的一个设备的方框图。在存储器共享交换机中,所有到达IP的分组
被传送到中央分组存储器中(1302),并且所要传递到EP的分组都来自于
中央分组存储器。所达到的性能类似于输出排队交换机,但是为了支持速
率R的N个输入链路和N个输出链路,必须将分组存储器设计成以非常
高的速率,具体说为2*N*R访问分组。
图14(标号1400)示出了根据本发明的一个设备的实施例,其中分组
存储在中央共享存储器中。在本发明的存储器共享交换机中,所有到达
IP(1402…1404)的分组被传送到中央分组存储器(1406),并且传递到
EP(1408…1410)的所有分组都来自于中央分组存储器(1406)。多个
EP(1408…1410)中的每个EP与相应的按上述方式使用的标记存储器
(1412…1414)相连。再有,N是指明交换机中端口数的预选整数。必须
将分组存储器设计成以速率(1+C)*N*R访问分组,其中:0<C≤1,
且选择的C应足够大能支持整个交换机的平均吞吐量需求。
在面向连接的网络中,即分组沿预先安排的路由流动的网络中,可以
使用小的对于每个连接都包含一项的连接表来代替对于每个连接都包含
许多标记的标记存储器来实现输出请求分组交换。图15(标号1500)示出
了根据本发明实施输出请求分组交换的一个方法的实施例,对于每个有效
连接都至少存储一个标记。该方法包括步骤:首先,EP将所有连接的
ACTIVE位初始化成假(1502),通过入口接收的到达IP的分组被存储在
存储器的队列中(1504),其中每个队列相应于一个单独的连接;然后,对
于每个到达IP的分组,IP判断是否分组已到达空队列(1506),并且当分
组到达的是空队列,IP产生一个具有连接标识符代码的到达标记
(1508),并且根据选择可以包括调度信息。当产生了到达标记,IP对于
每个分组都将该到达标记送到目的地EP。EP接收到达标记(1510),并
通过设置耦合于EP的连接表中的ACTIVE位来记录该次到达,连接表
对于每个通过EP的连接都有一ACTIVE位。EP从连接表中设置了
ACTIVE位的连接中根据预定的方案选择一连接,清除该选定连接的
ACTIVE位,并将包含至少一个连接标识符的请求送回发送该到达标记
的IP(1512)。当接收到该请求时,IP使用连接标识符确定分组队列,并
使下一分组出队列,用MORE位(如果队列中还有分组MORE位为真,
否则为假)标记该分组,并将其发送到请求EP(1514)。然后,EP接收请
求的分组,并从相关的出口将其发送出去(1516)。当分组中的MORE位
为真时(1518),EP还为该连接设置ACTIVE位(1520)。
如图15所示的操作例子,假设对于连接“C”将入口队列初始化成
空,然后两个分组在快速接续中到达并被放置到该队列中。由于第一个分
组到达一空队列,所以将一到达标记对于该连接发送到EP,使EP对于
该连接将ACTIVE位设置成真。EP使用预定方案周期性地选择
ACTIVE位为真的连接。当EP选择连接C,则对于该连接C将一请求
发送到IP。然后,IP使两个分组中的第一个出队列,并将其送回到EP。
把和分组一起发送的MORE位设置成真,由于在队列中还有其它分组。
以不同的方式处理第二个分组。由于第二个分组到达的不是空队列,
所以没有向EP发送到达标记。然而,对于连接C该ACTIVE位保持为
真,所以EP最终再次选择连接C。EP然后向IP请求连接C的下一个
分组。由于队列中没有分组了,所以IP返回第二分组以及MORE=“假”。
MORE位为假使EP将ACTIVE位设置为假,所以EP不再请求分组。
为了获得更高的吞吐量,可将处理过程按流水线方式执行。流水线指
的是将顺序处理分解成若干子处理,而每一个子处理在一特定的专用模块
中执行,多个模块对于不同数据元素(在这种情况下,是对于不同分组)并
发操作的技术。
对于图15所示的操作,某个连接的多个分组等待被一EP所请求,
该EP必须请求一分组,然后在请求下一分组之前等待该分组的到达。对
于流水线系统中较高速率的操作,可以对该过程进行修改,对于出口给出
关于等待被请求的分组的数目的信息。例如,这可以通过保持入口的每个
连接上到达的分组的顺序计数,只要出口请求分组,就将有关该连接的最
新顺序计数标记在该分组上来实现。出口还可以对其已发出的分组请求的
每个连接保持一顺序计数。于是出口可以对其顺序计数与到达分组中的计
数进行比较以确定在入口队列中是否还有等待的分组。通过这种改进,在
流水线系统中,EP可以按快速接续的方式向相同的连接请求多个分组,而
不必在请求下一个分组之前等待每个被请求的分组到达EP。
如图16(标号1600)所示,本发明的方法可按如下方式实现。对于每
个通过IP的连接,有一个相关的模顺序计数值ARRIVSEQ,通常为1
至4位长,其中ARRIVSEQ的模为S,并且“#”表示模S加法。对于每
个连接ARRIVSEQ值初始被设置成一任意值。此外,还有一个对于每个
通过EP的连接都有一项的连接表耦合于EP,该项至少包括:ACTIVE
位、MANY位、REQSEQ值和LASTSEQ值,其中REQSEQ和
LASTSEQ值具有与ARRIVSEQ相同的位数。对于每个连接ACTIVE
位和MANY位被初始化假(1602)。在下述描述中,“‖”表示布尔“或”
运算符。借助下列步骤将分组从入口交换到出口:
A)对于每个由IP接收的分组,该IP在存储器的分组队列中存储分
组(1604),其中每个队列对应于一个单独的连接。对于该连接IP还将
ARRIVSEQ值更新为ARRIVSEQ#1,即对ARRIVSEQ进行模S加
“1”;
B)对于每个到达IP的分组,IP判断分组是否到达一空队列
(1606),并且在分组已到达一空队列时,前进到步骤C(1608),否则前进
到步骤E(1612);
C)IP产生一个具有连接标识符代码的到达标记(1608),并且可以根
据选择包括调度信息,并将该到达标记送到该分组的目的地EP。IP对
于该连接将ARRIVSEQ值设置成预选值SEQSTART#1;
D)EP接收到达标记并通过在该连接的连接表项中将ACTIVE位设
置成真、将REQSEQ设置成SEQSTART、LASTSEQ设置成
SEQSTART#1来记录到达标记的到达(1610);
E)EP使用预定方案从连接表中具有ACTIVE位为真的连接中选择
一连接(1612)。对于所选连接,EP向发送该到达标记的IP发送至少包含
连接标识符的请求。EP还对于所选连接将REQSEQ值更新为
REQSEQ#1,并将REQSEQ的新值与所选连接的LASTSEQ的值比较。
当它们相等且该连接的MANY位为假时,EP清除该连接的ACTIVE位
(1616);
F)当接收到请求时,IP使用连接标识符确定分组队列并从队列中
去掉下一个分组(1618)。IP将该连接的ARRIVSEQ值附加于该分组,当
分组队列中分组数大于或等于S时,将分组中的MANY位置为真,否则
置为假。然后IP向请求EP发送分组;
G)EP接收请求的分组,并将分组中ARRIVSEQ标签复制到连接表
中该连接的LASTSEQ值上,把分组中MANY位复制到连接表中该连接
的MANY位上(1620)。当对于该连接LASTSEQ≠REQSEQ‖MANY=
真,则EP将该连接的ACTIVE位设置为真(1624)。
在上述过程中,ARRIVSEQ、REQSEQ、LASTSEQ可以看成是模
S的分组顺序号。IP的ARRIVSEQ值是到达的最后一个分组的顺序号。
发送给EP的每个分组伴随一个最新的ARRIVSEQ值,它被存储在EP
中作为LASTSEQ。LASTSEQ告诉EP其将做出的最后一个请求的顺序
号。EP跟踪REQSEQ中当前请求的顺序号。当REQSEQ追上
LASTSEQ,EP停止请求分组。由于REQSEQ和LASTSEQ是模计数,所
以尽管在IP的队列中有很多分组,它们也能相等,但在这种情况下,
MANY位使EP不停止。
如图16所示的操作例子,让SEQSTART的值为零,而让模S为4。
假设将连接“C”的入口队列初始化为空,然后六个分组以快速接续方
式到达并被放在该队列中。由于第一个分组到达的是空队列,所以将
ARRIVSEQ设置成SEQSTART#1=0+1 mod4=1。此外,将到达标记发
送给连接C的EP,使EP对于该连接设置REQSEQ=0、LASTSEQ=1
和ACTIVE=真。
以后的分组到达使IP上的ARRIVSEQ值重复增加至6mod 4=2。
EP使用预定方案周期地选择ACTIVE位为真的连接。EP首先选择连接
C,将REQSEQ增量为1,由于现在REQSEQ等于LASTSEQ,对于该连
接将ACTIVE位设置为假。把请求发送给连接C的IP,作为应答IP从
队列中去掉第一个分组,并把它送回到EP。IP用ARRIVSEQ的当前值
2和MANY=真标记该分组,由于队列中剩余的分组数为5,它大于S。当
接收到该分组,EP对于该连接设置LASTSEQ=ARRIVSEQ=2和
MANY=真。由于LASTSEQ的新值不等于REQSEQ,对于该连接
ACTIVE位也被设置成真。
后五个分组到达的不是空队列,于是不会引起任何到达标记发送给
EP。然而,该连接C的ACTIVE位保持为真,所以EP最终再次选择连
接C。EP然后向IP请求连接C的下一个分组,并将REQSEQ更新为
2。由于MANY为真,ACTIVE保持为真。IP发送第二个分组,以及
标记的ARRIVSEQ=2和MANY=真。
下一次EP选择连接C,将REQSEQ更新为3,由于LASTSEQ=2不
等于REQSEQ=3,所以ACTIVE位保持为真。当接收到EP的请求,IP
发送第三个分组,这次标记的ARRIVSEQ=2和MANY=假,由于少于S
个分组现在保留在队列中。
类似地,在下两次EP选择连接C,并请求分组,将REQSEQ增量
为4 mod 4=0,然后为1,并且ACTIVE保持为真。由IP发送的分组(它
是第四和第五个分组)仍标记为ARRIVSEQ=2和MANY=假。
下一次EP选择连接C,REQSEQ增量为2。由于现在REQSEQ等
于LASTSEQ并且MANY=假,所以将ACTIVE位设置成假。请求第六
个和最后一个分组,并由IP发送,仍标记为ARRIVSEQ=2和MANY=
假。由于对于该连接ACTIVE位现在为假,EP不再向该连接请求分组。
对于最高速度操作,把模S选择成大于在步骤D请求分组和在步骤F
接收到分组之间延时中EP可能请求的分组数。
以上描述的模顺序计数器仅是向EP给出关于队列中还剩多少未被请
求的分组的信息的一种方法。更一般地说,本发明的方法如下:
初始,对于通过IP的每个连接,IP具有设置成第一预定启动值的队
列状态信息,并且对于每个通过EP的连接,在耦合于EP的连接表中有
一表项,至少包含初始设置为假的ACTIVE指示符、初始设置为第二预
定启动值的请求状态信息、和初始设置为第一预定启动值的队列状态信
息。到达入口的分组被存储在分组队列中,其中每个队列对应于一单独的
连接。借助下列步骤将分组从入口交换到出口:
A)对于每个到达IP的分组,IP更新相关连接的队列状态信息,并确
定分组是否已到达空队列。当分组到达的是空队列,IP产生具有连接标识
符代码的到达标记,并且根据选择,可以包括调度信息。当产生了到达标
记时,IP向该分组的目的地出口EP发送该到达标记,并继续到步骤B,否
则继续到步骤C;
B)EP接收到达标记并且通过将该连接的ACTIVE指示符设置为真
来记录到达标记的到达。
C)EP使用预定方案从连接表中ACTIVE指示符为真的连接中选择
一连接,并向发送到达标记的IP发回至少包含连接标识符的请求。EP还
更新该连接的请求状态信息。使用队列状态信息和请求状态信息中至少一
个,EP判断分组队列中是否有未被EP请求的分组,并且当分组队列中有
未被EP请求的分组时,EP将连接表中ACTIVE指示符设置成假;
D)在接收到该请求时,IP使用连接标识符确定分组队列,从队列中
去掉下一个分组,更新队列状态信息,用队列状态信息标记分组,EP将使
用该队列状态信息确定在分组队列中是否还有未被请求的分组,并向发
出请求的EP发送分组;和
E)EP接收所请求的分组,并存储队列状态信息。如果用于所选连接
的ACTIVE指示符为假,EP使用队列状态信息和请求状态信息中至少一
个确定分组队列中是否还有未被EP请求的分组,并且如果分组队列中还
有未被EP请求的分组,EP将连接表中的ACTIVE指示符设置为真。
在另一实施例中,除了(或替代)在连接表中设置ACTIVE指示符,通
常在排队方案中,通过存储到达标记在EP记录到达消息。在此方案中,EP
对于每个连接至多存储一个标记。例如,如图17(标号1700)所示,按下列
步骤操作一实施例。首先,将通过入口到达IP而被接收的分组存储在存
储器的队列中(1702),其中每个队列对应于一个单独的连接。对于每个到
达IP的分组,IP确定分组是否到达空队列(1704),如果分组到达的是空队
列,IP产生具有连接标识符代码的到达标记(1706),并且根据选择还可以
包括调度信息,当产生了到达标记时,IP将该到达标记发送给该分组的目
的地EP。当产生了到达标记时,EP接收和存储该到达标记(1708)。EP
根据预定方案(例如,以先进先出顺序去掉标记)选择存储的到达标记
(1710)并把该到达标记送回发送其的IP。当接收到请求时,IP使用连接标
识符确定分组队列(1712),并使下一个分组出队列,用MORE位标记分
组并将分组送到发出请求的EP,如果在队列中还有分组MORE位为真,
否则为假。EP接收所请求的分组(1714),并将其从相关的出口发送出去
(1716)。当分组中MORE位为真(1716),EP产生相应于等待的下一个分
组的到达标记并将该到达标记与其它到达标记一起存储。
在一优选实施例中,通过向出口给出等待被请求的分组数的信息来
修改上述方案,以获得更高速的流水线操作。图18(1800)所示方案可由以
下步骤实施。对于每个通过IP的连接,都有一个通常为1至4位长的相
关的模顺序计数值ARRIVSEQ,其中ARRIVSEQ的模是S,而#表示模S
加法。对于每个连接ARRIVSEQ的初始值被设置成一任意值(1802)。此
外,还有一个连接表耦合于EP,表中对于每个通过EP的连接都有一表项,
至少包含ACTIVE位、MANY位、REQSEQ值和LASTSEQ值,其中
REQSEQ和LASTSEQ值的位数与ARRIVSEQ相同。对于每个连接将
ACTIVE位和MANY位初始设置成假。借助以下步骤将分组从入口交换
到出口:
A)首先,将通过一入口到达IP而被接收的分组存储在存储器内队列
中(1804),其中每个队列对应于一个单独的连接,并且IP更新与连接相关
的ARRIVSEQ值为ARRIVSEQ#1。
B)对于每个到达IP的分组,IP确定分组是否到达一空队列(1806),
如果分组到达一空队列,前进至步骤C(1808),否则前进至步骤E(1812)。
C)IP产生具有连接标识符代码的到达标记(1808)(根据选择还可以包
括调度信息),并将该到达标记发送给该分组的目的地EP。IP将该连接
的ARRIVSEQ值设置为一预选值SEQSTART#1。
D)EP接收和存储到达标记(1810),对于该连接在连接表项中设置
ACTIVE位为真,REQSEQ为SEQSTART,LASTSEQ为
SEQSTART#1。
E)EP使用预定方案选择所存储的到达标记(1812)。对于所选连接,
EP向发出到达标记的IP发送至少包括连接标识符的请求。EP还对于所
选连接将REQSEQ值更新为REQSEQ#1,并对于所选连接比较
REQSEQ的新值与LASTSEQ的值。当REQSEQ≠LASTSEQ或对于
该连接MANY位为真(1814),EP产生相应于等待的下一分组的到达标记
(1818),并存储该到达标记与其它到达标记。否则,EP将该连接的
ACTIVE位设置为假(1816)。
F)当接收到该请求时,IP使用连接标识符确定分组队列,并使下一
分组出队列(1820)。IP用该连接的ARRIVSEQ值标记该分组,当分组队
列中分组数大于或等于S,将分组中MANY位设置为真,否则为假。然后
IP向发出请求的EP发送该分组。
G)EP接收所请求的分组,将分组中ARRIVSEQ标记复制到连接表
中该连接的LASTSEQ值,并且将分组中MANY位复制到连接表中该连
接的MANY位(1822)。当ACTIVE为假并且(LASTSEQ≠REQSEQ‖
MANY=真)(1824),继续到步骤H(1826),否则结束。
H)EP产生相应于等待的下一分组的到达标记(1826),存储该到达标
记与其它到达标记,并将该连接的ACTIVE位设置为真。
图19(标号1900)是根据本发明一设备的实施例。该设备能够在面向
连接的网络中有效地将多个分组从多个入口交换到多个出口。该设备包
括:多个入口(1902…1904)和多个出口(1912…1914),每一个入口具有
一入口存储器(1910…),一入口队列管理器(1908),…和一到达控制器
(1906…),每个出口具有一个连接表(1918…),一个调度器(1916…)和一
出口分组处理器(1920…)。入口存储器(1910…)用于为多个连接的每个连
接存储分组队列。入口队列管理器(1908…)连接于入口存储器(1910…)
并且被用于接收来自输入链路的分组、将分组存储在入口存储器中和更新
与该连接相关的队列状态信息。IP对于每个通过IP的连接都具有相关的
队列状态信息,当从出口调度器(1916…)接收到连接标识符时,IP从入口
存储器的相应队列中检索分组、更新该连接的队列状态信息、向目的地出
口发送该分组以及队列状态信息,EP根据队列状态信息判断分组队列中
是否还有未被EP请求的分组。到达控制器(1906…)与入口队列管理器
(1906…)相连,在分组到达时一连接的队列为空情况下,利用到达控制器
向该分组的目的地出口发送至少包含连接标识符的到达标记。出口
(1912…1914)与入口(1902…1904)相连。连接表(1918…)用于为每个连
接至少存储ACTIVE指示符、请求状态信息和队列状态信息。调度器
(1916…)与连接表(1918…)相连,用于接收入口发送的到达标记,并在连
接表(1918)中将相应的ACTIVE指示符设置为真;根据预定方案选择
ACTIVE指示符已被设置的连接,并且对于每个所选连接,向发送相应到
达标记的入口请求分组,更新请求状态信息,使用队列状态信息和请求状
态信息中至少一个确定分组队列中是否还有未被EP请求的分组,当分组
队列为空时,EP将连接表中ACTIVE指示符设置为假。出口分组处理器
(1920…)与连接表(1918)相连,用于接收由相关调度器(1916…)请求的分
组,存储伴随该分组的队列状态信息,在输出链路上分送该分组,当所选
连接的ACTIVE指示符为假时,使用队列状态信息和请求状态信息中至
少一个确定分组队列中是否还有未被EP请求的分组,如果分组队列中还
有未被EP请求的分组,将连接表(1918…)中的ACTIVE指示符设置为
真。
替代地,如图20(标号2000)所示,有效地将多个分组从多个入口交换
到多个出口的设备包括多个入口(2002、2004…)和多个出口(2012、
2014…),每一入口包括一入口存储器(2010…)、一入口队列管理器
(2008…)和到达控制器(2006…),每一出口包括一连接表(2018…)、标记
存储器(2020…)、调度器(2016…)和一出口分组处理器(2022…)。入口存
储器(2010…)用于存储多个连接中每个连接的分组队列。入口队列管理器
(2008…)和入口存储器(2010)相连用于从输入链路接收分组、将分组存储
在入口存储器(2010…)和更新与连接相关的队列状态信息,IP具有关于每
个通过IP的连接的队列状态信息,当从一出口的调度器(2012…)接收到
一连接标识符,IP从入口存储器(2010)中的相应队列里检索分组,更新该
连接的队列状态信息并向目的地出口(2012、2014…)发送该分组以及队
列状态信息,EP使用该队列状态信息确定分组队列中是否还有未被EP
请求的分组。到达控制器(2006…)与入口队列管理器(2008…)相连,用于
在分组到达时一连接的队列为空的情况下,向该分组的目的地出口发送
至少包含连接标识的到达标记。出口(2012、2014…)还与入口(2002、
2004…)相连。连接表(2018…)用于为每个连接至少存储ACTIVE指示
符、请求状态信息和队列状态信息。标识存储器(2020…)用于为每个连接
至多存储一个标记。调度器(2016…)与连接表(2018…)和标记存储器
(2020…)相耦合,用于接收由入口发送的到达标记,在标记存储器
(2020…)中存储到达标记,在连接表(2018…)中将相应的ACTIVE指示
符设置为真,根据预定方案选择存储的到达标记,对于每个所选的到达标
记,向发送到达标记的入口请求分组,更新请求状态信息,使用队列状态
信息和请求状态信息中至少一个确定分组队列中是否还有未被EP请求的
分组,当分组队列为空时,EP将连接表(2018…)中的ACTIVE指示符设
置为假。出口分组处理器(2022…)与连接表(2018…)和标记存储器
(2020…)相耦合,用于接收由相应的调度器请求的分组,存储伴随分组的
队列状态信息并在输出链路上分送分组,当对于所选连接ACTIVE指示
符为假,利用队列状态信息和请求状态信息中至少一个确定分组队列中
是否还有未被EP请求的分组,如果分组队列中还有未被EP请求的分组,
就产生一个相应于等待的下一分组的到达标记,将该到达标记存储在标
记存储器(2020…)中,将连接表(2018…)中的ACTIVE指示符设置为
真。
图21(标号2100)为一方框图,示出了根据本发明一实施例的面向连
接网络中沿到达路径、请求路径和分组路径的控制流和分组流。分组到达
IP(2102),被存储在相应于各个连接的队列(2104)中(a)。仅在分组到达一
空队列时IP发送到达标记(b)。通常,到达标记包含连接标识符代码,而
不是存储分组的存储器地址。EP(2106)将标记存储在连接表(2108)中。每
个EP选择标记并通过请求路径向IP发送它(d)。当IP通过请求路径接
收到一标记,IP使用标记中的连接标识符代码确定分组队列(其中存储了
分组),并使下一个分组出队列。IP用队列中等待的其它分组数标记该分
组,然后通过EP向输出链路在分组路径上发送分组(e)。
尽管以上描述了解释性实施例,很明显本领域技术人员在不背离本
发明的前提下可进行各种修改和变型。因此,如权利要求所限定的本发明
旨在包括不背离其精神和范围内的所有修改和变型。