【具体实施方式】
请参考图1,其为网络交换***10的示意图。如图1所示,网络交换***10包含局域网(local area network,LAN)端口102、广域网(wide area network,WAN)端口104、CPU端口106、转发引擎(forwarding engine)108、缓冲区管理器(buffer manager)110、队列管理器112以及静态随机存取存储器(SRAM)130。LAN端口102及WAN端口104为示范性端口,在其他范例中,网络交换***可包含其他类型的网络端口或处理卸载网络服务的卸载引擎(offloadengine)。通过使用直接存储器存取(direct memory access,DMA),CPU端口106通过总线矩阵116及动态随机存取存储器(DRAM)140来执行主CPU114与其他网络端口之间的连接。转发引擎108用来通过获得每一封包(packet)的目的端口及目的队列来实现转发决定。缓冲区管理器110用来管理SRAM130。队列管理器112用来管理网络端口的多个队列。SRAM130用来储存要求通过网络交换***10发送的封包。在CPU端,总线矩阵116表示主CPU114及相应***设备之间的通信体系结构,以及DRAM140用来储存在主CPU114及***设备之间交换的封包。
具体来说,当封包P1进入网络交换***10并被要求从LAN端口102传输至WAN端口104时,转发引擎108首先查找封包P1的头部信息,以获得封包P1的目的队列及目的端口(即WAN端口104)。LAN端口102从SRAM130请求一个空闲的缓冲空间,封包P1便储存在该缓冲空间中。LAN端口102根据头部信息,接着通知队列管理器112封包P1应被传输至WAN端口104的目的队列。队列管理器112接着将封包P1入列(enqueue)至WAN端口104的目的队列。在从队列管理器112接收封包P1的队列状态之后,WAN端口104将封包P1出列并读出。WAN端口104接着将封包P1发送出去并释放缓冲空间。因此,完成了分组交换过程。
请继续参考图1。如果需要传输封包P2至主CPU114,应该由CPU端口106使用DMA来管理封包P2。如图1所示,在从LAN端口102传输封包P2至CPU端口106之后,接着通过使用DMA将封包P2复制到DRAM140中,其中DRAM140由主CPU114来管理。因此,可以由主CPU114来处理封包P2。
然而,封包P2被储存在SRAM130,接着经由使用DMA并通过CPU端口106被复制到DRAM140中,而这样对于网络交换***10来说效率很低。此外,SRAM130的缓冲空间很小,当网络交换***10的通信拥塞时更有可能会导致封包丢失。因此,可以修改网络交换***10的结构来克服上述缺陷。举例来说,请参考图2,其为另一网络交换***20的示意图。如图2所示,网络交换***20的结构类似于网络交换***10的结构;因此用相同的符号来表示类似功能的元件及信号。网络交换***20与网络交换***10之间的主要差别在于,网络交换***20不包含SRAM130。在这种情况下,LAN端口102、WAN端口104及CPU端口106通过总线矩阵116直接存取DRAM140。换句话说,网络交换***20的存储器功能完全由DRAM140来执行,其远大于SRAM130,当网络交换***20的通信拥塞时可拥有更多的缓冲空间来储存封包,如此一来,可降低封包丢失的可能性。
然而,网络交换***20仍然遭遇效率低的问题,即缓冲区管理器110首先存取DRAM140,接着CPU端口106再次存取DRAM140(两次储存封包至DRAM140)。此外,DRAM140由主CPU114及网络交换***20共享,当网络交换***20的通信负载繁重时,会导致DRAM140的带宽被网络交换***20的分组交换占用,这样一来会降低主CPU114的性能。因此,可做出进一步的修改。请参考图3,其为网络交换***30的示意图。如图3所示,网络交换***30的结构类似于网络交换***20的结构;因此用相同的符号来表示类似功能的元件及信号。网络交换***30与网络交换***20之间的主要差别在于,网络交换***30不包含CPU端口106。在这种情况下,不需要将封包P2储存至DRAM140中两次,如此一来可提升效能。然而,DRAM140仍然由主CPU114及网络交换***20共享;当网络交换***30的通信负载繁重时,DRAM140的带宽仍然被分组交换占用。
为了解决上述问题,本发明提出一种网络交换***,不同于以上所述各个网络交换***。
请参考图4,其为依据本发明实施例的网络交换***40的示意图。如图4所述,用同样的符号表示类似功能的元件及信号。网络交换***40包含存储器选择单元420,用于根据网络交换***40的通信是否拥塞,选择SRAM130或DRAM140来储存每一个被要求传输的封包。基于转发策略,网络交换***40也具有更高的效率(没有两次储存的封包)。另外,存储器选择单元420用于根据网络交换***40的拥塞状态来为每一个封包选择指定的存储器,这样解决了由于DRAM140的带宽总是被分组交换占用而降低了主CPU114的性能的问题。
具体来说,请参考图5,其为网络交换***40的具体结构的示意图。如图5所示,所有网络端口(例如,LAN端口102、WAN端口104以及CPU端口106)都聚合为端口518以求简化。在另一些范例中,端口518可包含其他类型的网络端口,例如以太网、数字用户线(xDSL)、3G/3.5G等等。另外,端口518也可包含卸载网络服务,具有卸载引擎例如加密(crypto)引擎、内容扫描引擎、***组件互连高速(Peripheral Component Interconnect Express,PCIe)主机、通用串行总线(USB)主机、WiFi网络接口控制器(network interface controllers,NICs)以及3G/LTE NICs等等。缓冲区管理器110更包含SRAM缓冲区管理器530及DRAM缓冲区管理器540,分别用来管理SRAM130及DRAM140的空闲缓冲空间。
当要求从一个端口(即源端口)传输一个封包至另一端口(即目的端口)时,转发引擎108萃取(retrieve)与源端口、目的端口及封包优先级相关的信息,并提供该信息给缓冲区管理器110。源端口接着从缓冲区管理器110要求缓冲空间。存储器选择单元420获得目的端口及优先级的相关信息,并依据封包目的队列的拥塞状态来命令缓冲区管理器110从SRAM130或DRAM140分配缓冲空间,其中目的队列可对应于封包的优先级信息。为了分别获得SRAM130及DRAM140中空闲缓冲空间的相关信息,存储器选择单元420还与SRAM缓冲区管理器530及DRAM缓冲区管理器540通信。在缓冲空间被分配给封包后,将封包储存在缓冲空间中。队列管理器112接着将封包入列至目的队列。最后,目的端口从队列管理器112接收封包的队列状态并将封包出列。目的端口接着将封包发送出去并释放缓冲空间给缓冲区管理器110。因此,完成了分组交换过程。
请注意,网络交换***40可包含两种类型的存储器:SRAM及DRAM,且存储器选择单元420用于依据网络交换***40的拥塞状态,更具体地说,依据每一封包的目的队列的拥塞状态,选择两种存储器类型其中之一来储存网络交换***40中要交换的每一封包。在这两种存储器中,SRAM具有存取速度高及功率消耗低的优势,并易于嵌入在片上***(system on chip,SOC)。另一方面,通常DRAM具有比SRAM大得多的缓冲空间,如此一来可通过使用DRAM来降低封包丢失的可能性。通常,在网络交换***40中,当封包的目的队列拥塞时,封包储存在DRAM140中;因此具有更大缓冲空间的DRAM140可防止封包轻易丢失。当封包的目的队列不拥塞时,封包储存在SRAM130中;因此可以更快速度及更低功耗来执行分组交换。此外,在这种情况中,DRAM140的带宽不会被分组交换占据,并可节省其来用于主CPU114,如此一来也可提升主CPU114的性能。因此,网络交换***40比只有SRAM的传统网络交换***(例如网络交换***10,更有可能会遭遇封包丢失)性能更好。网络交换***40也比只有DRAM的其他传统网络交换***(例如网络交换***20或网络交换***30,当网络交换***的通信负载繁重及DRAM130带宽被分组交换占据时,主CPU114的性能容易被分组交换干扰)性能更好。此外,相比仅有DRAM的网络交换***,网络交换***40拥有更快速度及更低功耗。
可以看到,SRAM130用来当网络交换***40的通信不拥塞时储存封包,以及DRAM140用来当网络交换***40的通信拥塞时储存封包。因此,为了决定使用哪一个存储器来储存每一封包,应该判定每一队列的拥塞状态。举例来说,每一队列的通信负载可被认为是拥塞状态的依据。请参考图6A及图6B,其为依据本发明实施例的具有存储器选择的两个网络端口之间的分组交换的示意图。如图6A所示,在LAN端口602及WAN端口604之间执行分组交换。假设LAN端口602及WAN端口604都能达到1GB的吞吐量。在这种情况下,因为LAN端口602及WAN端口604的吞吐量相等,所以从WAN端口604传输来的封包可被发送至LAN端口602,而不会在LAN端口602发生任何拥塞,并且从LAN端口602传输来的封包也可被发送至WAN端口604,而不会在WAN端口604发生任何拥塞。因此,SRAM130用于储存封包,其具有较高存取速度、较低存取延迟及较低功率消耗的优势,以达到更高的性能。此外,来自LAN端口602的1GB高吞吐量及来自WAN端口604的1GB高吞吐量(总共2GB吞吐量)不会占据DRAM140的带宽,如此一来主CPU的性能不会受到干扰。
如图6B所示,在LAN端口652及另一WAN端口654之间执行分组交换。假设LAN端口652可达到1GB的吞吐量,以及WAN端口654可达到10MB的吞吐量。在这种情况下,因为LAN端口652的吞吐量比WAN端口654的吞吐量大得多,所以从WAN端口654传输来的封包可被发送至LAN端口652,而不在LAN端口652发送任何拥塞,但是从LAN端口652传输至WAN端口654的封包会在WAN端口654的队列中发生拥塞。因此,对于储存从WAN端口654至LAN端口652的封包,使用了SRAM,其也具有较快存取速度及较低功耗的优势,以达到更高性能。另一方面,对于储存从LAN端口652至WAN端口654中拥塞队列的封包,应使用DRAM以避免封包丢失。如图6B所示,当传输开始时,由于拥塞还没发生或拥塞还轻微,所以先前的封包仍然储存在SRAM130中。在更多封包等候在WAN端口654的队列中后,开始选择DRAM140来储存封包。
在以上范例中,存储器选择单元420判定网络交换***40的拥塞状态并命令缓冲区管理器110相应地选择SRAM130或DRAM140。通常,当网络交换***40拥塞时,选择DRAM140,而当网络交换***40不拥塞时,选择SRAM130。在这种条件下,可实行不同的方法来判定拥塞状态。举例来说,可依据在SRAM130中是否仍有空闲的缓冲空间来判定拥塞状态。如果在SRAM130中仍有空闲的缓冲空间,可认为网络交换***40不拥塞并选择SRAM130;如果在SRAM130中没有空闲的缓冲空间,可认为网络交换***40拥塞并选择DRAM140。这种方法简单且可充分使用SRAM130。然而,对于网络交换***40的不同用户,该方法可能会遭受低劣品质及糟糕的服务质量。举例来说,当用户传输大量封包至网络交换***40且封包的目的队列拥塞时,用户会占据SRAM130的所有带宽。如果其他用户需要在此时传输封包,他们应该使用DRAM140并面临较慢的存取速度。
因此,考虑到品质和效率,可以执行其他方法来判定网络交换***40的拥塞状态。在一些实施例中,SRAM130或DRAM140中的缓冲空间可被分为两种类型:完全开放的(free-for-all)缓冲空间及预留的缓冲空间。完全开放的缓冲空间由网络交换***40所有网络端口的所有队列来存取,以及预留的缓冲空间为特定队列预留着并仅由该特定队列来存取;也就是说,只有在特定队列中入列的封包可以储存在相应的预留缓冲空间。举例来说,假设网络交换***具有10个队列及1000个SRAM缓冲空间单元,该1000个SRAM缓冲空间单元可被分为500个完全开放的缓冲空间单元及500个预留的缓冲空间单元,并且10个队列中的每一个队列可对应于50个预留的缓冲空间单元。当然,可以应用其他分类方法,或者依据服务质量策略,每一个队列可被预留给不同的预留的缓冲空间单元,本发明不限于此。
在以上范例中,在SRAM中,允许每一队列存取500个完全开放的缓冲空间单元及50个预留的缓冲空间单元。在这种情况下,当到达一个封包时,特定队列Qi首先存取完全开放的缓冲空间单元,在使用完完全开放的缓冲空间单元之后接着存取预留的缓冲空间单元。在使用完所有的可存取SRAM缓冲空间(即550个缓冲空间单元)后,认为队列Qi发生拥塞并开始存取DRAM。
上述选择策略可总结至图7所示表格。如图7所示,SRAM和DRAM中的缓冲空间被分为完全开放的缓冲空间(FFA)及预留的缓冲空间(Resv)。当需要传输封包至队列Qi时,如果SRAM中有完全开放的缓冲空间,队列Qi存取SRAM中完全开放的缓冲空间来储存封包(策略序列1)。如果SRAM中完全开放的缓冲空间被使用完了,若SRAM中有队列Qi的预留的缓冲空间,则队列Qi存取为其预留的缓冲空间(策略序列2)。如果所有可存取的SRAM缓冲空间都被使用完了,若DRAM中有完全开放的缓冲空间,队列Qi存取DRAM中完全开放的缓冲空间来储存封包(策略序列3)。如果DRAM中完全开放的缓冲空间被使用完了,若DRAM中有队列Qi的预留的缓冲空间,则队列Qi存取为其预留的缓冲空间(策略序列4)。如果所有可存取的SRAM缓冲空间和DRAM缓冲空间都被使用完了,则暂停队列Qi(策略序列5),这意味着队列Qi装满了封包,并且必须丢弃被要求发送至队列Qi的每一个新的封包。
要注意的是,本发明提供能够依据网络交换***拥塞状态来储存封包至指定存储器的网络处理器及其方法,本领域技术人员可做出相应的修改与变化。举例来说,选择方法不限于上述选择策略;在其他范例中,可应用其他选择策略,例如改变完全开放的缓冲空间及预留的缓冲空间的优先级,本发明不限于此。另外,网络交换***中使用的存储器不限于SRAM及DRAM,也可使用其他类型的存储器。此外,上述范例仅指定例如LAN端口、WAN端口及CPU端口的网络端口,但网络交换***中也可包含其他类型的网络端口及卸载引擎。这些修改详述如下。
如上所述,网络交换***40使用合适的存储器来储存封包,以提升分组交换的性能。在这种情况下,只要存储器选择单元依据网络交换***的拥塞状态在具有不同特性的至少两个存储器之间执行合适的选择,就可以使用任何类型的存储器来储存封包。这些存储器包含但不限于,随机存取存储器(RAM),例如SRAM、DRAM、磁性RAM(MRAM)或任意其他类型的RAM,只读存储器(ROM),例如可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)或任意其他类型的ROM,或其他类型的存储器。
网络交换***所包含的存储器的特性在一定程度上应该不一样,确立了用于存储器选择单元的不同存储器之间的区别。举例来说,SRAM130或DRAM140特性不相同,SRAM130具有较小尺寸(即较小的缓冲空间)但DRAM140具有较大尺寸(即较大的缓冲空间);SRAM130具有较高存取速度但DRAM140具有较低存取速度;SRAM130具有较低功耗但DRAM140具有较高功耗;SRAM130可易于嵌入在片上***但DRAM140不能;SRAM130为静态存储器但DRAM140为动态存储器。因此,存储器选择单元可基于特性的区别,在合适的时间选择合适的存储器。
请参考图8,其为依据本发明实施例的网络交换***80的示意图。如图8所示,网络交换***80的结构类似于网络交换***40的结构;因此用相同的符号表示类似功能的元件及信号。网络交换***80与网络交换***40之间的主要差别在于,网络交换***80还包含网络卸载子***850。网络卸载子***850包含网络卸载CPU852、加密引擎854、内容扫描引擎856、WiFi NICs860、3G/LTI NICs862、PCIe主机864以及USB主机866。
具体地说,在网络卸载子***850中,网络卸载CPU852与对应的卸载引擎(例如加密引擎854及内容扫描引擎856)一起实现,以加速相关的网络服务。加密引擎854为重要数据提供加密解密相关功能。内容扫描引擎856提供病毒扫描或行扫描相关功能。不同于主CPU114,网络卸载CPU852用来管理卸载引擎的卸载功能。通过总线矩阵116实现的连接接口,使用网络卸载CPU852来卸载负载的网络服务,以建立网络卸载子***850。此外,由专用CPU执行具有WiFi NICs及3G/LTI NICs复杂格式的分组交换,如此一来,这些网络端口可分别通过PCIe主机864接口以及USB主机866接口与网络交换***80通信;因此在网络交换***80中也可执行这些网络***的复杂的分组交换。网络卸载子***850包含这些卸载引擎,复杂网络***接着与网络交换***40结合以建立网络交换***80,其能够依据拥塞状态使用SRAM130及DRAM140,并且包含SRAM130及DRAM140两者的优势。
请参考图9,其为依据本发明实施例的具有网络端口的网络交换***90的示意图,该网络端口具有局部存储器。如图9所示,网络交换***90中的缓冲区管理器、队列管理器及主CPU的功能类似于网络交换***40中的功能;因此用相同的符号表示类似功能的元件及信号。网络端口包含主CPU114及其他端口920,该其他端口920通常为不同于CPU端口的网络端口。在一些范例中,网络端口还包含网络卸载引擎。网络交换***90包含中央存储器930,该中央存储器930包含SRAM及DRAM并由缓冲区管理器110管理。网络交换***90与上述网络交换***之间的主要差别在于,每一网络端口(即主CPU114及其他端口920)具有局部存储器。在网络交换***90中,因为队列管理器112不仅执行中央存储器930中所储存的封包的入列及出列,还执行储存封包的局部存储器940、950的获取及释放,所以可以实现无需复制的分组交换。因此,如果封包储存在局部存储器940或950中,则不需要复制封包至中央存储器930。举例来说,局部存储器940为主CPU的局部存储器,局部存储器950为其他端口(例如LAN,WAN及网络卸载CPU)的局部存储器。如图9中表示主要的数据流向的箭头所示,主CPU端口114及其他端口920向缓冲区管理器110请求pkt(即封包)缓冲;当主CPU端口114及其他端口920不用此pkt缓冲时,会把pkt缓冲释放回去给缓冲区管理器110。主CPU端口114以及其他端口920向队列管理器112要求取得自己的局部pkt缓冲;当主CPU端口114以及其他端口920不用其局部pkt缓冲时,会将其局部pkt缓冲释放回队列管理器112;其中,在队列管理器112中有指示封包缓冲的源的标签,指示封包是来自CPU的局部存储器或共享存储器。
因此,当要求传输封包时,缓冲区管理器110依据网络交换***90的通信是否拥塞,从SRAM或DRAM选择缓冲空间来储存封包。另外,也可选择局部存储器来储存封包,其中每一局部存储器也可具有SRAM及DRAM,如此一来,依据网络交换***90的拥塞状态,可选择合适的存储器。换句话说,不论使用中央存储器930或局部存储器940、950来储存封包,都能选择合适类型的存储器(SRAM或DRAM),如此一来,网络交换***90可具有DRAM及SRAM两者的优势。
在一些范例中,在具有主CPU及对应DMA端口(例如网络交换***10及20)的***中,可实现存储器选择单元和具有不同特性的存储器,只要存储器选择单元依据网络交换***的通信是否拥塞来选择存储器储存封包,这样网络交换***就能具有DRAM及SRAM两者的优势。请注意,本发明实施例中的存储器及对应的缓冲空间为储存封包专用,该封包被要求在网络交换***中传输,该存储器及对应的缓冲空间应该不同于CPU缓冲器或其他缓冲***。举例来说,在一些具有缓冲空间的存储***中,在缓冲空间(例如SRAM)中会缓冲数据,接着进入存储***(例如DRAM),其对于分组交换不能具有DRAM及SRAM两者的优势,应与本发明相区别。
在现有技术中,对于异构网络服务及各种网络端口之间的分组交换,由于在网络交换***中使用的存储器的固有限制,尤其当网络交换***的通信拥塞时,传统的网络交换***不能有效并完整地执行分组交换。相比之下,本发明能够依据网络交换***的拥塞状态将封包储存至指定的存储器,其具有在网络***中使用的不同的存储器的优势。举例来说,当通信拥塞时,网络交换***使用DRAM,以便能降低封包丢失的可能性。另一方面,当通信不拥塞时,网络交换***使用SRAM,以便以较高存储速度及较低功耗提升网络交换***的性能。另外,CPU的性能不易被分组交换干扰。
虽然本发明已以具体实施例揭露如上,然其仅为了易于说明本发明的技术内容,而并非将本发明狭义地限定于该实施例,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视本发明的权利要求所界定者为准。