9937 字
50 分钟
二层技术-待更新

从二层开始复习吧,本来基础就不是很牢固,已经忘了很多了(恼

这次打算是带着为什么去写,而不是是什么。

概述#

为什么叫二层网络?#

  • 二层网络指的是工作在同一个广播域内的网络
  • 对应OSI模型里的第2层(数据链路层)

早期并没有二层这个说法,在OSI模型标准化之后才有;


关于MAC地址#

最早的MAC(Media Access Control Address)地址(由Xerox定义)设计初衷只是作为网卡在生产时的唯一“序列号”,用于工厂质检和库存管理,后来才被IEEE接手并标准化为网络第二层的寻址工具。在此之前是令牌环网、X.25等。

  • X.25: 虚电路(Virtual Circuit)和存储转发 + 差错校验机制,专门用于广域网,速度太慢且开销大。
  • 令牌环网: 令牌传递(Token Passing)机制,逻辑上数据是在一个环形里单向传输,有确定性,但成本高且会有单点故障。

关于二层技术#

二层技术本质就是局域网内部如何让数据从一台设备送到另一台设备的技术。


以太网 802.3标准#

以太网(Ethernet)是二层(数据链路层)的一种具体实现,但二层不等于以太网,以太网是二层协议族中最成功、最主流的一个具体实现。

IEEE 802.3(以太网):定义了 MAC 层 + 物理层 PHY,负责帧封装、线缆传输

以太网定义了什么?

  • 用MAC地址(48位)
  • 用以太网帧格式(带源MAC、目标MAC、类型字段等)
  • 早期用CSMA/CD,现在用全双工交换,不再需要抢空闲资源

802.3以太网标准报文如下:

ethernet

  • 7+1字节用于时钟同步,不算入帧长;
  • 数据+填充 46-1500字节,不够需填充到46字节;
  • 校验位4字节,CRC循环冗余校验32位;
  • MAC地址:6字节,2字节已淘汰
  • 最小帧长64字节:6+6+2+46+4=64字节
  • 最大帧长1518字节:6+6+2+1500+4=1518字节

两个概念:

  1. 冲突域: 物理层概念,取决于物理介质(网线、集线器)和是否共享传输通道,如集线器和中继器所有端口都在一个冲突域
  2. 广播域: 数据链路层概念,取决于广播帧(目标MAC地址为 FF:FF:FF:FF:FF)能到达的范围,交换机的所有接口连接的节点属于一个广播域

LLC子层 802.2标准#

LLC(逻辑链路控制子层):紧跟在以太网帧头后面,用一个3字节的标签(DSAP/SSAP)标明数据类型,由802.2标准定义。

其本质设计是为了充当翻译层,识别协议类型(IP/STP/IPX等),提供流量控制和错误通知。

TIP

运行在IEEE 802.3标准原始格式下的非IP协议,才会使用LLC头,如:STP(生成树协议)BPDU(DSAP/SSAP = 0x42)


STP 802.1D#

理解STP(Span Tree Protocol)协议的产生,首先需要了解环路的产生。

以太网环路的根源在于:

  1. 交换机MAC地址的动态学习机制(通过监听以太网帧,保存MAC地址和端口的映射关系)
  2. 物理线路的多条路径(设备接口的多条物理线路)
  3. 未知单播帧的洪泛(未知单播帧会从除收到的端口外的所有端口发送)
  4. 广播帧洪泛(广播帧会从所有端口发出)
  5. 没有TTL和检查机制(环路情况下广播帧会无限循环)

STP是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并适当对某些端口进行阻塞以消除环路。

stp

如图,在该网络下,如果不存在STP:

  1. 环路会导致广播报文在链路上不断循环发送,导致资源耗尽。
  2. 当HOST B移除时,HOST A向HOST B发出的单播报文,会因为HOST B的MAC地址丢失转为未知单播帧广播,进而导致该帧在port之间不断转发,导致MAC地址表震荡。

STP基本概念#

ID

  • BID(Bridge ID):IEEE 802.1D 标准中规定 BID 是由 16 位的桥优先级(Bridge Priority)与桥 MAC 地址构成。BID 桥优先级占据高 16 位,其余的低 48 位是 MAC 地址。
  • PID(Port ID):PID 由两部分构成的,高 4 位是端口优先级,低 12 位是端口号。

路径开销

  • 路径开销(Path Cost)是一个端口变量,是 STP 协议用于选择链路的参考值。
  • 某端口到根桥累计的路径开销就是所经过的各个桥上的各端口的路径开销累加而成,这个值叫做根路径开销(Root Path Cost)

stp

  1. 根桥 RB

    • 树根
    • 是网桥 ID 最小的桥,通过交互配置 BPDU 协议报文选出最小的 BID。
    • 根桥(Root Bridge)对于一个 STP 网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。
    • 根桥会根据网络拓扑的变化而动态变化。网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。
  2. 根端口 RP

    • 往根桥的端口,向上
    • 去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。
    • 一台STP设备根端口有且只有一个,根桥上没有根端口。
  3. 指定端口 DP

    • 向下的口
    • 指定桥转发配置消息的端口,负责转发数据给下游交换机或终端。
    • 每台非根交换机上只有一个,拥有指定端口的交换机也称为指定桥(Design Bridge)(在这个网段上的)。
    • 只有指定端口才发BPDU
  4. 阻塞端口 BP

    • 逻辑上被阻塞,不转发数据,只监听BPDU报文,不发送BPDU报文。

数据流向根桥的逻辑上的向上向下,这样可能好理解点: stp

TIP

需要注意的是 STP中 BPDU是单向流动(从根桥往外发,RP只收不发)


网桥协议数据单元BPDU#

在了解比较原则前,先了解BPDU的帧。

BPDU(Bridge Protocol Data Unit)报文被封装在以太网数据帧中,目的 MAC 是组播 MAC:01-80-C2-00-00-00,Length/Type字段为 MAC 数据长度,后面是 LLC 头,LLC 之后是 BPDU 报文头。 stp

BPDU帧一般分为两种:

  1. 配置BPDU(Configuration BPDU):用于生成树计算,选举根桥、根端口、指定端口。
  • 在初始化过程中,每个桥都主动发送配置 BPDU。但在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他桥在收到上游传来的配置 BPDU 后,才触发发送自己的配置 BPDU。

confbpdu

  1. TCN BPDU(Topology Change Notification BPDU):当网络拓扑发生变化(比如端口挂了或恢复了),交换机用它向根桥打报告,根桥收到后会发送标志位通知全网快速刷新MAC地址表,避免数据包被错误转发。
  • 置位的 TC 标记的配置 BPDU 报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备直接删除桥 MAC 地址表项,从而达到快速收敛的目的。
  • 置位的 TCA 标记的配置 BPDU 报文主要是上游设备用来告知下游设备已经知道拓扑变化,通知下游设备停止发送 TCN BPDU 报文。

tcbpdu

ps: 看华为手册 TCN的类型应该是 0x80,但CE12800实际触发带的是0x01


STP五种端口状态#

端口状态转发用户流量?处理BPDU?构建MAC地址表?本质说明典型场景/归宿
Forwarding(转发)✅✅ (仅指定端口发送,根端口只收)✅最终正常工作状态,既转发数据又参与STP计算只有被选举为根端口或指定端口的端口才能进入此状态
Learning(学习)❌✅✅过渡状态,静默学习MAC地址,防止临时环路从Listening向Forwarding过渡的中间环节
Listening(监听)❌✅❌过渡状态,在此阶段选举根桥、根端口和指定端口从Blocking向Learning过渡的中间环节
Blocking(阻塞)❌✅ (仅接收)❌最终阻塞状态,逻辑上阻断数据,仅监听BPDU既不是根端口也不是指定端口的端口最终停留在此状态
Disabled(禁用)❌❌❌彻底关闭状态,不处理任何报文端口被手动shutdown或物理链路Down
isabled(初始)
↓ (端口Up,全局STP开启)
Blocking(等待20秒Max Age,监听BPDU)
↓ (被选举为根端口或指定端口)
Listening(等待15秒,选举端口角色)
↓ (端口角色确认)
Learning(等待15秒,学习MAC地址)
↓ (Forward Delay超时)
Forwarding(正常转发数据)
TIP

华为设备默认运行在MSTP,且端口状态仅有 Forwardinging、Learning、Discarding三种


STP选举原则#

所有STP选举都基于BPDU(桥协议数据单元)中的四个关键字段,依次比较,数值越小越优:

整体流程: 选根桥 → 选根端口 → 选指定端口 → 选阻塞端口

stp

  1. 选举根桥
  • 选举规则:依据桥ID选举,优先级数值最小 → 若优先级相同,则 MAC地址最小 者胜出。
  1. 选举根端口

比较内容(依次比较,数值小者优):

  • 根路径开销(到达根桥的路径开销累计值)。
  • 发送者桥ID(对端交换机的桥ID,即BPDU中的Sender Bridge ID)。
  • 发送者端口ID(对端交换机的端口ID,即BPDU中的Sender Port ID)。 每台非根交换机只有一个根端口(朝向根桥的最优路径)。
  1. 选举指定端口

比较内容(本质是比谁发的BPDU更优):

  • 根路径开销(该交换机到达根桥的路径开销)。
  • 桥ID(若开销相同,比较该交换机的桥ID)。
  • 端口ID(若桥ID也相同,比较该端口的端口ID)。 每个网段(即一条链路的两个端口之间)只有一个指定端口。
  1. 选举阻塞端口

既不是根端口,也不是指定端口的端口,被逻辑阻塞。

RSTP 802.1W#

RSTP(Rapid Spanning Tree Protocol) 是一种快速收敛的STP变种,基于 STP 协议,对原有的 STP 协议进行了更加细致的修改和补充。

RSTP出现原因主要由于STP协议存在以下问题:

  • 收敛慢:依赖定时器、且BPDU只由根桥发送,其他设备处理整理传播
  • 状态区分不细致

RSTP的改进点#

  1. 端口角色增加:新增Alternate Port 和 Backup Port
端口角色对应STP角色核心区别
根端口根端口不变,指向根桥的最优路径
指定端口指定端口不变,每个网段的转发出口
替代端口(Alternate Port)阻塞端口(Blocked)根端口的备份,如果根端口挂了,它立刻顶上去
备份端口(无)是指定端口的备份,同一台交换机上的冗余端口(用于共享链路或环路)

阻塞端口有了明确的分工(替根端口还是替指定端口)

  1. 端口状态从5种减为3种
RSTP状态含义对应STP状态
Discarding(丢弃)不转发用户流量也不学习 MAC 地址Disabled + Blocking + Listening
Learning(学习)不转发用户流量但是学习 MAC 地址Learning
Forwarding(转发)既转发用户流量又学习 MAC 地址Forwarding

RSTP取消了长达15秒的Listening状态,端口一旦确定角色,直接进入Learning或Forwarding。

  1. 收敛机制改变
  • STP:下游交换机必须被动等待根桥发来的BPDU(每2秒一次),如果等不到,要硬等20秒(Max Age)才敢切换,收敛要50秒。
  • RSTP:引入Proposal/Agreement(提议/同意)握手机制。 sctppa

直连链路故障时,收敛时间从50秒缩短到毫秒级(通常<1秒);网络边缘(连接终端)零等待。

  1. 新增边缘端口
  • 作用:连接PC、服务器、打印机的端口,不参与STP计算,一插上立即进入Forwarding状态(跳过Discarding和Learning),加速收敛。
  • 安全增强(BPDU保护):如果边缘端口意外收到了BPDU(说明有人私接交换机),RSTP会立即将其转换为普通STP端口,重新参与计算,防止环路。
  1. 其他安全增强
  • 根保护:启用 Root 保护功能的指定端口,其端口角色只能保持为指定端口,Root 保护功能只能在指定端口上配置生效。
  • 环路保护:根端口或Alternate 端口长时间收不到来自上游的 RST BPDU 时,则向网管发出通知信息(如果是根端口则进入 Discarding 状态)。而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。
  • 防TC-BPDU攻击:启用防 TC-BPDU 报文攻击功能后,在单位时间内,交换设备处理 TC BPDU 报文的次数可配置。

在配置 BPDU 报文的格式上,除了保证和 STP 格式基本一致之外,RSTP 作了一些小变化: rstpflag

  • Type 字段,配置 BPDU 类型不再是 0 而是 2,所以运行 STP 的设备收到 RSTP 的配置BPDU 时会丢弃。
  • Flags 字段,使用了原来保留的中间 6 位,这样改变的配置 BPDU 叫做 RST BPDU

rstpflag

维度STP(802.1D)RSTP(802.1w)
收敛速度30~50秒毫秒~秒级(<1秒)
端口状态数5种3种(合并了Disabled/Blocking/Listening)
BPDU发送方只有根桥发所有交换机都发
链路恢复方式被动等待超时(20秒)PA机制
终端端口需额外配置(PortFast)标准化为边缘端口(Edge Port)
兼容性不支持RSTP向下兼容STP(可对接老设备)

PA机制#

P/A握手的核心是 优者发起提议,劣者回应同意。发起方一定是BPDU更优的那一端(指定端口),而不是固定指“下游”。

P/A(Proposal/Agreement)本身就是RSTP BPDU,不是独立的新报文。

  • 场景A(下游主动):如新加入一台交换机,下游交换机主动发出Proposal,加入网络同步
  • 场景B(上游主动):如两台交换机互联,BPDU更优的交换机主动发出Proposal,要求劣方立刻同步,确保新链路秒级开通。
TIP

P/A 机制要求两台交换设备之间链路必须是点对点的全双工模式。一旦 P/A 协商不成功,指定端口的选择就需要等待两个 Forward Delay,协商过程与 STP 一样。


MSTP 802.1S#

为什么需要MSTP?

局域网内所有的 VLAN 共享一棵生成树,因此无法在 VLAN 间实现数据流量的负载均衡,链路被阻塞后将不承载任何流量,造成带宽浪费,还有可能造成部分 VLAN 的报文无法转发。

如图所示,网络采用STP或RSTP,蓝线为收敛后的生成树,S3 S6之间只允许VLAN3,又因为收敛之后的树导致 S1S4 S2S5之间被堵塞,导致HOSTB无法到达HOSTA。 alt text

MSTP解决了什么?

通过 MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现 VLAN 数据的负载均衡。


MSTP基本概念#

通过 MSTP 把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例 MSTI(Multiple Spanning Tree Instance),每个域叫做一个 MST域(MST Region:Multiple Spanning Tree Region)。

一个MSTP域在逻辑上可以划分为多个MSTI,MSTI是所有运行STP/RSTP/MSTP 的交换设备经MSTP协议计算后形成的树状网络。 mstp


MST域 是多生成树域(Multiple Spanning Tree Region),由交换网络中的多台交换设备以及它们之间的网段所构成。通一个MST域包含以下特征:

  • 都启动了 MSTP
  • 具有相同的域名
  • 具有相同的 VLAN 到生成树实例映射配置
  • 具有相同的 MSTP 修订级别配置

MST域所具有的属性:

  1. VLAN 映射表
  • 维护VLAN和MSTI的映射关系
  • 一个MSTI可包含多个VLAN,但一个VLAN只能属于一个MSTI
  1. 总根 总根是 CIST(Common and Internal Spanning Tree)的根桥。 这里就有几个概念:
  • CST(Common Spanning Tree):全局,公共生成树 CST(Common Spanning Tree)是连接交换网络内所有 MST 域的一棵生成树。
  • IST(Internal Spanning Tree):局部,内部生成树 IST(Internal Spanning Tree)是各 MST 域内的一棵生成树。IST 是一个特殊的 MSTI,MSTI 的 ID 为 0,通常称为 MSTI0。
  • CIST(Common and Internal Spanning Tree):公共内部生成树,通过 STP 或 RSTP 协议计算生成的,连接一个交换网络内所有交换设备的单生成树,包含了CST和IST,即 CST + 所有域内 Instance 0 的全集

CST IST CIST如图所示,其中总根是CIST的根桥。 alt text

  1. 主桥(Master Bridge) 也称为 IST(Internal Spanning Tree)Master,它是域内距离总根最近的交换设备,如果总根在 MST 域中,则总根为该域的主桥,如上图中的黄色设备。

  2. 域根 域根(Regional Root)分为 IST 域根和 MSTI 域根。如上图所示,在 B0、C0 和 D0 中,IST 生成树中距离总根(CIST Root)最近的交换设备是 IST 域根。


MSTP报文#

MSTP 使用多生成树桥协议数据单元 MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit)作为生成树计算的依据。

因为MSTP是在RSTP的基础上扩展的,无论是域内的 MST BPDU 还是域间的,前 36 个字节和 RST BPDU 相同。但MSTP在尾部增加了MSTI专属信息: mstp

MSTP拓展部分: 从第 37 个字节开始是 MSTP 专有字段。最后的 MSTI 配置信息字段由若干 MSTI 配置信息组连缀而成 mstp

之前提过MSTP会维护一个VLAN映射表,实际上MSTP不会携带VLAN信息,而是根据MST Configuration Digest字段来判断是否在同一域。

Region Name + Revision Level + Configuration Digest。三者完全一致才在同一域,才会处理MSTI信息。


MSTP状态和角色#

MSTP的端口状态机和RSTP完全相同,均从STP的5状态简化为3状态,即discarding、learning、forwarding。

MSTP 在 RSTP 的基础上新增了 2 种端口,MSTP 的端口角色共有 7 种:根端口、指定端口、Alternate端口、Backup 端口、边缘端口、Master 端口和域边缘端口。根端口、指定端口、Alternate 端口、Backup 端口和边缘端口的作用同 RSTP 协议中定义。

角色RSTPMSTP说明
Root Port (RP)✅✅非根桥上离根最近的端口
Designated Port (DP)✅✅网段上负责转发数据的端口
Alternate Port (AP)✅✅根端口的备份,阻塞状态
Backup Port (BP)✅✅指定端口的备份,阻塞状态
Edge Port✅✅连接终端设备,不参与计算
Master Port❌✅Master 端口是 MST 域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接 MST 域到总根的端口,如图6 S1所示
Region Edge Port❌✅域边缘端口是指位于 MST 域的边缘并连接其它 MST 域或 SST 的端口,如图6 S4所示

mstp


MSTP拓扑计算#

生成树收敛计算的方式都差不多,就是比较。

MSTP和RSTP的计算方式是一样的,都使用配置BPDU来计算。

各个域之间通过计算生成 CST(Common Spanning Tree), 域内则通过计算生成多棵生成树,每棵生成树都被称为是一个多生成树实例。其中实例 0 被称为 IST(Internal Spanning Tree),其他的多生成树实例为 MSTI。

MSTI 和 CIST 都是根据优先级向量来计算的:

参与 CIST 计算的优先级向量依次为:{ 根交换设备 ID,外部路径开销,域根 ID,内部路径开销,指定交换设备 ID,指定端口 ID,接收端口 ID } CIST计算,简单来说就是多个MST域选出个最优的作为CIST根,然后将多个MST域视作单台交换设备计算,在域间生成CST,再和域内的IST合并就是CIST。

参与 MSTI 计算的优先级向量依次为:{ 域根 ID,内部路径开销,指定交换设备 ID,指定端口 ID,接收端口 ID } 在MST域内,不同实例相互独立,计算方式和普通STP计算过程一致。

这些向量依次比较,如果端口接收到的 BPDU 内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。

MSTP+VRRP#

如图所示,在该组网下,使用MSTP+VRRP在冗余备份链路的同时消除网络中的环路,在一条上行链路断开的时候,流量能切换到另外一条上行链路转发,还能合理利用网络带宽。

mstpvrrp

  • 在二层上使用MSTP来实现破环的同时保证链路得到充分的利用,将VLAN2 和 VLAN3 分别划到两个不同的MSTI中。
  • 在三层上使用VRRP实现网关冗余。,HostA 以 SwitchA 为默认网关接入 Internet,SwitchB 作为备份网关;HostB 以 SwitchB 为默认网关接入 Internet,SwitchA 作为备份网关,以实现可靠性及流量的负载分担。

VLAN#

概述#

VLAN(Virtual Local Area Network,虚拟局域网) 是一种在物理局域网(LAN)基础上,通过逻辑划分将网络分割成多个独立广播域的技术。

VLAN使得原本无隔离的二层局域网在逻辑上被分为相互独立的广播域,用逻辑隔离替代物理隔离。

VLAN作用归结于三点就是:

  • 分割广播域,主要作用,隔离不同vlan的广播流量
  • 逻辑隔离
  • 灵活管理

为了提高处理效率,交换机内部的数据帧一律都带有 VLAN Tag,以统一方式处理。当一个数据帧进入交换机接口时,如果没有带 VLAN Tag,且该接口上配置了 PVID(Port Default VLAN ID),那么,该数据帧就会被标记上接口的 PVID。如果数据帧已经带有 VLAN Tag,那么,即使接口已经配置了 PVID,交换机不会再给数据帧标记 VLAN Tag


VLAN报文#

VLAN的定义是802.1Q标准,终结VLAN的接口也称作Dot1q接口(小数点 (dot) → Dot1Q)。

正好对802.x体系做个融合:

  • IEEE 802.3 定义了以太网的物理层和MAC子层规范,解决单条链路上的介质访问与数据传输问题;
  • IEEE 802.2 则定义了 LLC(逻辑链路控制)子层,用于识别上层网络协议(如IP、IPX),并为上层提供统一的接口;
  • IEEE 802.1 是一组局域网高层互联与管理标准,专注于解决多个以太网网段之间的桥接、环路消除(STP)、流量优先级(802.1p)以及虚拟局域网划分(802.1Q)等跨设备管控问题;

简言之就是从 3-1 是一个 物理链路 - 逻辑链路 - 链路管控 的逻辑。

802.1Q对 Ethernet 帧格式进行了修改,在源 MAC 地址字段和协议类型字段之间加入 4 字节的 802.1q Tag(交换机或专有硬件实现VLAN标签处理,对用户透明):

802.1q alt text

  • TPID(标签协议标识符),表帧类型,取值为 0x8100 时表示 802.1q Tag 帧。如果不支持 802.1q 的设备收到这样的帧,会将其丢弃。要看到这个字段得直接抓链路上的包,实测在接口上抓包这个字段还是透明的。

tpid

  • PRI Priority 3位,8个优先级,越大越优
  • CIF Canonical Format Indicator 标准格式指示位,CFI 为 0 说明是经典格式,CFI 为 1 表示为非经典格式。用于兼容以太网和令牌环网。在以太网中,CFI 的值为 0
  • VID 12位,vlan标识符
  • vlan:0-4095,0和4095不可用,默认管理VLAN为1,可用范围 1-4094

VLAN划分#

  • 基于接口:最常用的方式,简单划分接口属于哪个VLAN,数据帧进入时就会被打上接口的PVID PVID(Port Default VLAN ID)
  • 基于MAC 地址: 根据计算机网卡的MAC地址来划分VLAN。
  • 基于子网:若交换设备收到的是 untagged(不带 VLAN 标签)帧,交换设备根据报文中的 IP 地址信息,确定添加的VLAN ID。
  • 基于网络层协议:类似基于子网,只不过映射变为了网络协议
  • 基于匹配策略方式来划分 VLAN:在交换机上配置终端的 MAC 地址和 IP地址,并与 VLAN 关联。

VLAN通信原理#

VLAN的四种接口类型(这里将QINQ归为一种):

| 类型 | 核心特征 | 典型应用场景 | |------|------|----------|-------------| | Access | 仅属于一个VLAN,收发无标签帧,交换机内部自动打/剥标签 | 连接终端设备(PC、打印机、IP电话、服务器网卡) | | Trunk | 打上缺省的 VLAN ID,当缺省 VLAN ID在允许通过的 VLAN ID 列表里时,接收该报文,反之丢弃。 | 交换机之间互联、连接路由器/Firewall/无线AP | | Hybrid | 兼具Access和Trunk特性,可自定义哪些VLAN带标签、哪些不带 | 华为/H3C设备特有,灵活连接终端或上行链路 | | QinQ | 双层VLAN标签,外层为运营商VLAN,内层为用户VLAN | 运营商场景,区分不同客户/业务 |

在二层来说,相同VLAN跨交换机互联,则需要通过Trunk接口,实现中继的作用,Trunk链路传输多VLAN报文的特性也使得其可作为VLAN的干线。(一般不用hybrid)

由于不同VLAN在二层是互相隔离的,因此跨VLAN通信就需要通过三层,一般就通过子接口或VLANIF口的形式,大多数情况下都是用的VLANIF接口,其本质就是设置VLANFI口或子接口的三层地址,在三层上路由可达,进而实现跨VLAN通信。


VLAN 拓展#

SUPER VLAN(VLAN Aggregation)#

VLAN Aggregation的产生主要是用于解决用一个 VLAN 对应一个三层逻辑接口导致的地址浪费问题。

两个新概念:

  • Super-VLAN:与普通VLAN不同,它是个逻辑上的三层接口,其包含多个sub-vlan。这个VLAN号(VLAN 10)只是为了绑定这个三层网关接口而存在的。它不包含任何物理端口(所有物理端口都在Sub VLAN里)。
  • Sub-VLAN:只包含物理接口,用于隔离广播域的 VLAN,不能建立三层 VLAN 接口,它与外部的三层交换是靠 Super-VLAN 的三层接口来实现的。这里的VLAN号只用于交换机内部的MAC地址学习和二层转发,它不需要配置IP地址(没有网关)。

Super-VLAN

supervlan无物理口的限制是强制的,在华为设备中,设备配了trunk允许所有,就没法配置supervlan;若先配了supervlan,再配了trunk允许所有,trunk会默认剔除supervlan的vlan号。 supervlan supervlan

super vlan通信原理#

  1. 不同SUB-VLAN之间三层通信

如图,HOSTA 和 HOSTB 在三层处于同一网段,但二层互相隔离,但属于同一个Super-VLAN,A的arp无法到达B,可以通过Super-VLAN上的网关实现ARP代理,网关向所有其他sub-vlan接口发送一个arp广播来请求HOSTB的MAC。

Super-VLAN

  1. SUB-VLAN和外部二层通信

前面提到过supervlan没有物理口的概念,因此设备访问外部二层网络,supervlan的vlan号不会产生影响,subvlan是vlan号是多少,出去携带的就是多少。

  1. SUB-VLAN和外部三层通信

如图所示,A B访问C,supervlan的虚拟接口IP作为其网关,但在路由时则由port3上的vlanif10来转发,因此出去时带的是vlan10而非supervlan的vlan 4。

supervlan

VLAN Mapping#

VLAN mapping的产生主要还是归于在运营商网络场景下,VLAN数量有限问题。

VLAN mapping一般多用在出口处,它通过替换数据帧中的内外层 VLAN Tag来实现内部 VLAN 与外部 VLAN 的相互映射,如运营商场景下用户VLAN映射运营商VLAN。

交换机根据VLAN mapping表工作:

  • 带TAG帧进入 - 替换VLAN TAG - 更新 MAC 表项 - 根据映射后的 MAC+VLANID 查找转发
  • 不带TAG帧进入 - 根据划分方式添加TAG/或丢弃 - MAC地址学习 - 转发

vlanmapping

使用VLAN MAPPING通信,这两台设备之间在三层需要处于同一网段,不然需要走三层,VLAN MAPPING也没意义了。

MUX VLAN#

MUX VLAN (Multiplex VLAN,多复用VLAN) 可以实现部分用户能互通、部分用户必须隔离、但所有人又能和网关通信的精细访问控制,同时节省IP地址和VLAN资源。

三个概念:

  • Principal VLAN:主VLAN,可以和其他所有从VLAN通信
  • Separate VLAN:隔离型从VLAN,只能和Principal port进行通信,和其他类型的接口实现完全隔离。每个Separate VLAN必须绑定一个Principal VLAN
  • Group VLAN:互通性从VLAN,可以和Principal port进行通信,在同一组内的接口也可互相通信,但不能和其他组接口或 Separate port 通信。每个Group VLAN必须绑定一个Principal VLAN

如图所示,根据MUX VLAN特性:

  1. employee 互访 — > OK; employee 访问服务器 —> OK
  2. custormer 互访 —> No; customer 访问服务器 —> OK

muxvlan

QINQ#

VLAN 可用标签范围在1-4094,在运营商层面上是显然不够用的,使用QINQ技术可以嵌套VLAN标签,使可用VLAN来到 4094*4094 个。

QinQ 是在 802.1Q VLAN 的基础上增加了一层 802.1Q VLAN 标签,比普通802.1Q VLAN 帧多了4字节。

qinq

QINQ封装#

  1. 基于接口的QINQ,对接口上的所有流量进行QINQ封装,简单但不够细致;
  2. 基于VLAN的QINQ,根据策略对入接口的流量进行QINQ封装,比较灵活;
  3. 基于路由子接口的QINQ,属于基于VLAN的一种,比较特殊的是在路由子接口上生效,它的功能是新增一层 VLAN 标签,作用是生成双层标签以太帧,设计目标就是送入二层隧道(PWE3/VLL/VPLS)透传,后面会提到PWE3 VLL VPLS技术;

QINQ终结#

终结主要是指设备对报文的单层或者双层 Tag 进行识别,然后根据后续的转发行为对单层或者双层 Tag 进行剥离或继续传送。

终结一般在路由子接口上执行

  • 单层Tag,即Dot1q终结子接口
  • 双层Tag,即QINQ终结子接口,其中根据两层TAG的携带是否明确又分为 明确QINQ终结 和 模糊QINQ终结(即内外标签为范围值)

QINQ种类#

针对不同的外层TAG封装方式,可以大致分为:

  1. 基本QINQ 针对启用基本QINQ的接口,来了带TAG的报文,就会成为双TAG报文;若不包含TAG,则打上接口默认TAG
  2. 灵活QINQ 可以根据不同的内层Tag 而加上不同的外层Tag,划分更加细致

QINQ Mapping#

相较于VLAN Mapping,QINQ Mapping 主要是为了在运营商网络场景下,实现用户VLAN映射运营商VLAN,其映射主要发生在子接口用于介入运营商VPLS网络,并且是将帧的两层Tag映射为用户指定的一层Tag。

VLAN Mapping则是在主接口上处理映射,主接口收到带有两层Tag帧后,将帧中的外层Tag映射为用户指定的一层Tag,内层Tag作为业务数据透传

qinq


GVRP 协议#

有一说一 这个协议不看文档还是头一次知道,好像没看到啥解决方案用的这玩意。

GARP 通用属性注册协议,GVRP(GARP VLAN Registration Protocol)属于其的一个应用。工作在数据链路层,802.1Q 定义,用于交换机之间动态同步 VLAN 信息。

GARP作为通用框架,用来在交换机之间通告、注册、注销二层属性。

GVRP的出现主要用来解决VLAN 在Trunk链路上动态注册/注销,不需要逐台交换机手动配置允许的VLAN。 GVRP 协议的属性注册和注销仅仅是对于接收到 GVRP 协议报文的端口而言的。

这个协议定位感觉挺尴尬,大型网络几乎不会用这个,中小型也没必要。。

GVRP消息类型#

  • Join消息:

gvrp

  • Leave消息: gvrp

LeaveAll 消息用来注销所有的属性,以使其它应用实体重新注册本实体上所有的属性信息,以此来周期性地清除网络中的垃圾属性

GVRP定时器#

  • Join 定时器,控制 Join 消息,发送第一个 Join 消息后将等待一个 Join定时器的时间间隔,如果在一个 Join 定时器时间内收到 JoinIn 消息,则不发送第二个 Join 消息;如果没收到,则再发送一个 Join 消息。每个端口维护独立的 Join 定时器。
  • Hold 定时器,控制 Join 消息(包括 JoinIn 和 JoinEmpty)和 Leave 消息(包括 LeaveIn和 LeaveEmpty)的发送。
  • Leave 定时器,来控制属性注销。
  • LeaveAll 定时器

GVRP注册模式#

  • Normal(普通模式,默认)可以动态注册 VLAN,也可以静态配置 VLAN;接收 GVRP 报文动态添加 Trunk 口允许 VLAN。
  • Fixed(固定模式)关闭动态学习,GVRP 学到的 VLAN 不生效,只使用手工配置的允许 VLAN。
  • Forbidden(禁止模式)禁止该 Trunk 口学习任何动态 VLAN,只保留 VLAN1。

以太网链接路聚合#

以太网链接路聚合(Link Aggregation,LAG)是一种将多个物理链路组合成一个逻辑链路的技术,以提高带宽和冗余性。

为什么能聚合?

交换机/网卡有多个独立的PHY、MAC控制器,每一个网口都可以独立收发以太网帧。本来这些口是互相独立,聚合就是驱动/芯片新增聚合分发器: 以太网本身没有规定一台设备只能用1个网口收发,链路聚合是在MAC子层下增加一层分片调度逻辑,把一组物理端口封装成一个逻辑虚拟端口,向下聚合分发器把帧,挑选一个物理成员口发出去,向上所有物理口收到的帧,统一上交到逻辑接口送给IP栈。

alt text

链路聚合种类#

  • 静态聚合(静态 Trunk):两边手工配置,没有协商报文,靠两端配置一致
  • LACP 动态聚合 (802.3ad):两端互相发送 LACP 协议报文协商,自动识别成员端口,端口故障自动剔除

流量分发原理#

基于流的哈希分发机制,提取报文头部字段做哈希(MAC地址或IP等组成),对哈希值取模映射到成员物理端口;同一个数据流哈希结果不变,所有帧固定从同一个端口发送,避免帧乱序;不同数据流散列到不同端口,实现多条链路负载分担;端口故障时重新哈希,流量迁移至存活端口。

LACP 协议#

  • 基于 IEEE802.3ad 标准的 LACP,是一种实现链路动态聚合与解聚合的协议
  • 通过链路聚合控制协议数据单元 LACPDU(Link Aggregation Control Protocol Data Unit)与对端交互信息

一些概念:

  1. LACPDU:LACP 协议报文,二层组播报文,目的 MAC:01‑80‑c2‑00‑00‑02
  2. 报文周期:默认快周期 1s,慢周期 30s;超时:3 个周期没收到对端 LACPDU,标记端口失效。
  3. Actor / Partner
  • Actor:本地设备(发 LACPDU 的本机)
  • Partner:对端邻居设备
  1. 工作模式:active/passive

LACP 主动端#

LACP 通过 System-ID(系统优先级 + MAC) 比较,System-ID 更小的设备 = 控制端(主动端)

alt text

控制端选举一般在存在MAX-ACTIVE限制时起作用,一般全部端口处于ACTIVE状态时可以不需要在意谁是控制端,仅仅只用做转发端口的控制,转发行为只根据哈希结果选择。

E-Trunk#

华为私有跨设备链路聚合,对标 H3C M-LAG、Cisco vPC,基于LACP协议,因此加入ETRUNK的设备都需要开启LACP。

E-Trunk 只支持两台设备,其原理是通过调整 LACPDU里的系统优先级实现选路,而LACP协议本身就是在一条链路上二选一的逻辑:

alt text

如图,对 CE 设备而言,E-Trunk 不可见,在 PE1 和 PE2 设备上分别创建 ID 相同的 E-Trunk 和 Eth-Trunk,并将 Eth-Trunk 加入到 E-Trunk,在PE1 系统ID较小的情况下,CE 判定PE1 系统优先级更高,只把连接 PE1 的链路选为活动链路;通往 PE2 链路 Standby,正常无流量。

可见E TRUNK并不能实现带宽的完全利用,本质是设备级的主备,但其只需要CE侧支持标准的LACP。

对于这个案例,如果要两条链路都利用上,就得再建一个E TRUNK组,新加一条ETH TURNK链路加到这个组,以PE2为主。

其他二层技术#

一些较少使用到的二次技术,简单记下概念。

SEP#

SEP (Smart Ethernet Protection 智能以太保护),是一种专用于以太网链路层的环网协议,华为私有,大多用于工业环网。

为什么有生成树还需要SEP?

  • SEP是硬件驱动的专用二层快速保护协议
  • 工业环网要求极高的收敛速度

具体的选举过程和报文就不展开了,如图所示:

sep

当 SEP 段中出现链路故障,LSW1、LSW5 上的 P1 端口收到故障通告报文或 LSW5 上的 P1 端口超时后没有收到主边缘端口选举报文,此时 LSW1 上的 P1 端口角色将变为副边缘端口,SEP 段中存在两个副边缘端口。两个副边缘端口都在周期性地发送主边缘端口选举报文,当故障恢复时,在一个周期内完成新主边缘端口选举。

SEP 本身自带环路阻塞机制,同时跑 STP 会冲突,协议互相干扰。SEP 只擅长环 / 半环 / 链型拓扑;

HVRP#

HVRP,Hierarchy VLAN Registration Protocol 分层 VLAN 注册协议,华为私有,用的很少,用来控制控制 MAC 地址学习数量。

设计原因:

  • 大型树形 / 环状接入网络,汇聚交换机 Trunk 透传几百个 VLAN。
  • 交换机端口加入大量 VLAN 后,会在所有 VLAN 内学习 MAC 地址,MAC 地址表资源耗尽,大量报文泛洪。

设计原理:

基于MSTP划分的根端口、指定端口控制报文传递:

  • 接入交换机识别自身本地存在终端的 VLAN,周期性通过根端口向上发送 VLAN 通告;
  • 上游交换机在指定端口接收报文,完成 VLAN 动态注册(端口启用该 VLAN 转发),仅对注册生效的 VLAN 学习 MAC 地址;
  • 如果连续老化周期收不到对应 VLAN 通告,停用该 VLAN,不再在此 VLAN 学习 MAC 地址;

ps: 只有指定端口能注册、老化 VLAN;根端口永远不会老化 VLAN

二层技术-待更新
https://ltreedo.icu/posts/iereview/layer2tec/
作者
Fakeragments
发布于
2026-03-07
许可协议
CC BY-NC-SA 4.0