以太网交换控制器及其拥塞控制方法 【技术领域】
本发明涉及一种以太网交换控制器及其拥塞控制方法,尤指一种在网络拥塞时,限制单一连接端口不得使用过多系统资源,避免整体网络传输速率被拖慢的控制方法。背景技术
在办公室电子化的大潮流下,局域网(Local Area Network,简称LAN)的应用日广。虽然局域网的结构有很多种,如以太网(Ethernet)、令牌环(Token Ring)、光纤分布数据接口(Fiber Distributed Data Interface,简称FDDI)等,最广为使用的为以太网。这是由于以太网的架设与维护较为单纯,且成本较低。此外,快速以太网(Fast Ethernet)的出现,使得传输速率从原本的10Mbps,提升到100Mbps,甚至1Gbps,更强化了以太网的功能,使其主流地位更形稳固。
在以太网中,将个人计算机、工作站与服务器等连接起来的,多是集线器(Hub)或交换机(Switch)等等。以太网集线器虽然成本较低,但其带宽是由所有的连接装置所共享,所以装置越多,封包产生冲突的机率也越大,当流量大的时候,就会严重影响网络运作的效率。
利用以太网交换机就能避免上述的问题。以太网交换机具有地址学习功能,可将所连接装置的地址记录在内建的路径表中。当交换机接收到一帧(frame)时,会去判断帧地目的地址是否在路径表中,若是,则将此帧输出至对应的连接端口;若否,则将此帧广播至所有的连接端口。根据封包中的来源(SMAC,Source MAC)地址及其来源端口,交换机将更新路径表,建立新的目的地址与连接端口的对应关系。通过上述机制,以太网交换机可以充分利用带宽,因而提高网络运作效率。
以太网交换机内的交换控制器通常具备拥塞控制(congestion control)的功能,使各连接端口间的封包交换更有效率,以增加网络整体吞吐量(throughput)。一般的作法是,当一目的端口已进入拥塞状态时,此时若有网络封包要转送至此目的端口,则封包的来源端口会依据其所连接装置的状态,激活一拥塞控制方式,以管制封包的进出,避免封包再送至拥塞的目的端口。
前述的作法可细述如下:IEEE协会在802.3u标准中纳入了自动协调(auto negotiation)功能的设计,它能让以太网交换控制器与连接装置(加以太网卡)间取得彼此的状态。以太网交换控制器会与所连接装置进行此一自动协调的过程,而后依据连接装置的状态,选择适当的拥塞控制方式。一般而言,有三种控制方式:(1)当所连接的装置为全双工且具流量控制能力时,选择流量控制(flow control)方式;(2)当所连接的装置为全双工且不具流量控制能力时,选择丢弃控制(drop control)方式;(3)当所连接的装置为半双工且不具流量控制能力时,则选择回压控制(backpressure)方式。不论选择哪种拥塞控制方式,待拥塞的目的端口解除拥塞状态后,即可予以停止,以使交换机中原本受到管制的来源端口,也恢复正常的封包接收。
不过,前述作法必须搭配交换控制器对储存封包的缓冲器做适当的管理,才能真正发挥拥塞控制的效果。我们先看现有以太网交换控制器所采用的缓冲器管理方式会造成什么问题。一般以太网交换机均有内建内存装置,作为缓冲器(buffer)使用,可以暂存等待输出的网络封包。连接端口从网络接收封包后,经查询路径表决定其所要输出的连接端口,并将封包送入缓冲器暂存及要求于该连接端口所对应的输出队列中建立连结。之后,当交换控制器要输出此封包时,便依据先前在输出队列建立的连结,将缓冲器中的封包送出。为了提高交换控制器的运作效率,一般的作法都是由各个连接端口不受限地缓冲器。由于各连接端口的网络流量不一,但若采取事先限定每个连接端口可使用多少缓冲器空间,可能就会造成流量大的连接端口空间不敷使用,而流量小的连接端口却有缓冲器空间闲置的情形,如此就造成资源未充分利用的情形,网络运作效率自然无法提高。
但是,采用此种“共享内存结构”(shared memory architecture)的以太网交换控制器,在网络拥塞时就会碰到问题。因为每个连接端口实际传收的流量不一,如果速度慢的连接端口一下涌进大量的封包要传送,占用了大部分的缓冲器,造成此连接端口的拥塞,此时速度快的连接端口若要从网络接收封包,只能使用剩余小部份的缓冲器,只要流量稍大,缓冲空间便会用尽,必须等待慢速连接端口消化其输出封包,释出缓冲器空间,快速连接端口才能继续接收封包。换言之,快速连接端口的传输速率就会明显地受制于慢速连接端口的速率。
所以,现有以太网交换控制器所使用的共享内存结构,在网络进入拥塞状态时,常会造成慢速的连接端口拖累快速连接端口的问题,形成一种不公平的现象。发明内容
针对上述的问题,本发明提供一种以太网交换控制器及其拥塞控制方法,主要系在网络进入拥塞状态时,将交换控制器所用的共享内存结构改变为“等分内存结构”(equal memory partition structure),即限定每个连接端口所对应的输出队列的长度,当超过此限定的长度,输出队列便进入“拥塞”状态,之后若有来源端口要求于此输出队列建立连结,该来源端口就会进入流量管制状态,不再将网络封包接收进来,输出队列的长度就能受到节制。换言之,每个输出队列最多只能使用相同大小的缓冲器空间,此即“等分内存结构”名称的由来。输出队列的长度得到控制,就不会发生慢速连接端口固占用过多缓冲器资源而拖慢其它连接端口的问题。
进一步而言,采取等分内存结构可实现最佳的公平性。此处最佳公平性是指,由于一连接端口传输封包所花的时间与其传输速率成反比,因此一拥塞的目的连接端口处于拥塞的时间也应与其输出速率成反比。
当网络脱离拥塞状态时,即改回使用共享内存结构。如此,一方面可享受共享内存结构所提供的网络运作效率,另一方面又能在网络拥塞时,解决共享内存结构所造成的不公平问题,避免网络传输速率被慢速的连接端口拖累。
本发明中,定义了系统的三种状态:XON(正常)、XOFF(拥塞)及ALL XOFF(严重拥塞),拥塞控制即以此为基础,这里系统则是指以以太网交换机为中心的网络。当交换机内的缓冲器空间低于一预设的“系统拥塞临限值”,系统即进入XON状态,如前所述,缓冲器的管理方式也由共享内存结构改为等分内存结构。
进一步,若拥塞变得更加严重,以致缓冲器空间低于一预设的“系统严重拥塞临限值”,系统则进入ALL XOFF状态。此时,系统已处于严重拥塞、资源极度短缺的情形,因此必须对所有来源端口进行流量管制,不再接收任何网络封包进来,以免造成系统瘫痪或是数据流失。待缓冲器空间回升到一预设的(解除系统严重拥塞临限值),系统即回到XOFF状态;而必须等到缓冲器回升至一预设的“解除系统拥塞临限值”。系统才完全脱离拥塞,回到XON状态,缓冲器管理也由等分内存结构改回共享内存结构。附图说明
图1是实施本发明的以太网交换机的电路连结方块示意图;
图2是图1以太网交换控制器的电路方块图的一实施例;
图3是本发明的以太网交换机内缓冲器空间的变化情形;
图4是本发明的输出队列的长度的变化情形;
图5是本发明的来源连接端口使用RX_ON/RX_OFF窗口执行流量管制的示意图。具体实施方式
本节将以一较佳实施例,配合附图作一详细说明,以使本发明的目的及特征更明显易懂。
图1是实施本发明的以太网交换机的电路连结方块示意图。其中,以太网交换机10包括:多个连接端口11,用于接收或传送封包;多个物理层装置12,一对一耦接至该些连接端口11;一缓冲器13,用以储存待输出的封包;一缓存器14,储存拥塞控制的相关设定值;一以太网交换控制器15,耦接至该些物理层装置12;交换控制器15用以执行封包交换的动作,并在网络拥塞时,根据缓存器14的设定值进行拥塞控制。
图2是图1中的以太网交换控制器的电路方块图的一实施例,其中以太网交换控制器15包括:多个连接端口控制装置154、队列控制装置153、转送控制装置151以及缓冲器控制装置152。多个连接端口控制装置154,耦接至多个物理层装置(PHY)12,该些物理层装置12通过自动协调机制可得到对方连接装置的多个状态信号。包括双工模式(duplex mode)信号及流量控制能力(flow control capability)信号,通过这些状态信号可得知对方连接装置是全双工或半双工,以及是否具备流量控制能力,并据此选择何种拥塞控制方式。
转送控制装置151,耦接至多个连接端口控制装置154,其根据此多个连接端口控制装置154所收到网络封包的标头查询路径表,以决定网络封包所欲转送的目的连接端口。缓冲器控制装置152,耦接至多个连接端口控制装置154,每一个连接端口控制装置154可至缓冲器13要求缓冲器空间。缓冲器控制装置152根据这些连接端口控制装置114的要求,来分配(allocate)或释放(free)缓冲器的空间。
队列控制装置153,耦接至这些连接端口控制装置154、缓冲器控制装置152及转送控制装置151,每一个连接端口控制装置154在队列控制装置153中各有对应的输出队列,根据各连接端口控制装置154所送的要求,在其对应的输出队列中建立连结。如果队列控制装置153的输出队列已进入拥塞状态,则送出拥塞窗口(congestion window)信号至转送控制装置151,并送出一激活流量管制窗口信号,以要求来源连接端口进行拥塞控制。
进一步,我们要详述如何运用上文的硬件结构,来实施本发明的拥塞控制方法。图3是以太网交换机内缓冲器的空间变化情形。假设系统初启用时,以太网交换机10内的缓冲器13并未储存任何封包,如图3的E0
所示,启用后才开始从连接端口11接收网络封包,并暂存于缓冲器13中等待输出。
当缓冲器13的剩余空间仍大于或等于系统拥塞临限值时,系统处于正常(XON)状态,未出现拥塞,亦没有任一连接端口11进入流量管制状态。所以,任何接收进来的封包皆能正常地转送出去。此接收一转送的过程可描述如下:连接端口控制装置154通过物理层装置12从连接端口11接收封包,经转送控制装置151查表决定目的连接端口;连接端口控制装置154则要求缓冲器13的空间以储存封包,缓冲器控制装置152即依此要求来分配缓冲器的空间;接着连接端口控制装置154向队列控制装置153要求于目的连接端口所对应的输出队列中建立连结;接下来目的连接端口的端口控制装置即从输出队列输出封包,缓冲器控制装置152则释放封包所占的缓冲器空间。
然而,如图3的E1所示,当缓冲器13的剩余空间下降至低于系统拥塞临限值时,系统即脱离XON状态而进入XOFF状态,换言之,即进入拥塞状态。此时,由于缓冲器的空间所剩不多,即不能采用共享内存结构,让所有连接端口11(及其对应的输出队列)无限制地共同使用缓冲器,而是改采等分内存结构的方式,限定每一输出队列能使用一定量的缓冲器空间,如此慢速连接端口的输出队列便不致占用过多的缓冲器,而拖慢整个网络的传输速率。请参阅图4,若一输出队列的长度增加至大于或等于一预设的“输出队列拥塞临限值”,即E5,此输出队列即进入局部(local)拥塞状态,而应实施拥塞控制。队列控制装置153对该输出队列激活(assert)一拥塞窗口信号至转送控制装置151;之后,若有一来源连接端口接收网络封包并要求于此输出队列中建立连结,则队列控制装置153会送出一激活流量管制窗口信号至该来源连接端口的端口控制装置,促使该来源连接端口开始进行流量管制,该来源连接端口便不会再将网络封包接收进来,此输出队列的长度就能受到控制,例如可通过对连接至来源端口的装置发出延迟时间为FF的暂停帧(pause frame),使该装置暂停一段时间(FF),不对该来源端口送封包。
当此进入拥塞状态的输出队列持续从缓冲器13输出封包,以致该输出队列长度减回至小于一预设的“解除输出队列拥塞临限值”时,如图4 E6所示(此“解除输出队列拥塞临限值”小于“输出队列拥塞临限值”),此输出队列即脱离局部拥塞状态,队列控制装置153解除(deassert)该拥塞窗口信号至转送控制装置151,以及送出一关闭流量管制窗口信号至先前进行流量管制的端口制装置,使得对应的来源连接端口解除流量管制,重新开始接收网络封包。不过,若此时系统仍未脱离XOFF状态,即系统尚未回到解除系统拥塞临限值,各输出队列的长度依然受到输出队列拥塞临限值的限制,当长度再到达输出队列拥塞临限值时,如图4阶所示,输出队列仍将进入拥塞状态。
进一步,本发明还纳入一项设计,借以处理系统严重拥塞(ALL XOFF)的情形。如图3所示,通过设定比系统拥塞临限值还低的“系统严重拥塞临限值”,以此作为判断系统是否陷入严重拥塞的临限值。当缓冲器13所余空间低于此临限值,此时系统资源已处于极度短缺的情形,必须限制所有连接端口11不得再接收封包进来,以免系统不堪负荷:如图3的E2,当缓冲器13的剩余空间下降至低于系统严重拥塞临限值时,所有输出队列即全数进入拥塞状态,该多个连接端口控制装置154则收到发自队列控制装置153的激活流量管制窗口信号,开始对该多个连接端口11进行流量管制。
一旦系统进入ALL XOFF状态后(E2),必须待缓冲器空间回升至解除系统严重拥塞临限值(该解除系统严重拥塞临限值大于前述的系统严重拥塞临限值),如图3的E3,才能回到XOFF状态。必须强调的是,图3显示该解除系统严重拥塞临限值系小于系统拥塞临限值,此并非实施本发明的必要条件,事实上该解除系统严重拥塞临限值与系统拥塞临限值之间没有必然的大小关系,因此,应注意到亦可直接使用系统拥塞临限值为解除系统严重拥塞临限值。假设若此回升是由已进入拥塞状态的输出队列Q输出封包所造成(可由图4的输出队列长度来判断),代表某些输出队列的封包去化速度很快,不应受到其它封包去化速度较慢的连接端口的拖累;此可通过检查Q的长度若仍大于或等于输出队列拥塞临限值,Q仍处于拥塞状态;若已缩短至低于输出队列拥塞临限值,Q则解除拥塞状态,该多个连接端口控制装置154则收到发自队列控制装置153的关闭流量管制窗口信号,停止对该多个连接端口11进行流量管制。
系统不论是处于ALL XOFF状态或XOFF状态,都必须持续将暂存于缓冲器的封包转送出去,直到缓冲器所剩空间增加至解除系统拥塞临限值时(当然该值大于“系统拥塞临限值”及“系统严重拥塞临限值”),如图3的E4,才会回到正常(XON)则状态,代表该交换机完全脱离拥塞。此时,任何处于拥塞状态的输出队列,也都解除拥塞状态,队列控制装置153会解除对应这些拥塞输出队列的拥塞窗口信号至转送控制装置151,并分别送出关闭流量管制窗口信号至仍处于流量管制状态的端口控制装置,使得对应的来源连接端口解除流量管制,重新开始接收网络封包。同时,由于此时缓冲器剩余空间已回复正常水准,交换控制器于ALL XOFF状态或XOFF状态采行的等分内存结构(亦即以输出队列拥塞临限值限制输出队列的长度,如图4的E5、E7),便不再使用,而恢复原先于XON状态使用的共享内存结构,让所有连接端口11无限制地共同使用缓冲器,而不去控制所对应输出队列的长度。
在此实施例中,交换控制器于系统处于XOFF状态所用的等分内存结构中,较佳地各输出队列最多可使用约4K字节的缓冲器空间,此大于以太封包最大可能长度的两倍,因此当系统处于XOFF状态时,如图3的E1至E2以及E3至E4,若某些输出队列陷于拥塞状态,便可优先疏通其它交通流量顺畅的输出队列及对应的连接端口。
关于来源连接端口如何进行流量管制,此处再作进一步说明。在本发明中,来源连接端口的流量管制由此RX_ON/RX_OFF窗口为基础。图5是来源连接端口使用RX_ON/RX_OFF窗口执行流量管制的示意图。在未有任何输出队列进入拥塞状态时,所有来源连接端口皆可正常接收封包,即处于RX_ON窗口;但当某一输出队列进入拥塞状态后,若有来源连接端口接收封包并要求于此输出队列建立连结,则来源连接端口的端口控制装置会从队列控制装置153收到一激活流量管制窗口信号,要求其进行流量管制,此时来源连接端口就会进入RX_OFF窗口,并依据对方连接装置的状态来决定采取何种拥塞控制方式:(一)当对方连接装置为全双工且具流量控制能力时,选择流量控制方式。依此方式,交换控制器会送出流量控制帧(flow control frame)到连接装置,要求其停止传送封包,待拥塞情形解除后,再恢复传送。(二)当所连接的装置为全双工且不具流量控制能力时,选择丢弃控制方式。换言之,即直接丢弃连接装置所传来的封包,不让其送至拥塞的目的端口。(三)当所连接的装置为半双工且不具流量控制能力时,则选择回压控制方式。此方式是由交换控制器发出冲突信号将封包破坏,使连接装置侦测到冲突后,即以“二元指数后退算法”(Binary Exponential Backoff Algorithm)计算出等待时间,过后再重新传送封包。借此,来源连接端口便不会再有网络流量进来,而实现流量管制的效果。
当输出队列脱离拥塞状态,来源连接端口的端口控制装置会从队列控制装置153收到一关闭流量管制窗口信号,此时来源连接端口就会从RX_OFF窗口回到RX_ON窗口,解除流量管制,正常接收网络封包。
前文所提到的所有临限值,包括系统拥塞临限值、系统严重拥塞临限值、解除系统拥塞临限值、解除系统严重拥塞临限值、输出队列英塞临限值以及解除输出队列拥塞临限值,皆储存于缓存器14中,其值可因应网络实际的运作情形,由以太网交换控制器15来设定或调整。
综上所述,本发明提供了一种以太网交换控制器及其拥塞控制方法,可于网络陷入拥塞时,使用等分内存结构的方式,限制单一连接端口不致使用过多的系统资源,避免了因慢速连接端口处于拥塞而拖慢整体网络传输速率的问题。
然而以上所述仅为本发明的较佳实施例,并不能以此限定本发明的范围。凡依本发明权利要求所作的同等变化与修饰,皆应仍属于本发明专利涵盖的范围内。