热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在uClinux环境下实现虚拟局域网

在uClinux环境下实现虚拟局域网--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
  摘要:μClinux是近年发展起来的一种专用于微控制器领域的嵌入式Linux操作系统。虚拟局域网(VLAN)作为新兴技术,是解决以太网广播风暴和安全问题的一个重要策略。本文在对VLAN技术和μClinux操作系统分析的基础上,给出在μClinux环境下VLAN的实现方式与过程。

  关键词:μClinux VLAN IEEE802.1q

  引言

  虚拟局域网VLAN(Virtual Local Area Network)是指在交换局域网的基础上,采用网络管理软件构建的可跨越不同网段、不同网络的端到端的逻辑网络。一个VLAN组成一个逻辑子网,即一个逻辑广播域。它可以覆盖多个网络设备,允许处于不同地址位置的网络用户加入到一个逻辑子网中。使用VLAN最明显的好处是,它可以控制广播风暴,提高网络的整体安全性,且在网络管理上简单、直观。

  ΜClinux是应用于微控制器领域的一种嵌入式Linux操作系统,它以优异的性能及免费开放的代码等优点,博得了众多嵌入式开发者的青睐。与过去基于RTOS,甚至没有使用任何操作系统的嵌入式程序设计相比,基于Linux这样成熟、高效、健壮、可靠、模拟化及易于配置的操作系统来开发自己的应用程序,无疑能提高效率,并且有很好的可移植性。





  1 VLAN实现原理

  1.1 VLAN的帧格式

  VLAN采用多种方式配置于企业网络中,包括网络安全论证、使无线用户在802.11b接入点温游、隔离IP语音流、压缩视频或音频数据流的多址广播及在不同协议的网络中传输数据等。VLAN的划分一般基于以下3种:端口、MAC地址、路由。

  VLAN通常基于IEEE802.1q和802.1p规范用于将VLAN用户信息载入以太网帧;而802.1p使二层交换机具有流量优先和实施动态多址滤波的能力。标准一直在修订和完善之中,IEEE 802.1u和IEEE 802.1v就是2001年3月颁布的、对1998年版802.1q的修订。

  VLAN的帧格式与传统的以太网802.3帧格式有所不同,如图1所示,是不包含802.1p和802.1q的802.3帧格式。包含802.1p和802.1q后的新802.3帧格式如图2所示。

  其中,TCI是Tag Control Info的缩写,2字节。当设置为“8100”(hex)时,表明这一帧使用802.1p和802.1q标记;P是Priority,指示802.1p的优先级别(0~7),占用3位;C是Canonical Indicator,指示以太网格式是否规范,规范用0表示,否则用1表示,占用1位;VLAN是VLAN Identifier(VID),表明这一帧属于哪一个VLAN(0~4095),占用12位。它们加在一起共4个字节。

  1.2 μClinux及对VLAN的支持

  μClinux最大的特征就是针对没有内存管理单元MMU的处理器设计的。它非常适合那些没有MMU的处理器,如Motorola公司的M6828、M68EN322、MC68360;DragonBall系列的68EZ328、68VZ328;ColdFire系列如5272、5307,ARM7TDMI和MC68EN302、ETRAX、Intel i960、PTISMA、Atari 68k等。ΜClinux对Linux内核的源代码进行了重新编写,以紧缩和裁减基本的代码。所以它的内核非常小,仅有512KB,加上相关的工码。所以它的内核非常小,仅有512KB,加上相关的工具还不到900KB但,μClinux仍然保持了Linux操作系统的主要优点,如稳定性好、有强大的网络功能和出色的文件系统支持等能力。

  在μClinux系统源代码包内的linux-2.4.x8021q目录下,有vlan.c、vlan_dev.c等几个关于VLAN运行及配置的源程序文件。它们针对VLAN帧做了代码实现。在linux-2.4.x目录下的if_vlan.h文件中,定义了VLAN处理的相关数据结构。只需利用μClinux可裁剪、可配置的特点,在make menuconfig…Customize Kernel Settings…Networking options以及在make menuconfig…Customize Vendor/User Settings…Network Applications下作相应配置,以及通过编写makefile文件将这些文件编译进内核中即可。





  2 VLAN实现

  为了说明VLAN的实现过程,本文具体针对高速视频流的网上传输完成了VLAN的实现。

  2.1 网络结构

  由于VLAN是建立在物理网络基础上的一种逻辑子网,因此建立VLAN需要相应的支持VLAN技术的网络设备。当网络中不同VLAN间进行相互通信时,需要路由的支持。在本文中利用一台装有两块网卡的PC机作为服务器,运行Linux操作系统,并经过相应的配置来完成器由功能。图3所示为一网络配置示意图,所有设备及PC机均通过以太网接口RJ45接入局域网。PC机A和B是作为浏览器来观察视频图像的,可选用。它们使用的网卡型号是10M/100M自适应网卡Realtek RTL8139(A)PCI Fast Ethernet Adapter。图3中的device主要负责视频流的采集、压缩与传输。它们选用了基于ARM7TDMI的Samsung-4510B处理器。其主频为50MHz,主存储器为32MB的SDRAM,网络处理芯片选用了RTL8019AS.因本文主要讲述VLAN的实现,其具体的硬件结构在此就不再多述。

  2.2 软件实现

  vconfig是一个客户端配置工具包。它可完成VLAN的相关配置。稍加修改即可在μClinux下运行。它可以从www.wanfear.com网址上获得,所用的版本是vconfig-1.6-4.i386.rpm。选用的μClinux内核为2.4.18版本的μClinux-dist-20020306.tar.gz。由于μClinux不支持动态编译到内核中并下载到设备中。

  从图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

  可看到如下结果。
CODE:
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

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
author-avatar
依love依CENE_790
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有