本帖最后由 ruyinmicc 于 2022-8-3 10:47 编辑
n1 arm pve使用macvlan给lxc更快的网速
最近看到个armpve项目,索性拿起n1试一试,虽然oepnwrt也可以使用lxc,但是pve可以使用pbs来备份lxc,大大增强了可玩性。安装armpve过程比较简单,搭建lxc也很顺利,可是使用过程却遇到了问题,安装lxc-openwrt,pppoe拨号后竟然只能跑300mbps!并且上下行同时负载时这个带宽还会更低,意味着连普通家庭宽带下300mbps上30mbps都无法跑满,这大大限制了n1的armpve可玩性。因为此前的n1裸机openwrt单臂路由跑这样的带宽轻而易举,开始以为是armbian固件的问题,但是在主机上测速是正常的,使用lxc时才出现速率较大下降,故而推断也许是n1性能颓弱经过vmbr后网速受到影响。那么有没有办法改善这个问题呢?答案是有的,让lxc使用macvlan可获得接近使用物理卡的性能。
[========]
废话不多说先看下不同桥接方式网速的变化 使用不同方式的网速(测速工具homebox 内网测速)n1主机使用直接使用物理卡eth01.上下行分别负载
2.上下行同时负载
n1主机使用vmbr1.上下行分别负载
2.上下行同时负载
lxc使用vmbr1.上下行分别负载
2.上下行同时负载
n1主机使用macvlan1.上下行分别负载
2.上下行同时负载
lxc使用macvlan1.上下行分别负载
2.上下行同时负载
[========] 方法一:创建macvlan网口(新:直接从vmbr创建)最近测试了物理网卡桥接至vmbr后由vmbr创建macvlan接口与直接使用物理网卡创建macvlan接口相比物理出口略有损耗(依旧比lxc直接使用vmbr要快),但由于macvlan共用父接口带宽,此方法macvlan子接口间带宽不受物理口影响子接口通信速度更快。 该方法操作步骤更简单,物理口的macvlan也可参照。 pve物理主机使用macvlan(vmbr)保留物理网卡的vmbr修改pve网络配置文件/etc/network/interfaces,在vmbr基础上创建macvlan
1.编辑/etc/network/interfaces - nano /etc/network/interfaces
复制代码 配置如下- auto lo
- iface lo inet loopback
- auto eth0
- iface eth0 inet manual
- hwaddress ether 9E:61:30:C6:A7:AA
- auto vmbr0
- iface vmbr0 inet manual
- bridge-ports eth0
- bridge-stp off
- bridge-fd 0
- auto vth0
- iface vth0 inet static
- address 192.168.1.8/24
- gateway 192.168.1.80
- pre-up ip link add link vmbr0 vth0 type macvlan mode bridge
- #pre-up为网卡启用前动作这里为以vmbr0创建vth0 macvlan工作模式bridge的网卡,只有bridge模式可以在没有交换机的情况下可以子接口二层通信其缺点是父接口down后子接口不能通信
复制代码
2.重启网络
- systemctl restart networking.service
复制代码 网络重启后pve主机以macvlan模式使用网络[========] lxc使用macvlan(vmbr)lxc配置文件添加如下参数lxc.net.1表示第1张网卡,lxc.net.2表示第2张网卡,type为模式macvlan,macvlan.mode为macvlan的工作模式这里使用bridge,只有bridge模式可以在没有交换机的情况下可以子接口二层通信其缺点是父接口down后子接口不能通信,link为连接到的网卡这里使用pve的网桥vmbr0,flags: up和ifup意思一样表示lxc启动是启动,这个方式不需要手动修改lxc内部的网卡名称,因为net.1和net.2生成的网卡在lxc内部为eth0和eth1 - nano /etc/pve/lxc/lxcid.conf
- #lxcid为lxc的id号
复制代码增加如下字段 - lxc.net.1.type: macvlan
- lxc.net.1.macvlan.mode: bridge
- lxc.net.1.link: vmbr0
- lxc.net.1.flags: up
- lxc.net.2.type: macvlan
- lxc.net.2.macvlan.mode: bridge
- lxc.net.2.link: vmbr0
- lxc.net.2.flags: up
复制代码lxc.net.1表示第1张网卡,lxc.net.2表示第2张网卡,type为模式macvlan,macvlan.mode为macvlan的工作模式这里使用bridge,只有bridge模式可以在没有交换机的情况下可以子接口二层通信其缺点是父接口down后子接口不能通信,link为连接到的网卡这里使用pve的网桥vmbr0,flags: up和ifup意思一样表示lxc启动是启动,这个方式不需要手动修改lxc内部的网卡名称,因为net.1和net.2生成的网卡在lxc内部为eth0和eth1
至此方法一配置完成(直接替换相应参数也可改成使用物理口)
[========] 方法二:创建macvlan网口(旧:物理卡创建) 同一张物理网卡只能vmbr和macvlan二选一,如果已经使用了vmbr,需要解绑vmbr绑定的eth0网卡,由于macvlan会共用父接口带宽,eth0有负载时,macvlan子接口间带宽也受影响,但在lxc使用时物理出口性能更高,此方法适用于了解macvlan的创建过程。修改n1armbian启动脚本/etc/custom_service/start_service.sh
在网卡eth0上创建名为vth0的macvlan网口模式为 macvlan bridge,如果需要多个macvlan网卡请用不同名创建,为了lxc能互相通信使用独占方式使用它建议命名方式为vth(lxcid)ix以区分不同的网卡。
为了使pve主机能与lxc通信也使用macvlan网卡这里使用vth0同时需要启动时加载重启networking.service
1.修改pve网络配置文件/etc/network/interfaces,把ip地址绑定到eth0 - <font size="6">auto lo
- iface lo inet loopback
- auto eth0
- iface eth0 inet static
- address 192.168.1.8/24
- hwaddress ether 9E:61:30:C6:A7:AA
- auto vrmbro
- iface vmbr0 inet static
- bridge-ports none
- bridge-stp off
- bridge-fd 0
- </font>
复制代码
2.重启网络 - systemctl restart networking.service
复制代码
3.在网卡eth0上创建名为vth0的macvlan网口模式为 macvlan bridge,如果需要多个macvlan网卡请用不同名创建,为了lxc能互相通信使用独占方式使用它建议命名方式为vth(lxcid)ix以区分不同的网卡。为了使pve主机能与lxc通信也使用macvlan网卡这里使用vth0同时需要启动时加载重启networking.service 下列命令在pve主机shell上使用eth0创建为macvlan bridge模式网口vth0,vth100i1 - ip link add link eth0 vth0 type macvlan mode bridge
- ip link add link eth0 vth100i1 type macvlan mode bridge
复制代码 lxc使用macvlanlxc配置文件添加如下参数
- <font size="6">nano /etc/pve/lxc/lxcid.conf
- #lxcid为lxc的id号
- </font>
复制代码 lxc.net.1表示第1张网卡,type为模式phys为独占方式,link为连接到的网卡这里使用之前创建的vth100i1,flags: up和ifup意思一样表示启动,net.1在lxc内部网卡名为vth100i1
[========]
pve物理主机使用macvlan(物理卡)修改pve网络配置文件/etc/network/interfaces,注意同一张物理网卡只能vmbr和macvlan二选一 - <font size="6">nano /etc/network/interfaces
- </font>
复制代码添加如下参数vth0为刚刚创建的macvlan网卡 - auto vth0
- iface vth0 inet static
- address 192.168.1.8/24
- gateway 192.168.1.80
复制代码并且去掉vmbr0的eth0的关联
开机启用macvlan修改n1armbian启动脚本/etc/custom_service/start_service.sh
在网卡eth0上创建名为vth0的macvlan网口模式为 macvlan bridge,如果需要多个macvlan网卡请用不同名创建,为了lxc能互相通信使用独占方式使用它建议命名方式为vth(lxcid)ix以区分不同的网卡。
为了使pve主机能与lxc通信也使用macvlan网卡这里使用vth0同时需要启动时加载重启networking.service - <font size="6">nano /etc/custom_service/start_service.sh</font>
复制代码增加字段 - ip link add link eth0 vth0 type macvlan mode bridge
- ip link add link eth0 vth100i1 type macvlan mode bridge
- systemctl restart networking.service
复制代码 至此方法二配置完成
[========]
其他教程\项目地址
|