菜单

ESXi + openwrt折腾软路由和万兆软交换机的一些小坑

2020年4月27日 - Linux & homelab
ESXi + openwrt折腾软路由和万兆软交换机的一些小坑

Why 软交换机?

因为需要部署万兆电口的内网,然而目前的万兆交换机多为光口,加上光模块成本很可能得近2000。

我希望这两条紫色的线是万兆的

故想到用一台几百块的x86机器+一张几百块的intel x540双万兆电口网卡,在OS中桥接,做成软交换,同时也桥接若干板载的千兆网口,用来与原有的千兆有线内网连通。再同时,如果在这台机器上做虚拟化,上面的虚拟机也可以享受到万兆网络。事实证明,我还是simple young naive

ESXi vSwitch的坑

ESXi vSwitch即“虚拟交换机”,如果不部署vCenter server的话只能创建“标准vSwitch”,然而这确实是个“虚拟机的交换机”,对于物理端口并没有交换功能,就算你给vSwitch添加多个物理端口作为“上行链路”,也只是负载均衡、故障转移的bond,而非软交换机的bridge

据我所知,ESXi的单机WebUI并没有任何能创建物理端口bridge的地方,而为了一个交换功能去装几十个G的vCenter server有些舍本逐末,所以就有了让VM实现交换的折中方案。

VM负责交换时不同路径的效率问题

这里使用的是的E3-1220L,这是一颗20w TDP、2C4T、2.2~3.4GHz的处理器,作为基准。

这里把两张万兆网卡都直通给了VM,一个openwrt的VM。

首先是场景1:标准的软交换的路径,效率尚可:

外部设备A <--> 万兆网口1 <--> VM <--> 万兆网口2 <--> 外部设备B

但如果是下面这种场景2,外部设备到路由器上另一个VM时,效率就感人了:

外部设备A <--> 万兆网口1 <--> VM <--> 虚拟网卡 <--> ESXi虚拟交换机 <--> 虚拟网卡 <--> 目标VM

经测试,这种情况下CPU 100%只能跑到5Gbps左右。

而如果两张万兆网卡不使用直通的方式,场景2的效率会少很多,但场景1由于要多经过两张虚拟网卡和ESXi虚拟交换机,效率会更感人。

解决方案的话,目前考虑用Proxmox VE替代ESXi,有待测试。

openwrt镜像种类的选择

x64的openwrt镜像,有和硬路由器上类似的SquashFS + overlay的根分区,或者是直接一个ext4的根分区,这里建议选择第二种,不然扩容比较麻烦。

例如图中的第一个
0
标签:,

ESXi + openwrt折腾软路由和万兆软交换机的一些小坑》有2个想法

oll

我有同样的问题,上行链路没有交换功能你解决了吗

0
回复
    WuSiYu

    ESXi上行链路只是bond而非交换机功能的bridge,大概设计上就没有在两个物理网口之间的交换功能。所以要么让虚拟机负责交换,要么换Proxmox VE吧。

    0
    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注