2012年第09期 ■doi:10 3969/j issn 1671—1122 2012 09 023 应用于网桥的透明VLA N接口 张炜 ,王斌君 ,朱彦军 (1.95989部队第五研究室,北京100076; 2.中国人民公安大学信息安全工程系,北京100038) 摘要:针对不同VLAN域中的计算机不能同时管理网桥设备的问题,文章提出了建立在网桥设备 上的透明VLAN接口的概念,设计并实现了透明VLAN接口,该透明VLAN接口可以接收并处理不同 VLAN域的数据包,解决了网桥设备不能被多个VLAN域中计算机管理的问题。 关键词:Linux;网桥;透明VLAN 中图分类号:TP393.08 文献标识码:A 文章编号:1671—1122(2012)09—0089—03 A Kind of Transparent VLAN Interface based on Bridge ZHANG Wei .WANG Bin-jun .ZHU Yan-jun 01.Troop 95989,F承hResearchTeam1 Beijing100076.China," 2.Department ofinformation Security,Chinese People's Public Securiyt Universiyt,Beijing,100038,China) Abstract:The problem that computers in different VLAN domains cannot manage the linux bridge device at the same time,a kind of transparent VLAN interface based on bridge device is introduced,designed and realized. This transparent VLAN interface can receive and deal with al1 kinds of data packets from diferent VLAN domains or non VLAN domain.This resolves the problem that bridge device can not be managed well in diferent VLAN domains or non VLAN domains at the same time. Key words:Linux;bridge;transparent VLAN 0引言 随着网络技术的发展,企业网的规模越来越大,为了避免企业网络中的广播风暴,确保网络访问的安全,企业网络中引入了 VLAN技术。但是,传统的VLAN技术使得网桥设备只能被指定VLAN域(包括非VLAN域,下同)中的计算机访问,此时其 它VLAN域中的计算机不能访问该网桥设备,限制了信息化的应用和发展。如图1所示,VLAN的子接口既可以是物理网卡,也 可以是网桥。无论VLAN的字接口是什么,一个VLAN接口只能处理一个VLAN TAG。这样从物理 应用程序 IP层 VLAN1 i … 网卡或网桥上送的数据中,只有具有与设备设定的VLAN TAG相同的数据才能被上送到应用程序。 实际应用VLAN技术的网络拓扑如图2所示。由于网桥设备的VLAN接口一次只能配置一个 VLAN TAG,因此只能接收并处理一个VLAN域中的访问数据包”一1。在图2中,网桥设备的VLAN TAG与VLAN2的VLAN TAG相同,因此位于VLAN2域中的PC3可以访问网桥设备。位于非VLAN 域中的PC1和位于VLAN1域中的PC2也向网桥设备发送访问 数据包,但是由于与网桥设备的VLAN TAG不同,因此网桥设 备丢弃PC1和PC2发送的访问数据包,这样应用程序只能接收 到PC3的访问数据包。 VLAN2 l 网桥 … …l物理网卡l物理阐卡 图1传统网桥体系结构 I‘ r r I恼.r一 1 ●●● 为了解决这个问题,使得在多个VLAN域中的计算机都能 够访问该网桥设备,我们提出了透明VLAN接口技术。该技术 的指导思想是在网桥接口上配置多个VLAN TAG,使网桥能够 接收并处理多个VLAN域中的访问数据包,以满足客户在多个 VLAN域中管理网桥设备的需要[3-6]。 ● 图2网络拓扑图 收稿时间:2012—07—28 作者简介:张炜(1975一),女,工程师,硕士,主要研究方向:自动化测试系统;王斌君(1962一),男,陕西,博士生导师,教授,博士,主 要研究方向:防范计算机犯罪的信息安全保护,电子数据侦察与取证的理论和技术、网络安全;朱彦军(1974一),男,山东,高级工程师,硕 士研究生,主要研究方向:网络通信、网络安全。 1透明VLAN的体系结构设计 为了能够接收并处理多个VLAN域中的访问数据,我们 对linux内核中的VLAN接口源代码进行了修改,修改后的 VLAN接口的体系结构如图3、4所示。 悭 TcWIP协议 网桥 透明vLAN接口 网桥模块 网卡 网卡 网卡 网卡 图3数据发送/接收流程 图4系统结构图 修改后的透明VLAN接口工作在网桥之上,TCP/IP协议 之下,其主要功能是: 1)在接收数据包时去掉从网桥上送的数据的VLAN头, 并将VLAN TAG,源IP地址、目的IP地址、源MAC地址和 目的MAC地址存储到五元组中,如图5所示,为后续的数据 处理做准备;2)当从网桥设备的TCP/IP协议接收到数据时, 根据源IP地址、目的IP地址、源MAC地址和目的MAC地址, 从接收时存储的五元组中查找相应的VLAN TAG,并用查找 到的VLAN TAG在接收到的数据上构建新的VLAN数据头, 最后将数据发送到网桥,由网桥做下一步处理。 图5五兀组 下面分别阐述透明VLAN接口的数据发送/接收流程。 数据发送流程如下:1)不同VLAN域的访问数据通过不同的 网卡到达设备的网桥,如图3所示;2)由于新建网桥中没有 转发表,所以先把接收到的数据帧向所有的端口转发,然后 根据各个端口的响应建立网桥设备的转发表;3)目的地址为 网桥设备的数据帧到达设备的网桥后,网桥设备根据转发表, 将数据帧转发到透明VLAN接口;4)透明VLAN接口接收到 目的地址为网桥设备的数据帧后,将源MAC地址,目的MAC 地址,源IP地址,目的IP地址和VLAN TAG保存到五元组 表中,然后将数据送到TCP/IP协议进行处理。 数据接收过程是发送过程的逆过程。当透明VLAN接口 接收到TCP/IP协议转发过来的数据时,查找五元组表,获得 最新的VLAN TAG,为数据帧添加VLAN头,然后将数据转 发到网桥模块。网桥模块接收到数据后,根据MAC地址将数 据发送到相应的端口。 2透明VLAN接口的具体实现 透明VLAN接口的数据发送和接收过程在Linux内核中 的具体实现如图6、图7所示。 七 “ 目一 Lv ——+{, 星 H …一卜一v. Es- -I 申— —— f———一 图6透明VLAN发送过程 商. 。 .二一 . I含 h 一:}s l TcP,IP协 模块 l ・ I设备管 程序l 一图7透明VLAN接收过程 在透明VLAN接口的架构下’结合不同应用的需要,接口 的配置及其发送和接收过程在Linux内核中的实现,分以下 三种情况阐述: 1)配置透明VLAN接口接收、发送多个VLAN域的访 问数据包。在配置透明VLAN接口时,配置待处理的多个 VLAN域的TAG。这些VLAN TAG存储在一个五元组(如图 5所示)列表中,当透明VLAN接口接收到数据包后,在五 元组列表中查找相应的VLAN TAG,如果找到相应的VLAN TAG,就在五元组表中存储该数据包的源IP地址、目的IP 地址、源MAC地址和目的MAC地址。如果没有找到对应的 VLAN TAG,则把该数据包丢弃。透明VLAN接口从网桥设备 的上层协议接收到数据后,根据数据包的源IP地址、目的IP 地址、源MAC地址和目的MAC地址,在五元组列表中查找 对应的VLAN TAG,如果找到相应的VLAN TAG,则使用该 VLAN TAG,为该数据包添加VLAN数据头。如果没有找到 相应的VLAN TAG,则丢弃该数据包。 2)配置接收非VLAN域的访问数据包。在配置修改后的 透明VLAN接El时,配置该VLAN接口接收非VLAN数据。 若VLAN接口接收到了没有VLAN头的数据,则直接将该数 据向TCP/IP协议传递,不进行任何处理。若接收到带VLAN 头的数据,则直接丢弃该数据。当VLAN接口从上层协议接 收到了数据,直接将数据传递给网桥,不做任何处理。 3)配置接收所有访问数据,包括VLAN域和非VLAN域 的访问数据。在配置透明VLAN接口时,配置该VLAN接口 可以接收所有的数据,包括所有VLAN域的数据和非VLAN 数据。当接收和发送非VLAN数据时,与上面的处理情况完 全相同。当接收到VLAN数据时,将VLAN TAG、源IP地址、 目的IP地址、源MAC地址和目的MAC地址存放在五元组表中, 当发送VLAN数据时,根据源IP地址、目的IP地址、源MAC 地址和目的MAC地址从五元组中查找对应的VLAN TAG,使用 找到的VLAN TAG为数据包构建VLAN头,然后将数据包发送 到网桥,由网桥将数据包发送到对应的端口。 3透明VLAN的性能分析 由于企业网络中网络数据流量远远低于网桥设备的网 络吞吐,因此无需关注透明VLAN接口对网桥设备吞吐的影 响。通过上面的透明VLAN接口的Linux内核实现来看,透明 VLAN接口比传统的VLAN接口多了一个查表的动作。由于在 企业网中VLAN域的数量不是很多,企业网中VLAN域的数量 以百为单位计算就足够了e在现在的软硬件环境中,这个量级 的查表所引入的网络开销几乎可以忽略不计。因此添加和配置 透明VLAN接口,对整个设备的网络吞吐几乎没有什么影响。 现在测试在不同网络吞吐下,多个VLAN TAG对系统的 CPU占用率的影响。根据不同的网络吞吐,特设计了正常网络 吞吐和极端网络吞吐两种环境下的实验: 1)正常网络吞吐下的设备C PU占用率测试。使用一台设 备,然后按照如图8所示连接好,IPERF服务器和IPERF客 户端分别以10Mbps,100Mbps和200Mbps的流量通过设备时, 管理PC访问设备,然后查看设备的CPU占用率。 图8实验图 2)极端网络吞吐下的设备CPU占用率测试。网络拓扑 与1)相同,只是1)测试通常情况下的设备CPU占用,此次 实验测试极端情况下的设备CPU占用率,设备的最大吞吐是 970Mbps,在IPERF客户端设定带宽为1000Mbps,IPERF客 户端会向网桥设备发送超过设备最大吞吐的网络流量,然后 管理PC访问网桥设备,此时查看网桥设备的CPU占用。 实验环境中采用的相关设备如下: 网络设备是xTM26(FreeScale MPC8548);IPERF服务器: Ubuntu 11.10,IPERF版本是:iperf version 2.0.5 f08 Jul 2010) pthread 服务器端命令是:iperf—s-p 10000 2012年第O9期 IPERF客户端:Ubuntu 11.10,IPERF版本是:iperf version 2.0.5 f08 Jul 20101 pthread 客户端命令是:iperf—e 4.4.4.100一P 10000—1 2000一b 1000M—t 10000000一i 3 通过top命令查看CPU占用 实验的连接睛况:IPERF服务器通过网卡3与设备相连, IPERF客户端通过网卡1与设备相连,管理PC通过网卡2与 设备相连。实验开始后,数据流量从网卡1向网卡3发送,查 看此时的CPU占用率,然后管理PC通过网卡2访问设备的 信息,查看此时的CPU占有率。 在第一种环境下,实验结果如表1所示。 表1实验结果 在第二种环境下,实验结果如表2所示。 表2实验结果 查 l堡旦篁 煎 占旦l 旦笪型堕亘 点旦 鬯 = ! =!! 在第二种实验环境下,其它的流量很难顺利地进出设备, 但是管理流量还是可以顺利的进程设备,这主要是QoS模块 在发挥作用,该模块保证了管理流量不受其它流量的影响。 当其他的流量影响到管理流量时,其它的流量的数据包会被 丢弃或缓存,以保证网桥设备管理的正常进行。 从表1和表2的实验结果数据可以得出结论,在VLAN 上添加对多个VLAN TAG的支持不会影响整个网络设备的 CPU占用 4结束语 通过修改VLAN接口驱动程序,该VLAN接口可以接收多 个VLAN域或非VLAN域的访问数据包,极大方便了用户管理 网桥设备。在实际的使用过程中,满足了客户在多个VLAN域 中管理网桥设备的要求,受到客户的好评。 (责编岳逍远) 参考文献: 【1]Benvenuti,Christian.understanding 5nux network intemals[M】.O’Reilly Media Inc,2005. 【21中兴通信股份有限公司.一种实现网络数据透明传输的方法和装 置【P1.中国:101170479,2008-04—30. [3】Alessandro Rubini,Jonathancorhet.Linux Device Drivers(second Edition)[M].北京:中国电力出版社,2001. 【4】朱彦军,王斌君.基于3G网络的多VPN通道系统设计与实现【l1 l信息网络安全,2012,(06):72—75 [5】董建锋,周小平,贾磊雷.实现相同子网不同VLAN之间通讯的 物理模块设计U].信息网络安全,2012,(03):88—90. [6】黄慧琨.VLAN技术在局域网管理中的应用Ⅱ】计算机光盘软件与 应用,2012,(1O):83.