🤺
XDP を AWS で実行するときの注意点
1 インスタンス選びは気をつけましょう
- XDPは特定のNICにアタッチしますが、物理でないと適用されません
- ENA(Elastic Netowrk Adapter じゃないとできません、
ENI
だとだめ - インスタンス ENA 有効: trueと書いてるものを選びましょう (無効なのみたことないです。。
2 インスタンスタイプ
- t2.smallだとENAがデフォルトで有効かされていない
- t3だと確実
- ドキュメントをみてもよくわからない、(日本語訳よくわからない)
以下のドキュメント見ると制限付きでの実行となっています
現行世代のインスタンスタイプ (m4.16xlarge よりも小さい C4、D2、M4 の各インスタンスや、T2 は除く) を使用して、インスタンスを起動します。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/enhanced-networking-ena.html
3 絶対確認するべき設定
1. XDPが有効か
カーネルが許可していなければそもそも実行できません
grep -i CONFIG_XDP_SOCKETS /boot/config-$(uname -r)
CONFIG_XDP_SOCKETS=y
2. ENIではなくENAが適用されているか
vif が出る場合はDocument要参照
ip link show dev ens5
ethtool -i ens5
modinfo ena
3. mtu値確認 (超大事)
- mtu値がデフォルトで
9001
が設定されています - xdp をアタッチする時の mtu値は
3489
だそう - 再起動すると9001に戻ります
ip a
3489に設定
ip link set dev ens5 mtu 3489
Combiend queの設定
queは max の半分じゃないとアタッチできない
ethtool -l ens5
半分に設定
ethtool -L ens5 combined 1
XDP アタッチ
ip link set dev ens5 xdp obj example.o
XDP デタッチ
ip link set dev ens5 xdp off
AWSでXDPする人あまりいなかったのでこれをみて注意して欲しい
Discussion