🤺

XDP を AWS で実行するときの注意点

2023/08/04に公開

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