55

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

 2 years ago
source link: https://wusiyu.me/esxi-openwrt%e6%8a%98%e8%85%be%e8%bd%af%e8%b7%af%e7%94%b1%e5%92%8c%e4%b8%87%e5%85%86%e8%bd%af%e4%ba%a4%e6%8d%a2%e6%9c%ba%e7%9a%84%e4%b8%80%e4%ba%9b%e5%b0%8f%e5%9d%91/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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的根分区,这里建议选择第二种,不然扩容比较麻烦。

image-2.png
例如图中的第一个

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK