为什么要这么做?
物理规格的展望?
- 至少两张物理网卡
- 一张连接到宿主机的网络协议栈的默认网络命名空间,用作带外管理
- 一张用于业务网络,最好支持 SR-IOV ,不排除用户有一些更疯狂的展望
宿主机上要装什么?
- Debian 12 这样的主流 Linux 发行版
- 容器运行时,像 Docker 这样的
- dnsmasq ,用来给连接带外管理口的管理工作站动态分配地址
怎么实现路由器功能?
在宿主机上创建至少一个业务网络命名空间,并让虚拟路由器功能容器使用它。
我目前想到了两种路线:
-
路线 A:控制与数据平面运行在同一容器中,使用 Linux 自带的网络协议栈
- 需要高级路由功能就找 BIRD ,FRR 的容器,不需要就随便拉个原装镜像,自己弄弄路由相关的启动配置
- 路线 B:控制与数据平面分离,使用高性能用户态网络协议栈作为数据平面(如 VPP )
网络功能如何运行在容器里?
- 将它们放到业务网络命名空间中
- 你弄了个 PPPoE 客户端容器,你在上面建立了连接,这个接口也会出现在路由器容器里面
- 运行一个 dnsmasq 容器,它能够使用路由器容器相同网络空间中的套接字
运行虚拟机?
- 更改虚拟机网络的命名空间连接路由器容器所在网络
- SR-IOV VF 附加到虚拟机和路由器容器上,高效交换数据
|