EC2で拡張ネットワーキングを有効化する設定方法をご紹介します。
そもそも拡張ネットワーキングとは?
拡張ネットワーキングは、高い帯域幅、1 秒あたりのパケット (PPS) の高いパフォーマンス、常に低いインスタンス間レイテンシーを実現します。拡張ネットワーキングは追加料金なしで使用できます。
Linux の拡張ネットワーキング - Amazon Elastic Compute Cloud
ということです。
つまり有効にするだけで通信が早くなるというすぐれものです。
設定方法
Ubuntuでネットワーキングを有効にする方法を記載します。
環境
- Ubuntu Server 16.04 LTS (HVM), SSD Volume Type - ami-15872773
ネットワークインターフェイスドライバーを確認する
ethtool
コマンドでネットワークインターフェースで利用されているドライバーを確認します。
driver
の箇所がixgbevf
となっていたらOKです。「拡張ネットワーキングの設定を行う」まで読み飛ばしてもらって構いません。
以下の場合はvif
となっているのでネットワークインターフェースの設定を実施する必要があります。
$ ethtool -i ens3
driver: vif
version:
firmware-version:
expansion-rom-version:
bus-info: vif-0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
ixgbevfモジュールをインストールする
まずixdbevfのモジュールのソースをwget
でダウンロードします。
wget "sourceforge.net/projects/e1000/files/ixgbevf stable/2.16.4/ixgbevf-2.16.4.tar.gz"
ダウンロードしてきたファイルを解凍します。
tar -zxvf ixgbevf-2.16.4.tar.gz
パッケージを/usr/src
の移動させます。
dkms
がこのパッケージをビルドできるようにするためです。
sudo mv ixgbevf-2.16.4 /usr/src/.
dkms.confを作成して以下のように値を設定します。
そのままコピーで大丈夫です。
sudo vim /usr/src/ixgbevf-2.16.4/dkms.conf
PACKAGE_NAME="ixgbevf"
PACKAGE_VERSION="2.16.4"
CLEAN="cd src/; make clean"
MAKE="cd src/; make BUILD_KERNEL=${kernelver}"
BUILT_MODULE_LOCATION[0]="src/"
BUILT_MODULE_NAME[0]="ixgbevf"
DEST_MODULE_LOCATION[0]="/updates"
DEST_MODULE_NAME[0]="ixgbevf"
AUTOINSTALL="yes"
dkmsを利用してモジュールを追加します。
sudo dkms add -m ixgbevf -v 2.16.4
モジュールをビルドします。
sudo dkms build -m ixgbevf -v 2.16.4
モジュールをインストールします。
sudo dkms install -m ixgbevf -v 2.16.4
拡張ネットワーキングの設定を行う
インスタンスに拡張ネットワーキングの設定を行うには、AWSCLIで以下のコマンドを実行します。
$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --sriov-net-support simple
以下のAWSCLIを実行し、SriovNetSupport
のValue
がsimple
となっていればOKです。
$ aws ec2 describe-instance-attribute --instance-id i-xxxxxxxxxxxxxxxxx --attribute sriovNetSupport
{
"SriovNetSupport": {
"Value": "simple"
},
"InstanceId": "i-xxxxxxxxxxxxxxxxx"
}