ATM流量调节 技术范围
本发明涉及用于处理从一个结点发送数据信元的方法和设备,其中信元属于不同信道并且从一个站点以对应于该信道的特殊预定速率被发送。
背景及现有技术
在一个异步网络内对呼叫或消息的发送过程中,每个呼叫或消息被分成在网络中向前传递的短信元或段,于是每个信元属于一特定的呼叫或消息或者一般说来属于一特定的逻辑连接。这些连接在进行一次呼叫或者请求通过网络发送一个消息,例如一个数字文件时,被建立。依据该发送的用户或请求者,每个逻辑连接被指定一个预定的发送速率,该速率是网络中所有结点发送信元速率总和的一部分,这一部分地大小暗示着用户或请求者的不同费用。于是,存在一个从一站点向网络以这些速率发送数据信元从而这些预定速率不会被超过的问题。在网络内部的结点也存在着同样的问题,这里不同逻辑连接的发送速率可能由于信元会经过不同路径,缓冲区会太满而一些信元于是被丢弃等事实而不平衡。
在已公布的欧洲专利申请EP-A1 0 609 114中,一种在ATM网络中用于传送信元的方法被公开。这个方法由一些步骤组成,包括其中有一步骤信元由代表一已知时间分辨率的一个最小时间间隔分开。在另一个步骤中信元被代表个别用户的最大允许发送速率的一个最小时间间隔分开。时间间隔由不同的定时器划分。对第一种分隔,信元被集中在一些信元文件或信元列表中,这些文件或列表被连续发送。在另一种分隔中,具有不同允许最大发送速率的信元被以各自发送速率均匀地或在文件或列表间等距离地分布在文件或列表中。
在已发表的国际专利申请WO-A1 94/14266中,一个用于在一ATM网络各结点间控制信元流量的系统被予以公开。这个系统的配置有输入和输出缓冲区的交换机,可以通过流量调节,在所寻址的输出缓冲区过载时控制来自输入缓冲区的信元流量。在一个实施例中,每个输出缓冲区有一个设备检测它的填充级,检测值被连续报告用于控制流量调节。在这里流量调节的目的主要是避免输出缓冲区过载或者溢出。
在网络中应用流量调节的其它系统在美国专利US-A5,280,470和已发表的欧洲专利申请EP-A2 0 573 739中予以公开。
概述
本发明的一个目标是提供一种方法和设备,用于处理从一被考虑点如一个站点或结点,对属于不同逻辑连接的信元的发送,这里所有信元都以一预定速率发送,该处理方法和设备只需要简单的有效地使用存储区的硬件。
特殊地,本发明的目标是提供一种处理从一站点或结点发送的信元的方法和设备,其中为属于不同逻辑连接的信元所设立的预定速率没有被超过,而且信元被同时从站点以最高可能总速率被发送。
特殊地,本发明的进一步目标是提供用于处理从一站点或结点发送信元的方法或设备,其中在发送信元过程中,当为属于不同逻辑连接的信元设立的预定速率的总和超过这个站点或结点的总发送速率时,或换一种等效的说法,超出总的发送带宽时,所有预定速率以公平的方式被降低,从而没有一个连接比其它连接更受益,例如没有一个连接在其它连接没被禁止时被禁止,尤其是具有相同预定速率的所有连接被平等地对待,它们中的任一个都不会被给予多于其它的发送时间。
特殊地,本发明的更进一步目标是提供用于处理从一站点或结点发送信元的方法或设备,其中属于不同逻辑连接或来自不同源的信元以不同的速率到达站点,而且对于某些连接在某些时段没有信元到达,发送容量基于这些连接的瞬间需要对它们进行分配,从而在那些时段,当有信元准备好要发送时,这条连接基于它的预定速率被给予总发送带宽属于它的一份,而且在其它情形,当没有信元时,这个带宽被用于发送来自其它连接的信元,这里当该连接有准备好发送的信元时,从它向外的发送则立即被启动。
本发明的另一个目标是提供从一个站点或结点发送信元的方法和设备,其中属于不同逻辑连接的信元的发送速率可以被设置具有高分辨率,并且每个连接独立于所有其它连接。
本发明的进一步目标是提供从一个站点或结点发送信元的方法和设备,其中属于一逻辑连接的信元的发送速率可以在发送信元的过程中被改变。
本发明的更进一步目标是提供从一个站点或结点发送信元的方法和设备,其中处理属于不同逻辑连接的信元发送的总时间在原理上将不会增加,当建立的逻辑连接的数目增加,而这时本方法和设备中所需的额外硬件的数量仅仅适中时,本方法和设备被扩展以处理多于从前的逻辑连接。
本发明的另一个目标是提供处理从一个站点或结点发送属于不同逻辑连接的信元的方法和设备,对于这种方法和设备,所有属于某一连接的信元被以一预定速率为这个连接发送,该处理方法或设备使得信元从站点或结点被均匀送出。
因此在一个网络的站点或终端,数据信元从终端被发送,信元被分配属于不同的逻辑连接,这些连接来自不同的逻辑或物理源。假定每个源和由此的连接需要一特定发送速率,该速率不可以被超过但可以被改变。于是对于任意几个连续时隙安排一个队列,由一个指针指向第一个或当前的队列。时隙队列顺序地包含那些要发送数据信元的连接的标识,或者在一些特殊情况下它们甚至包含信元本身。这个队列的第一个位置表明其数据信元将以最高优先级别被发送的连接。其它位置表明依降序具有较低优先级别的连接。于是在时隙队列中由指针指向的第一个标识所对应的逻辑连接的第一个或下一个数据信元从站点被发送,而同一连接的标识被加到在队列序贯顺序中距被考虑队列有一距离的另一队列中,该距离根据被发送信元所属的连接的发送速率计算出来。这之后第一个队列的剩余部分被转移到下一个队列中并放在下个队列所有项的前面。于是第一个队列为空,指针移动指向下一个队列。
一般说来,数据段或信元被从一个站点发出,其中每个数据段最好具有相同的长度。数据被假定为从各个不同的逻辑和/或物理源到达站点,或者被假定为属于一些逻辑连接。假定每个源对于来自该源所收到数据的数据段要求或者已被指定一特定发送速率,其中对于这些数据段该发送速率不可以被超过。这些数据段从站点被一次一个,连续地尤其是周期性地被发送。
对于从被考虑的当前时刻开始的每个连续时刻,以为之提供的特殊存储方式安排了一个逻辑或物理队列,其中第一个队列是当前时刻考虑的下一个或目前的一个,第二个队列是紧接着第一个的队列,等等。每个队列顺序地包含将为之而发送数据段的那些源或连接的标识,或者它可能包含数据段本身或在真正的段被存储在其它一些存储设备里的情形下包含数据段的地址。这种队列的第一个位置直接地,或当它分别包含数据段或数据段地址时,间接地表明将为之以最高的优先级别发送数据段的源或连接,而接下来的高一些的位置表明依降序具有较低优先级别的源。
来自第一个队列中所指的第一个源的第一个或下一个数据段,或者在第一个队列中的第一个数据段或被指明为第一的数据段被发送,然后第一个队列中的其余部分保持着它内部队列项目的连接顺序被转移到下一个队列并放在下个队列中可能已有的所有项目的前面。然后第一个队列被删除,其它队列被另行排序或移动,于是从前的第二个队列,下一个之后的队列,现在将成为第一个,如此往复维持队列的顺序。
最好只为一预定数目的连续时刻安排队列,从而在余下队列被重新排序或移动之后,最后的一个队列被加到队列集合中,其中该最后队列为空而且以循环方式对应于删掉的以前的第一个队列。
同时可能分配一个输出缓冲存储区,在这种情况下,当一个数据段要被发送时,该数据段或其指示被放到输出缓冲区内,然后它从站点被真正发送出去,在这个操作过程中,它或得到的它的指示被从输出缓冲区恢复删除。
第一个队列为空从而没有数据段被发送可能会发生。显而易见地,从随后的队列中可以发送一个数据段,但这将破坏为信道设定的发送速率不应被超过这一条件,如在后面将会出现的。而当第一个队列为空,一个特殊的数据段或它的指示将被放在输出缓冲区内,这个特殊的数据段具有一种结构或是某一类型,从而能很容易被识别出而不会从站点被发送。
在站点发送最好被周期地,在均匀分布的等长的物理时隙内完成,于是数据段的发送由顺序地存储于或被标识于输出缓冲区内的段完成,每个这些周期性重复的时刻发送一个段。在特殊的数据段或它的指示位于应存储数据段或它的指示从而将被发送的输出缓冲区的下一个位置的情况下,在对应的周期时间没有数据段被发送。这对于保证设定的发送速率不被超过是很有必要的。
在紧接删除第一个队列步骤之前或之后,或者在加上一个空的最后队列之后,以下步骤被执行,它通常用来保证流量调节。即相同数据源的一个标识或者来自发送数据段的同一个源的下一个数据段或它的地址被加到另一个队列中,该队列距连续顺序队列中被删除的队列有一距离,其中该距离由数据段所属的源的发送速率确定。在该队列中最好先完成增加。
在一种情况下,其中以前在任何队列中都没有自身标识或数据段或数据段的地址的源或连接开始被激活,即它得到至少一个要从站点被发送出去的数据段,此时该源或连接的一个标识或者它的数据段或地址的下一个,被最优化地加到队列中,该队列是当前队列的下一个队列。在该队列中最好后完成增加。
于是执行所述步骤的站点包括发送设施,用于每时刻发送一个数据段并在连续时刻发送数据段,包括存储设备,用来存储一个自一被考虑当前时刻始的每个连续时刻的逻辑或物理队列,以及可适应改变的控制或处理设施。存储设施可以被安排只存储一定数目的连续队列,特别地,存储设施可以被安排以循环方式存储队列,于是一存储区域被用于存指向被循环式安排的队列的当前队列的指针。输出缓冲区可被提供用于在数据段或它的指示被真正从站点发送出去之前保存它们。一个特殊的数据段或它的指示可被存在一个存储区域内,该区域被安排为当需要时拷贝特殊数据段或它的指示到输出缓冲区以指明一个空位置,从而发送装置在发现该特殊数据段位于输出缓冲区时,不会从站点发送任何数据段。可为每个源或连接提供一个存储区域用于保存一个距离值或由该源的发送速率确定的数值。
在为队列而设的存储设施包含有源的标识的情况下,用于存储源标识的存储设施被最佳地安排成链接的列表,第一存储设施包括用于存每个队列第一项的区域,第二存储设施包括用于保存每个队列最后一项的区域,第三存储设施包括连续顺序的区域。在第三个存储设施中的每个域具有一个顺序号,它们被用于存储队列中的下一个项目,从而一个域的顺序号指示紧接域中存储项之前的一项。
附图的简单说明
通过描述一个特殊的非限定的实施例,参考附带的图例将对本发明给予详细的解释,其中-图1是网络的概略图-图2是终端的框图-图3是表明由接收功能执行的功能步骤的流程图。-图4说明信元流量调节原理-图5给出逻辑队列和它们的相互连接-图6是说明修改流量调节队列过程的流程图。-图7是说明由发送功能执行的处理步骤的流程图。-图8和9说明流量控制过程的一个例子。-图10概略给出一个在图10和图9流量调节例子中用于发送的先入先出存储区。-图11给出先入先出存储填充级时间图的一个例子。-图12为图11的例子给出发送任务行为的时间图。
详细说明
本发明最佳应用于发送数字或数字化数据的ATM网络中。一个标准ATM信元包含53个数字数据的八位位组或字节。一个数据包可以占据几个连续的信元,但在这里只考虑单独的信元。一般地,一个呼叫,消息或数字数据文件做为一个数据包被发送到网络或通过网络,因此它往往由几个数据信元或通常由大量信元组成。
在图1中概略说明了一个ATM类型的网络,它用于从输入终端3到输出或目的终端5传送数据包。一般地,终端3,5可以既是数据包的发射机又是接收机,且它们可以任意数目存在,在图中只说明一个发送方向、一个输入终端以及一个输出终端。一般地,网络由大量中间交换结点或交换机组成,如由7代表的一个。因此交换单元7和其它相似的交换结点相连,这在图中没予以显示。
当终端站3要求开始向网络发送数据包到目的站5时,它将向网络内的一些交换结点发送相应的一些通知信号或消息。这条消息也包含为要发送的信元请求一特定发送速率的信息。然后通过在网络1内部的交换单元如7之间各种消息或控制信息的交换,在网络内将建立起一条逻辑信号路径。当连接路径被建立起时,可以从网络1向要求该连接的输入终端站3发送一条消息或信号,该消息或信号表明现在连接已被建立并且准备好被用于传送来自输入站3的数据包。
输入或源终端3自己可能从各种源接收消息或呼叫等,例如从另一类型网络9,经由一适合的桥11,以及从一局域计算机网络13,经由与局域网13内通信计算机或服务器17相连的桥15,该局域网可以由各种个人计算机或工作站19,一个主服务器20等组成。高速工作站21也可以通过一个适合于该工作站的适配卡或单元以及桥22连接到输入终端3。输入终端3自己可以是一个通信设备的组成部分,例如,以副板的形式安装在一特定通信服务器中。
在输入终端3内,必须提供特殊的处理,用于从不同的逻辑连接以建立连接时已设定的速率发送信元。当然,正常情况下,将通信的数据源希望数据尽可能快地被传送到目的地。然而,在一个网络中不同的发送速率的费用也不相同。同时,目的方的电路和/或数据存储设施可能没有能力以太高速率接收数据。因此必须有一个以最大速度或速率向网络发送数据的机制,这里允许该速率依不同需要和源而不同,从而依通常设置在这种被讨论的网络中的不同逻辑连接而不同。当一数据源要求在网络中以一恒定比特速率发送数据时,这会引发另一个问题。问题可能在例如对于可移动画面源发出实时数据,如图像数据时发生。一个解决该问题的方案可以是,在提供有一条直达路径到达目的地且没有交换结点和其它业务量引入干扰的情况下,分配给该源一个等于或略高于该源所需速率的最大数据速率。另一个方案是引入一个概念,对某些信道让信息直接通过网络,特别地,属于这样信道的信元总是从站点或结点被直接发送出去。这将增加系统的复杂度。
在对来自输入终端3的信元的发送中,考虑把时间最优地分割成等长的时隙TS,在每个这样的时隙内,从终端发送一个信元或不发送信元。两个连续时隙起始点之间的典型距离应与所考虑的输出链路的最大输出速率数量级相对应,如发送速率为10Mbit/s时,距离值为42.4毫秒。对于速率为155Mbit/s的链路,相应的距离也至少要2.73毫秒。
对于每个逻辑连接定义了一个最大的发送速率,它的倒数值对应于两时隙之间的最小距离,MDTS。在所考虑的网络中,该最小距离可以用多个连续信元间最小可能时间距离表达。如果假定发送速率是10Mbit/s且两连续时隙之间的最小距离为42.4μs,则MDTS等于1等效最大输出速率,即一个42.4μs的时隙时间,这意味着属于被考虑逻辑连接的一个信元应最大程度地在每个时隙内发送,即其它队列的信元不可以被发送。MDTS=2等效于最大发送速率的一半,即5Mbit/s,MDTS=3是最大输出速率的三分之一,即3.3Mbit/s等等。
因为信元速率新的流量调节可能由于ATM网络的不平衡性而被需要,如网络中一些结点有时处于归寂状态,一些信元会丢失,及结点内变化容量的内部缓冲区等等,与输入终端3相同的过程也可以在网络1的内部结点7上执行。否则,一些逻辑连接的信元会被暂时以太高的速率在网络中传递。
在这里所考虑的输入终端3或者内部结点7内的那些过程是接收功能201,见图2,它通过将到达终端或结点的数据分段或分割成合适的数据段如ATM信元来相应地管理消息,文件,包或信元。接收功能201管理每个逻辑连接在信元队列中对信元的存储,每个连接有一个连接标识CEI,这些标识中的每一个也定义一个和所考虑的连接有关的信元队列。进一步地在输入终端或结点中有一个流量调节过程或机制203,它的作用是通知发送功能或信元发生器205要发送哪些信元从而这些信元被以预定速率向前发送。通过向发送功能205提供一个输出连接标识CEI的列表可以完成它。因此,一般地,流量调节过程203不必确切地定义要发送的信元,只要以正确的顺序给出队列号或等效地给出逻辑连接,从而在这种情况下发送功能从列表中取出下一个连接号并发送出为该连接指定的队列中的下一个信元。在下文仍将对输出处理的程序给出详细的说明。
在接收功能201中执行的基本过程由图3的流程图给予说明,它的存储器安排由图2下面的域或模块表示。
因此,接收功能201处理对到达输入终端或结点的数据的分段,以及通过在为当前的逻辑连接指定的队列中存储信元,处理对从数据中获取的信元的存储。于是,首先见图3,在模块301中,期望一个数据包或信元应到达终端或结点的输入寄存器207,它的一个信元或多个信元将被存储在接收寄存器或输入缓冲区209中,见图2。于是这些缓冲区209被一一对应于当前激活或打开的逻辑连接而建立,它们也被称为CEI队列,被相应地排为1,2,3……或者可能具有一些其它的特殊标识。对于每个这样的CEI队列,有寄存器或保存必需数据的存储信元来管理缓冲区,这些缓冲区最好组织成环状。这样在缓冲区内信元的连接号被存在寄存器211中,连接的速率选择器MDTS被存在寄存器213中,指向缓冲区内首先被存储的信元的指针被存在域215中,以及指向缓冲区内可存储新信元的下个位置的指针被存在寄存器217中。在域221中存有激活状态的标记,它指示队列是否是激活的,即是否队列参予流量调节过程。存储在缓冲区209中的信元还没有被从站点或结点发送出去,依据一个实施例真正被发送功能205发送出去的信元往往在发送当时被删除,或者在一种最佳情况下,如下文将给出说明,该信元先从它的CEI队列209中被删除。
当在模块301中确定有一些信息要从站点发送出时,例如一个新包或信元已到达,新信息在模块303中被处理并被指定一个逻辑连接号。可以从包或信元中抽取或恢复一些逻辑连接号或等效的指向或暗示逻辑连接号的数据,例如依据使用的协议从一个ATM信元的信头部分取得。然后可以删除包或信元的信头里的一些比特或如有需要删除整个信头。由收到数据产生的ATM信元的数量也被计算出来。到达数据的逻辑连接号也可以通过其它方法确定,如通过硬件信号。
然后在模块305中确定是否信息所属逻辑连接的输入缓冲区是激活的,即是否它参予流量调节过程并因此存在于TS队列中,在下文说明这个队列。这通过测试存储在存储区域221中的激活状态的标记来完成。如果它是归寂状态,在模块307中,一个信号被送到流量调节功能203告知所考虑的队列现在又变成激活状态,并且域221中的状态标记被改变为表明队列为激活状态。则在模块309中,一个信元被存储在它相关的缓冲区209中由存于域217内的终点位置指针指定的位置,并且之后终点位置指针被循环增1。然后在模块311中确定是否还有信元要存储。如果没有,启动模块301又被执行。但如果有另一个信元要存储,模块3 13被执行,在这里决定是否所考虑的缓冲区有空间存储另一个信元。这通过比较域215和217各自存储的始点和终点位置指针来完成。如果它们相等,缓冲区是满的,则程序可以等待直到通过重复返回到模块3 13,在缓冲区内有空间为止。或者,可以如提议由虚线所画的模块315丢弃该信元。
由流量调节机制203完成的操作在图4中予以说明,它是所考虑输出处理的重要步骤,产生一个要以这种方式发送的数据信元队列,即每个逻辑连接达到以前制定或强制的比特速率,或至少在任何情况下不会超过该速率。如图4所示,有一些队列223,被称为TS队列,每个队列和被考虑当前时刻之后某些时候将真正出现的被考虑连续时隙TS相关联。同样参考图2,存在有限数目的TS队列223,它们被循环地设置,在图4的例子中可假设有256个队列。存在存储区域225中的TS指针指向下一个目前或被考虑的TS时隙队列223。则从一被考虑的起始时刻开始,即域225中的TS指针指向的那一时刻,后面紧接时隙的每一个与一对应TS队列223相关联,于是这些队列被指定给下面的255个连续时隙。一个TS队列223包含一个CEI号的列表,CEI是输入队列209的标识号,TS队列可以或者为空或者包含一个或几个CEI号。在TS队列或列表223中的CEI号各不相同,即每个CEI号在所有的TS队列中只可以出现一次。在TS队列或列表223中的CEI号被以连续顺序安排,在列表中的第一个CEI指向在当前时隙依次序为下一个的输入缓冲区,或具有从站点被发送的最高优先级的输入缓冲区。
如图4所提示,不必为每个逻辑连接在单独的时隙队列或列表223中实际填入CEI号,但如下文所述,它们可以通过一个链接列表便利地和一个逻辑TS队列相连,只做为它的号码存在。则在后一种情况下,每个逻辑TS队列有一个队列指针的头和一个队列指针的尾,分别指向所考虑的TS队列的第一个CEI号和最后一个CEI号。
需被安排的TS队列的实际数量基本上取决于指定给一个连接的最小流量调节速率和站点的总流量调节速率的比值,在这里所述的例子中,当总的传送速率为10Mbit/s,标准信道为64kbit/s的倍数时,一个典型值可以为如256个TS队列。这意味着在任何时刻,所有在256个时隙时间内有一个位置及在当前存在的时隙之后的时隙TS,具有空的,即不存在的队列。
当前不包含任何要发送的信元,即处于归寂状态的CEI队列号209一般不在任何TS队列223中。如将在下面给出的描述,开始没有东西要发送然后得到信元要发送的CEI队列的标识号在一特定时刻被写入一个TS队列223,并如上面已讲的,由模块319内的接收功能201发出通知。
流量调节装置203要找到一个CEI队列的步骤如下,而下一个信元将从该队列被发送:1.存于域225中的TS指针增长一步,通常等于1。2.如果指针225指向的TS队列223为空,在这个TS将没有信元被发送。如图4中指向容器427的箭头所示,通过某种方法发送功能205被告知在这个时隙内没有信元要被发送。3.如果存于寄存器225中的指针指示的TS队列223不为空,如图4中模块205和箭头428所示,第一个即这个TS队列223中所列的第一个CEI队列的始发或下个信元被转移到信元发送功能205中。第一个信元是为该CEI队列存于域215中的指针所指向的那个信元。在下面将给出详细说明的一个实施例中,在发送队列没满的情况下,被考虑的信元被移到发送功能的发送队列中。4.如果队列中包含多于一个CEI号,如箭头429所示,该TS队列223的其余部分被压入下一个连续时隙的TS队列223的前面,即号为TSP+1的TS队列,其中TSP是存于域225中时隙指针的当前值。于是当前TS队列223变空。5.在最简单的情况下,信元发送功能205在站输出端可用的下一个物理时隙起始,直接把从流量调节功能203以上述方式得到的信元发送出去。同样,如箭头431所示,该信元的CEI号被压入具有时间位置号码(TSP+MDTS)的时隙的TS队列的前面,其中如域225中TS指针的当前值所给出的,TSP为当前被考虑的TS队列的时间位置号,而MDTS,如上面所定义的是存储于寄存器213中该CEI队列的两时隙间最小距离,在多个时隙中给出。如果此时信元发送功能205发现该CEI的队列209中没有需要发送的信元,即它是一个空的信元队列,在这个时隙将没有信息或至少没有有用的信息被发送出去,并且这个CEI号不会被写回到任何一个后面的TS队列223中。这个情况也可能早些当流量调节功能203在选择被考虑的要发送信元的CEI队列的过程中被检测出来。于是可以在任何情况下送一个信号到接收功能201,通知这个CEI队列209现在应是归寂状态,即存于该CEI队列的域221中的状态标记可被相应设置为非激活状态。
和图3中的模块307相似,如接收功能201的处理,当一个信元准备好从一个CEI队列209被发送时,该队列还没存在于任何TS队列223中,这个CEI值被加到要发送下一个信元的TS队列23中,即加到号为(TSP+1)的TS队列中,在最优情况下,CEI值被加到这个TS队列中可能现有的其它CEI队列号之后。当这个TS队列为空时,则被激活队列的第一个信元将在下一个TS内被发送,意味着从一新队列或返回激活状态队列的发送立即被启动。
依据上面的说明,当前CEI包队列13里的最后一个信元已被发送出去或至少已被转移由发送功能205来处理时,一个CEI号也将被写回到稍后的TS队列223中。下一次当流量调节装置203选择这个CEI做为要发送信元的CEI时,该CEI号将从TS队列中被删除,即并不被写回去,但当然这只有在同时没有新信元进入被考虑的CEI队列209时发生,与图3中的模块317和319相似。这样做的原因是为了保证信元距离至少为MDTS,同时为下面的情况,即紧接着前一个包的最后一个信元被发送出去,而新的包,即一个信元组,已准备好发送了。这意味着当一个新包的信元已准备好进行流量调节和发送,而CEI值并没有被写入或已存在任何TS队列中时,选择最早的可能时隙发送该包的第一个信元是可能的。否则,下面情况会发生,即源将以合适的速率向站点提供包或信元,从而经常是首先队列中的一个唯一的信元被发送,则队列为空,然后立即有一个要从队列被发送的新信元,调节该信元到下一个连续时隙中。
但这意味着每当一个CEI标识号或一个CEI队列209被从TS队列系统删除时,一个时隙将丢失。当定义时隙间的时间距离,即系统的总流量调节速率时,这个影响应妆被计入。
如已经指出的,TS队列223可以不必是实际的列表或存储区,但由于每个CE2队列号在TS队列223中最多只出现一次,它可如图5的概略图所示由一个链接着列表替代,图5为按照特殊情况画出,即256个TS队列223,每个TS队列中最多1024个位置,因此允许处理最多1024个建立起的逻辑连接。相应TS队列处理的流程图在图6中给出。于是图2和图4中的TS队列223在这里被一个TS队列表233和一个TS链路表239所替代,对每个连续时隙TS,TS队列表233包括两个指针BTSP235和ETSP237,TS链路表239包含指向表239自身其它位置的指针NTEP。在TS表233中的第一个指针235BTSP,即TS队列指针的起始点,指向第二个表,即TS链路表239中的一个位置,该位置在第二个表239中的号或地址是队列209的CEI号,应首先为该时隙队列发送信元,该时隙或时隙队列是在TS队列表列表233中包含被考虑指针BTSP的域的地址或号。
于是在被考虑的BTSP指向的TS链路表239中的位置上,有一个指针NTSEP,即下一个TS队列入口指针,指向TS链路表239中的另一个位置,这个指针也指示要发送信元的下一个CEI队列209。则相同地,由该指针指向的TS链路表239中的位置包含一个相似的指向同一表239中另一个位置的指针,这个指针也指向要发送信元的下一个CEI队列209。以这种方式重复,直到在TS链路表239的某个位置,有一个和ETSP,即TS队列指针的末端,相同的指针,在被考虑时隙的第二个域237中,它是那个TS队列的最后指针和要发送信元的最后CEI队列的指针。
通过赋予始端的BTSP指针一些易识别的值,如逻辑值“空”,来指明一个空TS队列。同时0值也可被用于指向空的信元模式队列。对于只有一个CEI号的TS队列,指针BTSP和ETSP相等。
如在图4中说明的,特别地如箭头428,429及容器427所指示的,同时使用图5中的链接列表,在图6中给出由流量调节功能203执行的对下一个时隙队列223进行处理的流程图。程序起始于模块601,在这里存于域225中的时隙指针TSP增加一步。然后执行模块602,在这里判断是否现在有可能发送信元,或如所描述的,依据另一个优选方法,判断是否在发送功能205的发送缓冲区有空间。在没有可能性或没有空间的情况下,同一模块602被重复直到该模块的问题给出肯定回答,然后在模块603中,取得TS队列表233的域235中指针BTSP并测试是否它的值为空。如果不是,当前的TS队列表不为空,则在模块605中,同为CEI队列号的指针值被暂时保存在下一个合适的寄存器中,这在图中没画出来。然后在模块607中,决定是否取得的指针和相应的终点指针相同,终点指针即是TS队列表233的域237中的指针ETSP。如果不相同,这说明被考虑的TS队列包含多于一个记录或CEI队列号,然后执行模块609,在这里由时隙指针值(TSP+1)指示的下个时隙的链接表列被修改。首先位于下一个时隙(TSP+1)的指针BTSP被写入域NTSEP中由当前TSP处的ETSP指针指向的TS链路表239中的位置。然后,由当前TSP的指针BTSP指向的链路表的NTSEP域中的链接CEI号被写入由值(TSP+1)指示的下一个时隙的BTSP域235中。然后在模块611中,同样当模块607的判定给出肯定回答时,如果TS列表中只有一个CEI号,在域233中的BTSP指针里为当前时隙写入空值或0号CEI的值。0号CEI的值也被方便地设为0。
如上面所提议的,具有标识号0的CEI队列,即0号CEI,被用于指示一个空位置或不发送任何东西,见图2它包含一个指向存于寄存器249中的空信元模式的地址指针。然后执行模块615,在这里测试由暂存于模块605中的值指示的CEI队列是否为空。如果为空,执行模块617,其间一个空模式被送到发送功能205,然后在模块618中,存于域221中表示被考虑CEI队列209的激活状态的标记被设置为表明该CEI队列不再为激活状态。然后TS指针增1的步骤被再次执行。
如果在模块615中确定所选择的CEI队列不为空,下一个信元,即循环的第一个信元,被送到发送功能205,例如由模块619所描述的,它被存入发送先入先出存储区。然后该CEI队列在接收功能201的域215中存储的起始位置指针也被增加一步。程序可以停在这里等待,直到发送功能205有时间发送或发送下一个信元的时间已到。
如已提到的在图2中给出的提议,可应用输出缓冲区。则在模块619中来自所选的输入缓冲区209(或可能为它的地址)的信元被写入一个输出先入先出存储区241或发送队列的最后位置。和输入缓冲区或队列209一样,很便利地发送存储区241可以是一个循环的存储区,由存于存储域243中的起始指针指明所占位置的起始点,由存于存储域245中的终止指针指示最后占据位置之后的位置。于是这里在模块619中,这个终止指针245也被循环增一。
因此对于模块602的测量,可以比较域243和域245中的起始和终止指针,提供一些设备辨别各种输出先入先出241为空或满的情况。例如,起始和终止指针值相等可通常被用于表示缓冲区为空状态,而起始位置指针值循环地紧接于终止位置指针值之后可被用于表示存储区是满的。
在前面步骤中取得信元并送到发送功能205之后,尤其在模块619之后,执行流量调节中重要的过程,其中与图4中的箭头431相似,一个CEI队列号被加到一个后面的TS队列209中。因此,在模块621中判定是否与该后面的时隙相关的TS队列为空,该时隙从所考虑的CEI队列209中得到并为该CEI队列被加到域213中的MDTS值上,在符号上被表达为(TSP+MOTS)。如果判定不为空,执行模块623,其中该后面的时隙队列的BTSP域的值或指针被写入到TS链接表239内NTSEP域中由CEI队列标识号所指明的位置。然后在模块625中,对于该随后的时隙队列(TSP+MOTS),所考虑的CEI号被写入域235中队列指针BTSP的起始点。之后,通过重排TS队列完成适当的流量调节功能,而下个TS队列223将通过执行模块601被处理,在601中增加TS指针。
如果在模块621中判定了所考虑的队列指针BTSP的起始点等于空或0,执行模块627,其中当前的CEI值,即在模块6 19中被用于把信元运到输出先入先出241中的值,为该后面的时隙队列在(TSP+MOTS)处被写入终止指针ETSP域237中。在模块627之后,和上面一样执行模块625。
如果在模块615中判定被考虑的ECI队列为空,在模块617中这个特殊情形如已提到的,通过转移一个特殊的空信元位置CEP模式,如存于存储区249中的,被指明给信元发射机205。
如果在模块603中判定当前的TS队列为空,执行模块633,其中这个情况通过如上面讨论的转移一个空信元模式被通知给发送功能205。然后在模块601中通过增加时隙指针,一个新的时隙队列将得到处理。
对包含一个发送先入先出缓冲区241的情形,如上所述的算法可以有一个小变化。要考虑的情形是什么时候流量调节功能203找到被允许从其发送信息的CEI队列209,但是与图6的模块615和617相似,这个CEI有一个空的信元队列209,因此没有要发送的东西。不同于把ECP写入输出先入先出241,对于流量调节功能203,找到一个新CEI队列209,允许从它在该TS上进行发送,是可能的,但是这只适用于当在由存于域225中的TS指针指向的当前TS的时隙队列223中存在多于一个CEI队列号的情况。
同时在细节上其它选择是可能的。一个例子是和图6中的模块618相比,当不再有信元要从TS队列223被发送时,没有必要从队列中删除一个CEI队列号。这个可能性由模块618引出的虚箭头指明。这在所有被建立连接的速率总和小于最大的总流量调节或总的物理发送速率的情况下是可能的。一个缺点是在低输出业务量时需要时间来管理TS队列中的所有CEI队列号。另一个缺点是一个新信元不能被立即进行流量调节,这引入了时延。一个可能的优点是每个CEI队列能找到一个可不被其它CEI队列干扰的固定TS模式。这要求分配一特定的MDTS值以有可能取得该固定模式。
多数流量调节算法可以为了得到适合的最大发送速率,被实现在流量调节机制203的软件中,这个软件例如被包含在或包含着两个其它机制的相对较小的软件成份中,即当它们不是硬件连线结构时,在接收功能201和发送功能205中。任何情形下,上述多为存储区消耗的信元处理部分是输入缓冲区209的存储区域。但是,对于高的发送速率应用,硬件结构是必需的,则这里描述的各种过程以传统方式由实现在专为该目的构建的数字信号处理器中的特殊状态机执行。输入缓冲区可由需要一空闲地址列表和取代输入缓冲区209的地址列表的一个随机存取存储区替代。
通过如上所述设置发送先入先出241,并给该存储区一满意的尺寸,有可能避免由流量调节功能203进行的逐信元的实时处理。于是存在寄存器225中流量调节机制203的TS指针将不反应正确的实时或实际输出时间。相反地,对应的实时将在信元被最终由发送功能205在物理输出接口发送时产生。则由存于225中的TS指针指示的TS队列间和实际时隙间的时间滞后将依赖于发送先入先出队列241的当前填充级别。
为了取得存于流量调节机制203的域225中的TS指针值和在站点的物理输出接口处的实际时隙的一致,流量调节机制203的处理器能够每次当一特定TS没有信元发出时对信元发射机205给出指示是有必要的。如上所述,这可以通过向发送功能提供一个存于存储区249中的特殊空信元位置ECP模式来实现。
为了处理所有的信元流,可指出下面部分必需的功能:1.一个发送功能205,用于控制全部到发送输出寄存器的信元流。2.一个固定的信元头模式,它指示一个空信元位置,ECP。流量控制功能203和发送功能205应逻辑上认为这个模式是一个信元,但这个模式不被真正地从站点或结点被发送。3.在输出先入先出241中计数空信元位置的方法,这个功能例如通过存于存储区域243,245中的起始和终止位置指针被提供,即确定输出缓冲区241的填充级别。可以设置一个标记或提供一个信号来告知流量调节机制“输出缓冲区满”,然后中止流量调节机制一段合适的时间。通过这个设置,可以使流量调节机制203的状态机或处理器向输出先入先出241填充突发信元成为可能。
和对上面图6的模块602的讨论相似,当填充级别已到达一预定门限时,必须停止再向发送先入先出241的写操作。这个门限对应于一特定最大信元延迟时间,并和它用的时间成比例,直到万一输出先入先出241不再被填充物而变空为止。通常,为了获得好的流量调节性能,流量调节机制203有必要避免FIFO241变空。当没有东西要发送时,流量调节机制203将把ECP模式送入输出先入先出241。在先入先出241不管怎样变空的情况下,信元发送功能205能够在第一个信元被写入输出先入先出241时立即被重新启动。因此流量调节功能203可以在它知道没有信元要发送时让输出先入先出241变空,即当在TS流量调节队列223中没有CEI或没有激活的CEI队列209时。
在应用到输出先入先出241的实施例中由发送功能205执行的程序流程图由图7给出,程序起始于模块701,在这里测试是否现在是实际从终端或结点发送信元的下一时刻,同时测试是否在输出先入先出241中存有至少一个信元或ECP。在任何这两个条件之一不满足的情况下,同一模块又被执行。若相反地条件满足时,即发送时间到并且输出先入先出存储区不为空,在模块703中取得由存于寄存器243中的起始指针指向的发送先入先出241中存储的下一个信元。然后这个信元在模块705中被测试是否它是空信元模式ECP(0号CEI队列)。如果它是,再次执行模块701等待下次发送时间并测试输出先入先出不为空,否则在模块707中该下个信元从站点被实际发送出去,这包括把它从要发送的站点转移到一个输出寄存器250中。最后在模块707中,发送先入先出241的存于域243中的起始位置指针被循环增加一步。
在图8、9和10中给出流量调节机制的发送情况的一个例子。这里有四个激活的CEI队列,1号CEI到4号CEI,分别具有MDTS值为4,6,8,4。如图8的说明,在初始状态下,n号时隙队列包含3项,队列CEI1,CEI2和CEI3。在n+2号时隙队列中,只有一个4号CEI队列。在这个状态下,域225中的TS指针指向n号TS队列。
在存于225中的TS指针被循环增加指到下一个(n+1)号TS队列之前,来自1号CEI队列的下一个信元被放到输出队列或发送先入先出中。然后如该CEI队列的MDTS值所指定的及箭头801所指示的,1号CEI队列也被放入(n+4)号TS队列中。TS队列中余下的CEI队列被转移到下一个TS队列(n+1),即这个新TS队列将分别包含2号和3号的CEI队列。
在域225中的TS指针被再次递增之前,2号CEI队列的下一个信元将被送入发送先入先出241,2号CEI队列将被加到(n+7)号TS队列,而3号CEI队列将被压入或插入在号为(n+2)的下一个TS队列中所有其它CEI队列号的前面。当TS指针225被用于指向这个TS队列时,3号CEI队列在循环中的第一个信元被送到先入先出存储区241,4号CEI队列被压入下一个TS队列n+3,而3号CEI队列被加到(n+10)号TS队列。对于在TS计数器225指向(n+3)时对它的下一次应用,4号CEI队列的第一个或下个信元被插入发送先入先出241,并且4号CEI的标识号被加到(n+7)号TS队列中。然后当TS指针25指向(n+4)号TS队列时,如图9所说明的,这个队列只包含1号CEI队列,这个CEI队列的下一个信元被送入发送先入先出,CEI号(=1)被加到(n+8)号TS队列,等等。
一个说明发送先入先出241中的填充级别能够怎样波动的例子在图11中给出。填充级别可被说明成一个曲线,曲线包含直线部分,位于最大填充级别部分的上升点,存储区的上限级。发送功能205可被假定为一直工作于常速率,每时隙从输出先入先出241中读取一个信元或ECP。但是流量调节机制203被假定只在一些短的瞬时间隔为激活状态,这些间隔由图12中的活动曲线说明。进一步,流量调节机制203对每个TS队列223的处理可被假定一直需要,如一个基本上为常数或相等时间段,这在流量调节机制223的活动期间产生很高的流量调节速率。
在流量调节机制203为激活状态从而发送功能205也是激活状态期间,因为它在稳定地工作,发送先入先出的填充级别以一常值速率增长,向上到最大填充级别,在流量调节机制为归寂状态而只有发送功能在工作的时间段内,填充级别以常值速率减小。当达到最大填充级别时,发送先入先出241不能再接收信元,于是有一个等待或延迟时期,当流量调节机制203必须处于归寂状态等待时,输出先入先出241中将有空闲的空间。在图11的情况下,假定当到达发送缓冲区的最大填充级别时,发出某个信号来停止流量调节功能203。与图6中模块602的讨论相似,这也可以由流量调节机制自己进行输出缓冲的适当测试来完成。
流量调节任务可以在任何时间被重新启动,例如可以在输出先入先出接近空的时刻向流量调节任务发送一个信号。则发送这样一个信号可以很合适地在图7的模块707中完成。或者可以把来自于定时电路的信号用于重启动流量调节机制。
和通常的速率队列方案相比,上面所述的流量调节机制的优点是:-在物理输出接口的平滑信元流(对ATM交换机很合适,该交换机很容易和来自其它模块的信元流复用),-简单的硬件,-可以以高分辨率为每个连接分别设定速率,-除了在输出先入先出情况下信元已在输出先入先出中等待的发送时间外,包或消息的第一个信元没有延迟。-真正的峰值分配器,即信元永远不会比一特定保证距离更挨近地被发送,-为了控制拥塞或平均地流量调节,很容易在操作过程中改变一条连接的速率。