1 引言 随着以太网技术的发展和成熟,应用范围日益广泛。以太网的互联技术也从早期采用专用同轴电缆的总线式网络发展到现在的多层交换机方式。传输和交换的效率和可靠性大为提高。在普通的商用网络中由于交换机性能高,扩展性强等优势,逐渐成为了以太网互联的主流技术,而集线器技术已经基本不再使用,逐渐淡出市场。但是在某些特殊的应用场合需要使用一些特殊的技术,比如网络安全方面的数据监测、攻击检测、防范等。网络系统往往需要将每一个网络端口的数据进行收集和分析,如果使用交换机来完成,需要交换机具有特殊的端口监视能力,势必导致交换及设计复杂,使用成本高昂。如果使用集线器技术,虽然传输交换的效率会低一些,但是要实现监测和数据收集将变得很容易。另外,集线器还有传输延时小、响应速度快等特点,对于要求实时性能的系统而言也是一种优势。目前通用的集线器已基本停产,元器件厂商也停止开发有关元器件,因此有必要采用其它方式来实现集线器的功能。本文介绍一种用可编程器件FPGA实现集线器的原理和方法。 2 集线器工作原理 集线器(Hub)工作于IS0(国际标准化组织)的OSI(开放系统互联)七层模型中的物理层,其实质是一个多端口的中继器。主要功能是对接收到的信号进行再生放大。以扩大网络的传输距离。因为以太网遵循“先听后说”的CSMA/CD协议,所以计算机在发送数据前首先进行载波侦听。只有当判定网络空闲时,才发送数据。早期的总线方式就是所有网络中的计算机通过一条有T型分支的同轴电缆互联起来,计算机的网络接口利用同轴电缆这个共享的介质完成载波侦听和冲突检测,从而进行有效的数据包传递。而现在普遍使用的交换机则不需要检测载波,也不存在共享介质冲突等情况。集线器正是利用了以太网共享介质这个特性,实现数据包的广播传递方式,从而实现监测、数据收集等功能。虽然集线器可以提供独立的网络接口和通道与计算机连接,但在集线器内部,仍然采用单独的内部总线作为共享介质。当来至多个端口数据包同时出现时必然产生碰撞和冲突现象。根据冲突检测的原理,这时发生碰撞和冲突的数据包会丢失,因此,集线器会强化冲突,使得所有连接在该集线器上的计算机网络接口都能正确判断数据包的冲突,网络接口就可以根据一定的规则重发该数据帧。也是因为如此,集线器的规模一般不能太大,而且网络上数据包有效传输负载率也不能太高,否则发生冲突的概率会大大增加,造成数据多次重发,甚至丢包,影响网络的传输可靠性。系统设计时必须要考虑集线器的这些特性。 3 集线器的实现 3.1 实现方法 以太网物理层的帧结构包含前导码、定界符和物理层净荷,集线器根据前导码和定界符识别出数据包进行处理。目前通用的以太网物理层收发器技术已经非常成熟。以100M以太网物理层接口器件为例,可以提供MII以及RMII等接口与数据包处理电路相连。因此,本文以RMII接口为例对集线器实现原理进行阐述。集线器要实现的功能主要有数据接收、冲突检 测、冲突加强、数据广播。 数据接收功能主要实现从各端口接收到的CRS_DV和RXD中提取出有效的数据包,如图1所示,提取的依据是在接收到的CRS_DV有效并且RXD未发生载波错误的前提下,前导码和SFD(定界符)以后的数据为有效的净荷数据。由于集线器对接收的数据不作改变,直接再生后转发,所以数据存储只需几个时钟周期,便于后续处理电路判断和转发。 冲突检测是根据各端口的数据包是否同时到达作为判定依据的,若两个或两个以上的端口有数据包同时到达,则被认为发生了数据包冲突,集线器对冲突的反应是加强冲突,亦即在检测到冲突期间向所有端口发送强化冲突包,若冲突依然存在,则间隔960ns后继续加强冲突,直到冲突消失。在发送加强的冲突信号期间应保证其完整性,即使冲突加强期间,检测到冲突消失,也要把加强的冲突信号发送完毕。 数据广播是将某个端口收到的数据向其它的所有端口发送,这是集线器的基本功能,也是集线器在各个端口之间转发数据包的唯一工作方式。如图2所示,TX_EN是发送使能,TXD是发送数据。发出的数据包含前导码、定界符和净荷数据。 另外,如果FPGA规模允许,设计上还可以在可编程芯片中实现物理层功能,由FPGA处理信号电平变换、时钟提取、数据编解码等功能,进一步提高系统的集成度和可靠性。 3.2 仿真波形 本文中设计的集线器是多端口的,可编程器件实现完成后进行了模拟仿真,图3是无冲突的情况的仿真波形,集线器将收到的端口1的数据转发给所有端口,图中rx_dv_in是端口的载波侦听/数据有效标志,rxd rmii0是端口0的接收数据,tx en 0ut是端口的发送使能,txd_mii0、txd_rmii2、txd_rmii3是其中3个端口的发送数据。此时没有冲突,数据包正常广播出去。 集线器同时收到端口0和端口1的数据的仿真波形图,数据包发生冲突,因此冲突检测标志collisiON detect置高电平,然后集线器加强冲突collision enhance置高电平。期间向所有端口发送强化冲突信息、并且接收到的所有数据丢弃,以使端口重新发送数据。 4 结论 本文中讨论的集线器其功能和性能完全满足系统要求,同时由于采用了新型的可编程芯片,集线器的体积功耗也大为减少。用可编程芯片实现集线器,还可以不受传统专用器件的局限,任意增减端口数量,配置端口类型(电缆或者光纤),提高系统集成度,在要求较高的特殊场合有着一定的应用价值。
|