zoukankan      html  css  js  c++  java
  • VLAN入门知识

    本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。
    作者:fireaxe_hq@hotmail.com
    博客:fireaxe.blog.chinaunix.net

    l  Vlan原理

    Ø  Vlan介绍

    Ø  汇聚链接

    Ø  802.1Q协议

    Ø  QinQ

    l  交换机实现

    Ø  交换机要做什么

    Ø  Ingress vlan处理

    Ø  Egress vlan处理

    Vlan介绍--概念

    n  VLAN(Virtual Local Area Network)的中文名为“虚拟局域网”,遵循IEEE802.1Q协议。

    n  VLAN是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的数据交换技术。

    n  Vlan的优点

                       广播风暴防范

                       网络安全

                       成本降低:

    普通的交换机如下图所示:

          所有的端口都在同一个广播域,任何一个端口发送的广播报文都会被发送到所有端口。这样显然不利于网络的隔离,还有可能会出现网络风暴(如arp等报文)。为了避免这些问题,通常的办法是把不同的组放到不同的交换机上,如每个办公室属于一个交换机。交换机之间通过路由器连接。这样可以在一定程度上避免广播风暴。但假如我们使用20口的交换机,而每个房间只有四、五个用户,显然每个房间使用一个交换机有些浪费了。如果能在同一个交换机上实现端口的分组,那就太好了。

    如下图所示,我们把交换机划分为两个区域。

     

    这样做的效果与使用两个小一些的交换机是一样的,但组网形式就灵活多了。假如某天需要调整端口的分配,不需要重新购买新的设备,只需要在交换机上配一下。

     

    上面所说的就是vlan 的概念,每个vlan代表一个组。

     

    再考虑另一个问题,交换机互联。

    如果我们30台电脑,这就需要两个20口的交换机级联起来。假如此时需要vlan,而每个vlan的电脑都分布在两个交换机上,该如何组网?

     

    可以想见,我们需要通过下面的形式组网。这样如果A需要发送报文到C,则可以通过互联的蓝色端口把报文从交换机1转发到交换机2。这显然有个问题存在,每个vlan都需要一个单独的端口用户交换机级联,显然有些浪费。如果能通过一个口把所有数据都通过一个口发送就好了。

    如下图所示,这可行吗?只有一个障碍,交换机如何知道其他交换机转发来的报文是属于哪个vlan的?

    办法很简单,在报文中增加一个字段用户区分,在vlan中称为tag。这就是vlan协议的由来。而由此也产生了两种端口:trunk与access。access口用于连接pc机,这个口显然只能属于一个vlan,而且入口与出口都不需要附加tag。trunk口用户交换机互联,这个口可能会属于多个vlan,而且报文进出都需要带tag。

     

    vlan的实现是802.1Q协议,它完成下面的几项工作:

    1. 通过在报文中添加字段,支持多个交换机之间的组网

    2. 该字段需要有独特的标识

    3. 该字段中应该有vlan ID

     

    QinQ技术:

    n  QinQ技术(也成stacked vlan 或 double lan)。 标准出自IEEE802.1ad。其实现将用户私网Vlan Tag封装在公网Vlan Tag中,是报文带着两层Vlan Tag穿越运营商的骨干网络(公网)

    n  优点: 缓解日益紧缺的公网VLAN ID资源问题,用户可以规划自己的私网VLAN ID,不会导致和公网VLAN ID冲突

     

    其组网形式如下图所示:

     

    根据上述内容,显然所有功能都需要依靠vlan的tag来实现,而tag不是生来就有的。要实现tag的添加,交换机(switch)显然有些工作是必须要做的:

    n  为进入switch的untagged报文增加tag

    n  为进入switch的为Ctag的报文增加Stag

    n  删除从switch出去的Stag报文的Stag

    n  删除从switch出去的Double tag报文的Stag

    n  保证带某个Vlan ID的报文只在属于该vlan的ports中发送

    根据这些功能的要求,可以画出入口与出口的功能能框图:

      

     

    根据原始的vlan需求,显然tag是通过端口号添加的,但随着发展,vlan tag的添加也丰富了起来。到目前为止,常见的tag添加方法有根据mac添加、根据protocol添加、根据port添加三种。同时增加的还有vlan翻译功能,也就是说可以对用户所带的tag进行改变。

    报文进入switch时,首先会判断是否带有tag,如果有则直接进入下面的L2转发流程。如果没有tag,会查找mac vlan翻译表,根据报文的源mac地址查找是否在mac vlan表中有记录,如果有则进入L2转发流程,否则继续检测protocol。在proctocol vlan中查找后,如果还是没有,则会根据端口号打上一个tag,然后进入L2转发流程。

    综上,进入L2转发的报文是一定带tag的。

     

    聪明不是学习编程成功的关键,坚持和勤于思考才是。
  • 相关阅读:
    【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据
    ORACLE存储过程,循环语法和游标
    Oracle变量的定义、赋值及使用
    Oracle数据库常用语法
    Windows下将JAVA jar注册成windows服务
    Java压缩图片
    如何去除图片背景?这款一键抠图软件帮你
    远程办公,这 13 个工具比微信、QQ更好用
    java程序在windows后台执行的办法
    Usage of API documented as @since 1.6+……的解决办法
  • 原文地址:https://www.cnblogs.com/itxpl/p/8670983.html
Copyright © 2011-2022 走看看