Mellanox Onyx交换机实战:从CLI登录到常用配置与排障
如果你从思科CCNA那套命令行走过来第一次登录 Mellanox Onyx 交换机的时候大概率会愣一下提示符长得不一样端口命名也不是 GigabitEthernet0/1甚至连“保存配置”的命令都得翻手册。这很正常。Mellanox Onyx 交换机在数据中心、HPC、存储网络里出现频率很高尤其近几年随着RoCEv2、DPDK、无损网络这些概念火起来很多团队开始把Mellanox交换机和它自家的ConnectX网卡搭配使用。这篇就围绕Mellanox Onyx交换机的基本使用展开从开机上电、命令行逻辑、常用配置到排障思路给准备把设备纳入现网的朋友一份能直接落地的参考。文章既有命令思路也有我在实际环境里踩过的坑。我尽量用“机器实际是什么逻辑”来讲而不是背手册。版本不同命令会有差异但核心思路一致你掌握了套路换版本也只是细节变化。1. 搞清Onyx是什么它不是一台“普通交换机”那么简单的角色1.1 Mellanox交换机、Spectrum芯片和Onyx系统的关系Mellanox这个名字早期更多是做InfiniBand和以太网卡。后来收购了交换芯片团队推出了Spectrum系列交换芯片也做了自己的交换机设备比如SN2000、SN3000、SN4000这些型号。运行在它们上面的网络操作系统就是Onyx早期还有一个叫MLNX-OS的版本你可以把Onyx理解成新一代的统一系统功能和API体系更完善。Onyx系统的底层是Linux内核但对外暴露的是一套完整的交换机CLI不是让你直接进Linux shell。它的架构设计思路偏向数据中心场景二层、三层、VXLAN、RoCE、Telemetry这些能力是重点不像传统园区交换机那样在复杂接入功能上花太多功夫。所以你在Onyx设备上看不到大量“combo口”“语音VLAN”之类的杂项能力它的强项在转发性能、缓冲管理、低延迟、可编程性和流控生态。我见过不少人把Mellanox交换机和H3C、华为的设备放在一起对比其实定位就不一样。Cisco、华为、H3C是“通用网络设备厂商”从核心到接入全都覆盖Mellanox更聚焦在数据中心内部尤其是高性能计算、分布式存储、AI训练集群这类场景。你拿它做园区接入不是不行但成本和学习优势都体现不出来。1.2 端口编号规律和前面板布局第一次拿到设备先别急着插线。Mellanox Onyx交换机的物理端口命名一般是Ethernet1/1、1/2这样的格式第一个数字是模块号第二个是端口号。大多数固定端口设备前面只有一个模块所以看到Ethernet1/1到Ethernet1/N很常见。如果用了端口拆分Breakout会出现Ethernet1/1/1、1/1/2这种三级编号这一点在配置时特别容易看走眼。前面板上除了业务口通常还有console口、带外管理口和USB接口。console口是调试救命的路径管理口用于带外远程管理USB口可以用来升级镜像或拷贝配置文件。如果你想把一台设备快速纳入现网第一件事就是把管理口IP配上而不是用业务口做管理。业务口做管理一旦VLAN、路由配置出错你就得跑机房插console这是得不偿失的。1.3 选型建议什么时候选Onyx什么时候不选选型不是“哪个好”而是“哪个匹配”。如果你对延迟和确定性转发要求极高比如跑分布式存储、HPC计算集群Mellanox Onyx交换机配合ConnectX网卡是成熟方案。如果团队已经在用SONiC或Cumulus Linux那要评估的是运维习惯Onyx的CLI和监控体系是一门相对独立的技能树。另外要考虑团队排障能力。Onyx文档确实多但中文社区沉淀相对少很多问题需要去官方文档和社区翻。如果你的团队对命令行接受度低老老实实用华为或H3C至少出了问题能搜到一大把中文帖子。网络设备不是参数单好看就行可维护性才是长期运营的关键。2. 首次上电与基础登录配置串口、管理口和三个最容易卡住的细节2.1 上电后从console登录默认账号和波特率拿到新设备后我习惯先接console线。Mellanox设备的console口默认参数一般是波特率1152008数据位1停止位无校验。部分老设备或特殊型号可能不一样连不上就试9600、57600这个组合别一上来就怀疑设备坏了。第一次登录的默认账号通常是admin默认密码也是admin。登录后系统会提示修改密码这里不要跳过。很多机房事故不是因为bug而是因为设备挂着默认密码暴露在网络上被人扫到直接进配置。改密码只是顺手的事但能挡掉绝大多数低级风险。登录之后你会进入一个类似“switch (config-...) #”的CLI环境。Onyx没有传统思科那种“用户模式/特权模式”的强区分登录后基本就是操作模式可以执行show命令要改配置就进configure terminal这个逻辑和大多数现代交换机系统类似。2.2 配置带外管理IP和开启SSH的推荐顺序配置管理网络建议在console下先完成避免SSH配置一半断掉。我的推荐配置顺序是switch (config) # interface mgmt0 switch (config if mgmt0) # ip address 192.0.2.10/24 switch (config if mgmt0) # exit switch (config) # ip default-gateway 192.0.2.1 switch (config) # ssh server enable switch (config) # configuration write管理接口不是默认就配好IP的必须手动指定。管理口一般不参与业务转发它是独立的带外通道千万别把管理口和某一个业务口混在一起。配好IP后先用ping验证网关再从跳板机试SSH通了再把console线收起来。这样后面所有操作都能远程完成了也方便同时开多个终端查看配置。带外管理IP应该规划好不要随手拉一个互联网地址或者和业务段混用。我见过有人把管理IP配在业务VLAN里防火墙策略一变整台设备直接失去远程管理权限。2.3 首次使用最容易卡住的三个细节第一个细节是“配置保存”。Onyx系统里配置修改后最好执行configuration write持久化不然设备重启后修改全部丢失。不同版本提示符可能写成copy running-config startup-config但基本逻辑一样。养成改完配置就保存的习惯能省掉很多无谓的返工。第二个细节是tab键和问号。Onyx的CLI支持补全和在线帮助命令敲一半按Tab能补全输入?会列出后续可用的关键字。很多人第一次用觉得陌生其实这套交互很友好。遇到不确定的语法多按几次?比查文档快得多。第三个细节是线缆和光模块。Mellanox设备对光模块参数检测比较严格不是所有第三方光模块都能被正确识别。插上去显示DOWN不代表线有问题先看模块的告警和型号识别情况。如果用的是兼容模块先确认固件版本对模块有兼容记录否则后续排查会绕很远。3. Onyx命令行体系不用硬背掌握这套逻辑就够了3.1 配置模式和接口命名体系Onyx的命令行大致分两层操作模式和配置模式。操作模式负责看状态、看日志、测试连通性配置模式负责修改系统。配置模式下还可以继续往下钻比如进入某个物理接口、VLAN接口、聚合口这时提示符会跟着变化。模块化设计就是告诉你“你当前在配置什么东西”。接口命名贯穿所有配置过程所以必须花两分钟把它弄明白。物理口是Ethernet1/x管理口是mgmt0聚合口一般叫port-channelVLAN三层接口通常叫interface vlan。命名逻辑很直白不像某些老系统那样为了兼容历史搞得命名规则云里雾里。3.2 日常巡检必用show命令速查我把日常最常用的show命令整理成了表格适合刚接触Onyx的人贴在笔记里。不用全会记住这几个就能应付大多数场景。命令用途命令示例说明系统版本show version查看系统版本、硬件型号、运行时间接口汇总show interfaces summary查看所有接口状态、速率、协议状态接口详情show interfaces ethernet 1/1查看单个接口状态、协商模式、错误计数流量计数show interfaces counters查看接口收发流量和错误包计数VLAN信息show vlan查看VLAN表和端口成员关系路由表show ip route查看三层路由表邻居发现show lldp neighbors查看对端设备信息排查链路非常有用系统健康show system health查看电源、风扇、温度状态看到没日常巡检基本围绕这几个维度状态、计数、路由、邻居、硬件健康。遇到问题先跑一遍这些命令绝大部分故障都能定位到一个大概范围。3.3 配置保存、备份和回滚Onyx的配置保存不能只靠记忆要在文档里固定下来。修改配置后执行configuration write把运行配置写入启动配置。不同版本命令可能有差异但核心目标都一样把当前有效配置固化到下次启动加载的文件里。配置变更前建议先把当前运行配置备份一份可以保存到本地文本也可以通过SCP、TFTP拷贝到管理服务器。备份文件名最好带日期和设备名不要叫“backup.cfg”这种。回滚的时候直接load备份配置比一条条手敲撤销命令更可靠。网络设备配置回滚最忌讳临时起意没有备份就大改一旦改错方向恢复成本远超那几分钟“省事”。3.4 时间、NTP和日志故障定位的基石日志排障最怕设备时间不准。两台设备日志时间对不上哪怕一条链路同时报错你也无法判断先后顺序。所以配置NTP是上电后就要做的事而且要让所有交换机和服务器同步到同一时间源。日志可以配置发送到远程日志服务器比如常见的syslog服务器。设备本地日志会滚动覆盖出问题后再回去翻可能已经被冲掉了。远程日志服务器不仅保存时间长还能统一检索是生产环境必须补齐的一环。我见过不少团队设备跑得好好的就懒得配日志等出了安全问题才发现什么都没有这个教训希望你不要亲自踩一遍。4. 常用配置场景VLAN、端口聚合与三层路由一次说清4.1 VLAN规划Access和Trunk怎么分数据中心里最常见的配置就是划分VLAN。Onyx创建VLAN的套路和我用过的其他厂商设备差不多先定义VLAN再把端口放进去。switch (config) # vlan 10 switch (config vlan 10) # name production switch (config vlan 10) # exit switch (config) # interface ethernet 1/1 switch (config interface ethernet 1/1) # switchport mode access switch (config interface ethernet 1/1) # switchport access vlan 10 switch (config interface ethernet 1/1) # no shutdown这段命令的大意是创建VLAN 10命名为production把Ethernet1/1这个物理口设为access模式并划入VLAN 10。主机侧端口用access上联交换机之间用trunk这是基本规则。Trunk口要明确允许哪些VLAN通过不要图省事放行所有VLAN否则广播域会被无意义地扩大排障时也会增加干扰。我见过有人把服务器网卡口配置成trunk且允许所有VLAN结果服务器自己发的无标签流量全扇出到每个VLAN里造成广播风暴。这种问题查起来让人头大因为表象是“网络很卡”实际是VLAN划分不干净。所以端口角色定义越严格网络越稳定。4.2 链路聚合LACP别在模式匹配上翻车服务器双网卡绑定、交换机之间多链路扩容都用链路聚合。Onyx里创建聚合端口加成员口的逻辑不复杂switch (config) # interface port-channel 10 switch (config interface port-channel 10) # exit switch (config) # interface ethernet 1/1 switch (config interface ethernet 1/1) # channel-group 10 mode active switch (config interface ethernet 1/1) # exit switch (config) # interface ethernet 1/2 switch (config interface ethernet 1/2) # channel-group 10 mode active两端都要配置LACP一端active、一端active或passive不能一端active另一端不开LACP。否则聚合口会一直不起来。还有两个容易踩的坑成员口的速率和双工模式必须一致成员口划分到聚合口之前必须是干净的access或trunk配置不要带着杂七杂八的配置去加组。链路聚合之后判断是否生效不能只看端口物理状态还要看LACP状态和成员口计数。如果只有单个成员口转发说明聚合负载不均或另一端没识别。用show命令看聚合口状态确认成员口都进入“收集/分发”状态才算成功。4.3 三层路由配置SVI和默认路由在Onyx上给VLAN配置三层地址实际上就是创建VLAN接口并配IP。这个“VLAN接口”叫法很多有的厂商叫SVI有的叫interface vlan逻辑都一样让该VLAN内的主机可以通过这个IP做网关。switch (config) # interface vlan 10 switch (config interface vlan 10) # ip address 10.0.10.1/24 switch (config interface vlan 10) # no shutdown switch (config interface vlan 10) # exit switch (config) # ip route 0.0.0.0/0 10.0.0.1这段配置里第一段是给VLAN 10配置网关地址10.0.10.1/24第二段是写默认路由把所有目标未知的流量交给上行设备10.0.0.1。注意接口必须执行no shutdown否则接口置为管理Down状态ping不通第一反应根本不会想到是接口没启用。如果是三层网络环境还经常用到等价路由也就是给同一个目的地址写多条下一跳路由实现ECMP负载均衡。Onyx对ECMP的支持是原生的和多网卡服务器配合能提高整体转发带宽。但ECMP配置前一定要确认下一跳设备都能正常工作否则等价路由会不分青红皂白地把流量发向故障链路。4.4 一个小型配置实例接入交换机怎么串起来我拿一个典型场景举例一台Onyx接入交换机下挂两个服务器网段上联两台核心交换机做链路聚合。配置顺序是创建VLAN 10和VLAN 20分别给服务器段和存储段。两个服务器端口分别设置为access划入对应VLAN。上联两个口创建port-channel并配置为trunk允许VLAN 10和20通过。创建interface vlan 10和interface vlan 20配置网关IP。添加默认路由指向核心设备。执行 configuration write 保存。把配置拆成这几步思路就非常清晰。千万不要想到哪配到哪配置到一半又去翻VLAN规划表这样最容易出现端口划错VLAN、trunk漏放行这种低级问题。提前在Excel或文档里画好端口-VLAN-IP对应关系再上设备操作效率会高很多。5. 把交换机接入监控体系SNMP、日志和与Mellanox网卡的协同5.1 用SNMP接入Prometheus或Zabbix交换机不是配完就撒手不管的监控体系要跟上。Mellanox Onyx支持SNMP配置一个只读团体字后用Prometheus的snmp_exporter或Zabbix就能采集交换机指标。配置思路大致如下switch (config) # snmp-server community public ro生产环境不要用public这种默认团体字改成随机字符串并限制SNMP来源地址。监控数据重点关注交换机CPU、内存、端口流量、丢包计数、光模块收发功率和温度。这些指标能提前暴露链路质量下降和硬件老化问题。有条件的团队还可以看Onyx的Telemetry能力它能把流表和端口统计流式推送给采集端比轮询SNMP更实时。不过Telemetry要额外做一套采集通道环境小的话先用SNMP足够。5.2 流镜像与抓包让异常流量无处躲有时候端口计数正常但业务就是慢。这时候需要抓包。Onyx支持端口镜像把某个端口或VLAN的流量复制一份送到监控端口用Wireshark或tcpdump分析。镜像不会影响原流量但要注意监控端口带宽要大于被镜像端口的实际吞吐否则会丢包抓出来的包反而不完整。抓包前先想清楚要抓什么是广播包、组播包还是某个微突发流量。不要直接抓全量文件巨大且难以分析。一般先抓ARP、VLAN标签、TCP握手重传这几个关键信息基本能定位大多数二层和三层问题。5.3 和ConnectX网卡配合DPDK测试和RoCE场景的经验Mellanox交换机经常和自家ConnectX网卡搭配尤其在DPDK和RoCE场景。很多同学第一次做DPDK测试时只看testpmd的数据完全不看交换机端口状态结果延迟高、丢包绕了半天发现是物理链路问题。我建议的配合方式是先用交换机侧确认端口协商速率、CRC错误计数、光模块功率正常再上DPDK层做测试。如果测试环境开了RoCE无损网络相关功能交换机侧还要检查PFC/ECN相关计数器这一项在普通交换机上很少接触但在Mellanox环境里是标配。另外要做大包性能测试就要保证MTU一致。网卡侧改MTU到9000交换机端口也要同步改两边不一致会导致分片或丢包。这个事情不起眼但运维现场十次性能问题里有三四次是MTU不一致造成的。5.4 日常巡检脚本让环境自己发现风险经验丰富之后你会发现很多故障早期都有征兆比如光模块功率下降、端口CRC轻微增长、温度悄悄升高。靠人每天登录设备看不现实写个脚本定期采集关键指标更合适。用SNMP拉数据写到监控系统设置阈值告警比天天翻日志靠谱得多。Mellanox交换机在学校实验室或小型机房通常没有专职网络工程师自动化巡检尤其重要。我习惯每隔一小时采集一次端口错误计数和光模块功率保留30天。这样即使没人实时盯着出问题后也能回看历史趋势判断故障是从什么时候开始的。6. 排障思路与实测记录从端口DOWN到丢包一次走完整个排查链路6.1 设备起不来或控制台没反应怎么办先别慌按顺序查电源、串口线、终端软件串口参数、启动进度。Mellanox交换机开机需要一点时间如果console一直没输出检查USB转串口驱动和终端软件设置的波特率。确定终端设置没问题的前提下再考虑镜像或启动配置损坏。镜像崩溃的情况比较少见但要预防。新设备到手先做一个干净备份把启动镜像和配置备份都保存到外部服务器。一旦系统起不来可以用USB或网络引导方式恢复。恢复镜像不是日常操作但你必须知道入口在哪不然真遇到又急又没法百度的时候会很被动。6.2 一台服务器ping不通网关完整排查链路我拿一次实际排障经历举例。新接入一台服务器配好IP后ping网关不通。看着交换机端口是UPVLAN也在但就是不通。很多人这时候开始怀疑交换机bug其实没用还得按链路来。第一步先在交换机上看物理状态show interfaces ethernet 1/5确认端口是UP还是DOWN。如果端口DOWN看光模块和线缆如果端口UP但是错误计数一直在涨很大概率是光模块或线缆质量问题。第二步确认VLAN归属show vlan看Ethernet1/5到底在哪个VLAN里。有时候端口配置被上一次操作覆盖了VLAN归属跟规划完全不一样导致流量进错VLAN。第三步ping网关测试。如果交换机自己ping服务器IP能通说明二层转发没问题问题可能出在服务器防火墙或静态路由。这一条排查路径走下来大多数“莫名其妙”的故障都能定位到具体原因。6.3 常见问题对照表先拧螺丝再看系统现象优先排查方向端口一直DOWN光模块识别、线缆类型、对端设备是否down端口UP但大量CRC错误光模块衰减、线缆距离、电磁干扰、模块与端口速率不匹配聚合口只有一个成员在转发成员口速率不一致、对端未配置LACP、VLAN配置不一致配置重启后丢失未执行configuration write配置未固化SSH连接超时管理IP不通、SSH服务未开启、管理ACL限制SNMP采集不到数据团体字错误、SNMP来源限制、防火墙阻断UDP 161端口组播或广播流量异常VLAN划分、igmp snooping配置、环路问题这张表只是起点。排障一定要带着“数据说话”的心态先看每个环节的计数和状态再判断问题出在哪一层。直接靠猜测换线换模块运气好能解决运气不好会反复发作。6.4 个人习惯变更前备份变更后验证平时留好退路网络设备的坑踩多了我现在养成三个习惯。第一任何配置变更前先把当前配置备份并保存别偷懒。第二变更后不只是ping通就完事还要看端口错误计数有没有增长看日志有没有新告警。第三每次排障结束把原因和解决步骤记录下来形成团队内部笔记而不是让踩坑经验只留在个人脑子里。Onyx说到底就是一台运行着特定操作系统的交换机它没有想象中那么难也不像有些人吹得那么神秘。只要把CLI模式、端口命名、配置保存这三个基础点吃透后面的配置其实都是重复的组合。希望这篇围绕Mellanox Onyx交换机基本使用的内容能让你少走几步弯路。拿一台设备慢慢敲多看一下show命令的输出上手速度会比你预想的快得多。