在 openvela 开发环境中,网络工具是设备开发与调试的重要支撑。本文将系统整理 ifconfig、iperf、tcpdump、curl、iperf2、iperf3 及 ftp 等常用网络工具的配置方法、使用技巧和实战案例,帮助开发者快速掌握网络调试技能。

一、网络接口配置工具:ifconfig

ifconfig 是配置和管理网络接口的基础工具,支持 IP 地址、子网掩码、网关等核心网络参数的设置。

核心功能

  • 设置静态 IP 或通过 DHCP 获取动态 IP
  • 配置子网掩码、网关地址和 DNS 服务器
  • 修改 MAC 地址(需驱动支持)
  • 查看网络接口状态

配置前提
使用前需在编译时开启网络支持和 proc 文件系统:

# 打开图形化配置界面
./build.sh vendor/openvela/boards/vela/configs/goldfish-armeabi-v7a-ap menuconfig

启用以下配置项:

CONFIG_NET=y
CONFIG_NETDEV_STATISTICS=y
CONFIG_FS_PROCFS=y
CONFIG_FS_PROCFS_EXCLUDE_NET=n
CONFIG_NSH_DISABLE_IFCONFIG=n

常用命令示例

  • 查看所有接口配置:ifconfig
  • 启用 / 关闭网卡:ifup eth0 / ifdown eth0
  • 设置静态 IP:ifconfig eth0 10.0.1.3
  • 完整配置(IP + 网关 + 掩码 + DNS):
ifconfig eth0 10.0.1.3 gateway 10.0.1.1 netmask 255.255.255.0 dns 8.8.8.8
  • 配置 IPv6 地址:ifconfig eth0 inet6 add 2001:db8::/32

二、网络性能测试工具:iperf 与 iperf2、iperf3

这类工具专注于带宽测量与网络性能评估,三者功能类似但各有特点。

1. iperf(基础版)

功能特点

  • 支持 TCP/UDP 带宽测试
  • 可测试 local socket 和 rpmsg socket 性能

配置要求

CONFIG_NETUTILS_IPERF=y
CONFIG_NETUTILS_IPERFTEST_DEVNAME="eth0"  # 确保网卡名称正确

核心用法

  • 建立 TCP 服务器:iperf -s -i 1
  • 客户端连接:iperf -c <server IP> -i 1
  • UDP 测试:添加-u参数(如iperf -s -i 1 -u
  • 常规 socket 测试:
    • iperf -c <IP地址>
  • 特殊 socket 测试:
    • rpmsg socket:iperf -s --rpmsg <name>(服务器);iperf -c <cpu> --rpmsg <name>(客户端)
    • local socket:iperf -s --local <path>(服务器);iperf -c <path> --local(客户端)

2. iperf2(增强版)

功能扩展

  • 支持双向传输测试
  • 可指定 TCP 窗口大小和 MSS(最大分段大小)
  • 更详细的带宽统计与丢包分析

配置要求

CONFIG_UTILS_IPERF2=y

关键参数

  • -u:使用 UDP 协议(测试物理带宽更准确)
  • -t :设置测试时间(默认 10 秒)
  • -i :报告间隔时间
  • -l :缓冲区大小(默认 16KB)
  • -w :TCP 窗口大小

注意事项

  • 同一实例中不可同时启动多个 iperf2 进程
  • 服务器端避免设置过大-t参数(建议仅在客户端设置)

3. iperf3(优化版)

核心改进

  • 单个服务器可同时支持 TCP 和 UDP 客户端连接
  • 优化了并发连接处理

配置要求

CONFIG_UTILS_IPERF3=y
CONFIG_UTILS_IPERF3_PRIORITY=89  # 需低于网卡驱动线程优先级

注意事项:

  • iperf2 和 iperf3 只能选择其中一个进行编译,同时启用会导致符号冲突。
  • 优先级设置:CONFIG_UTILS_IPERF3_PRIORITY 的值需要低于网卡驱动线程的优先级,否则可能导致 UDP客户端行为异常。通常情况下,设置为 89 可以满足绝大多数场景的需求。

三、网络抓包工具:tcpdump

tcpdump 是抓取和分析网络数据包的利器,常与 Wireshark 配合使用。

配置要求

CONFIG_NET_PKT=y
CONFIG_SYSTEM_TCPDUMP=y

# 不同文件系统对Stack的需求有差异,建议配置为8192
CONFIG_SYSTEM_TCPDUMP_STACKSIZE=8192  # 建议值

基本操作

  1. 准备工作:
    • 确保有存储目录(如/data1)
    • SIM 环境下可挂载宿主机目录:
# 以SIM为例,挂载host上的目录到/data1
mount -t hostfs -o fs=. /data1
  1. 抓包命令:
  • 基本抓包:
# 将eth0的网络包保存至test.pcap
tcpdump -i eth0 -w /data1/test.pcap
  • 后台抓包:
# 后台将eth0的网络包保存至test.pcap
tcpdump -i eth0 -w /data1/test.pcap &
  1. 退出方式:
    • 前台:Ctrl+C(正常保存文件)
    • 后台:kill -2 <tcpdump的PID>(等同于 Ctrl+C)

结果分析

生成的.pcap文件可通过 Wireshark 打开分析:

  • 菜单File > Open加载文件
  • 查看数据包详细信息(包括源 / 目的 IP、端口、协议类型等)

四、文件传输工具:curl 与 ftp

两类工具均用于文件传输,适用场景不同。

1. curl(多功能传输工具)

配置要求

CONFIG_LIB_ZLIB=y
CONFIG_CRYPTO_MBEDTLS=y
CONFIG_LIB_CURL=y
CONFIG_UTILS_CURL=y

注意
确保以上选项已正确配置,以满足 curl 工具运行所需的依赖。

常用场景

  • 下载文件:
# 从HTTP服务器下载
curl -o /data/ota.zip http://<PC_IP>:8000/ota.zip &

说明
将 YOUR_FILE_SERVER_IP 替换为 PC 的 IP 地址。此命令会将服务器上的 ota.zip 文件保存到设备的 /data/ota.zip 路径下。

  • 上传文件:

PC 端启动上传服务(需 Python 环境):

  1. 在本地电脑上创建一个 Python 脚本 upload.py,内容如下:
#!/bin/env python3

import os, shutil, uvicorn, socket
from fastapi import FastAPI, File, UploadFile

app = FastAPI()

@app.post("/upload/")
async def create_upload_file(file: UploadFile = File(...)):
    with open(file.filename, "wb") as buffer:
        shutil.copyfileobj(file.file, buffer)
    return {"filename": file.filename}


def my_ip():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("8.8.8.8", 80))
    ip = s.getsockname()[0]
    s.close()
    return ip


if __name__ == "__main__":
    print("curl -X POST -F file=@./a.log %s:4321/upload/" % my_ip())
    uvicorn.run(app, host="0.0.0.0", port=4321)
# 安装依赖
pip install uvicorn fastapi python-multipart

# 运行上传脚本
sudo chmod 777 upload.py
./upload.py
  1. 脚本运行后会启动一个 HTTP 服务,并打印出上传文件的 curl 命令示例,例如:
curl -X POST -F file=@./a.log <PC_IP>:4321/upload/
  1. 上传设备文件到本地电脑。

在设备连接网络后,运行以下命令将设备文件上传到本地电脑:

curl -X POST -F file=@/data/trace.log http://<PC_IP>:4321/upload/
  1. 注意事项。
  • 如果上传失败,请在本地电脑上运行以下命令检查网络配置:
ifconfig
  • 确认本地电脑的 IP 地址(WAN 口 IP),并替换命令中的 <PC_IP>。
  • 确保设备和本地电脑在同一网络下,且本地电脑的防火墙允许端口 4321 的访问。
  • 网页内容获取:curl www.example.com
  • 跟踪重定向:curl -L -o /data/test.mp3 https://example.com(-L参数处理重定向)

2. FTP(文件传输协议)

配置要求

CONFIG_EXAMPLES_FTPD=y
CONFIG_NETUTILS_FTPD=y
CONFIG_NET_TCPBACKLOG=y

操作流程

  1. 操作使用(设备端):
# 开启ftpd服务,并预置三个可供登陆的用户
ftpd_start -4

# 关闭ftpd服务
ftpd_stop
  1. PC 端连接与操作:
    • 连接:ftp <设备IP>(如ftp 192.168.28.94)
    • 下载文件:get <远程文件> <本地文件名>
    • 上传文件:put <本地文件> <远程文件名>
    • 目录操作:cd(切换目录)、ls(列表)、pwd(当前路径)

从设备下载文件示例:

# PC端执行"ftp <设备实际 IP>"连接到openvela
# 示例 IP 地址为 192.168.28.94,请根据实际网络环境替换。  
Connected to 192.168.28.94.
220 NuttX FTP Server
Name (192.168.28.94:usrname): root
331 Password required for root
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd data
250 CWD command successful
ftp> pwd
257 "/data" is current directory.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
drw-r--r--   1     1001      512        0 Mar  2 07:44 etc
drwxrwx---   1     1001      512        0 Mar  2 07:44 log
drwxrwx---   1     1001      512        0 Mar  2 07:44 mico
drw-rw-rw-   1     1001      512        0 Mar  2 07:44 miot
drwxrwxrwx   1     1001      512        0 Mar  2 07:44 misc
-rw-r--r--   1     1001      512    12288 Mar  2 07:44 persist.db
226 Transfer complete
ftp> get persist.db persist.db.pc # 下载文件 persist.db,并将其保存为 persist.db.pc  
local: persist.db.pc remote: persist.db
200 PORT command successful
150 Opening data connection
226 Transfer complete
12288 bytes received in 0.01 secs (959.3860 kB/s)
ftp>

文件上传到设备示例:

ftp> put persist.db.pc persist.db.dev # 上传文件 persist.db.pc,并将其保存为 persist.db.dev                                      
local: persist.db.pc remote: persist.db.dev
200 PORT command successful
150 Opening data connection
226 Transfer complete
12288 bytes sent in 0.00 secs (127.3777 MB/s)
ftp> pwd
257 "/data" is current directory.

总结

openvela 提供的网络工具覆盖了从接口配置、性能测试到文件传输的全流程需求。实际开发中,需根据场景选择合适工具:

  • 网络配置用ifconfig
  • 带宽测试优先iperf3(支持并发连接)
  • 数据包分析用tcpdump+Wireshark
  • 简单文件传输用curl,复杂目录操作选FTP

使用时需注意各工具的配置依赖和版本兼容性,确保测试环境与实际设备的一致性,以获得准确结果。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐