PGW における IPv6 データパケットの mtu サイズについては、apn config に指定する data-tunnel mtu
の設定が影響しますが、実際に適用されるサイズについてわかりにくい部分がありましたのでまとめてみました。
* 今回は、data-tunnel mtu に絞って話をしていますが、mtu の設定にはその他の設定も多く絡んできますので、
実際の適用時には十分な検討が必要となると考えられます。
設定例:
configure
context <context_name>
apn <apn_name>
data-tunnel mtu <bytes>
1. apn に指定する data-tunnel mtu <bytes> については、GTP-U トンネルの MTU サイズを示しており、
デフォルトで1500 byte となります。
2. data-tunnel mtu 1500 で S5 Interface が IPv4 で構成されていた場合、GTP-U tunnel overhead
は以下のような計算となり、40 byte 必要となります。そのため、SGi Interface でのサイズは overhead を
考慮すると実際には 1500 - 40 = 1460 byte となります。
IPv4 Header length : 20 byte
UDP Header length : 8 byte
GTP Header length + extension : 12 byte
==> Total: 40 byte
3. data-tunnel mtu は IPv6 のみが対象ですが、これは IPv4、IPv6 それぞれで MTU サイズを超える
パケットを受信した場合に、以下のような動作差分があるためです。
- IPv4 の場合、サイズを超えたパケットペイロードについては MTU サイズで分割し、GTP Tunnel 内に送信。
- IPv6 の場合、サイズを超えたパケットについては、送信元へ ICMPv6 の「Packet Too Big」メッセージを
送信して MTU サイズを通知する。送信元は、通知された MTU サイズをもとにパケットサイズを変更し再送信。
* IPv6 ではノードがパケットサイズに配慮する仕様となっているためこのような差分があると考えられます。