在uClinux环境下实现虚拟局域网
从图3中可以看出,我们划分了两个VLAN:VLAN1与VLAN2。当然,也可根据需要划分出多个VLAN。一块网卡可以绑定两个或多个IP地址,为加快处理速度,在服务器端选用了两块网卡分别命名为eth0与eth1,在初始状态时不需做任何配置。按如下步骤进行配置。
Vconfig set_name_type DEV_PLUS_VID_NO_PAD
;配置VLAN命名类型
vconfig add eth0 1 ;eth0网卡绑定VLAN1号
vconfig add eth1 1 ;eth1网卡绑定VLAN1号
vconfig add eth0 2 ;eth0网卡绑定VLAN2号
vconfig add eth1 2 ;eth1网卡绑定VLAN2号
brct1addbr br0 ;添加虚拟网桥,用于不同VLAN间通信
brct1addif br0 eth0.1 ;将VLAN绑定到虚拟网桥上
brct1 addif br0 eth1.1
brct1stpbr0off ;设置生成树协议关闭
brct1addbrbr1
brct1addifbr1eth0.2
brct1addifbr1eth1.2
brct1stpbr1off
ifconfig eth0 up ;启动网卡
ifconfig eth1 up
ifconfig eth0.1 up ;启动VLAN
ifconfig eth1.1up
ifconfig eth0.2up
ifconfig eth1.2up
ifconfig br0 up ;启动虚拟网桥
ifconfig br1 up
在客户端,也就是视频采集的设置端需做的应配置如下:
VLAN 1下的设备1
Vconfig set_name_type DEV_PLUS_VID_NO_PAD
Vconfig add eth0 1
Ifconfig eth0.1 192.168.1.1 up
VLAN 1下的设备2
vconfig set_name_type DEV_PLUS_VID_NO_PAD
vconfig add eth0 1
ifconfig eth0.1 192.168.1.2 up
VLAN 2下的设备1
Vconfig set_name_type DEV_PLUS_VID_NO_PAD
Vconfig add eth1 2
Ifconfig eth1.2 192.168.2.1 up
VLAN 2下的设备2
Vconfig set_name_type DEV_PLUS_VID_NO_PAD
vconfig add eth1 2
ifconfig eth1.2 192.168.2.2 up
依此类推,可以扩充到n个设备的相应配置,从而实现了两个VLAN。当然,还可以通过iptables设置规则来实现不同VLAN之间的包转发与包过滤等高级功能,此文就不再叙述其详细过程。
3 VLAN测试
首先,通过ping命令测试不同VLAN之间的可达性。
在设备192.168.1.1上ping 192.168.1.2,链路可达;在设备192.168.1.1上ping 192.168.2.1,链路不可达,说明它们不属于同一个VLAN。同时,在服务器端执行下述语句。
tcpdump -n -p icmp -i br0
可看到如下结果。
00:55:11.700355802.1Qvlan#1P0192.168.1.1>192.168.1.2:icmp:echo request(DF)
00:55:11.700486802.1Qvlan#1P0192.168.1.2>192.168.1.1:icmp:echo reply
00:55:12.700260802.1Qvlan#1P0192.168.1.1>192.168.1.2:icmp:echo request(DF)
00:55:12.700352802.1Qvlan#1P0 192.168.1.2>192.168.1.1:icmp:echo erply
其次,以μClinux为软件平台,用GCC编译实现了一个高速视频流服务器/客户程序。它的功能主要是服务器接受来自客户端的RTSP连接,并按照RTP、RTCP和SDP等协议向客户端提供所采集到的实时视频流。在这里,客户端是浏览器,服务器端是device,与上述客户端/服务器端有所不同。通过实际的程序运行和测试,在图3所示的网络拓扑中,我们发现在网络负载较重时,划分了VLAN的视频流在传输延迟和时延抖动上均优于不划分VLAN的视频流在20%~40%;负载较轻时,它们的性能相当。
4 结论
当前,以信息家电中心的嵌入式系统正得到蓬勃的发展。随着嵌入式系统和网络技术的发展,整个世界将更加网络化和智能化。所以设备上网必然带来网络安全性和广播的问题,VLAN则为设备连入Internet提供了一个较好的解决途径。本文针对嵌入式应用开发环境μClinux操作系统,对VLAN的实际给出具体的应用环境与步骤。具有良好的应用前景与现实意义。