mellanox vxlan offload performance on linux
DESCRIPTION
Mellanox社製 10/40GENIC(ConnectX-3 Pro)を使ったVXLANオフロードの性能評価をLinux環境で実施しました。 VXLANプロトコルを使うとソフトウェア処理が大きくなるので、オフロードはMust!!TRANSCRIPT
Mellanox VXLAN offload
for RHEL7
株式会社アルティマ
Nov, 2014
本資料に含まれる測定データは一例であり、測定構成や条件によって変わることがあります。
また、本資料はMellanox Technologies社の公式見解を表すものではありません。
The results in this documents may differ for the configurations or/and conditions.
This documents does not reflect the official views of Mellanox Technologies.
アルティマ社のご紹介
2
Mellanox社の国内一次代理店
サーバ、ストレージ、ネットワーク等、システム商材を扱うディストリビューター
保守/構築/技術サポートをご提供
マクニカのグループカンパニー
本資料に関するお問い合わせはこちらまで
株式会社アルティマ
プロダクトセールス2部
メラノックス製品担当
目的
Linux OpenvSwitch(以下OVS)のスループット性能の確認
メラノックス社製 10/40/56GbE対応のNICカードでサポートしているVXLAN offload機能を使用した際のOVSの性能評価
確認項目
設定手順
Linux OVS(Open vSwitch)のVXLAN性能評価
Case1 : Performance VM to VM
Case2 : VM to VM VXLAN offload なし
Case3 : VM to VM VXLAN offload あり
3
ConnectX-3 Pro EN 10/40/56GbE adapter cards
詳細:http://www.mellanox.com/page/products_dyn?product_family=162
Requirement
Mellanox ConnectX-3 Pro
Operating system and kernel options:
upstream Linux 3.14 or later
RHEL7 beta snapshot 10 (kernel 3.10.0-105.el7) or later
Ubuntu 14.04 (kernel 3.13.0-24-generic) or later
openvswitch 2.0 or later
KVM Hypervisor using para-virtual NIC (e.g. virtio with
vhost backend on the hypervisor)
MLNX_OFED (2.2 or later) installation is optional, as
driver support is inbox (RHEL 7 or Ubuntu 14.04)
参考:http://community.mellanox.com/docs/DOC-1446
4
評価環境
5
VM CentOS7
40GE Driver
OVS 2.0.0
VM CentOS7
CPU : 12core Xeon 2.40GHz (Fujitsu RX200S8)
MEM : 18GB
OS : CentOS7 (Kernel : 3.10.0-123.el7.x86_64)
Driver : MLNX_OFED_LINUX-2.3-1.0.1-rhel7.0-x86_64.iso
OVS : ver 2.0
Mellanox 10/40GbE NIC : ConnectX-3 Pro (FW:2.32.5100)
OVS 2.0.0
40GE Driver
VM info
OS:CentOS6.5
vCPU : 4core
vMEM : 4GB
6
設定手順
参考URL : http://community.mellanox.com/docs/DOC-1446
KVM環境構築
Install packages
VM Manager起動
7
# yum install qemu-kvm
# yum install qemu-img
# yum install virt-manager
# yum install virt-install
# yum install libvirt-daemon-config-network
# virt-manager
VM作成
環境に合わせて設定してください。
OpenStack環境でもOK!
Mellanox OFEDドライバインストール
こちらからダウンロード
http://www.mellanox.com/page/products_dyn?product_family=2
6&mtag=linux_sw_drivers
ドライバインストール方法
8
# mount -o ro,loop MLNX_OFED_LINUX-2.3-1.0.1-rhel7.0-x86_64.iso /mnt
# ./mnt/mlnxofedinstall
# /etc/init.d/openibd restart
OVSインストール
OVS v2.0.0のインストール
今回はOpenstack icehouseパッケージかを使用
Linux Bridgeモジュールアンロード
9
# yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-
icehouse/rdo-release-icehouse.rpm
# yum install –y openvswitch
# modprobe openvswitch
# lsmod | grep openv
openvswitch 70743 0
vxlan 37584 1 openvswitch
gre 13808 1 openvswitch
libcrc32c 12644 3 xfs,btrfs,openvswitch
# lsmod | grep bridge
bridge 110196 0
stp 12976 1 bridge
llc 14552 2 stp,bridge
# rmmod bridge
OVSインストール
Openvswitchサービススタート
10
# systemctl list-unit-files | grep openvswitch
openvswitch-nonetwork.service static
openvswitch.service disabled
# systemctl enable openvswitch
# systemctl start openvswitch
# systemctl status openvswitch
openvswitch.service - Open vSwitch
Loaded: loaded (/usr/lib/systemd/system/openvswitch.service; enabled)
Active: active (exited) since Thu 2014-09-18 19:14:42 JST; 2min 20s ago
Main PID: 12972 (code=exited, status=0/SUCCESS)
Sep 18 19:14:42 ALT1 systemd[1]: Started Open vSwitch.
# ovs-vsctl show
5c682e27-2498-4188-ac25-269cacedbe7f
ovs_version: "2.0.0"
ネットワーク設定
11
VM1
bridge
ovs-vx
NIC
eth0
vnet0
eth0
VM2
bridge
ovs-vx
NIC
eth0
vnet0
eth0
Point
・ Bridge “ovs-vx”作成
・ VM1と物理NICのポート接続
ネットワーク設定
Bridge作成 & ポート作成
仮想マシンを作成(この時点でNIC設定はデフォルトでOK)
仮想マシン インターフェース設定ファイル編集 (編集後VM起動)
12
# ovs-vsctl add-br ovs-vx
# ovs-vsctl add-port ovs-vx enp4s0
# virsh edit <vm名前>
例)変更前
<interface type='direct'>
<mac address='52:54:00:e7:26:ea'/>
<source dev='ovs-system' mode='vepa'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
変更後
<interface type='bridge'>
<mac address='52:54:00:e7:26:ea'/>
<source bridge='ovs-vx'/>
<virtualport type='openvswitch'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
ネットワーク設定
vnet0がovsにタッピングされている
13
[root@ALT1 ~]# ovs-vsctl show
daaecc1a-5344-4387-9204-399b101d8b8e
Bridge ovs-vx
Port "vnet0"
Interface "vnet0"
Port "enp4s0"
Interface "enp4s0"
Port ovs-vx
Interface ovs-vx
type: internal
ovs_version: "2.0.0"
[root@ALT1 ~]#
[root@ALT1 ~]# ovs-dpctl show
system@ovs-system:
lookups: hit:8320258 missed:41 lost:0
flows: 0
port 0: ovs-system (internal)
port 1: ovs-vx (internal)
port 2: enp4s0
port 3: vnet0
VXLAN offload設定
特になし!
MLNX OFED 2.3.1ではデフォルトでVXLAN offload = enableになっている
Disableにする場合
14
1. Open the /etc/modprobe.d/mlnx.conf file.
2. Set the options mlx4_core log_num_mgm_entry_size=10.
3. Restart the driver (/etc/init.d/openibd restart)
OVS VXLAN設定
OVSのポートは一度削除する
# ovs-vsctl del-port ovs-vx “port名”
ブリッジ作成
先ほどの手順と同様に仮想マシン作成
OVSでVXLANヘッダ50byteが付加されるので、IPフラグメントを防ぐため物理ホストのMTUを変更(MTU=1550)
Ex) # ip link set enp4s0 mtu 1550
15
# ovs-vsctl add-br ovs-vx
# ovs-vsctl add-port ovs-vx vxlan0 -- set interface vxlan0 type=vxlan
options:remote_ip=10.0.0.20 options:key=99 options:dst_port=4789
OVS VXLAN設定
設定確認
16
[root@ALT1 ~]# ovs-vsctl show
daaecc1a-5344-4387-9204-399b101d8b8e
Bridge ovs-vx
Port ovs-vx
Interface ovs-vx
type: internal
Port "vnet0"
Interface "vnet0"
Port "vxlan0"
Interface "vxlan0"
type: vxlan
options: {dst_port="4789", key="99", remote_ip="10.0.0.20"}
ovs_version: "2.0.0“
[root@ALT1 ~]# ovs-dpctl show
system@ovs-system:
lookups: hit:439298 missed:34 lost:0
flows: 2
port 0: ovs-system (internal)
port 1: vxlan_sys_4789 (vxlan: df_default=false, ttl=0)
port 2: ovs-vx (internal)
port 3: vnet0
パケットキャプチャ
17
Performance 10GE
18
iperf Ver2.0.5
実行例 : # iperf -c 10.0.0.101 -P 4
MTU=1500
本資料に含まれる測定データは一例であり、測定構成や条件によって変わることがあります。
また、本資料はMellanox Technologies社の公式見解を表すものではありません。
Performance 40GE
19
iperf Ver2.0.5
実行例 : # iperf -c 10.0.0.101 -P 4
MTU=1500
本資料に含まれる測定データは一例であり、測定構成や条件によって変わることがあります。
また、本資料はMellanox Technologies社の公式見解を表すものではありません。
まとめ
OVSのVXLAN通信時、通常時に比べ約1/7性能効率が落ちる
Mellanox ConnectX-3 ProのVXLAN offload機能を使用するとオフロード無しに比べ約5.6倍の性能向上が見られる
その他、VXLAN通信のOffloadによりCPU負荷の低減にも効果がある
20