APP下载

基于嵌入式Linux的STP模块的设计与应用

2010-08-08麓,鹿瑾,徐

网络安全与数据管理 2010年12期
关键词:内核以太网交换机

陈 麓,鹿 瑾,徐 曼

(1.中国电信股份有限公司 徐州分公司 网络维护中心,江苏 徐州221000;2.中国矿业大学 信息与电气工程学院,江苏 徐州221008)

Linux2.4x内核中与生成树协议相关的程序由透明网桥模块完成,Linux的透明网桥协议是以Linux内核为数据交换中心,而在实际工作中,网络数据的交换与转发都由交换芯片Marvell 88E6095完成。因此在不改变STA算法的前提下,移植Linux内核透明网桥中与STP协议相关部分,能实现应用于千兆以太网交换机的STP模块。

1 STP协议与STA算法

生成树协议STP(Spanning Tree Protocol)应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环[1]。生成树协议的基本原理是通过在交换机之间传递一种特殊的协议报文确定网络的拓扑结构。

STP协议采用的算法称为生成树算法STA[2](Spanning Tree Alogorithm),生成树算法很复杂,但是其过程可以归纳为选择根桥、选项根端口、选择指定端口三个部分。

2 基于Linux的STP模块的设计

2.1 嵌入式Linux的STP模块整体架构

STP协议中用于网络拓扑管理的数据流称为BPDU(Bridge Protocol Data Unit),网卡芯片则将 BPDU封装成MGMT帧,MGMT帧与普通数据包的最大区别在于可以自由进出已经阻塞的端口,方便网络拓扑的管理。

在Linux2.4x内核中,驱动程序并不支持类似于MGMT帧的多播协议数据流,为使MGMT帧自由进出系统,需要两个条件:(1)交换芯片 Marvell 88E6095必须支持IEEE 802.1D协议,且工作在该模式下;(2)驱动程序需要开启对多播数据的支持,即开启MULTICAST关键字。

网络数据在Linux系统的处理流程如图1所示,以太网数据与MGMT帧混合并自由进出系统,Linux网络驱动将分离出以太网帧由系统正常处理,而对于MGMT帧则需要处理DSA_Tag;当接收时去掉该标记,而在发送时添加标记。

2.2 基于STP的网络设备驱动

当硬件设置支持STP协议后,所有网络数据在网卡接收时会添加DSA_Tag,而在发送时去掉相应的DSA_Tag,如图 2 所示[3]。

添加DSA_Tag的以太网帧会比正常以太网帧多4个字节,其中 b16~b31为 STA算法所用,其他则应用于VLAN模块,此外CPU发送与接收的帧所含的DSA_Tag也不一样,因此网络驱动也要做出相应改变,否则由于位数的偏差正常以太网帧会被当成错包丢弃。

2.3 生成树算法的实现与分析

以太网交换机实现STP模块必须通过STA算法计算出根端口与指定端口,分析网路拓扑结构,最终目标是要在网络中生成一颗无环状的树,以期消除广播风暴以及单播数据帧对网络的影响[4]。

STP协议规定了两种类型的MGMT帧,一种用于交换配置信息的CONFIG_BPDU帧,另一种则是通知网络拓扑变化的TCN帧。

如图3所示,在接收端,Linux内核接收 MGMT帧会依次执行以下任务:更新CONFIG_BPDU帧、执行STA收敛算法、设置寄存器;而在发送端MGMT帧由定时器定时发送,实时监控网络拓扑结构。

2.4 内核中与STP协议相关的重要数据结构

Linux内核中,每个交换机对应一个与网桥有关的数据结构Struct Net_Bridge,包含该交换机全部的端口信息与状态,并通过BPDU包实时更新。而每个交换机端口对应一个 Struct Bridge_Port,由 port_list串成链表,存放于Struct Net_Bridge中,如图4所示。

其中Net_Bridge包含与标准STP有关的参数,如定时 器 参 数 Hello Time、Max Age、Forwarding Delay 等 ,Bridge_Port则只包含交换机端口信息。

3 STP模块的应用

STP模块是千兆以太网交换机系统开发中必不可少的一部分,与VLAN共同组成了交换机的网络模块。

交换机系统架构如图5所示,系统整体上分为应用层、内核层、硬件层。在实际设计中,STP模块被编译成驱动插进系统Linux内核中。模块化的管理将更为有效地提高系统稳定性,方面系统的维护与版本的更新。

通过对Linux2.4x内核中透明网桥代码分析,利用Marvell 88E6095交换芯片,实现了千兆以太网交换机STP模块的开发,并提出了嵌入式Linux下STP模块开发的设计方法与设计思路。由于篇幅所限,文章无法细致分析STA算法,且设计时遇到的具体困难也无法详尽说明。总而言之,STP模块开发是以太网交换机软件系统开发中必不可少的环节,将极大增加交换机的可靠性与稳定性。且由于Linux系统的免费开源等优点,基于Linux的STP模块的开发在嵌入式领域有广阔的前景。

[1]李雪梅,孙旭.以太网交换机中 STP算法的优化设计.微电子学与计算机,2006,23(5):53-55.

[2]张劲松,徐志根.快速生成树协议端口角色选择算法的研究[J].西南民族大学学报(自然科学版),2005,31(02):289-293.

[3]Link Street 88E6092/88E6095/88E6095F Datasheet.2006.9.

[4]李延冰,马跃,王炜,等.基于生成树的链路层拓扑发现算法[J].计算机工程,2006(18):38-41.

猜你喜欢

内核以太网交换机
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
基于地铁交换机电源设计思考
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
修复损坏的交换机NOS
使用链路聚合进行交换机互联
谈实时以太网EtherCAT技术在变电站自动化中的应用
浅谈EPON与工业以太网在贵遵高速公路中的应用