第4章 抓取环境搭建:硬件连接、软件安装、网络配置
工欲善其事,必先利其器。抓TS流这事儿,说白了就是“搭台唱戏”。台子搭不好,戏就没法唱。我见过不少新手,一上来就怼着分析仪点来点去,结果抓出来的数据乱七八糟——说白了就是环境没配好。
这一章,咱们就把脚下的地夯实了。怎么搭?分三步:硬件连接、网络配置、软件设置。一个都不能少。
4.1 硬件连接:别小看这根线
硬件是地基。我见过有人折腾了半天抓不到数据,最后发现是BNC接头没拧紧——这种低级错误,说出去都丢人。
4.1.1 接口类型与线缆
TS流进入分析仪的渠道就那么几种。看清你手上的设备,别盲接。
| 接口类型 | 物理连接 | 常见场景 | 注意事项 |
|---|---|---|---|
| ASI | BNC同轴电缆 | 广电设备、编码器输出 | 必须75Ω终端电阻,线长不超过30米 |
| SPI | DB25并行线 | 老式编码器、复用器 | 同步时钟必须连接,否则丢帧 |
| 千兆以太网 | 超五类/六类网线 | IP化传输、OTT前端 | 开启端口镜像,关闭防火墙 |
| RF | F型接头同轴缆 | 有线电视前端 | 注意频道频率和调制方式 |
警告:ASI接口千万别带电插拔。我有一回急了,没关设备直接拔线,结果把分析仪的输入缓冲芯片烧了。一块芯片上万,换了心疼半个月。
4.1.2 连接步骤
- 关掉所有设备电源——包括TS源和分析仪。别嫌麻烦。
- 按照接口类型选择对应的线缆。ASI用BNC线,IP用千兆网线。
- 将线缆一端接TS源输出口,另一端接分析仪输入口。拧紧。
- 如果是ASI,在分析仪输入端的环通口接上75Ω终端电阻。
- 上电顺序:先开TS源,再开分析仪。等30秒让设备稳定。
- 观察分析仪面板指示灯。正常时锁定灯常亮,如果有指示灯异常,先查线缆。
小技巧:在项目现场,我习惯用一台手持频谱仪先确认ASI信号是否有载波。没信号就别硬接了,省得走弯路。
4.2 软件安装:选用什么样的武器
硬件连好了,软件可不能乱。市面上分析软件一大堆,但咱得挑趁手的。
4.2.1 常用分析软件推荐
| 软件名称 | 平台 | 特点 | 适用阶段 |
|---|---|---|---|
| tshark / Wireshark | Windows / Linux | 免费、开源、支持IP流转TS | 研发调试、网络层分析 |
| Elecard StreamEye | Windows | 可视化好、PES/ES层分析 | 码流深入分析、合规性检查 |
| DVB Inspector | Windows | 全协议解析、PSI/SI强大 | 广电系统联调、现场排障 |
| TSReader | Windows | 支持ASI卡、录制回放 | 硬件环境下的TS录制 |
我个人习惯用 Wireshark + Elecard StreamEye 组合。Wireshark管底层包结构,StreamEye管码流层级。两者互补,基本覆盖所有场景。
4.2.2 安装与配置要点
安装不难,但有几点得注意。
- 驱动一定要装对。如果你用ASI采集卡(如DekTec、Alta),必须先装卡驱动。我踩过坑:驱动版本不对,软件死活识别不到设备。
- Wireshark需安装Npcap。不装的话,你连网卡都选不到。Windows下建议用Npcap的WinPcap兼容模式。
- 权限问题。Linux下抓包需要root权限。可以用group大法,把用户加入wireshark组:
sudo usermod -aG wireshark $USER,然后注销重登。 - 路径里别有中文。有些老分析软件对中文支持不好,比如Elecard,目录有中文就崩溃。我习惯把工具装到
C:\Tools\这种纯英文路径。
重点:抓TS流前,用 tshark -D 列出所有可用接口。确认能看到你的ASI卡或网卡接口名。看不见就别往下走了。
4.3 网络配置:让数据流进来
IP化的TS流越来越普及。但网络配置搞不好,TS包就白抓了。
4.3.1 端口镜像
别把分析仪直接串在业务链路上。那会改变网络拓扑,TS流可能中断。
- 在交换机上把TS源的输出端口配置为 SPAN端口(即端口镜像)。
- 把分析仪的网口接到另一个空闲端口,设为镜像目标端口。
- 注意:镜像端口会复制流量,不会影响源端。
# 以 Cisco 交换机为例
Switch(config)# monitor session 1 source interface GigabitEthernet0/1 both
Switch(config)# monitor session 1 destination interface GigabitEthernet0/24
注意:抓取IP TS流时,必须关闭分析仪的防火墙和防病毒软件。你想想看,防火墙一拦,UDP报文直接被丢弃,TS包就不完整了。
4.3.2 IP地址与多播
很多TS流走的是UDP多播。比如IPTV的码流,用的就是多播地址。
- 确认TS源的多播组地址(如239.1.1.1)和端口号(如1234)。
- 分析仪的网口必须加入该多播组。用
tshark -i eth0 -Y "udp.port==1234"验证。 - 如果抓不到,查交换机有没有开启IGMP Snooping。有时需要手动配置静态多播成员。
# 加入多播组(Linux)
ip maddr add 239.1.1.1 dev eth0
# 或用 tshark 直接抓
tshark -i eth0 -f "udp port 1234 and host 239.1.1.1"
4.3.3 网卡配置
抓包时,网卡不要跑其他业务流量。最好用独立的抓包网卡。
- 关闭IPv6、DNS、DHCP等无关服务。
- 手动设置IP地址,避免自动获取。
- 设置巨帧(Jumbo Frame)为9KB,减少CPU中断。但TS包本身188字节,用巨帧只是降低系统负载。
- 关闭TCP卸载引擎(TOE)、大包卸载等特性。否则Wireshark可能看到错误的校验和。
技巧:在Windows下,用 wmic nic where "netenabled=true" get name,index 查看网卡索引。再到Wireshark里选对应的网卡,就不会选错了。
4.4 验证环境:能不能干活,拉出来遛遛
环境搭好了,得验证一下。
- 打开分析软件,选择正确的接口。ASI选ASI卡,IP选网卡。
- 点击“开始抓取”,看是不是有数据流入。Packet速率应该在0以上。如果是0,检查连接和配置。
- 看一眼封包的Size。正常的TS包是188字节,偶尔会有204字节的(带RS纠错)。如果都是杂七杂八的大小,说明抓到的是协议头或者噪声。
- 用
tshark -r cap.pcap -Y "mpeg.pes"快速过滤一下,看有没有PES数据。有PES说明TS流层级是好的。
一句话总结:硬件连对、软件配好、网络镜像搞通。这三步走完,你就能抓到干净的TS序列了。后面的事,就交给分析工具和你的经验了。