2. 英伟达IB交换机安全特性:Mellanox交换机安全功能概览、端口安全与MAC绑定、风暴控制与速率限制

各位好,咱们接着聊IB网络的安全。上一章我们把IB网络的安全威胁和整体架构梳理了一遍。这一章,咱们把目光聚焦到最前线——交换机本身。

说实话,Mellanox的IB交换机,尤其是现在的Quantum和Spectrum系列,安全功能已经相当丰富了。但很多朋友买回来,默认配置一开,就当个普通交换机用。这其实挺浪费的。我见过不少项目,IB网络跑得飞快,但安全配置几乎是裸奔状态。嗯,咱们今天就把这些“隐藏技能”挖出来。

IB交换机安全特性 安全功能概览 ACL / 802.1X / CoPP 端口安全与MAC绑定 LID / GUID / MAC 绑定 风暴控制与速率限制 广播/多播风暴 / 流量整形 ACL规则 端口锁定 风暴阈值 控制面保护 MAC漂移检测 速率限制

2.1 Mellanox交换机安全功能概览

Mellanox的IB交换机,底层跑的是MLNX-OS或者Onyx(不同系列略有差异)。安全功能方面,我个人觉得最核心的有这么几块:

  • ACL(访问控制列表):这是最基础也是最强大的。你可以基于LID、GUID、甚至一些自定义字段做过滤。说白了,就是决定谁可以跟谁说话。
  • 802.1X(端口认证):虽然IB网络里用得不如以太网多,但Mellanox交换机是支持的。适合对安全性要求极高的场景。
  • CoPP(控制面保护):这个我特别喜欢。它专门保护交换机的“大脑”——CPU。防止有人恶意发大量管理报文把交换机打瘫。
  • 风暴控制:后面会细讲,这里先提一嘴。IB网络里广播和多播流量一旦失控,整个集群都可能被拖垮。
我的习惯: 新交换机到手,我第一件事就是打开CoPP。默认配置下,CPU的防护其实挺弱的。你想想看,万一有个节点发疯,疯狂发SMP(子网管理包),交换机CPU直接飙到100%,整个网络的管理面就瘫痪了。我曾经在一个测试环境里遇到过,教训深刻。

2.2 端口安全与MAC绑定

端口安全,说白了就是“认卡不认人”。IB网络里,每个HCA卡都有一个唯一的GUID(全局唯一标识符),类似于以太网的MAC地址。我们可以把这个GUID绑定到交换机的某个端口上。

为什么要这么做?

  • 防止设备私自接入:有人偷偷拔掉一台服务器的IB线,插到自己的笔记本上?在IB网络里,笔记本没有HCA卡,插上去也没用。但如果是恶意替换HCA卡呢?端口绑定就能防这个。
  • 防止MAC/GUID欺骗:虽然IB网络里伪造GUID比以太网伪造MAC难得多,但不是不可能。绑定之后,交换机只认“白名单”里的GUID。
  • 简化故障排查:哪个端口接了什么卡,一目了然。我习惯在部署初期就把所有GUID和端口对应关系录入好,后期排查问题能省一半时间。

配置示例(MLNX-OS CLI):

switch (config) # interface ib 1/1
switch (config interface ib 1/1) # port-security enable
switch (config interface ib 1/1) # port-security mac-address 0002c903000a48b0
switch (config interface ib 1/1) # port-security violation restrict

这里要注意violation restrict这个参数。它表示如果检测到非法设备接入,端口不会直接down掉,而是只丢弃非法流量,合法流量照常转发。我个人建议生产环境用restrict,别用shutdown。为什么?

我曾经踩过的坑: 有一次在金融客户现场,我配置了violation shutdown。结果运维同事更换HCA卡时忘了通知我,端口直接shutdown了。整个计算节点的IB网络断了,影响了线上业务。从那以后,我都是先用restrict,配合日志告警,确认无误后再考虑是否改为shutdown

2.3 风暴控制与速率限制

风暴控制,这名字听着就吓人。在IB网络里,风暴通常指的是广播风暴或多播风暴。虽然IB的广播域比以太网小(通过分区控制),但一旦出现,破坏力极强。

为什么会发生风暴?

  • 配置错误:比如某个分区的配置导致广播报文循环转发。
  • 硬件故障:HCA卡或者交换机端口异常,疯狂发包。
  • 恶意攻击:虽然少见,但理论上可以通过构造大量多播报文耗尽网络带宽。

Mellanox交换机的风暴控制,主要支持以下几种:

控制类型 说明 推荐阈值
广播风暴控制 限制广播报文在端口上的速率 端口带宽的 1% - 5%
多播风暴控制 限制多播报文速率,IB中尤其重要 端口带宽的 10% - 20%
未知单播风暴控制 限制目的MAC不在转发表中的单播 端口带宽的 5% - 10%

配置示例:

switch (config) # interface ib 1/1
switch (config interface ib 1/1) # storm-control broadcast level 2
switch (config interface ib 1/1) # storm-control multicast level 15
switch (config interface ib 1/1) # storm-control action trap

这里action trap的意思是,当风暴发生时,交换机除了丢弃超出的报文,还会发送一个SNMP Trap给网管系统。嗯,这个一定要配。不然风暴发生了你都不知道,等用户投诉了才去查,那就被动了。

速率限制(Rate Limiting) 和风暴控制是两回事。风暴控制是“防异常”,速率限制是“管正常”。比如,你可以限制某个端口的管理流量不超过1Mbps,防止某个节点发太多SMP报文影响子网管理器。我个人习惯在核心链路上对BUM(广播、未知单播、多播)流量做速率限制,但对正常数据流不做限制,避免影响性能。

最后说一句,这些配置不是配完就完事了。我建议定期检查风暴控制计数器的统计信息:

switch # show storm-control ib 1/1

如果发现某个端口频繁触发风暴控制,别急着调高阈值。先查清楚为什么会有这么多广播或多播流量。是应用问题?还是配置问题?找到根因再动手,这才是工程师该有的思路。