一. VLAN原理

· MAC 地址表:
    [MAC Address]---[VLAN ID]---[Port]
· VLAN 跨交换机转发的处理流程: 
    主机发出的帧不带vlan 标记》》进入交换机被打上端口vlan 标记》》出去时被去掉
· 802.1Q 帧格式: 
    ○ Tag 一共4 字节;
    ○ TPID:以太网类型(0x8100)代表802.1Q 协议;
    ○ Priority:优先级,主要做QOS 用;
    ○ CFI:老式Token Ring 标识位。

· Access链路类型:
    ○ 只允许缺省VLAN通过,仅接收和发送一个VLAN的数据帧
    ○ 一般用于连接用户设备

· Trunk链路类型:
    ○ 允许多个VLAN通过,可以接收和发送多个VLAN的数据帧
    ○ 缺省VLAN的以太网帧不带标签
    ○ 一般用于交换机之间连接

· Hybrid 链路类型: (untag:局域网中无标记的。)
    ○ 允许多个VLAN 通过,可以接收和发送多个VLAN 的数据帧:
    ○ Hybrid 端口和Trunk 端口的不同之处在于:
    ○    Hybrid 端口允许多个VLAN 的以太网帧不带标签;
    ○    Trunk 端口只允许缺省VLAN的以太网帧不带标签。

· VLAN 的划分方式:
    ○ 基于端口的VLAN(静态VLAN);
    ○ 基于MAC 地址的VLAN(动);
    ○ 基于协议的VLAN(动);
    ○ 基于IP子网的VLAN(动)。

· VLAN 的匹配顺序:
    MAC >IP子网>协议》端口
· VLAN 动态注册的背景:
    交换机只会转发本交换机上存在的VLAN的数据帧

· GARP(Generic Attribute Registration Protocal)通用属性注册协议

    ○ GARP 协议主要用于建立一种属性传递扩散的机制,以保证协议实体能够注册和注销该属性。GARP 作为一个属性注册协议的载体,可以用来传播属性。将GARP 协议报文的内容映射成不同的属性即可支持不同上层协议应用。例如,GMRP 和GVRP:
         1、GMRP 是GARP 的一种应用,用于注册和注销组播属性;
         2、GVRP 是GARP 的一种应用,用于注册和注销VLAN 属性。
    ○ GARP 定义了结构、操作规则、状态机制以及变量来声明注册或注销属性值。
    ○ GARP 是针对IEEE 802.1D (生成树协议)规范的IEEE 802.1P 扩展的一部分。
    ○ GARP 属性(VLAN ID信息)会通过GARP“声明-注册-声明-注册”沿STP树单向传播到整个网络中
    ○ GVRP的组播MAC地址:0180.C200.0021
    ○ GMRP的组播MAC地址:0180.C200.0020
· GARP 消息:
    ○ Empty: 发送者不声明该属性,发送者未注册该属性但希望接受该属性的声明
    ○ JoinIn:发送者希望声明该属性且发送者已注册该属性
    ○ JoinEmpty:发送者希望声明该属性,发送者未注册该属性但希望接受该属性的声明
    ○ Leave:发送者希望撤销该属性的声明
    ○ LeaveAll:发送者希望撤销所有属性的声明

· GVRP 端口注册模式:
    ○ Normal 模式:
         允许该端口动态注册或注销VLAN; 
         传播动态VLAN 以及静态VLAN 信息。
    ○ Fixed 模式:
         禁止该端口动态注册或注销VLAN; 
         只传播静态VLAN,不传播动态VLAN 信息。
    ○ Forbidden 模式:
         禁止该端口动态注册或注销VLAN; 
         不传播除VLAN1 以外的任何VLAN 信息。

· GARP 定时器:
    ○ Hold 定时器(10厘秒)接受到其他设备发送的注册信息,等待定时器超时后才向外发送;
    ○ Join 定时器(20厘秒)两次发送join消息的时间间隔;
    ○ Leave 定时器(60厘秒)在收到leave消息时,等待定时器超时后,才会注销该属性;
    ○ LeaveAll 定时器(1000厘秒)随着GARP实体的启动而启动,当定时器超时时,对外发送leaveall消息,通过其他GARP实体重新注册本实体上的所有属性信息。
· GVRP 协议可以实现VLAN 属性的自动注册和注销:
    ○ VLAN 的注册:指的是将端口加入VLAN。
    ○ VLAN 的注销:指的是将端口退出VLAN。
· GVRP 协议通过声明和回收声明实现VLAN 属性的注册和注销。
    ○ 当端口接收到一个VLAN 属性声明时,该端口将注册该声明中包含的VLAN 信息(端口加入VLAN)。
    ○ 当端口接收到一个VLAN 属性的回收声明时,该端口将注销该声明中包含的VLAN 信息(端口退出VLAN)。

二. VLAN配置

· 基于端口的 VLAN基本配置
    ○ Trunk 端口配置命令:
        □ 配置端口的链路类型为Trunk 类型:
            [Switch-Ethernet1/0/1] port link-type trunk
        □ 允许指定的VLAN 通过当前Trunk 端口:
            [Switch-Ethernet1/0/1] port trunk permit vlan { vlan-id-list | all }
        □ 设置Trunk 端口的缺省VLAN:
            [Switch-Ethernet1/0/1] port trunk pvid vlan vlan-id
    ○ Hybrid 端口配置命令:
        □ Trunk和Hybrid端口不能直接切换,先设为Access再设置其它类型
        □ 配置端口的链路类型为Hybrid 类型:
            [Switch-Ethernet1/0/1] port link-type hybrid
        □ 允许指定的VLAN 通过当前Hybrid 端口:
            [Switch-Ethernet1/0/1] port hybrid vlan vlan-id-list { tagged | untagged }
        □ 设置Hybrid 端口的缺省VLAN:
            [Switch-Ethernet1/0/1] port hybrid pvid vlan vlan-id
· 基于MAC 地址的VLAN 配置命令:
    ○ 配置MAC 地址所对应的VLAN 及优先级:
        [Switch] mac-vlan mac-address mac-address [ mask mac-mask ] vlan vlan-id [ priority pri ]
    ○ 开启端口的MAC VLAN 功能:
        [Switch-Ethernet1/0/1] mac-vlan enable
    ○ 设置端口VLAN 的匹配优先级:
        [Switch-Ethernet1/0/1] vlan precedence { mac-vlan | ip-subnet-vlan }
· 基于协议的VLAN 配置命令:
    ○ 基于MAC、协议、IP子网的VLAN只对Hybrid端口配置有效。
    ○ 配置基于协议的VLAN,并指定协议模板:
        [Switch-vlan10] protocol-vlan [ protocol-index ] { at | ipv4 | ipv6 | ipx { ethernetii | llc | raw | snap } | mode { ethernetii etype etype-id | llc { dsap dsap-id [ ssap ssap-id ] | ssap ssap-id } | snap etype etype-id } }
    ○ 配置Hybrid 端口与基于协议的VLAN 关联:
        [Switch-Ethernet1/0/1] port hybrid protocol-vlan vlan vlan-id { protocol-index [ to protocol-end ] | all }
· 基于IP 子网的VLAN 配置命令:
    ○ 配置当前VLAN 与指定的IP 子网关联:
        [Switch-vlan10] ip-subnet-vlan [ ip-subnet-index ] ip ip-address [ mask ]
    ○ 配置当前端口与基于IP 子网的VLAN 关联:
        [Switch-Ethernet1/0/1] port hybrid ip-subnet-vlan vlan vlan-id 
· 配置GVRP:
    ○ 全局GVRP开启后,在接口上还需开启接口GVRP。默认GVRP的注册模式是Normal。
    ○ 开启全局GVRP 功能:
        [Switch] gvrp
    ○ 开启端口的GVRP 功能:
        [Switch-Ethernet1/0/1] gvrp
    ○ 配置GVRP 注册模式:
        [Switch-Ethernet1/0/1] gvrp registration { fixed | forbidden | normal }
    ○ 配置GARP 定时器:
         设置GARP 的LeaveAll 定时器的值:
            [Switch] garp timer leaveall timer-value
         配置Hold 定时器、Join 定时器和Leave 定时器:
            [Switch-Ethernet1/0/1] garp timer { hold | join | leave } timer-value
         默认时间(单位厘秒):leaveall=1000,Hold=10,Join=20,Leave=60。

三. VLAN扩展技术

· Isolate-user-vlan 技术产生背景: 
    根据IEEE 802.1Q 协议规定,设备最大可使用VLAN 资源为4094 个。对于核心层设备来说,如果每个用户一个VLAN,4094 个VLAN 远远不够。
· Isolate-user-vlan 技术基本原理:
    ○ Hybrid 端口技术的应用:
        □ 所有端口都为Hybrid ;
        □ 上行端口允许所有VLAN 通过;
        □ 下行端口允许Isolate-user-vlan 和自己的Secondary VLAN;
    ○ MAC 地址同步技术:
        □ 各Secondary VLAN 学习的MAC 地址同步到Isolate-user-vlan;
        □ Isolate-user-vlan 学习的MAC 地址同步到各Secondary VLAN。
· Isolate-user-vlan 采用分层结构: 
    ○ 上行的Isolate-user-vlan 和下行的Secondary VLAN。对上行设备来说只需识别Isolate-user-vlan,而不必关心Isolate-user-vlan 中的Secondary VLAN,从而节省了上行设备的VLAN 资源。同时,将接入用户划入不同的Secondary VLAN,可以实现用户之间二层报文的隔离。
    ○ Isolate-user-vlan : 上行设备感知的用户VLAN,它并不是用户的真正VLAN。Secondary VLAN:用户真正属于的VLAN。
· Isolate-user-vlan技术配置命令
    ○ 设置VLAN的类型为Isolate-user-vlan 
        [Switch-vlan10] isolate-user-vlan enable
    ○ 建立Isolate-user-vlan和Secondary VLAN间的映射关系 
        [Switch] isolate-user-vlan isolate-user-vlan-id secondary secondary-vlan-id [ to secondary-vlan-id ]
· Super VLAN 技术产生背景: 
    在大型局域网应用组网中,有时核心层设备会出现VLAN接口数量不够用的情况。如果有一种技术对VLAN进行聚合,从而大幅缩减实际需要的VLAN接口数量,则交换机支持的VLAN接口少的问题迎刃而解。
· Super VLAN 技术中的概念:
    ○ 1、Super VLAN:
        □ 只建立三层接口而不包含物理端口;
        □ 若干Sub VLAN 的集合,并为Sub VLAN 提供三层转发服务。
    ○ 2、Sub VLAN:
        □ 只映射若干物理端口,负责保留各自独立的广播域;
        □ 不能建立三层VLAN 接口;
        □ 与外部的三层交换是靠Super VLAN 的三层接口来实现的。
· Super VLAN 技术的实现:
    ○ Super VLAN 与Sub VLAN 形成映射;
    ○ 不同Sub VLAN 主机在不同的广播域;
    ○ 各Sub VLAN 借用Super VLAN 的VLAN 接口进行三层通信;
    ○ Sub VLAN 间的通信依靠Super VLAN 接口的本地代理ARP 完成。
    (用本地代理ARP 实现不同Sub VLAN 间的三层互通)
· 代理ARP :
    ○ 如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有ARP功能的设备就可以回答该请求,这个过程称作代理ARP
    ○ 普通代理ARP应用于主机连接到设备的不同三层接口上且不同广播域中
    ○ 本地代理ARP应用于主机连接到设备的同一个三层接口且上不同广播域中
· Sub VLAN 与外部的二层通信:
    Trunk 链路自动禁止Super VLAN 通过

透彻理解VLAN技术_第1张图片

· Sub VLAN 与外部的三层通信:
    等同于Super VLAN 到外部的三层通信

透彻理解VLAN技术_第2张图片
· Super VLAN 技术配置命令:
○ 设置当前VLAN 的类型为Super VLAN:
[Switch-vlan10] supervlan
○ 建立Super VLAN 和Sub VLAN 的映射关系:
[Switch-vlan10] subvlan vlan-list
○ 开启本地代理ARP 功能:
[Switch-Vlan-interface10] local-proxy-arp enable
· 用QINQ协议实现小型城域网或企业网解决方案时,具有以下优点:
○ 可以解决公网VLAN ID资源紧缺问题
○ 用户可以规划自己的私网VLAN ID,不会导致与公网VLAN ID冲突
○ 提供一种较为简单的二层×××解决方案
○ 使用户网络具有较高的独立性,在服务提供商升级网络时,用户网络不必更改原有的配置;
○ 可以按不同层次的VLAN ID来区分不同的业务
○ QINQ 技术可以实现多层嵌套,仅受以太帧长度的限制,具有很好的扩充性
· VLAN ××× 技术的原理及转发流程:
○ VLAN ××× 是基于802.1Q 封装的隧道协议,其核心思想就是用私网VLAN标签和公网VLAN标签对数据帧做两次封装
○ 在开启QINQ协议的端口上接受到:
□ 如果带有VLAN标签的数据帧,就在外层在加上一个VLAN标签(本端口的缺省VLAN标签)
□ 如果没有带VLAN标签的数据帧,则在数据帧上加上本端口的缺省VLAN标签
· BPDU Tunnel 工作原理:
BPDU Tunnel 是一种二层隧道技术,它使不同地域私网用户的二层协议报文,可以通过运营商网络内的指定通道进行透明传输。为避免环路,用户需要在私网中启用STP功能,当一侧私网发生拓扑变化时,会发送BPDU报文给另一侧私网,否则将无法完成在整个用户私网内的生成树计算。但由于BPDU报文是二层组播报文,所有开启STP功能的设备都会接收并处理该报文,因此若用户私网和运营商网络的生成树一起计算将导致每个网络都无法生成正确的生成树。BPDU Tunnel 功能可以解决上述问题,它可使运行STP 功能的用户私网和运营商网络拥有各自的生成树,互不干扰。
· 利用BPDU Tunnel 功能,可以在运营商网络中透传用户网络的二层协议报文:
○ 运营商网络一端的PE 1对从用户A 的网络1 收到的二层协议报文进行封装,将其目的MAC地址替换成一个特定的组播MAC地址,然后在运营商网络中进行转发;
○ 封装好的二层协议报文(称为BPDU Tunnel 报文)被转发至运营商网络另一端的PE 2,解封装后被还原为原始的目的MAC地址,并发送给用户A 的网络2。
· VLAN ××× 和BPDU Tunnel 配置命令:
○ 开启以太网端口的QinQ 功能:
[Switch-Ethernet1/0/1] qinq enable
○ 开启端口STP 协议的BPDU Tunnel 功能:
[Switch-Ethernet1/0/1] bpdu-tunnel dot1q stp
○ 配置BPDU Tunnel 帧采用的组播目的MAC 地址:
[Switch] bpdu-tunnel tunnel-dmac mac-address

四. VLAN路由

· VLAN路由的实现
    ○ 路由器实现VLAN间通信
        路由器与每个VLAN建立一条物理连接,浪费大量的端口
    ○ 用802.1Q和子接口实现VLAN间路由
        □ 因Trunk链路要承受所有VLAN间路由的数据,因此要选择带宽较高的链路作为交换机和路由器相连的链路。
        □ 数据帧需要在Trunk链路上往返发送,从而引入了一定的转发延迟。
    ○ 用三层交换机实现VLAN间路由
        三层交换机以内置的三层路由转发引擎执行VLAN间路由功能
· 最长匹配转发模型:
    ○ 用报文目的地址与路由表项的子网掩码进行“与”操作;
    ○ 如果“与”操作的结果和路由表项中网络地址相同,则认为路由匹配;
    ○ 所有匹配项中子网掩码位数最长的为最佳匹配项报文从该表项对应接口发送。
· 交换机精确匹配转发模型:
    ○ CPU 维护路由表;
    ○ ASIC 芯片完成主要的转发功能;
    ○ 对数据包进行一次路由后,生成具体目的地址的转发表项,后续直接根据此表项进行精确匹配转发。
· 交换机最长匹配转发模型:
    ○ 基于硬件的最长匹配的三层交换技术
    ○ 所有报文的转发都通过硬件快速匹配完成转发
· 在精确匹配方式交换机进行三层IP单播转发简要步骤:

透彻理解VLAN技术_第3张图片
○ 在交换机做三层转发时,首先以目的IP地址查找IPFDB表,如果查找成功,进行下一步处理;否则转步骤3)以最长地址匹配查找FIB表
○ 然后根据目的IP地址查找到下一跳,最后根据下一跳找到目的MAC地址和出端口进行转发
○ 查找FIB表,如果查找成功,再查询ARP表,获得下一跳的MAC地址和出端口,并刷新IPFDB表,进行下一步处理否则转步骤5)上传CPU处理
○ 查找IPFDB表,然后根据目的IP地址找到下一跳,然后根据下一跳找到目的MAC地址和出端口进行转发
○ CPU查找软件路由表,如查找成功并且也查找到下一跳的ARP表,刷新FIB表,FIB表在刷新IPFDB表,转步骤4),否则丢弃。

· 在最长匹配方式下交换机进行三层IP单播转发简要步骤:

透彻理解VLAN技术_第4张图片

    ○ 在交换机做三层转发时,首先以目的地址查找L3 Table,如果查找成功,进行下一步处理;否则转步骤3)以最长地址匹配查找DEF_IP表
    ○ 然后根据目的IP地址找到下一跳,最后根据下一跳找到目的MAC地址和出端口进行转发
    ○ 查找DEF_IP表,由芯片保证最长匹配的实现。如果查找成功,获得出端口、下一跳信息,并封装、转发报文;如果查找失败,丢弃报文并有CPU确定是否发送ICMP不可达消息
· 本地三层转发流程介绍

透彻理解VLAN技术_第5张图片
· 跨设备三层转发流程介绍
透彻理解VLAN技术_第6张图片
· 创建VLAN 接口配置命令:
○ 创建VLAN 接口:
[Switch] interface vlan-interface vlan-interface-id
○ 配置VLAN 接口的IP 地址:
[Switch-Vlan-interface10] ip address ip-address { mask | mask-length } [ sub ]
○ 查看VLAN 接口相关信息:
[SWA]display interface Vlan-interface 40 (VLAN 接口的MAC 地址:Hardware Address:)
○ 查看ARP 表相关信息:
[SWB]display arp all count
○ 查看路由表相关信息:
[SWA]display ip routing-table
· 交换机精确匹配转发表: (Forward Information Base:转发信息库)
· 当一个数据包到了交换机,需要3 层转发的时候,如果IPFDB 里没有记录,会先查路由表,再找ARP表,这样转发后会把记录生成在IPFDB 里,下次转发就不用再查路由表了。这个IPFDB 是默认不会老化的,就是里面的记录会一直存在。