网络交换装置和网络交换方法

文档序号:7871689阅读:191来源:国知局
专利名称:网络交换装置和网络交换方法
技术领域
本发明涉及一种在多个网络之间传送可变长度的数据分组的网络交换装置和网络交换方法,特别涉及使用共享缓冲器作为数据分组的存储区域的网络交换装置和网络交换方法。
背景技术
在如因特网等那样多个网络相互连接的情况下,在这些连接中多使用网络交换装置。其中,在把所接收的数据分组暂时存储在内部缓冲器中后、传送给目的传送端口的交换方式被称为存储转发方式,采用这种交换方式的网络交换装置得到广泛应用。
并且,在近年来的网络上的通信中,使作为传送单位的数据分组的数据量为可变的情况居多。例如,在因特网协议(IPInternet Protocol)中,把称为IP数据报的可变长度的数据分组作为传送单位,进行信息传送。
图15是表示以往的网络交换装置的结构示例的图。
图15所示的网络装置在多个网络201~204之间进行数据分组的传送。该网络装置由以下部分构成对应于各个网络201~204的接收接口211~214和接收缓冲器221~224、对应于各个网络201~204的发送接口231~234和发送缓冲器241~244、数据传送电路250。另外,在图15中,为了便于理解,把接收接口211~214和发送接口231~234表示为不同的要素。
接收接口211~214分别连接网络201~204。同样,发送接口231~234也分别连接网络201~204。各个接收接口211~214从网络201~204接收的数据分组,被暂时存储在对应的接收缓冲器221~224中。数据传送电路250根据存储在接收缓冲器221~224中的数据分组的目的地,向与该目的地端口对应的发送缓冲器传送数据分组。存储在各个发送缓冲器241~244中的数据分组,被按照来自对应的发送接口231~234的发送请求读出,并传送给网络201~204。
在该图15所示的网络交换装置中,在每个接收端口和发送端口处设有缓冲器,所以需要确保多个缓冲器,从而具有存储器容量变大的缺点。对此,已经公知有下述网络交换装置,其通过采用把所接收的数据分组与将要发送的数据分组全部存储在一个共享缓冲器中的方法,来削减存储器容量。
图16是表示具备共享缓冲器的现有网络交换装置的结构示例的图。
与图15相同,图16中表示在多个网络301~304之间进行数据分组的传送的网络装置。该网络装置由以下部分构成对应于各个网络301~304的接收接口311~314、对应于各个网络301~304的发送接口321~324、分别对应于接收数据分组和发送数据分组的数据传送电路330和340、共享缓冲器350。另外,在图16中,为了便于理解,把对应于接收侧的接收接口311~314和数据传送电路330、对应于发送侧的发送接口321~324和数据传送电路340表示为不同的要素。
各个接收接口311~314从网络301~304接收的数据分组,通过数据传送电路330被顺序存储在共享缓冲器350中。当数据传送电路340接收到来自各个发送接口321~324的发送请求时,根据存储在共享缓冲器350中的数据分组的目的地,向与该目的地端口对应的发送接口传送数据分组。各个发送接口321~324把从共享缓冲器350传送来的数据分组传送给所连接的网络301~304。
并且,在上述图15和图16的网络交换装置中,预定发送的数据分组一般被控制为针对每个目的地利用指针连接的链表结构的队列。此处,在使用可变长度的数据分组时,存储各个数据分组的缓冲器多以最大数据分组长度为单位构成,存储在这种缓冲器中的数据分组通过使用指针来管理。这种结构的优点可以列举如下,例如在丢弃由于错误的发生等而接收的数据分组时,仅删除与该数据分组对应的指针即可解决,容易控制。但是,其反面是对于缓冲器就需要提供希望存储的数据分组数与最大数据分组长度相乘的乘积值的存储器容量。在该情况下,例如,当只接收容量小于最大数据分组长度的数据分组时,则缓冲器内未被数据分组占用的区域增加,从而具有存储器使用效率降低的缺点。
以往,作为具备公共缓冲存储器、使用可变长度数据分组,而且提高该公共缓冲存储器的使用效率的数据分组交换机,例如有以下产品。该数据分组交换机把从各输入线路接收的可变长度数据分组以固定长度的数据块为单位写入公共缓冲存储器。在进行该写入时,缓冲器控制部形成按输入线路分类的输入队列,在可变长度数据分组的最终数据块被登录到输入队列中时,使该输入队列的链式地址列表链接到与目的地的输出线路对应的输出队列。
在向公共缓冲存储器写入时,各输入队列通过把下一个固定长度数据块的写入地址存储到下一个地址存储器中而形成。并且,各个输出队列由存储表示下一个应该读出的数据块的下一个读出地址和表示尾数据块的尾读出地址的地址表构成,缓冲器控制部的输入队列控制部通过把各可变长度数据分组的首数据块的写入地址和尾数据块的写入地址,分别移动到与传送目的地输出线路对应的地址表的下一个读出地址和尾读出地址,由此完成向输出队列的输入链接。另外,在先行的可变长度数据分组的尾读出地址已经被登录的情况下,从下一个地址存储器中提取后续的可变长度数据分组的首数据块的写入地址,使该地址链接到尾读出地址。通过这种控制,在提高缓冲存储器的使用效率的同时,使交换动作快速化。例如,参照特开第2002-152247号公报(第0025~0040段,图3)。
并且,与上述相同,作为把从各输入线路接收的可变长度数据分组以固定长度的数据块为单位写入公共缓冲存储器的数据分组交换机,存在如下构成的数据分组交换机,即,在进行数据写入时,缓冲器控制部形成按输入线路分类的输入队列,在可变长度数据分组的尾数据块被登录到输入队列中时,把该输入队列的链式地址列表登录到具有与数据分组传送目的地输出线路对应的待机缓冲器的输出队列中。在该数据分组交换机中,各输出队列由以下部分构成用于临时存储可变长度数据分组的首数据块的写入地址和尾数据块的写入地址的待机缓冲器;用于存储表示下一个应该读出的数据块的下一个读出地址和表示尾数据块的尾读出地址的地址存储器,在缓冲器控制部的输入队列控制部把各可变长度数据分组的首数据块的写入地址和尾数据块的写入地址分别登录到与传送目的地输出线路对应的待机缓冲器中、在其附带的地址存储器成为空闲状态时,输出队列控制部把从待机缓冲器取出的一对地址作为新数据块组的下一个读出地址和尾读出地址设定到地址存储器中。由此,在提高缓冲存储器的使用效率的同时,使交换动作快速化。例如,参照特开第2002-185495号公报(第0025~0037段,图3)。
但是,在使用上述图16所示的共享缓冲器的网络交换装置中,在由于特定端口地址的接收数据分组集中等而产生拥挤的情况下,共享缓冲器内部被这些接收数据分组和相同端口地址的发送数据分组占用,在与产生拥挤的端口无关的端口中吞吐量降低。这种现象一般被称为阻塞(blocking)等。特别是如上面所述,在使用可变长度数据分组的情况下,尽管共享缓冲器内的使用效率比较低,有时也发生阻塞。
对此,如上述的图15所示,在按照接收端口数和发送端口数分别设置接收数据分组用接收缓冲器和发送数据分组用发送缓冲器的情况下,不会产生因阻塞造成的效率降低。但是,如上面所述,这种结构需要增大各缓冲器的容量,导致部件成本提高。
并且,在上述特开第2002-152247号公报和特开第2002-185495号公报中公开的数据分组交换机中,在已接收可变长度数据分组的情况下,可以提高公共缓冲存储器内的使用效率,但未能采取防止阻塞的对策。

发明内容
本发明就是鉴于上述情况而提出的,其目的在于,提供一种提高储存可变长度数据分组的缓冲器的使用效率,同时防止产生阻塞的网络交换装置。
为了解决上述课题,本发明提供了图1所示的网络交换装置。该网络交换装置在多个网络之间传送可变长度的数据分组,其特征在于,具有缓冲器1,被共享为所接收的数据分组的数据和将要发送的数据分组的数据的各存储区域;数据分组分割电路2,把所接收的所述数据分组分割为1个或更多个的固定长度的数据块,来提供给所述缓冲器1;缓冲器控制电路3,对所述数据分组的每个传送目的地的所述网络形成可以登录一定数量的所述数据块的发送队列4-1~n(其中,n为大于0的整数),在把分割后的所述数据块写入所述缓冲器1中后,然后以所述数据分组为单位顺序登录到与该目的地对应的所述发送队列中,而且,把所述各数据分组内的所述数据块之间的连接和所述各发送队列内的所述数据分组之间的连接,作为基于所述各数据块在所述缓冲器1中的写入位置的链表结构来进行管理。
在这种网络交换装置中,1个缓冲器1被共享为所接收数据分组的数据和将要发送的数据分组的数据的各自存储区域。并且,所接收的数据分组由数据分组分割电路2分割为1个或更多个的固定长度的数据块,提供给缓冲器1。通过缓冲器控制电路3的控制,对数据分组的每个传送目的地的网络形成可以登录固定数量的数据块的发送队列4-1~n,将已写入缓冲器1的数据块被以数据分组为单位顺序登录到与目的地对应的发送队列中。此时,各数据分组内的数据块之间的连接、和各发送队列内的数据分组之间的连接,被作为基于各数据块在缓冲器中的写入位置的链表结构来进行管理。
本发明的上述及其他目的、特征和优点,根据表示作为本发明示例的优选实施方式的附图及以下相关说明将更加明确。


图1是说明本发明的原理的原理图。
图2是表示本发明的第1实施方式涉及的网络交换装置的连接示例图。
图3是表示本发明的第1实施方式涉及的网络交换装置的内部结构的方框图。
图4是表示共享缓冲器内的数据存储状态的示意图。
图5是表示指针控制电路和指针计数器组的内部结构示例的方框图。
图6是表示出栈控制部的处理流程的流程图。
图7是表示发送数据分组时的入栈控制部的处理流程的流程图。
图8是表示按第1管理方法存储在共享缓冲器内的数据块的结构的示意图。
图9是表示在第1链表管理示例中,写入/读出控制电路具有的寄存器组的结构的图。
图10是表示在第1链表管理示例中,接收数据分组时的写入/读出控制电路的处理流程的流程图。
图11是表示在第1链表管理示例中,发送数据分组时的写入/读出控制电路的处理流程的流程图。
图12是表示在第2链表管理示例中,写入/读出控制电路具有的存储器的结构的图。
图13是表示在第2链表管理示例中,接收数据分组时的写入/读出控制电路的处理流程的流程图。
图14是表示在第2链表管理示例中,发送数据分组时的写入/读出控制电路的处理流程的流程图。
图15是表示现有网络交换装置的结构示例的图。
图16是表示具有共享缓冲器的现有网络交换装置的结构示例的图。
具体实施例方式
以下,参照

本发明的实施方式。
图1是说明本发明的原理的原理图。
本发明的网络交换装置是连接使用可变长度的数据分组进行通信的多个网络,并在这些网络之间传送数据分组的装置。该网络交换装置如图1所示,具有缓冲器1、数据分组分割电路2和缓冲器控制电路3。
缓冲器1是用于存储所接收的数据分组的存储装置,例如利用半导体存储器等构成。
数据分组分割电路2把所接收的数据分组分割为1个或更多个的固定长度的数据块,提供给缓冲器1。因此,1个数据块的容量被设定成小于1个数据分组内所允许的最大数据量。
缓冲器控制电路3控制缓冲器1中的数据块的写入和读出动作。缓冲器控制电路3使用由数据分组分割电路2分割后的数据块,对每个成为目的地的网络形成发送队列4-1~n(其中,n为大于1的整数),把分割后的数据块写入缓冲器1后,以数据分组为单位顺序登录到与该目的地对应的发送队列中。此处,在各发送队列4-1~n中可以登录固定数量的数据块。因此,通常在缓冲器1内对每个传送目的地的网络准备相同容量的发送队列4-1~n的存储区域。
并且,缓冲器控制电路3把存储在缓冲器1内的各数据块,作为基于各数据块在缓冲器1中的写入位置的链表结构进行管理。在以下说明中,作为示例,缓冲器控制电路3具备指针栈5,该指针栈5一维保存指示缓冲器1内的写入位置的指针,在写入数据块时将指针从该指针栈5中弹出并取得该指针,使用所取得的指针构建链表结构。
这种结构的网络装置的动作如下。
当从规定的网络接收数据分组时,该数据分组通过数据分组分割电路2被分割为固定长度的数据块,通过缓冲器控制电路3的控制被存储到缓冲器1中。此时,缓冲器控制电路3例如在每个数据块的写入动作中,从指针栈5将指针弹出,向该指针所指示的地址写入数据块。并且,把在1个数据分组中分割的数据块之间的连接作为使用指针的链表结构来进行管理。
当1个数据分组的数据块存储在缓冲器1中时,缓冲器控制电路3登录到与该数据分组的目的地对应的发送队列4-1~n中的任一个队列中。此处,缓冲器控制电路3把在各发送队列4-1~n中登录的数据分组之间的连接作为使用了与其对应的指针的链表结构来进行管理。
从各发送队列4-1~n顺序输出所登录的数据块,发送给对应的网络。此处,在各发送队列4-1~n中,所登录的数据块之间和数据分组之间被作为使用了上述指针的链表结构进行管理,所以通过从指针指示的写入位置读出数据块,能够容易地再编辑原来的数据分组。
在上述网络交换装置中,对数据分组的每个传送目的地的网络形成可以登录固定数量的数据块的发送队列4-1~n,将写入缓冲器1的各数据块以数据分组为单位顺序登录到与数据分组的目的地对应的发送队列中。通过采用这种步骤,与接收地点和传送目的地的网络无关,作为数据分组的存储区域,只要具备1个缓冲器1即可。并且,各发送队列4-1~n的容量相对每个目的地的网络被限定,即使在集中接收针对1个目的地的数据分组时,这些数据分组也不会影响相对缓冲器1内的其他目的地的数据分组的传送动作。因此,作为数据分组的存储区域具备1个缓冲器1,防止产生阻塞。
并且,所接收的数据分组被分割为1个或更多个的固定长度的数据块,从而写入缓冲器1。与此同时,各数据分组内的数据块之间的连接和各发送队列4-1~n内的数据分组之间的连接,作为基于各数据块在缓冲器的写入位置的链表结构受到管理。因此,缓冲器1内的未使用区域变小,缓冲器1的使用效率提高。所以,可以抑制缓冲器1的容量,降低部件成本。
另外,例如在向发送队列4-1~n登录数据块时,在该登录数量超过可以登录数量的情况下,也可以将包括在该时刻的登录处理中的数据块的数据分组丢弃。此时,向各发送队列4-1~n登录数据块的数量,例如也可以被计数为使用的指针数。
并且,在丢弃数据分组时或输出来自发送队列4-1~n的数据分组时,把在丢弃或所输出的数据分组中使用的指针退回指针栈5即可。由此,可以有效控制缓冲器1内的数据块的写入。
下面,具体说明本发明的第1实施方式。
图2是表示本发明的第1实施方式涉及的网络交换装置的连接示例的图。
如图2所示,网络交换装置100设有多个通信端口,在各通信端口处连接着网络21~24。在各网络21~24处连接着例如终端装置21a、22a、23a和24a。
网络交换装置100进行所连接的网络21~24之间的数据分组的传送。例如,从终端装置21a传送给终端装置22a的数据分组,通过网络21被输入网络交换装置100,通过该网络交换装置100的处理被传送给网络22。由此,所传送的数据分组通过网络22在终端装置22a得到接收。并且,网络交换装置100可以传送可变长度的数据分组。
图3是表示网络交换装置100的内部结构的方框图。
如图3所示,网络交换装置100具备收发接口111~114、数据传送电路120、共享缓冲器130、写入/读出控制电路140、指针栈150、指针控制电路160,以及指针计数器组170。并且,写入/读出控制电路140、指针栈150和指针计数器组170连接着传送指针的指针用总线180。
收发接口111~114是与外部网络进行数据收发的通信接口,分别连接着网络21~24。
各收发接口111~114从网络21~24接收可变长度数据分组,把该数据分组顺序分割为固定长度的数据块,并且把接收请求通知给数据传送电路120。接收针对该请求的应答,把所分割的数据块输出给数据传送电路120。此时,通知表示所输出的数据块是数据分组中的首数据块还是尾数据块的块位置信息。并且,提取表示数据分组的目的地的信息,将该信息也通知给数据传送电路120。另外,在产生接收错误等时,丢弃对应的数据分组的数据,并且向指针控制电路160输出丢弃信号。
另一方面,收发接口111~114从数据传送电路120顺序接收发送用数据块,把这些数据块发送给网络21~24。
数据传送电路120根据来自各收发接口111~114的接收请求,从对应的收发接口111~114接收数据块,并将其存储在共享缓冲器130中。此时,向写入/读出控制电路140和指针控制电路160输出所接收的数据块的接收端口、与该数据块的目的地对应的发送端口、以及接口信息,该接口信息包括表示数据块是数据分组中的首数据块还是尾数据块的块位置信息。
并且,数据传送电路120根据来自各收发接口111~114的传送请求,从共享缓冲器130顺序取出数据分组的数据块,并将其顺序输出给该数据分组的目的地的终端装置所连接的收发接口。此时,参照所输出的数据块的目的地,在应该传送的目的地剩余1个时,把该情况通知指针控制电路160。
共享缓冲器130是把传送的数据分组的数据作为数据块临时存储的缓冲器存储器。在该共享缓冲器130中确保在每个接收端口存储1个数据分组的数据块的区域、和存储形成于每个发送端口的发送队列的区域。并且,共享缓冲器130中的数据块的写入地址和读出地址由写入/读出控制电路140指定。
写入/读出控制电路140管理共享缓冲器130中的数据块的写入动作和读出动作。具体讲,对所分割的每个数据块顺序从指针栈150接收指针,根据该指针指定共享缓冲器130中的数据块的写入地址。此时,通过指针用总线180把所接收的指针输出给指针计数器组170。并且,把存储在共享缓冲器130中的数据块作为使用上述指针的链表结构进行管理,根据该指针的连接指定从共享缓冲器130的读出地址。此时,通过指针用总线180把读出使用的指针输出给指针计数器组170。
该写入/读出控制电路140在共享缓冲器130内形成每个发送端口的发送队列。各发送队列可以存储一定数量的数据块。写入/读出控制电路140把数据块存储在共享缓冲器130中后,把数据块登录在对应于该目的地的发送队列中。此时,把此前登录的数据分组和新登录的数据分组的连接,作为使用了与构成它们的数据块对应的指针的链表结构进行管理,从各发送队列顺序向数据传送电路120输出数据块。
在指针栈150中存储着指示共享缓冲器130中的数据块的写入地址的指针。指针栈150一维保存与共享缓冲器130内的所有数据分组存储区域中的写入地址对应的指针,由此可以有效使用共享缓冲器130内的区域。
指针栈150在收发接口111~114中任一方接收数据分组,将分割该数据分组生成的数据块存储在共享缓冲器130中时,根据来自指针控制电路160的控制信号进行弹出动作,把所弹出的指针通过指针用总线180输出给写入/读出控制电路140。在从共享缓冲器130取出数据块时,根据来自指针控制电路160的控制信号,通过指针用总线180接收指针计数器组170保存的指针,并将其入栈。
指针控制电路160根据数据传送电路120的数据块的传送动作、和为了丢弃数据分组而通知的丢弃信号的接收,控制指针栈150中的指针的出栈动作和入栈动作。并且,向指针计数器组170输出控制信号,控制通过指针用总线180的指针在指针计数器组170内的写入动作和读出动作。
指针计数器组170具有多个计数器,该多个计数器按照接收端口和发送端口管理写入共享缓冲器130的数据块的指针及其使用数、登录在发送队列中的指针数等。并且,指针计数器组170如后面所述,把正在使用的指针划分为向共享缓冲器130写入数据块时的和从共享缓冲器130读出时的进行管理。并且,根据来自指针控制电路160的控制信号,向指针用总线180输出与已完成传送的数据块对应的指针,并返回指针栈150。并且,对登录在发送队列中的指针数进行计数,在指针数超过允许值时,向指针控制电路160输出通知丢弃正在登录处理的数据分组的丢弃信号。
根据具有这种结构的网络交换装置100,进行使用了1个共享缓冲器130的数据分组的交换处理。例如,在已接收应该从网络21传送给网络22的数据分组时,在收发接口111所接收的数据分组被分割为固定长度的数据块,通过数据传送电路120存储在共享缓冲器130中。根据从指针栈150取出的指针,由写入/读出控制电路140指定共享缓冲器130中的写入地址。
写入/读出控制电路140在共享缓冲器130内形成对应于各发送端口的发送队列,把数据块存储在共享缓冲器130中,然后把数据块登录在对应于该目的地的发送队列中。此时,把数据分组内的数据块之间的连接和发送队列内的数据分组之间的连接,作为使用指针的链表结构进行管理。例如,在发送队列内,此前已登录的数据分组的尾数据块和新登录的首数据块通过指针相连接。
并且,按照该链表结构顺序指定指针,由此从发送队列顺序读出数据块。将所读出的数据块通过数据传送电路120传送给对应于目的地的收发接口112,并顺序传送给网络22。
此处,共享缓冲器130中的数据块的写入地址作为指示该地址的指针,由指针栈150赋予。写入/读出控制电路140使用从指针栈150弹出的指针,把存储在共享缓冲器130中的数据块之间的连接状态作为链表结构进行管理。根据这种管理方法,与接收端口和发送端口无关,在从数据分组的接收到向目的地网络的传送期间,可以把该数据分组中包含的数据存储在1个共享缓冲器130中。并且,所接收的数据分组被分割为固定长度的数据块存储在共享缓冲器130中,所以能够提高共享缓冲器130的使用效率,减小共享缓冲器130的容量。
另外,在指针计数器组170中,管理使用中的指针及使用数,并且按照发送端口管理对于登录在发送队列中的数据块使用的指针数。根据这种管理方法,容易管理正在使用的指针,并且将登录在发送队列中的数据块数量控制在一定数量以内,以防止产生阻塞。
下面,图4是表示共享缓冲器130中的数据存储状态的示意图。
如图4所示,在共享缓冲器130中形成有对应于各接收端口的接收数据分组专用缓冲器区域131a~131d,和对应于各发送端口的发送队列专用缓冲器区域132a~132d。另外,该图所示区域只表示逻辑上的缓冲器区域,实际的物理缓冲器区域未必一定如此。
接收数据分组专用缓冲器区域131a~131d是这样的区域,即,其分别对应于收发接口111~114,在通过各收发接口111~114接收的数据分组被分割为数据块、通过数据传送电路120传送给共享缓冲器130时,存储这些数据块。
发送队列专用缓冲器区域132a~132d是存储登录在对应于数据分组的目的地的发送队列中的数据块的区域。各发送队列专用缓冲器区域132a~132d具有有限的容量,可以存储一定数量的数据块。通过在指针计数器组170处对针对存储在发送队列中的数据块使用的指针数进行计数,来管理各发送队列专用缓冲器区域132a~132d的容量。
如上所述,在已接收应该从网络21传送给网络22的数据分组的情况下,首先,在接收数据分组专用缓冲器区域131a存储相当于1个数据分组的数据块。在存储完成后,通过写入/读出控制电路140的控制,使这些数据块连接对应目的地的发送端口的发送队列。
此时,利用写入/读出控制电路140,把数据分组内的数据块之间的连接和发送队列内的数据分组之间的连接,作为使用指针的链表结构进行管理。因此,在共享缓冲器130中,所存储的数据分组的数据的物理存储位置不会变化,接收数据分组专用缓冲器区域131a转移为发送队列专用缓冲器区域132b的一部分。
并且,在向发送队列的登录动作结束后,从发送队列专用缓冲器区域132b顺序读出数据块。该读出是根据写入/读出控制电路140的控制,按照链表结构顺序指定指针来进行的。存储了所读出的数据块的发送队列专用缓冲器区域132b通过退回指示该区域的指针,在逻辑上被更新,从而可以存储新的数据块。
下面,详细说明指针控制电路160和指针计数器组170的结构。
图5是表示指针控制电路160和指针计数器组170的内部结构示例的方框图。另外,在图5中为了容易理解各部分的连接关系,根据需要也示出指针控制电路160和指针计数器组170周围的功能块。
如图5所示,指针控制电路160具备出栈控制部161、入栈控制部162和丢弃控制部163。指针计数器组170具有设在各接收端口的接收中指针计数器171a~171d、分别设在各发送端口的发送中指针计数器172a~172d,以及发送队列指针计数器173a~173d。
在指针控制电路160中,出栈控制部161在数据块被存储在共享缓冲器130中时,根据来自数据传送电路120的接口信息判断开始传送数据块,指示指针栈150弹出指针,并且向对应于接收端口的接收中指针计数器输出用于指示写入指针的控制信号。
入栈控制部162在存储于共享缓冲器130的数据块被读出时,根据来自数据传送电路120的接口信息,向对应于发送端口的发送中指针计数器输出用于指示写入指针的控制信号。
并且,在1个数据分组的数据块的读出处理结束,而且向所有目的地的输出结束后,指示指针栈150推入输出给指针用总线180的指针。并且,更新已指示写入的发送中指针计数器的指针。
丢弃控制部163在从收发接口111~114、和发送队列指针计数器173a~173d接收丢弃信号时,向入栈控制部162输出控制信号,委托在指针栈150进行入栈动作。并且,向接收中指针计数器171a~171d和发送中指针计数器172a~172d输出指示读出保存的指针的控制信号。
另外,在接收中指针计数器171a~171d和发送中指针计数器172a~172d中,为了进行指针的写入或计数控制信号的输出而指定的计数器接收来自丢弃控制部163的控制信号。
另一方面,在指针计数器组170中,接收中指针计数器171a~171d和发送中指针计数器172a~172d分别连接指针用总线180,从而可以进行指针的收发。并且,接收中指针计数器171a~171d和发送中指针计数器172a~172d分别向发送队列指针计数器173a~173d输出用于指示增减计数值的计数控制信号。
接收中指针计数器171a~171d根据来自指针控制电路160的出栈控制部161的控制信号,获取并保存从指针栈150弹出并通过指针用总线180传送的指针,并且对所获取的指针数进行计数。
并且,在1个数据分组的指针的存储和指针数的计数完成后,输出计数控制信号,以便向与所指定的发送端口对应的发送队列指针计数器的计数值加算此时的计数值。在输出计数控制信号后,清除所保存的指针和计数值。
另外,在接收到来自丢弃控制部163的控制信号后,读出保存的指针并将其传送给指针用总线180,并且返回指针栈150。此时,清除计数值。
发送中指针计数器172a~172d获取并保存从写入/读出控制电路140通过指针用总线180传送的指针,并且对所获取的指针数进行计数。此时,输出计数控制信号,以便从与相同发送端口对应的发送队列指针计数器173a~173d的计数值顺序减去所获取的指针数。
并且,在没有对读出的数据分组指定其他目的地的情况下,在读出来自共享缓冲器130的数据块时,从写入/读出控制电路140向指针用总线180顺序输出对应的指针,并返回指针栈150。此时,对应的发送中指针计数器清除计数值。在指定了其他目的地的情况下,输出计数控制信号,以将此时的计数值加到与所指定的发送端口对应的发送队列指针计数器的计数值上。在输出计数控制信号后,清除所保存的指针和计数值。
并且,在接收了来自丢弃控制部163的控制信号的情况下,读出保存的指针并将其送出给指针用总线180,并返回到指针栈150。此时,清除计数值。
发送队列指针计数器173a~173d根据来自接收中指针计数器171a~171d和发送中指针计数器172a~172d的计数控制信号,进行计数动作,由此对为登录在各发送队列中的数据块所使用的指针数进行计数。并且,在各发送队列的计数值超过了规定值的情况下,向丢弃控制部163输出丢弃信号。
此处,一并说明指针控制电路160内部的动作和指针计数器组170内部的动作。首先,示出出栈控制部161的处理的流程图,说明接收数据分组时的动作。
图6是表示出栈控制部161的处理流程的流程图。以下,按照步骤序号说明图6所示处理。
(步骤S601)在从数据传送电路120向共享缓冲器130存储来自收发接口111~114的数据块时,将与各数据块相关的接口信息输出给出栈控制部161。出栈控制部161根据来自数据传送电路120的接口信息,判断向共享缓冲器130的数据块存储处理是否已开始。并且,在判断为已开始的情况下进入步骤S602。
(步骤S602)指示指针栈150弹出指针。通过指针用总线180将弹出后的指针输出给写入/读出控制电路140,再输出给指针计数器组170。
(步骤S603)向与所指定的接收端口对应的接收中指针计数器输出用于指示写入指针的控制信号。由此,将从指针栈150弹出的指针存储到与接收端口对应的接收中指针计数器中,该接收中指针计数器的计数值增计数。
(步骤S604)根据块位置信息,判断正在存储处理中的数据块是否是数据分组的尾数据块。在不是尾数据块的情况下,返回步骤S601,在是尾数据块的情况下,进入步骤S605。
通过重复进行以上步骤S601~S604,将1个数据分组的数据块存储到共享缓冲器130中,并且将对这些数据块所使用的指针存储到对应的接收中指针计数器中。该接收中指针计数器将所存储的指针数作为计数值来保持。
(步骤S605)向在上述步骤S601~S604的处理中所控制的接收中指针计数器指示结束指针的写入。此时,从接口信息中包含的发送端口中选择1个端口,将该发送端口通知给控制中的接收中指针计数器。另外,在指定了多个发送端口的情况下,需要预先制定规则,以使在该处理中选择的发送端口与在写入/读出控制电路140中选择的发送端口相同。
接收到通知的接收中指针计数器输出计数控制信号,以将所保存的计数值加到与所通知的发送端口对应的发送队列指针计数器上。由此,将在对应的发送队列中使用的指针数、即所登录的数据块数量,作为发送队列指针计数器的计数值进行保存。
此处,在接收到计数控制信号的发送队列指针计数器中,在计数值超过允许值,并且丢弃信号被输出到丢弃控制部163的情况下,从丢弃控制部163向入栈控制部162输出控制信号。与此同时,向成为上述控制对象的接收中指针计数器输出指示读出指针的控制信号。并且,因为从丢弃控制部163向写入/读出控制电路140输出了控制信号,所以写入/读出控制电路140不进行向发送队列登录数据块的处理。但是,在存在其他目的地并可以存储到与该目的地对应的发送队列中的情况下,进行向该发送队列登录的处理。
下面,说明发送数据分组时的动作。
图7是表示发送数据分组时的网络交换装置100的处理流程的流程图。在该流程图中,表示针对1个发送端口进行数据分组的传送的情况下的处理。以下,按照步骤序号说明图7所示处理。
(步骤S701)数据传送电路120从收发接口接收发送请求。
(步骤S702)从数据传送电路120向写入/读出控制电路140通知进行读出的发送端口,写入/读出控制电路140指定读出地址。由此,从对应的发送队列中读出数据块,并通过数据传送电路120传送给与目的地对应的收发接口。
(步骤S703)从写入/读出控制电路140向指针用总线180输出读出所使用的指针。此时,向对应的发送中指针计数器输出用于指示写入指针的控制信号,在该发送中指针计数器中存储着来自写入/读出控制电路140的指针,并且计数值增计数。另外,从该发送中指针计数器向对应的发送队列指针计数器输出计数控制信号,接收到计数控制信号的发送队列指针计数器减计数。
(步骤S704)数据传送电路120根据所读出的数据块的内容,判断是否存在其他应该传送的目的地。此处,只在不存在其他目的地的情况下,向入栈控制部162通知该情况。入栈控制部162对应于该通知,对指针栈150进行控制以开始入栈动作。由此,将从写入/读出控制电路140输出给指针用总线180的指针返回给指针栈150。
(步骤S705)判断所读出的数据块是否是数据分组的尾数据块。在不是尾数据块的情况下,返回步骤S702,进行下一个数据块的读出和传送。另外,在是尾数据块的情况下,进入步骤S706。
通过重复进行以上步骤S701~S705,经由1个发送端口来发送1个数据分组的数据块,并且将对这些数据块所使用的指针存储到对应的发送中指针计数器中。该发送中指针计数器把所存储的指针数作为计数值来保存。并且,从与相同发送端口对应的发送队列指针计数器的计数值中仅减去该发送中指针计数器保存的计数值。
(步骤S706)判断是否已完成向所有目的地的传送。在已完成的情况下进入步骤S707,在未完成的情况下进入步骤S708。
(步骤S707)清除指针的存储地点的发送中指针计数器。由此,结束1个数据分组的数据块的传送处理。
(步骤S708)在存在其他目的地的情况下,通过数据传送电路120指定与下一个目的地对应的发送端口。在指针计数器组170中,向与新指定的目的地对应的发送队列指针计数器输出计数控制信号,对与已结束传送的发送端口对应的发送中指针计数器的计数值进行加运算。
(步骤S709)此处,在对计数值进行了加运算的发送队列指针计数器中,在计数值超过允许值的情况下,向丢弃控制部163输出丢弃信号。此时,在发送队列指针计数器中,不进行计数值的加运算。在已输出丢弃信号的情况下进入步骤S710。
并且,在未输出丢弃信号的情况下进入步骤S707,清除与已结束发送的发送端口对应的发送中指针计数器,结束处理。由此,变成将发送中指针计数器的计数值加到与相同数据分组的下一个目的地对应的发送队列指针计数器上的状态。并且,通过写入/读出控制电路140的控制,使数据分组连接到与新的目的地对应的发送队列上。
(步骤S710)判断是否存在其他目的地。在存在目的地的情况下返回步骤S708,通过数据传送电路120指定其他发送端口。另外,在没有目的地的情况下进入步骤S711。
在该步骤,接收到来自发送队列指针计数器的丢弃信号的丢弃控制部163,请求入栈控制部162开始入栈动作。此时,从数据传送电路120向入栈控制部162通知是否存在其他目的地的信息。在存在其他目的地的情况下,需要进行向该目的地的数据分组的传送,所以入栈控制部162不指示指针栈150进行入栈动作。
(步骤S711)在该步骤,从数据传送电路120向入栈控制部162通知没有其他目的地。因此,入栈控制部162响应于来自丢弃控制部163的请求,指示指针栈150进行入栈动作。此时,从丢弃控制部163向与已结束发送的发送端口对应的发送中指针计数器输出控制信号,指示将保存的指针输出到指针用总线180。接收到该控制信号的发送中指针计数器将保存的指针输出到指针用总线180。由此,将该指针退回给指针栈150。并且,在这之后,进入步骤S707,清除发送中指针计数器,结束处理。
通过执行以上图6和图7说明的处理,可以有效进行共享缓冲器130中的数据块的写入地址管理。例如,在丢弃数据分组的情况下,根据来自指针控制电路160的指示,从接收中指针计数器171a~171d或发送中指针计数器172a~172d中的必要的一方中读出指针,并将指针退回指针栈150。由此,对应于退回的指针,在共享缓冲器130内形成空闲区域,通过再利用这些指针,可以把后续的数据块可靠地存储在共享缓冲器130中。
并且,因为在发送队列指针计数器173a~173d中对登录在发送队列中的数据块数量进行管理,所以存储发送队列的发送队列专用缓冲器区域132a~132d通常被限制为小于等于固定容量。因此,例如在集中接收特定的发送端口目的地的数据分组的情况下,未能存储的数据分组被丢弃,所以该发送端口的传送处理不会影响其他发送端口的传送处理,从而能够容易地防止阻塞。
下面,说明对存储在共享缓冲器130中的数据块使用了链表结构的管理方法。此处,示例以下两种管理方法。
(第1链表管理示例)在使用了链表结构的第1管理示例中,在共享缓冲器130内设有与每个数据块对应的附属单元区域。并且,写入/读出控制电路140生成用于管理1个数据分组内的数据块之间的连接、以及各发送队列内的数据分组之间的连接的附属信息,并存储到附属单元区域中。并且,写入/读出控制电路140具有各种寄存器组,以按照每个接收端口和每个发送端口来管理数据块之间的连接,通过顺序改写该寄存器组,控制共享缓冲器130内的数据块的写入和读出。
图8是表示存储在共享缓冲器130中的数据块的结构的示意图。另外,在图8中,连接的各数据块和各数据分组是连续配置的,但在共享缓冲器130上的实际的物理写入位置并非如此。
当在各收发接口111~114中接收数据分组并将其分割为数据块时,将这些数据块存储到由指针所指示的在共享缓冲器130上的地址中。此时,对各数据块形成附属单元区域133a和数据块区域133b,将分割后的数据块存储到数据块区域133b中。
此处,例如当考虑接收了应该从网络21传送给网络22的数据分组的情况时,从收发接口111通过数据传送电路120提供给共享缓冲器130的1个数据分组的数据块,被存储到共享缓冲器130内的对应的接收数据分组专用缓冲器区域131a中。并且,此时,在各数据块的附属单元区域133a中,存储着从首数据块开始顺序指示其后续数据块的位置的指针。在图8中,把这种指针表示为“指针P1”。在1个数据分组的数据块的存储结束的时刻,在除尾数据块以外的所有数据块的附属单元区域133a中,存储着在后续的数据块中所使用的指针P1。由此,在数据分组内数据块之间被连接。
然后,这些数据块被登录到与网络22对应的发送队列中。此时,使用后述的寄存器组,经常识别已登录在发送队列中的尾数据分组,在存在已经登录到发送队列中的数据分组的情况下,把指示新登录的数据分组的首数据块的位置的指针存储到该尾数据分组的首数据块的附属单元区域133a中。在图8中,把这种指针表示为“指针P2”。由此,在发送队列内各个数据分组之间被连接。
并且,在写入/读出控制电路140中,在寄存器组中总是保存用于读出发送队列内的数据块的指针,对于每次数据块的读出动作,参照所读出的数据块的附属单元区域133a,提取下一个应该读出的数据块的指针,更新寄存器组的存储数据。
下面,图9是表示写入/读出控制电路140所具备的寄存器组的结构图。
如图9所示,写入/读出控制电路140具有与各接收端口对应的接收首地址寄存器141a~141d和接收尾地址寄存器142a~142d;与各发送端口对应的已发送数据分组地址寄存器143a~143d、发送块地址寄存器144a~144d、发送尾地址寄存器145a~145d、和下一个发送数据分组地址寄存器146a~146d。
在将所接收的数据分组存储到共享缓冲器130时,接收首地址寄存器141a~141d保存指示该数据分组中的首数据块的指针。接收尾地址寄存器142a~142d保存指示该数据分组的尾数据块的指针。
已发送数据分组地址寄存器143a~143d保存指示在登录于共享缓冲器130内的各发送队列中、正在发送中或发送已结束的数据分组的首数据块的指针。发送块地址寄存器144a~144d保存指示在各发送队列中预定下一个发送的数据块的指针。发送尾地址寄存器145a~145d保存指示在各发送队列中最后登录的数据分组的首数据块的指针。下一个发送数据分组地址寄存器146a~146d保存指示预定下一个发送的数据分组的首数据块的指针。
下面,说明基于存储在这些寄存器组和各数据块的附属单元区域133a中的信息的写入/读出控制电路140的处理。另外,在以下图10和图11所示流程图的说明中,根据需要也追加说明网络交换装置100内的其他要素的处理。
图10是表示接收数据分组时的写入/读出控制电路140的处理流程的流程图。以下,按照步骤序号说明图10所示处理。
(步骤S1001)例如,当收发接口111中接收到数据分组,向数据传送电路120通知接收请求时,数据传送电路120把分割后的数据块的接口信息输出给写入/读出控制电路140。写入/读出控制电路140监视接口信息的接收,当接收到此信息时,判断为向共享缓冲器130存储数据块的处理已经开始,进入步骤S1002。
(步骤S1002)从指针栈150弹出指针,写入/读出控制电路140通过指针用总线180获取该指针。并且,以该指针指示的共享缓冲器130内的地址为基础,指定数据块的写入地址。由此,将数据块存储到共享缓冲器130中。
(步骤S1003)把在步骤S1002获取的指针按照以下条件写入附属单元区域133a、接收首地址寄存器141a、接收尾地址寄存器142a。这些条件是根据接口信息中包含的块位置信息来进行判断的。
(步骤S1003-1)在存储在共享缓冲器130的数据块是数据分组的首数据块的情况下,把所获取的指针写入对应的接收首地址寄存器141a和接收尾地址寄存器142a。
(步骤S1003-2)在所存储的数据块是数据分组内的首、尾以外的其他数据块的情况下,参照存储在接收尾地址寄存器142a中的指针。该指针是指示前一数据块的写入地址的指针,写入/读出控制电路140把在步骤S1002获取的指针存储到该数据块的附属单元区域133a。由此,与同一数据分组中的前一数据块连接。
并且,使用在步骤S1002获取的指针,更新接收尾地址寄存器142a。
(步骤S1003-3)在所存储的数据块是数据分组内的尾数据块的情况下,参照存储在接收尾地址寄存器142a中的指针。并且,在写入该指针指示的地址的数据块的附属单元区域133a中存储在步骤S1002获取的指针,以与前面的数据块连接。另外,在所存储的数据块的附属单元区域133a中写入表示不存在后续数据块的信息。
(步骤S1004)根据块位置信息,判断传送处理中的数据块是否是数据分组内的尾数据块。在不是尾数据块的情况下返回步骤S1001,并等待后续数据块的存储处理的开始。在是尾数据块的情况下进入步骤S1005。
通过重复以上步骤S1001~步骤S1004的处理,将1个数据分组的数据块存储在共享缓冲器130中。此时,该数据分组内的首数据块的写入地址保存在接收首地址寄存器141a中,尾数据块或其前一数据块的写入地址保存在接收尾地址寄存器142a中。
另外,以上步骤S1001~步骤S1004的处理与图6所示的步骤S601~S605的处理对应。即,在该时刻,将在数据分组的存储中使用的指针及其数量保存在接收中指针计数器171a中。
然后,进行向发送队列的登录处理。
(步骤S1005)根据接口信息,选择目的地的发送端口。另外,此处,说明选择网络22作为目的地时的情况。并且,此时,将接收中指针计数器171a的计数值相加给发送队列指针计数器173b的计数值上。
(步骤S1006)在发送队列指针计数器173b中,在计数值超过允许值并且不存在其他目的地的情况下,从丢弃控制部163向写入/读出控制电路140输出控制信号。在写入/读出控制电路140接收到该控制信号的情况下进入步骤S1008,在未接收到的情况下进入步骤S1007。
(步骤S1007)对所接收的数据分组进行登录到与目的地对应的发送队列中的处理。此处,参照与所选择的发送端口对应的下一个发送数据分组地址寄存器146b,根据该寄存器里是否存储有数据,判断目的地的发送队列中是否登录有先行的数据分组。并且,通过向发送用各种寄存器和附属单元中写入存储在接收首地址寄存器141a中的指针,使数据分组连接到发送队列。
(步骤S1007-1)在与目的地对应的发送队列中登录有先行的数据分组的情况下,提取存储在接收首地址寄存器141a中的指针。并且,参照存储在与目的地对应的发送尾地址寄存器145b中的指针,提取已登录在发送队列内的尾数据分组的首数据块的写入位置,在该数据块的附属单元区域133a中存储从接收首地址寄存器141a中提取的指针。由此,在发送队列内的先行数据分组中,在其首数据块的附属单元区域133a中存储有指示后续数据块的指针、和指示后续数据分组的首数据块的指针,并在先行数据分组和新登录的数据分组之间进行连接。
并且,在发送尾地址寄存器145b中写入存储在接收首地址寄存器141a中的指针。由此,对指示发送队列中的尾数据分组的首位置的指针进行更新。
(步骤S1007-2)在与目的地对应的发送队列中未登录先行数据分组的情况下,把存储在接收首地址寄存器141a中的指针分别存储到与目的地对应的已发送数据分组地址寄存器143b、发送块地址寄存器144b、发送尾地址寄存器145b以及下一个发送数据分组地址寄存器146b中。由此,写入/读出控制电路140识别从对应的发送队列先行读出的数据分组的读出位置。
(步骤S1008)在步骤S1006中接收到来自丢弃控制部163的控制信号的情况下,参照接口信息,判断是否指定了其他发送端口作为目的地。在存在其他目的地的情况下返回步骤S1005,选择新的目的地的发送端口。
通过以上处理,在数据分组被正确登录在共享缓冲器130上的发送队列中的情况下,将该发送队列上的数据块作为使用了指针的链表结构来进行管理。然后,通过按照该链表结构顺序提取指针,从发送队列顺序读出数据块,并发送给目的地的网络。
图11是表示发送数据分组时的写入/读出控制电路140的处理流程的流程图。以下,按照步骤序号说明图11所示处理。
(步骤S1101)例如在向网络22进行数据分组的发送的情况下,当从收发接口112向数据传送电路120通知发送请求时,数据传送电路120把包括与其对应的发送端口信息的接口信息输出给写入/读出控制电路140。写入/读出控制电路140监视接口信息的接收,当接收到该接口信息时,判断为从共享缓冲器130的数据块传送已开始,进入步骤S1102。
(步骤S1102)参照存储在与发送端口对应的发送块地址寄存器144b中的指针,根据该指针指定共享缓冲器130的读出地址。由此,读出对应的发送队列的首数据块、和存储在其附属单元区域133a中的指针,将数据块通过数据传送电路120传送给收发接口112。
(步骤S1103)使用所读出的存储在附属单元区域133a中的指针和发送块地址寄存器144b的指针,按照以下条件更新已发送数据分组地址寄存器143b、发送块地址寄存器144b、发送尾地址寄存器145b以及下一个发送数据分组地址寄存器146b的指针。
(步骤S1103-1)首先,把存储在发送块地址寄存器144b中的指针写入已发送数据分组地址寄存器143b。由此,保存指示正在读出的数据分组的首数据块的指针。
并且,在所读出的数据块是数据分组的首部,并且在附属单元区域133a内存储有指示后续数据分组的指针(在图10的步骤S1007-1存储的指针)的情况下,把该指针存储到下一个发送数据分组地址寄存器146b中。由此,在发送队列内已登录下一个数据分组的情况下,可以识别该数据分组的首地址。
并且,把存储在附属单元区域133a的指示后续数据分组的指针(在图10的步骤S1102-2或S1102-3存储的指针),存储到发送块地址寄存器144b中。由此,可以识别下一个应该读出的数据块的地址。
(步骤S1103-2)在所读出的数据块不是数据分组中的首、尾数据块的情况下,把存储在附属单元区域133a的指示后续数据块的指针存储到发送块地址寄存器144b中。
(步骤S1103-3)在所读出的数据块是数据分组的尾数据块的情况下,把存储在下一个发送数据分组地址寄存器146b中的指针存储到发送块地址寄存器144b中。
(步骤S1104)把在步骤S1102中所参照的指针输出给指针用总线180。该处理对应于图7的步骤S702,将所输出的指针存储到对应的发送中指针计数器172b中并对发送中指针计数器172b进行增计数,同时对对应的发送队列指针计数器173a进行减计数。
(步骤S1105)判断所读出的数据块是否是数据分组中的尾数据块。在不是的情况下返回步骤S1101,并等待下一个数据块的传送的开始。以后,重复步骤S1101~步骤S1105的处理直到读出1个数据分组的数据块,并结束处理。
另外,在以上处理结束的时刻,将在所读出的1个数据分组的数据块中使用的指针全部存储到发送中指针计数器172b中,并保存该指针数。并且,从发送队列指针计数器173b的计数值中减去该指针数。
并且,然后在接口信息中包含其他目的地的发送端口的情况下,选择其他发送端口,将数据分组连接到与该发送端口对应的发送队列。此时,将发送中指针计数器172b的计数值加到与新发送队列对应的发送队列指针计数器上,在该计数值在允许值以内的情况下,允许登录数据分组。
为了登录数据分组,取出存储在已发送数据分组地址寄存器143b中的指针。与此同时,提取存储在新发送队列内的尾数据分组的首数据块,在其附属单元区域133a中存储来自已发送数据分组地址寄存器143b的指针,进行数据分组之间的连接。
在使用以上说明的连接数据结构的第1管理方法中,在共享缓冲器130内同时形成数据块和附属单元区域133a,在该附属单元区域133a中存储后续数据块和数据分组的首部的指针。由此,可以容易地连接数据分组内的数据块和发送队列内的数据分组。并且,使用对每个接收端口和发送端口设置的共5种寄存器,来控制发送队列的登录处理和从发送队列的读出处理。因此,可以利用廉价的装置结构有效地管理对共享缓冲器130的写入和读出处理。
(第2链表管理示例)在使用链表结构的第2管理示例中,在写入/读出控制电路140针对每个接收端口和发送端口设置存储器区域,通过在这些存储器区域顺序存储指示数据块的写入地址的指针,管理数据块之间的连接。
图12是表示写入/读出控制电路140具备的存储器的结构的图。
如图12所示,写入/读出控制电路140具备与各接收端口对应的接收用地址存储器147a~147d,和与各发送端口对应的发送用地址存储器148a~148d。
接收用地址存储器147a~147d是在把所接收的数据分组进行分割后得到的数据块存储到共享缓冲器130中时,顺序存储指示后续数据块的指针的存储器。发送用地址存储器148a~148d是在把数据分组登录到发送队列中时顺序存储指示后续数据块的指针的存储器。
这些存储器通过FIFO(First In First Out先入先出)控制可以进行指针的存储和取出。并且,除FIFO控制外,也可以进行LIFO(LastIn First Out后入先出)控制。
下面,说明使用这些存储器的写入/读出控制电路140的处理。另外,在以下图13和图14所示流程图的说明中,根据需要也追加说明网络交换装置100内的其他要素的处理。
图13是表示接收数据分组时的写入/读出控制电路140的处理流程的流程图。以下,按照步骤序号说明图13所示处理。
(步骤S1301和S1302)这些步骤的处理分别和图10所示步骤S1001和S1002相同。即,例如,当从收发接口111向数据传送电路120通知接收请求时,数据传送电路120把分割后的数据块的接口信息输出给写入/读出控制电路140。写入/读出控制电路140接收接口信息后,获取从指针栈150弹出的指针,把该指针指示的共享缓冲器130内的地址指定为数据块的写入地址。由此,将数据块存储到共享缓冲器130中。
(步骤S1303)把所获取的指针以FIFO方式存储到与接收端口对应的接收用地址存储器147a中。
(步骤S1304)判断传送处理中的数据块是否是数据分组内的尾数据块,在不是尾数据块的情况下返回步骤S1301。并且,通过重复以上步骤S1301~步骤S1304的处理,将1个数据分组的数据块存储到共享缓冲器130中。与此同时,将指示所存储的数据块的指针顺序存储到接收用地址存储器147a中,对数据分组内的数据块相互进行连接。
另外,此时,将与存储在接收用地址存储器147a中的指针相同的指针,存储到接收中指针计数器171a中。然后,进行把所存储的指针登录到例如与网络22对应的发送队列中的处理。
(步骤S1305)选择目的地的发送端口。此时,将接收中指针计数器171a的计数值加到与目的地对应的发送队列指针计数器173b上。
(步骤S1306)在发送队列指针计数器173b中,在计数值超过允许值的情况下,从丢弃控制部163输出控制信号。在输出该控制信号的情况下进入步骤S1309,在未输出的情况下进入步骤S1307。
(步骤S1307)把存储在接收用地址存储器147a中的指针以FIFO方式存储到与目的地对应的发送用地址存储器148b中。由此,进行与目的地对应的发送队列内的数据分组之间的连接。
(步骤S1308)清除接收用地址存储器147a,结束处理。
(步骤S1309)判定是否已指定其他目的地,在已指定的情况下返回步骤S1305,选择新的发送接口。
并且,在未指定的情况下进入步骤S1308。此时,将保存在接收中指针计数器171a中的指针退回指针栈150。另外,在接收用地址存储器147a~147d可以进行LIFO控制的情况下,代替接收中指针计数器171a,也可以把存储在接收用地址存储器147a中的指针退回指针栈150。
接着,图14是表示发送数据分组时的写入/读出控制电路140的处理流程的流程图。以下,按照步骤序号说明图14所示处理。
(步骤S1401)例如在向网络22进行数据分组的发送时,和图11的步骤S1101相同,从收发接口112向数据传送电路120通知传送请求,把包括与其对应的发送端口信息的接口信息从数据传送电路120输出给写入/读出控制电路140。当写入/读出控制电路140接收接口信息时,判断数据块的传送已开始,进入步骤S1402。
(步骤S1402)以FIFO方式取出存储在与发送端口对应的发送用地址存储器148b中的指针,根据该指针指定共享缓冲器130的读出地址。由此,读出对应的发送队列的首数据块,并通过数据传送电路120将其传送给收发接口112。
(步骤S1403)把从发送用地址存储器148b取出的指针输出给指针用总线180。将所输出的指针存储到对应的发送中指针计数器172b中,并进行增计数,同时对应的发送队列指针计数器173a进行减计数。
(步骤S1404)判定所读出的数据块是否是数据分组中的尾数据块,在不是的情况下返回步骤S1401。以后,重复步骤S1401~步骤S1404的处理直到读出1个数据分组的数据块,并结束处理。
另外,在以上处理结束的时刻,和图11的情况相同,将在所读出的1个数据分组的数据块中使用的指针全部存储到发送中指针计数器172b中,并保存该指针数。并且,从发送队列指针计数器173b的计数值中减去该指针数。
并且,然后在接口信息中包含其他目的地的发送端口的情况下,选择其他发送端口,将数据分组连接到与该发送端口对应的发送队列。关于可否连接发送队列,根据对应的发送队列指针计数器的计数值以及有无对对应的目的地端口的丢弃信号的断言(assert)来判定。
为了登录数据分组,例如,通过指针用总线180获取存储在发送中指针计数器172b中的指针,并将其存储到与新发送队列对应的发送用地址寄存器中。并且,在发送用地址存储器148a~148b中可以进行LIFO控制的情况下,也可以代替发送中指针计数器172b,以LIFO方式从发送用地址存储器148b中取出指针,并将其存储到目的地的发送用地址寄存器中。通过这种处理,容易地将数据分组连接到新的发送队列。
在使用以上说明的连接数据结构的第2管理示例中,在写入数据块时,将所使用的指针顺序存储在存储器中。并且,通过顺序取出存储在存储器中的指针,指定读出地址。通过这种处理,可以有效地管理数据分组内的数据块之间的连接和发送队列内的数据分组之间的连接。
此处,在上述的第2链表管理示例中,与第1管理示例相比,存储所使用的指针的处理非常简单。但是,在第2管理示例中,需要能够存储与存储在共享缓冲器130中的数据块数对应的指针的存储器,与第1管理示例中使用的寄存器组相比,需要准备大容量的存储器。因此,部件成本上升,存储器的设置面积变大。并且,在不仅可以进行FIFO控制,也可以进行LIFO控制的情况下,存储器的成本进一步上升。
如上所述,在本发明的网络装置中,对数据分组的每个传送目的地的网络形成可以登录固定数量的数据块的发送队列,将写入缓冲器的数据块以数据分组为单位顺序登录到与目的地对应的发送队列中,所以即使在数据块的写入中使用1个缓冲器,也能够防止产生阻塞。并且,将所接收的数据分组分割为1个或更多个的固定长度的数据块来写入缓冲器中,并且将各数据分组内的数据块之间的连接、和各发送队列内的数据分组之间的连接,作为基于各数据块在缓冲器中的写入位置的链表结构来进行管理,所以能够提高缓冲器的使用效率。
以上仅简单地表示出本发明的原理。另外,对本领域技术人员来说可以进行多种变形、变更,本发明不限于以上所说明的正确结构和应用示例,对应的所有变形示例和等同物可被视为落入所附权利要求书及其等同物的发明范围内。
权利要求
1.一种网络交换装置,在多个网络之间传送可变长度的数据分组,其特征在于,具有缓冲器,被共享为所接收的数据分组的数据和待发送的数据分组的数据的各自的存储区域;数据分组分割电路,把所接收的所述数据分组分割为1个或更多个的固定长度的数据块,来提供给所述缓冲器;以及缓冲器控制电路,对所述数据分组的每个传送目的地的所述网络形成可以登录一定数量的所述数据块的发送队列,在把分割后的所述数据块写入所述缓冲器后,将其以所述数据分组为单位顺序登录到与该目的地对应的所述发送队列中,而且,把所述各数据分组内的所述数据块之间的连接和所述各发送队列内的所述数据分组之间的连接,作为基于所述各数据块在所述缓冲器中的写入位置的链表结构来进行管理。
2.根据权利要求1所述的网络交换装置,其特征在于,所述缓冲器控制电路按照所述链表结构顺序读出登录到所述各发送队列中的所述数据块。
3.根据权利要求1所述的网络交换装置,其特征在于,在所述数据块向所述各发送队列的登录数量超过可登录数量的情况下,所述缓冲器控制电路将包含在该时刻处于登录处理中的所述数据块的所述数据分组丢弃。
4.根据权利要求1所述的网络交换装置,其特征在于,所述缓冲器控制电路对每个接收地点的所述网络形成可以登录每一个所述数据分组所允许的最大数量的所述数据块的接收队列,当完成一个所述数据分组的所述数据块向所述各接收队列的登录时,将对应的接收队列连接到与目的地对应的所述发送队列。
5.根据权利要求1所述的网络交换装置,其特征在于,所述缓冲器控制电路具备指针栈,该指针栈一维保存指示所述数据块在所述缓冲器中的写入位置的指针,在向所述缓冲器写入所述数据块时,从所述指针栈获取所述指针,使用所获取的所述指针,对所述各数据分组内的所述数据块之间的连接、和所述各发送队列内的所述数据分组之间的连接进行管理。
6.根据权利要求5所述的网络交换装置,其特征在于,所述缓冲器控制电路具有接收中指针计数器,对每个接收地点的所述网络设置该接收中指针计数器,在接收所述数据分组时,从所述指针栈获取的指针被顺序存储,并且该接收中指针计数器对正在存储的指针数进行计数;发送队列指针计数器,对每个传送目的地的所述网络设置该发送队列指针计数器,对与登录在所述各发送队列中的所述数据块对应的指针数进行计数;发送中指针计数器,对每个传送目的地的所述网络设置该发送中指针计数器,与从所述发送队列发送的所述数据分组对应的所述指针被顺序存储,并且该发送中指针计数器对正在存储的指针数进行计数,并且其中,在把所接收的所述数据分组登录到与目的地对应的所述发送队列中时,把对应的所述接收中指针计数器的计数值加到与目的地对应的所述发送队列指针计数器的计数值上,在从所述发送队列发送所述数据分组时,使对应的所述发送队列指针计数器顺序减计数,并且使对应的所述发送中指针计数器顺序增计数。
7.根据权利要求6所述的网络交换装置,其特征在于,在从所述发送队列发送所述数据分组时,所述缓冲器控制电路把所述指针推入并退回到所述指针栈中。
8.根据权利要求6所述的网络交换装置,其特征在于,在从所述发送队列发送所述数据分组后、继续向其他所述网络进行发送的情况下,所述缓冲器控制电路把与已发送的所述发送队列对应的发送中指针计数器的计数值加给与传送目的地的所述网络对应的所述队列指针计数器的计数值。
9.根据权利要求6所述的网络交换装置,其特征在于,在把所接收的所述数据分组登录到与目的地对应的所述发送队列中时、与目的地对应的所述队列指针计数器的计数值超过一定值的情况下,所述缓冲器控制电路丢弃处于登录处理中的所述数据分组,并且把存储在对应的所述接收中指针计数器中的所述指针推入并退回到所述指针栈中。
10.根据权利要求5所述的网络交换装置,其特征在于,所述缓冲器控制电路把表示所述各数据分组内的后续的所述数据块的写入位置的所述指针,作为附属数据与所述数据块一起写入所述缓冲器。
11.根据权利要求10所述的网络交换装置,其特征在于,在同一个所述发送队列中登录了多个所述数据分组的情况下,所述缓冲器控制电路把指示位于后续数据分组的首部的所述数据块的指针,作为位于先行数据分组的首部的所述数据块的所述附属数据并写入所述缓冲器。
12.根据权利要求11所述的网络交换装置,其特征在于,所述缓冲器控制电路把登录在所述各发送队列内的指示位于预定下一个发送的所述数据分组的首部的所述数据块的指针、和指示预定下一个发送的所述数据块的指针,分别保存到下一个发送数据分组地址寄存器和发送块地址寄存器中,参照所述各寄存器指定所述数据块从所述缓冲器的读出地址。
13.根据权利要求12所述的网络交换装置,其特征在于,在每次从所述各发送队列读出所述数据块时,所述缓冲器控制电路根据所读出的所述数据块的所述附属数据更新所述发送块地址寄存器,在每次读出所述数据分组时,根据位于所读出的所述数据分组的首部的所述数据块的所述附属数据,更新所述下一发送数据分组地址寄存器。
14.根据权利要求5所述的网络交换装置,其特征在于,所述缓冲器控制电路对于每个发送目的地的所述网络都具备发送用块位置存储器,该发送用块位置存储器用于存储指示登录到所述各发送队列中的所述数据块的写入位置的所述指针,并且所述缓冲器控制电路参照所述发送用块位置存储器指定所述数据块从所述缓冲器的读出地址。
15.根据权利要求14所述的网络交换装置,其特征在于,所述缓冲器控制电路还具备接收用块位置存储器,该接收用块位置存储器用于在分割后的所述数据块被写入所述缓冲器后,顺序存储指示同一数据分组内的后续的所述数据块的写入位置的所述指针,并且所述缓冲器控制电路在向所述发送队列登录所述数据分组时,把存储在所述接收用块存储器中的对应的所述指针,存储到与登录地点的所述发送队列对应的所述发送用块位置存储器中。
16.一种网络交换装置,在多个网络之间传送可变长度的数据分组,其特征在于,具有缓冲器,被共享为所接收的数据分组的数据和待发送的数据分组的数据的各自的存储区域;数据分组分割电路,把所接收的所述数据分组分割为1个或更多个的固定长度的数据块,来提供给所述缓冲器;指针栈,一维保存指示所述数据块在所述缓冲器中的写入位置的指针;以及缓冲器控制电路,使用从所述指针栈获取的所述指针,控制对所述缓冲器的所述数据块的写入动作和读出动作,并且其中,在向所述缓冲器写入所述数据块时,所述缓冲器控制电路从所述指针栈获取所述指针并将其指定为针对所述缓冲器的写入地址,并且把表示所述各数据分组内的后续的所述数据块的写入位置的所述指针,作为附属数据与所述数据块一起写入所述缓冲器。
17.根据权利要求16所述的网络交换装置,其特征在于,在同一所述发送队列中登录了多个所述数据分组的情况下,所述缓冲器控制电路把指示位于后续数据分组的首部的所述数据块的指针,作为位于先行数据分组的首部的所述数据块的所述附属数据,并将其写入所述缓冲器。
18.根据权利要求17所述的网络交换装置,其特征在于,所述缓冲器控制电路把登录到所述各发送队列内的指示位于预定下一个发送的所述数据分组的首部的所述数据块的指针、和指示预定下一个发送的所述数据块的指针,分别保存在已发送数据分组地址寄存器和发送块地址寄存器中,参照所述各寄存器指定所述数据块从所述缓冲器的读出地址。
19.根据权利要求18所述的网络交换装置,其特征在于,每当从所述各发送队列读出所述数据块时,所述缓冲器控制电路根据所读出的所述数据块的所述附属数据更新所述发送块地址寄存器,每当从所述各发送队列读出所述数据分组时,根据位于所读出的所述数据分组的首部的所述数据块的所述附属数据,更新所述已发送数据分组地址寄存器。
20.一种网络交换方法,把可变长度的数据分组暂时存储在1个缓冲器中,并在多个网络之间进行传送,其特征在于,把所接收的所述数据分组分割为1个或更多个固定长度的数据块,来提供给所述缓冲器,对所述数据分组的每个传送目的地的所述网络形成可以登录一定数量的所述数据块的发送队列,在把分割后的所述数据块写入所述缓冲器后,将其以所述数据分组为单位顺序登录到与该目的地对应的所述发送队列中,而且,把所述各数据分组内的所述数据块之间的连接和所述各发送队列内的所述数据分组之间的连接,作为基于所述各数据块在所述缓冲器的写入位置的链表结构来进行管理。
21.一种网络交换方法,把可变长度的数据分组暂时存储在1个缓冲器中,并在多个网络之间进行传送,其特征在于,把所接收的所述数据分组分割为1个或更多个固定长度的数据块,来提供给所述缓冲器,从一维保存指示所述数据块在所述缓冲器中的写入位置的指针的指针栈获取所述指针,并将其指定为针对所述缓冲器的写入地址,并且把表示所述各数据分组内的后续的所述数据块的写入位置的所述指针,作为附属数据与所述数据块一起写入所述缓冲器。
全文摘要
本发明提供一种提高存储可变长度的数据分组的缓冲器的使用效率,并且防止产生阻塞的网络交换装置。所接收的数据分组由数据分组分割电路(2)分割为1个或更多个固定长度的数据块,并被提供给缓冲器(1)。通过缓冲器控制电路(3)的控制,对数据分组的每个目的地的网络形成可以登录一定数量的数据块的发送队列(4-1~n),n是大于等于1的整数;将写入缓冲器(1)的数据块以数据分组为单位顺序登录到与目的地对应的发送队列中。此时,把各数据分组内的数据块之间的连接和各发送队列内的数据分组之间的连接,作为基于各数据块在缓冲器中的写入位置的链表结构来进行管理。
文档编号H04L12/56GK1689284SQ0382391
公开日2005年10月26日 申请日期2003年1月20日 优先权日2003年1月20日
发明者片山徹 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1