4、Wireshark抓包与过滤:安装Wireshark、设置抓包网卡、使用display filter过滤GOOSE/SV报文
好,咱们进入实操环节。前面讲了那么多理论,报文结构也拆解了,现在该真刀真枪地抓包看看了。说实话,我当年刚接触智能站调试时,最头疼的就是看着Wireshark满屏的报文发懵——全是十六进制,根本分不清哪个是GOOSE、哪个是SV。后来摸到门道了,才发现其实就那几步。
4.1 安装Wireshark:别装错了版本
Wireshark的安装没什么难度,但有几个坑我得提前说。我个人习惯用64位版本,因为抓大文件时内存管理更好。去官网下载就行,一路Next安装。
装好后,建议把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-00到01-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地址。
gse.gocbRef contains "2201"。这在多装置联调时特别好用。
4.3.2 过滤SV报文
SV报文同样用多播MAC,范围是01-0C-CD-04-00-00到01-0C-CD-04-01-FF。过滤写法:
eth.addr[0:3] == 01:0c:cd:04:00
或者直接用Wireshark内置的:
sv
SV报文有个特点:它的APPID通常是0x4000到0x4FFF。如果你发现过滤出来的报文太多,可以再加个条件:
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过滤:
gse或eth.addr[0:3] == 01:0c:cd:01:00 - SV过滤:
sv或eth.addr[0:3] == 01:0c:cd:04:00 - 组合过滤:
gse or sv - 抓包前先确认网卡、混杂模式、交换机配置
4.5 知识体系图:抓包与过滤的核心逻辑
下面这张图是我自己画的,把整个流程串起来了。你照着这个思路走,基本不会乱。
这张图把流程分成了三步走:安装→选网卡→抓包。中间有个判断节点:报文太多就用Display Filter过滤,不多就直接分析。过滤又分三种场景:GOOSE、SV、组合。你把这个逻辑记熟了,现场调试时心里就有底了。
公众号:蓝海资料掘金营,微信deep3321