Skip to content

feat(network): integrate multi-NIC support with merged ReliefNT main - #78

Merged
Leonmmcoset merged 2 commits into
mainfrom
feature/multi-nic
Nov 12, 2026
Merged

Leonmmcoset merged 2 commits into
mainfrom
feature/multi-nic

Conversation

@VasilyZa

Copy link
Copy Markdown
Collaborator

关联改动

本 PR 以 ReliefOS main 为目标,接续因目标分支 feature/realtek-network 被删除而自动关闭的 PR #77。Realtek 系统集成 PR #76 已合并。原 PR #77 · 已合并 PR #76

ReliefNT 多网卡实现已合并到 main。本轮将 kernel/reliefnt gitlink 更新至最新提交 e92dd2f31aceea70f4aa7e50f5de4d218eed4258,本地内核子模块已同步到 main。ReliefNT #9

本轮更新验证

  • 确认 e92dd2f 的源码树与此前验证的 31223b1 完全一致,树对象均为 20dfbf887835c18349c026626431eb916b6ef26f。
  • 重新核对两仓多网卡源码哈希与既有验证记录一致。
  • 本轮重跑 test_net_device.py、test_net_multi_interface.py、test_abi_layout.py 及两仓测试归属检查,全部通过。
  • 本轮重跑系统 network-profile 和 Network Controller 回归,全部通过。
  • 提交 810b30fb 更新 gitlink 至已经发布的 ReliefNT main 提交。

下方记录涵盖多网卡实现阶段的编译、测试与运行验证。

更新内容

为内核新增的多个独立以太网接口适配系统启动配置、DHCP、DNS 和 Network Controller。

  • reliefos-dhcp 从 /proc/net/dev 枚举接口,逐卡准备配置和启动 DHCP 监督器。
  • eth0 使用兼容的 /etc/reliefos/network.conf,其他接口使用 /etc/reliefos/network.d/ethN.conf。逐卡校验配置、文件所有权、目录和接口身份。
  • 每张网卡拥有独立监督器、PID、租约、DNS 缓存与停止状态。应用、续租或停用选中接口时,仅操作该接口的客户端和配置。
  • 全局 DNS 发布使用 flock 串行提交,汇总逐卡显式 DNS、eth0 自动 RDNSS 和 DHCP DNS,去重后发布最多三个服务器。
  • Network Controller 枚举有地址及无地址接口,按所选网卡加载、保存、应用配置及显示网关。切换网卡时保护未保存编辑。
  • 修正首次显示统计或切换接口时,说明文字覆盖最后一行数据的问题。
  • 新增私有三网卡 QEMU 集成编排,消费内核仓原生 Linux/POSIX socket 探针,同步系统文档与定向测试。

接口卸载重载后可能得到新的 ethN 名称,配置按实际接口名称选择。

编译验证

  • 新 Network Controller 及运行库原生 Make/Kbuild 编译通过。
  • 对应内核全部内置与 e1000/e1000e/r8169 模块配置均编译、安装通过。
  • 提交前核对源码哈希与 QEMU、GUI 验证记录一致。

测试验证

多网卡实现阶段的所选回归检查通过。

  • tests/build/test-network-profile.sh 覆盖逐卡模式、DNS 优先级、租约隔离、PID 身份及定向应用。
  • tests/build/test-network-controller.sh 覆盖模型、配置保存/恢复、冲突处理及真实 worker IPC。
  • tools/test_openrc_resolver.py 与 tools/test_test_ownership.py 通过。
  • 内核侧的多网卡、IPv4 TCP/UDP、IPv6 协议/控制、ABI、Kbuild 布局及测试归属检查通过。

运行验证

  • QEMU/KVM 同时配置两张 e1000 和一张 e1000e,内置和模块两种配置均通过逐卡 DHCP、IPv4/IPv6 ping 与并发 TCP/UDP 回显。
  • 卸载 e1000 时,e1000e 的活动 TCP 连接正常保持;重新加载的两张 e1000 重新配置后恢复双栈通信。
  • 来宾中逐卡静态配置与 DNS 发布通过,BusyBox ip addr、ip route 和 proc 查询工作。
  • 精简 Xorg/IceWM 来宾中查看三张网卡、加载 eth1 静态配置、切换至 eth2 默认 DHCP 配置、取消切换以保留未保存编辑均经截图确认。修正后的统计说明与数据分开显示。

已知边界

  • VMware 验证未完成,实体 Realtek 网卡未验证。
  • GUI 测试采用精简 ISO,组合现有已打包 Xorg/IceWM 与本次新应用、运行库及内核。完整生产 VMDK/Installer 未重建。
  • 一次精简图形来宾的配置脚本以 1 退出,日志未给出根因。随后相同配置连续三次 prepare 成功,两个自动化三网卡来宾也通过。此项仍待复现定位。
  • 当前 GUI 编辑 IPv4 持久配置。IPv6 继续由命令行和既有 SLAAC/RDNSS 路径管理,其共享地址、路由和邻居表具有现行资源容量。
  • 内核的 IPv4 rtnetlink 组播通知及 /sys/class/net 完整导出仍待扩展。

@Leonmmcoset
Leonmmcoset merged commit 104e529 into main Nov 12, 2026
8 checks passed
@Leonmmcoset
Leonmmcoset deleted the feature/multi-nic branch November 12, 2026 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants