# 风暴抑制

## 风暴抑制是什么

风暴抑制是一种二层流量控制技术，用来限制某类异常报文在接口上的速率，防止它们过多占用带宽和设备资源。

它不是“完全不让报文通过”，而是：
- 当某类流量超过阈值时进行限制
- 让网络不至于因为异常流量被拖垮

## 作用

风暴抑制的核心作用是：
- 抑制广播风暴
- 抑制组播风暴
- 抑制未知单播风暴
- 保护交换机 CPU、接口带宽和整网稳定性

## 广播风暴、组播风暴、未知单播风暴

### 广播风暴

网络中广播报文过多，导致大量端口都被广播流量占满。

常见原因：
- 二层环路
- 主机异常发送广播
- 某些协议报文大量泛滥

### 组播风暴

组播报文过多，影响正常业务转发。

### 未知单播风暴

交换机查不到目的 MAC 时，会对报文进行泛洪。如果这类报文太多，也会造成资源浪费。

## 常见触发场景

- 二层网络出现环路
- 接入口接入异常设备
- 病毒、木马或异常程序不断发包
- 主机网卡故障
- 接口配置错误导致报文泛洪

## 基本配置思路

风暴抑制的常见思路是：
1. 识别要限制的流量类型
2. 在接口上设置阈值
3. 当流量超过阈值时进行丢弃、限速或保护动作
4. 再结合生成树、端口安全等手段一起做整体防护

## 常见问题

### 1. 风暴抑制能不能解决环路根因

不能。

风暴抑制更多是在“出问题时减轻损害”，真正解决二层环路，还是要靠生成树等机制。

### 2. 阈值是不是越小越安全

不是。

阈值过小可能会误伤正常业务，导致广播、组播等合法流量也被限制。

### 3. 为什么要限制未知单播

因为未知单播会被泛洪。如果大量出现，也会像广播一样占用交换网络资源。

## 一句话理解

- **风暴抑制的本质是“限制异常二层流量速率，防止网络被打满”**
- **它是缓解手段，不是根治环路的核心手段**

## 常见厂商命令

### 华为

不同型号和版本命令可能略有差异，常见思路是在接口下限制广播、组播、未知单播流量。

常见写法示例：

```bash
interface GigabitEthernet 0/0/1
storm-constrain broadcast cir 1000
storm-constrain multicast cir 1000
storm-constrain unknown-unicast cir 1000
```

查看接口配置：

```bash
display current-configuration interface GigabitEthernet 0/0/1
```

### 思科 Cisco

限制广播流量：

```bash
interface gigabitEthernet 0/1
storm-control broadcast level 5.00
```

限制组播流量：

```bash
storm-control multicast level 5.00
```

限制未知单播流量：

```bash
storm-control unicast level 5.00
```

超过阈值后的动作：

```bash
storm-control action shutdown
```

查看配置：

```bash
show storm-control
```

## 复习时容易写错的点

- 风暴抑制不是彻底解决环路的方法
- 它限制的是报文速率，不是简单“把这类报文全部禁掉”
- 除了广播风暴，还可能有组播风暴和未知单播风暴
- 阈值设置过低也可能影响正常业务
