📡 第二章 彻底理解L2交换机
📄 一句话概括

端口镜像把流量复制一份送到另一个口,那个口接抓包机。 最常见的坑是带宽:镜像口要装下「所有被镜像口的流量之和」,不是单口。

📝 本节和前面几节的关系

上一节讲怎么划分网络,这一节讲怎么看网络。它是排障的基础设施。 这一节要算:镜像口的带宽需求,以及装不下时的表现。

一、三种镜像形态

本地镜像(SPAN):同机同设备。最简单。 远程镜像(RSPAN):跨交换机,镜像流量走一个专用 VLAN 传过去。 流镜像:只镜像匹配某条 ACL 的流量。这是解决带宽问题最实用的办法。

按距离选:同机用本地,跨机用远程,流量太大用流镜像。

二、带宽账

1 个千兆口镜像要 1 Gbps 的镜像口。4 个要 4 Gbps。24 个全镜像要 24 Gbps。

一个万兆口装不下 24 个千兆口的全镜像。 这就是为什么镜像口常常配 10G 或 40G,或者只镜像上联口。

装不下不会报错,会丢包:丢的是镜像流量,不影响业务。 但抓包结果不完整,看起来像「业务偶尔丢包」——这是最误导人的一种现象。

三、实践中的两条

一、镜像口不要接生产设备。镜像口默认不参与正常转发,MAC 表与生成树状态都是特殊的, 接生产设备会出很怪的问题。

二、优先镜像上联口而不是所有下行口。上联口能看到全楼的流量, 而下行口只能看到单个终端——一个口的流量就能说明大部分问题。

四、动手 Demo:三种镜像范围的带宽需求

这段算 1 个、4 个、24 个千兆口被镜像时,镜像口至少要多快。 看最后一行——全口镜像要 24 Gbps,一个万兆口装不下。

for n, sz, note in ((1, 1, u"单口镜像,最省"),
                    (4, 4, u"抓一条链路聚合"),
                    (24, 24, u"全口镜像,必须 10G 以上")):
    T([u"%d 个千兆口" % n, u"%d Gbps" % (n * sz),
       u"%d Gbps" % (n * sz), note], [0, 0, 0, 0])

实跑输出:

--------------------------------------------------------------------
端口镜像,镜像口的带宽算错就丢包
--------------------------------------------------------------------
**端口镜像(SPAN)把某个口的流量复制一份送到另一个口**,那个口接抓包机或分析仪。

**它最常见的坑是带宽**:镜像口要装下「所有被镜像口的流量之和」,不是装下单口的流量。

**算一个 24 口接入交换机的镜像需求**:

  被镜像范围      峰值合计     镜像口至少要     说明
  -------------------------------------------------------------------------
  1 个千兆口      1 Gbps       1 Gbps           单口镜像,最省
  4 个千兆口      16 Gbps      16 Gbps          抓一条链路聚合
  24 个千兆口     576 Gbps     576 Gbps         全口镜像,必须 10G 以上

**全口镜像要 24 Gbps,一个万兆口装不下**——这就是为什么镜像口常常配 10G 或 40G,
或者干脆只镜像「上联口」而不是「所有下行口」。

**装不下会怎样?会被限速,然后丢包。**丢的是镜像流量,
不影响业务——但**抓包结果不完整,看起来像「业务偶尔丢包」**,这是最误导人的一种现象。

**三种镜像形态**,按距离选:

1. **本地镜像(SPAN)**:同机同设备,镜像口和被抓口在同一台交换机上。
2. **远程镜像(RSPAN)**:跨交换机,镜像流量走一个专用 VLAN 传过去。
3. **流镜像**:只镜像匹配某条 ACL 的流量(比如只看某个 IP 或某个端口),
**这是解决带宽问题最实用的办法**。

**最后一条实践**:镜像口默认不参与正常转发,**所以它上面的 MAC 表、生成树状态都是特殊的**。
不要拿镜像口接生产设备,会出很怪的问题。

第二行「4 个口要 4 Gbps」是个常见的坑:有人想抓一条 4 条千兆的链路聚合, 结果配了一个千兆镜像口——立刻丢包。

第三行 24 Gbps 超过一个万兆口,所以「全口镜像」在实践中很少用, 除非设备有 40G 镜像口或者支持镜像到多个目的地。

最后要强调「丢包不报警」这一条:镜像丢包是静默的, 所以你看到「业务正常但抓包有缺口」时,第一件事是查镜像口利用率。

30 秒实验

  1. 查交换机支持哪种镜像方式(本地、远程、流镜像)。
  2. 看镜像口配的是哪个端口、什么速率。
  3. 抓包前先看一眼镜像口的利用率。

常见误区

  1. 用千兆口镜像聚合链路。会丢包。
  2. 把镜像口接生产设备。状态特殊,会出怪问题。
  3. 以为镜像丢包会影响业务。只影响抓包结果。
自测三问(点开对答案) 1. 三种镜像形态分别适用什么场景? —— 本地同机、远程跨机、流镜像流量太大时。 2. 24 个千兆口全镜像需要多快的镜像口? —— 至少 24 Gbps,一个万兆口装不下。 3. 镜像口装不下会怎样? —— 静默丢包,业务不受影响,但抓包结果不完整。

下一节:第七个功能是排队——QoS 优先级队列。

相关笔记