VmWare ESXi - хорошая система для виртуализации с множеством возможностей, если её правильно конфигурировать. (Если ее конфигурит плохо понимающий нюансы человек - лучше сразу в топку, будет хуже XEn'a. Проверено.).
Но вот маршрутизировать она не умеет, в принципе не умеет.
Решение : создать ещё один виртуальный свитч (на 2-м уровне тут как раз богатые возможности, даже шейпить можно.), создать виртуальный роутер с 2 интефейсами - 1 физический, 2-й виртуальный в новом свитче.
(те. вам нужен как минимум ещё 1 реальный Ip & MAC, если речь об удаленном хостинге. А если это ваша сеть, то и проблемы с роутингом, наверно, нет)
Создали, всё работает. Но вот беда - на прямой маршрутизации никаких проблем с производительностью нет, а на NAT'е на внутренние адреса - 10..40 кбайт/сек вместо 7-10 мбайт/с . Откуда тормоза на 3 порядка ?
Дело в том, что:
1) виртуальные сетевые карты VmWare VMXNET (с установленными драйверами из свежих VmTools для вашего ядра) очень медленно работают с
TCP offload :
Extremely slow NAT within a VMWare ESXi 4
Turns out that in an ESXi internal network interface that is not attached to a real NIC at all can't use hardware offloading. Debian has TCP Segmentation Offloading turned on by default at least for e1000 and VMXNET3. When I turned it off manually using ethtool, the bandwidth to the internet went instantly to 100Mbit/s.
ethtool -K tso off
2) Poor TCP performance can occur in Linux traffic-forwarding virtual machines with LRO enabled
Large Receive Offload (LRO) functionality is enabled by default on VMXNET 2 (Enhanced) and VMXNET 3 devices. Some Linux components cannot handle LRO-generated packets. As a result, having Large Receive Offload enabled for these devices in a traffic forwarding virtual machine running a Linux guest operating system can cause poor TCP performance.
Solution
VMware recommends you to disable Large Receive Offload functionality for virtual interfaces in Linux virtual machines that are forwarding traffic.
On virtual machines using VMXNET 3 virtual network devices and running a Guest OS with Linux kernel 2.6.24 or later, use the ethtool command to disable Large Receive Offload.
To disable Large Receive Offload using the ethtool command:
Use the ethtool command to disable LRO for each vmxnet virtual network interface:
ethtool -K lro off
----------------------------------------------------------
Почему так криво - хороший вопрос. Ну да везде свои проблемы. KVM очень хорош, но там пока что в принципе нет массы возможностей, которые есть даже в ESXi с бесплатной лицензией. (Сделать точку отката парой кликов мыши, а не вознёй с LVM - это приятно для разработчиков, и таких вещей много.)
Но вот маршрутизировать она не умеет, в принципе не умеет.
Решение : создать ещё один виртуальный свитч (на 2-м уровне тут как раз богатые возможности, даже шейпить можно.), создать виртуальный роутер с 2 интефейсами - 1 физический, 2-й виртуальный в новом свитче.
(те. вам нужен как минимум ещё 1 реальный Ip & MAC, если речь об удаленном хостинге. А если это ваша сеть, то и проблемы с роутингом, наверно, нет)
Создали, всё работает. Но вот беда - на прямой маршрутизации никаких проблем с производительностью нет, а на NAT'е на внутренние адреса - 10..40 кбайт/сек вместо 7-10 мбайт/с . Откуда тормоза на 3 порядка ?
Дело в том, что:
1) виртуальные сетевые карты VmWare VMXNET (с установленными драйверами из свежих VmTools для вашего ядра) очень медленно работают с
TCP offload :
Extremely slow NAT within a VMWare ESXi 4
Turns out that in an ESXi internal network interface that is not attached to a real NIC at all can't use hardware offloading. Debian has TCP Segmentation Offloading turned on by default at least for e1000 and VMXNET3. When I turned it off manually using ethtool, the bandwidth to the internet went instantly to 100Mbit/s.
ethtool -K
2) Poor TCP performance can occur in Linux traffic-forwarding virtual machines with LRO enabled
Large Receive Offload (LRO) functionality is enabled by default on VMXNET 2 (Enhanced) and VMXNET 3 devices. Some Linux components cannot handle LRO-generated packets. As a result, having Large Receive Offload enabled for these devices in a traffic forwarding virtual machine running a Linux guest operating system can cause poor TCP performance.
Solution
VMware recommends you to disable Large Receive Offload functionality for virtual interfaces in Linux virtual machines that are forwarding traffic.
On virtual machines using VMXNET 3 virtual network devices and running a Guest OS with Linux kernel 2.6.24 or later, use the ethtool command to disable Large Receive Offload.
To disable Large Receive Offload using the ethtool command:
Use the ethtool command to disable LRO for each vmxnet virtual network interface:
ethtool -K
----------------------------------------------------------
Почему так криво - хороший вопрос. Ну да везде свои проблемы. KVM очень хорош, но там пока что в принципе нет массы возможностей, которые есть даже в ESXi с бесплатной лицензией. (Сделать точку отката парой кликов мыши, а не вознёй с LVM - это приятно для разработчиков, и таких вещей много.)