4、Wireshark抓包与过滤:安装Wireshark、设置抓包网卡、使用display filter过滤GOOSE/SV报文

好,咱们进入实操环节。前面讲了那么多理论,报文结构也拆解了,现在该真刀真枪地抓包看看了。说实话,我当年刚接触智能站调试时,最头疼的就是看着Wireshark满屏的报文发懵——全是十六进制,根本分不清哪个是GOOSE、哪个是SV。后来摸到门道了,才发现其实就那几步。

4.1 安装Wireshark:别装错了版本

Wireshark的安装没什么难度,但有几个坑我得提前说。我个人习惯用64位版本,因为抓大文件时内存管理更好。去官网下载就行,一路Next安装。

注意:安装时有个选项叫"Install WinPcap"或"Install Npcap",一定要勾上!这是抓包的底层驱动。我曾经有一次忘了勾,结果打开软件发现一个网卡都认不到,折腾了半天才发现是驱动没装。

装好后,建议把Wireshark的图标固定到任务栏。调试时频繁开关,找起来方便。

4.2 设置抓包网卡:选对接口是关键

打开Wireshark,你会看到一个网卡列表。智能变电站调试用的笔记本,通常有两个网口:一个接站控层(管理网),一个接过程层(GOOSE/SV网)。

怎么区分? 我教你个土办法:

  • 看IP地址:过程层网卡通常不配IP,或者配的是私有IP(如192.168.x.x)
  • 看流量:点一下网卡,右边会显示实时流量波形。过程层网卡的流量波形是密集的、几乎满格的——因为SV报文是80个点一个周期,每秒4000帧往上
  • 看MAC地址:过程层网卡的MAC通常是装置自带的,不是笔记本原生的

选对网卡后,双击就开始抓包了。嗯,这里要注意:如果网卡选错了,你抓一整天也看不到GOOSE/SV报文,全是TCP/IP的握手包。

4.3 使用Display Filter过滤:从海量报文中精准定位

抓包开始后,你会看到报文像瀑布一样往下刷。SV报文尤其夸张,一秒几千帧。这时候就需要过滤了。

Wireshark的过滤分两种:Capture Filter(抓包前过滤)和Display Filter(显示过滤)。咱们调试时主要用Display Filter,因为灵活——你可以随时改条件,不用重新抓。

4.3.1 过滤GOOSE报文

GOOSE报文用的是多播MAC地址,范围是01-0C-CD-01-00-0001-0C-CD-01-01-FF。最简单的过滤写法:

eth.addr[0:3] == 01:0c:cd:01:00

这个条件的意思是:MAC地址的前3个字节匹配。为什么只写前3个?因为GOOSE的多播MAC前3字节固定是01-0C-CD,第4字节固定是01,后两个字节是APPID。但实际调试中,我建议用更精确的写法:

gse

对,你没看错,Wireshark内置了GOOSE解析器,直接写gse就能过滤。但有个前提:Wireshark版本不能太老,至少2.6以上。我遇到过现场用Wireshark 1.12的,写gse没反应,只能手动写MAC地址。

小技巧:如果你知道具体的GOOSE控制块引用名(如"GOOSE_2201"),可以这样过滤:gse.gocbRef contains "2201"。这在多装置联调时特别好用。

4.3.2 过滤SV报文

SV报文同样用多播MAC,范围是01-0C-CD-04-00-0001-0C-CD-04-01-FF。过滤写法:

eth.addr[0:3] == 01:0c:cd:04:00

或者直接用Wireshark内置的:

sv

SV报文有个特点:它的APPID通常是0x40000x4FFF。如果你发现过滤出来的报文太多,可以再加个条件:

sv and sv.appid == 0x4001

这样就能只看某个特定合并单元的SV报文了。

4.3.3 组合过滤:GOOSE + SV 一起看

有时候需要同时看GOOSE和SV,比如检查时序关系。用逻辑或:

gse or sv

或者排除掉所有非过程层报文:

!(eth.addr[0:3] == 01:0c:cd:01:00 or eth.addr[0:3] == 01:0c:cd:04:00)

这个条件的意思是:显示所有不是GOOSE也不是SV的报文。用来检查过程层网卡上有没有混入其他流量。

4.4 实战经验:抓包时常见的坑

我总结几个现场最容易翻车的地方:

  • 网卡混杂模式没开:Wireshark默认会开启混杂模式,但有些笔记本的网卡驱动会强制关闭。表现为:只能抓到发往本机MAC的报文,多播报文全丢了。解决方法:在Wireshark的"Capture Options"里勾选"Enable promiscuous mode"。
  • 交换机IGMP Snooping:过程层交换机如果开启了IGMP Snooping,而你的笔记本没有加入多播组,交换机就不会把GOOSE/SV报文转发给你。我遇到过好几次,抓包抓了半天啥也没有,最后发现是交换机配置问题。临时解决:把笔记本接到交换器的镜像端口上。
  • 报文长度截断:Wireshark默认抓取完整报文,但有些网卡驱动会限制抓包长度(比如只抓前128字节)。SV报文一个帧可能超过200字节,截断后解析器会报错。在"Capture Options"里把"Limit each packet to"改成65535。
核心要点:
  • GOOSE过滤:gseeth.addr[0:3] == 01:0c:cd:01:00
  • SV过滤:sveth.addr[0:3] == 01:0c:cd:04:00
  • 组合过滤:gse or sv
  • 抓包前先确认网卡、混杂模式、交换机配置

4.5 知识体系图:抓包与过滤的核心逻辑

下面这张图是我自己画的,把整个流程串起来了。你照着这个思路走,基本不会乱。

Wireshark抓包与过滤核心流程 步骤1:安装Wireshark 勾选Npcap驱动 步骤2:选择抓包网卡 过程层网卡(无IP) 步骤3:开始抓包 双击网卡启动 报文太多? 否 → 直接分析 过滤 GOOSE过滤 gse eth.addr[0:3]==01:0c:cd:01:00 SV过滤 sv eth.addr[0:3]==01:0c:cd:04:00 组合过滤 gse or sv gse and gse.gocbRef contains "2201" ✅ 精准定位目标报文,开始分析

这张图把流程分成了三步走:安装→选网卡→抓包。中间有个判断节点:报文太多就用Display Filter过滤,不多就直接分析。过滤又分三种场景:GOOSE、SV、组合。你把这个逻辑记熟了,现场调试时心里就有底了。


公众号:蓝海资料掘金营,微信deep3321