硬汉嵌入式论坛

 找回密码
 立即注册
查看: 316|回复: 2
收起左侧

[NetX] 实现一个ETH网口绑定两个IP地址

[复制链接]

12

主题

84

回帖

140

积分

初级会员

积分
140
发表于 2025-8-28 23:01:31 | 显示全部楼层 |阅读模式
主要思路是:
   在一个网口上创建两个网卡,绑定不同的地址,使用同一个驱动程序,在驱动中将数据包复制绑定不同的网卡。

NetX源码中数据包是与网卡绑定的,协议栈处理数据包时会使用接收此数据包的网卡的地址做判断。
但是单网口情况下,你无法判断收到的这帧数据包究竟是打算给地址1还是地址2的。

可以将数据包复制一份,分别以网卡1(IP地址1)、网卡2(IP地址2)的名义传递给NetX协议栈做处理。
优点是完全不修改源码。
缺点是接收速率减半。


改动主要体现在驱动程序里的_nx_driver_transfer_to_netx函数。
屏幕截图 2025-08-28 223524.png

其他需要注意的地方就是:
- NX_MAX_PHYSICAL_INTERFACES要设置为2
- 同一个网口上两个网卡绑定时要避免重复初始化
- 正确维护两个网卡的nx_interface_link_up状态等。


测试:
在我的H743开发板上,ETH绑定了192.168.3.100及192.168.0.3两个IP地址,
开了一个modbus-tcp服务器,
在局域网内位于3段及0段的两台电脑上,均成功连接并读写寄存器。

以下附上STM32H743上的ETH驱动文件及NetX应用层初始化文件。


netx_eth_multi_ip_addr.rar

14.5 KB, 阅读权限: 100, 下载次数: 7

评分

参与人数 2金币 +120 收起 理由
王海靖 + 20
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
118335
QQ
发表于 2025-8-29 08:00:36 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

3

主题

20

回帖

29

积分

新手上路

积分
29
发表于 2025-9-2 12:15:43 | 显示全部楼层
为什么 会有这样的 需求呢??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-9-26 23:51 , Processed in 0.042466 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表