はじめに
このドキュメントでは、StarOS MTUインターフェイス、APN、およびローカルサブスクライバを設定する方法について説明します。
StarOSには、インターフェイス、APN、およびローカルサブスクライバプロファイルの最大伝送ユニット(MTU)サイズを設定するための複数のCLIがあります。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
最大伝送単位(MTU)は、インターフェイスがフラグメント化することなく送信できるパケットの最大サイズを定義します。
MTU よりも大きい IP パケットは、IP フラグメント化の手順を経ることが必要です。
MTU値は、イーサネットヘッダー、VLANタギング、またはその他のオーバーヘッドのないフレームサイズです。
設定
configure
context context_name
interface interface_name
ip mtu bytes
end
参考:コマンドラインインターフェイスリファレンス、イーサネットインターフェイスコンフィギュレーションモードコマンド、StarOS 21.23
この設定は、ASR5500/VPCのNPU/iftask/VPPによって適用されます。
この設定は、APN MTU設定と比較して下位レイヤで動作します。つまり、ip/ipv6パケットで動作し、トンネルを認識しません。
具体的には、発信IPパケット(data + ctrl)でのみ動作し、設定値に基づいてパケットをより小さなサイズにフラグメント化します。
IP MTUは、通常のインターフェイスおよびポイントツーポイントインターフェイス(OLCポート)でサポートされています。
OLCポートで許可される最大MTUサイズは1600です。
イーサネットポートで許可される最大MTUサイズは2048です。デフォルトMTUサイズは1500です。
イーサネットMTUの最大サイズは次のとおりです。
configure
context context_name
apn apn_name
pco-options link-mtu bytes
ppp mtu bytes
data-tunnel mtu bytes
policy ipv6 tunnel mtu exceed { fragment inner | notify-sender | fragment }
access-link ip-fragmentation { df-ignore | normal | df-fragment-and-icmp-notify }
end
- ppp mtuバイト
リファレンス:コマンドラインインターフェイスリファレンス、モードR ~ Z、StarOSリリース21.28
この設定は、StarOSゲートウェイ上のIPv4のダウンリンクデータトンネルMTUペイロードを制御します。このサイズを超えるパケットはフラグメント化されてから、トンネルカプセル化されます。
値は、100 ~ 2000の整数です。デフォルト:1500
重要:MTUは、2つのPPPオクテットを除くPPPペイロードを指します。したがって、1500のMTUは、PPPペイロードを含むGTPパケットの3GPP標準MTU 1502に対応します。
-
データトンネルMTUバイト
リファレンス:コマンドラインインターフェイスリファレンス、モードR ~ Z、StarOSリリース21.28
RFC-4861に従い、P-GWはUEに対するIPv6およびIPv4v6 PDNタイプのRAでのIPv6 MTUオプションの送信をサポートします。
これで、(インターネット)はダウンリンクデータパケットを送信でき、設定されたMTUに基づいて、必要に応じて送信元でデータフラグメンテーションが実行されます。
また、この機能により、お客様のネットワーク内のICMPv6パケットが大きすぎるというエラーメッセージの数を減らすことができます。
この設定は、IPv6のダウンリンクデータトンネルMTUペイロードを制御します。
このサイズを超えるパケットは、「ポリシー」設定に基づいて廃棄/フラグメント化されます。値は1280 ~ 2000の整数です。デフォルト:1500
注意:この機能とTCP MSS設定とのインタラクションの仕方。
RFC 6691の抜粋
"""
2. 略式声明
TCP MSSオプションに入れる値を計算する際に、
固定IPおよびTCPのサイズだけ値を減らす必要がある
ヘッダーを減らしてはならず、またIPアドレスや
TCPオプション。逆に、送信側はTCPデータ長を減らす必要があります。
ネットワークに含まれるIPまたはTCPオプションを
パケットを送信します。このドキュメントの残りの部分では、
この文の目的は、IPレベルでの
TCPパケット
"""
これは、特定のTCP MSSのTCPオプションバイトによって実際のペイロードが減少することを意味します。
1390バイトのMSSと12バイトのTCPオプションを例にとると、ペイロードは1378バイトです。
ペイロード1378 +
TCP 32 + = 1410(1378B [ペイロード] + 12B [TCPオプション] = 1390B MSS)
IPv6 40 + = 1450
GTPU 8 + = 1462
UDP 8 + = 1470
IP 20 + = 1490 <— 「data-tunel mtu」を比較
VLAN 4 + = 1494
イーサネット14 = 1504
+---------------------------+ DT-MTU +-------------------------------+
| |
| +--------+ MSS +--------+
v v v
+----------+-----------------+--------+--------+--------+--------------------------------+
| Ethernet | VLAN | IPv4 | UDP | GTP | IPv6 | TCP | Payload + TCP Options |
| header | header | 20B | 8B | 8B | 40B | 20B | 1390B |
+----------+--------+--------+--------+--------+--------+--------+-----------------------+
上記の場合、設定されているデータトンネルMTUが1490未満であれば、mtu exceedポリシーがパケットに適用されます。
-
policy ipv6 tunnel mtu exceed { fragment inner | notify-sender | fragment }
リファレンス:コマンドラインインターフェイスリファレンス、モードR ~ Z、StarOSリリース21.28
このパケットがSGiインターフェイス上で見られる場合は、次のようになります。
| Frame 81: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits)
1514 | 14 | Ethernet II, Src: fa:16:3e:5e:0a:23 (fa:16:3e:5e:0a:23), Dst: fa:16:3e:5d:f8:03 (fa:16:3e:5d:f8:03)
1500 | 4 | 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 70
1496 | 40 | Internet Protocol Version 6, Src: 2001:192:168:80:f816:3eff:fe60:93a, Dst: 2001:20::4c99:6101
1456 | 1456 | Internet Control Message Protocol v6
ここで、最初の列は累積バイトを表し、2番目の列はヘッダー長を表します。
– 内部フラグメント
システムは、GTPトンネルイニシエータで内部IPv6フラグメンテーションを実行します。これは、カプセル化の後で加入者パケットがMTUを超えた場合に行われます。
S1-Uのパケットは次のようにフラグメント化されます。
# Frag #1
| Frame 51: 1510 bytes on wire (12080 bits), 1510 bytes captured (12080 bits)
1510 | 14 | Ethernet II, Src: fa:16:3e:b5:f6:b2 (fa:16:3e:b5:f6:b2), Dst: fa:16:3e:96:00:d9 (fa:16:3e:96:00:d9)
1496 | 4 | 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 40
1492 | 20 | Internet Protocol Version 4, Src: 10.1.40.1, Dst: 192.168.1.100
1472 | 8 | User Datagram Protocol, Src Port: 1, Dst Port: 2152
1464 | 8 | GPRS Tunneling Protocol
1456 | 48 | Internet Protocol Version 6, Src: 2001:192:168:80:f816:3eff:fe60:93a, Dst: 2001:20::4c99:6101
1408 | 1408 | Internet Control Message Protocol v6
# Frag #2
| Frame 52: 150 bytes on wire (1200 bits), 150 bytes captured (1200 bits)
150 | 14 | Ethernet II, Src: fa:16:3e:b5:f6:b2 (fa:16:3e:b5:f6:b2), Dst: fa:16:3e:96:00:d9 (fa:16:3e:96:00:d9)
136 | 4 | 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 40
132 | 20 | Internet Protocol Version 4, Src: 10.1.40.1, Dst: 192.168.1.100
112 | 8 | User Datagram Protocol, Src Port: 1408, Dst Port: 2152
104 | 8 | GPRS Tunneling Protocol
96 | 48 | Internet Protocol Version 6, Src: 2001:192:168:80:f816:3eff:fe60:93a, Dst: 2001:20::4c99:6101
48 | 48 | Data (48 bytes)
- notify-sender
システムはPMTUディスカバリであり、カプセル化の後で加入者パケットがMTUを超えると、「ICMPv6 Packet Too Big」を元の送信者に送信します。
– フラグメント
カプセル化の後で加入者パケットがMTUを超えると、システムは外部IPv6フラグメンテーションを実行します。
S1-Uのパケットは次のようにフラグメント化されます。
# Frag #1
| Frame 108: 1510 bytes on wire (12080 bits), 1510 bytes captured (12080 bits)
1510 | 14 | Ethernet II, Src: fa:16:3e:b5:f6:b2 (fa:16:3e:b5:f6:b2), Dst: fa:16:3e:96:00:d9 (fa:16:3e:96:00:d9)
1496 | 4 | 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 40
1492 | 20 | Internet Protocol Version 4, Src: 10.1.40.1, Dst: 192.168.1.100
1472 | 8 | User Datagram Protocol, Src Port: 2152, Dst Port: 2152
1464 | 8 | GPRS Tunneling Protocol
1456 | 40 | Internet Protocol Version 6, Src: 2001:192:168:80:f816:3eff:fe60:93a, Dst: 2001:20::4c99:6201
1416 | 1416 | Internet Control Message Protocol v6
# Frag #2
| Frame 109: 78 bytes on wire (624 bits), 78 bytes captured (624 bits)
78 | 14 | Ethernet II, Src: fa:16:3e:b5:f6:b2 (fa:16:3e:b5:f6:b2), Dst: fa:16:3e:96:00:d9 (fa:16:3e:96:00:d9)
64 | 4 | 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 40
60 | 20 | Internet Protocol Version 4, Src: 10.1.40.1, Dst: 192.168.1.100
40 | 40 | Data (40 bytes)
-
access-link ip-fragmentation { df-ignore | normal | df-fragment-and-icmp-notify }
リファレンス:コマンドラインインターフェイスリファレンス、モードR ~ Z、StarOSリリース21.28
- df-ignore
デフォルト設定のStarOSは、dfビットに関係なく、常にパケットをフラグメント化します。
-通常
パケットをドロップし、ICMP到達不能メッセージをパケットの送信元に送信します。
:df-fragment-and-icmp-notify
部分的にDFビットを無視し、パケットをフラグメント化して転送しますが、パケットの送信元にICMPエラーメッセージも返します。
-
pcoオプションlink-mtu <>
リファレンス:コマンドラインインターフェイスリファレンス、モードR ~ Z、StarOSリリース21.28
UEから要求された場合、PCO IEにリンクMTUを含めるようにAPNを設定します。
初期アタッチ/スタンドアロンPDN接続中にUEがIPv4 Link MTU Size PCO要求を送信すると、S-GW/SGSN/HSGWがCreate Session Request、Create/Update PDP Context Request、またはPBUでP-GW、GGSN、またはPMIP-PGWに同じものを透過的に送信します。
Create Session Response、Create/Update PDP Context Response/PBAは、APNで設定された最新のMTUサイズPCO値で送信されます。
UEがアウトバウンドローミングの場合、デフォルト値(1500)はMTUサイズPCOで提供されます。
configure
context context_name
subscriber default
ipv6 minimum-link-mtu bytes
ppp mtu bytes
mobile-ipv6 tunnel mtu bytes
pco-options link-mtu bytes
end
参考:コマンドラインインターフェイスリファレンス、サブスクライバコンフィギュレーションモードコマンド、StarOS 21.23
確認
ここでは、設定が正常に機能しているかどうかを確認します。
StarOSコマンドを使用して設定を確認します。
show configuration
show configuration verbose
show configuration apn apn_name
トラブルシュート
ここでは、設定のトラブルシューティングに使用できる情報を示します。
– 最低でも冗長性3のサブスクライバをモニタし、PCOオプションを表示します。
– 外部pcap – パケットフラグメンテーションを確認します。