「ジャンボフレーム」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(リダイレクトに変更(英語版に追従))
タグ: 新規リダイレクト
 
(他の1人の利用者による、間の1版が非表示)
1行目: 1行目:
[[Category:ネットワーク]]
+
#redirect [[ネットワーク設定#MTU とキューの長さの設定]]
[[en:Jumbo frames]]
 
[[Wikipedia:Jumbo_frame|Wikipedia]] より:
 
:''コンピュータネットワークにおいて、ジャンボフレームとは 1,500 バイト以上の通信量 (MTU) を持つ Ethernet フレームのことを指す。基本、ジャンボフレームは 9,000 バイトまでの通信を運ぶことができるが、決まった数値はないため注意が必要である。大抵の Gigabit Ethernet スイッチや Gigabit Ethernet ネットワークインターフェイスカードはジャンボフレームに対応しているが、全てではない。また Fast Ethernet スイッチや Fast Ethernet ネットワークインターフェイスカードは通常容量のフレームしかサポートしていない。''
 
 
MTU の値を大きくする (ジャンボフレーム) ことでネットワークの転送速度は跳ね上がります。
 
 
== 注意事項 ==
 
 
標準にない MTU 容量を使用した場合、e1000e など、特定のカーネルドライバーでは CPU が C3 の C ステートに入れないようになります。詳しくは開発者のコメントを参照: [https://bugzilla.kernel.org/show_bug.cgi?id=77361 bugzilla #77361]。
 
 
== 要件 ==
 
 
# GigLAN のバックボーン (1000baseT)
 
# ローカル PC のローカル NIC がジャンボフレーム (JF) に対応していること
 
# スイッチが JF に対応していること
 
 
== 設定 ==
 
 
以下のように mtu パラメータを付けて {{ic|ip}} を実行してください:
 
{{bc|# ip link set ethx mtu <size>}}
 
 
{{ic|ethx}} は使用するイーサネットアダプタ (eth0, eth1 など) に、{{ic|<size>}} は使用したいフレームのサイズ (1500, 4000, 9000) に置き換えてください。
 
 
設定が適用されたことは {{ic|<nowiki>ip link show | grep mtu</nowiki>}} で確認できます。
 
 
例:
 
{{hc|<nowiki>$ ip link show | grep mtu</nowiki>|
 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4000 qdisc pfifo_fast state UP qlen 1000
 
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
 
}}
 
 
=== Systemd ユニット ===
 
 
{{Tip|[[アプリケーション一覧/インターネット#ネットワーク管理|ネットワークマネージャ]]で MTU の値を設定できる場合はそちらを使うことを推奨します ([[Systemd-networkd#.5BLink.5D|systemd-networkd]] も参照)。}}
 
 
設定を永続するには、systemd ユニットを作成します:
 
 
{{hc|/etc/systemd/system/setmtu@.service|<nowiki>
 
[Unit]
 
Description=Set mtu on device
 
Before=network.target
 
 
[Service]
 
Type=oneshot
 
EnvironmentFile=/etc/conf.d/setmtu
 
ExecStart=/usr/bin/ip link set dev %i up mtu ${%i}
 
 
[Install]
 
WantedBy=multi-user.target
 
</nowiki>}}
 
 
次に設定を作成します。必要に応じて調整してください。一行ごとに一つのデバイスを設定します:
 
 
{{hc|/etc/conf.d/setmtu|<nowiki>
 
eth0=4000
 
</nowiki>}}
 
 
上記の設定で {{ic|eth0}} の mtu が 4000 になります。
 
 
サービスと設定を作成したらデバイス名を指定してサービスを[[デーモン|有効化]]してください (上記の例なら、サービス名は {{ic|setmtu@eth0.service}} となります)。
 
 
=== Netctl ===
 
 
[[netctl]] でアダプタを設定している場合、ネットワークプロファイルで {{ic|ExecUpPost}} 変数を使って mtu を永続的に設定することもできます:
 
 
ExecUpPost='/usr/bin/ip link set eth0 mtu 4000'
 
 
== サンプル ==
 
 
{{Note|以下のテストは古いハードウェアで行ったものであり RAM ディスクは使っていません。そのため新しいシステムで RAM ディスクを使ってテストを実行した場合、結果が大きく異なる可能性があります。RAM ディスクを使うことで HDD による性能の低下を抑えることができ、ジャンボフレームを使用するメリットが増大します。}}
 
 
最適な設定を確認するために、実際にファイル転送を行なってみて様々なフレームサイズをテストすることは重要です。ジャンボフレームにおいて万能のサイズはありません。事実、以下で示しているように、ハードウェアによっては、フレームサイズを大きくしすぎるとネットワークのスループットが落ちてしまうこともあります。
 
 
以下では複数の異なる状況 (巨大なファイルが単体の場合と小さなファイルが多数の場合) で3つの異なるフレームサイズ (標準の 1500, ジャンボの 4000, ジャンボの 9000) をテストしています。テストしたハードウェアでは、フレームサイズは 4000 にするのが一番良い結果が得られました。どのハードウェアでもこうなるというわけではありません。自分で実際にフレームサイズを様々に変更し、ファイルを転送してみて効果を評価してください。
 
 
マシン A とマシン B は2004年以前に製造された EIDE ハードドライブを使っています。新しい SATA II HDD や MB ではもっと高いスループットが出るはずです。また、両方のマシンでは [http://us.dlink.com/search/keyword/530T/ D-Link 530T] NIC (PCI バス) を使用しており、表に示したフレームサイズ (1500, 4000, 9000) を使うように設定されています。
 
 
'''テスト 1 - Samba で単体の巨大なファイルを転送 (1,048,522 kb)'''
 
 
''経過時間やスループットは3回実行した結果の平均です。''
 
 
{| class="wikitable"
 
| mtu=1500 || t (秒) || Kb/秒 || || mtu=4000 || t (秒) || Kb/秒 || || mtu=9000 || t (秒) || Kb/秒
 
|-
 
|A から B || 48 || 21,844 || || A から B || 44 || 23,830 || || A から B || 49 || 21,398
 
|-
 
|B から A || 81 || 12,945 || || B から A || 41 || 25,574 || || B から A || 41 || 25,574
 
|-
 
|}
 
 
'''テスト 1 のまとめ'''
 
{| class="wikitable"
 
| 4k vs. 1.5k || % 変化 || || 9k vs. 1.5k || % 変化
 
|-
 
|A から B || +9 % || || A から B || -2 %
 
|-
 
|B から A || +98 % || || B から A || +98 %
 
|-
 
|}
 
<!--Test 2 -->
 
 
'''テスト 2 - Samba で複数の小さなファイルを転送 (合計で 1,283,439 kb)'''
 
 
''経過時間やスループットは3回実行した結果の平均です。''
 
 
{| class="wikitable"
 
| mtu=1500 || t (秒) || Kb/秒 || || mtu=4000 || t (秒) || Kb/秒 || || mtu=9000 || t (秒) || Kb/秒
 
|-
 
|A から B || 59 || 21,753 || || A から B || 51 || 25,165 || || A から B || 57 || 22,516
 
|-
 
|B から A || 94 || 13,654 || || B から A || 46 || 27,901 || || B から A || 49 || 26,193
 
|-
 
|}
 
 
'''テスト 2 のまとめ'''
 
{| class="wikitable"
 
| 4k vs. 1.5k || % 変化 || || 9k vs. 1.5k || % 変化
 
|-
 
|A から B || +16 % || || A から B || +4 %
 
|-
 
|B から A || +4% || || B から A || +92 %
 
|-
 
|}
 
<!--Test 3 -->
 
 
'''長時間の転送速度'''
 
 
4k ジャンボフレームを使用した 30 GB 以上のファイル転送の平均速度は 26.6 MB/s でした。リンクの一番低速なドライブは Western Digital WD3200JB - 2004年製造, EIDE 320 GB (ATA100/7200 RPM/8 MB キャッシュ) でした。ネットワークのバースト速度 (300-400 MB ファイル) はドライブ間のバースト速度の約 80% になりました。悪くない値です (ネットワーク速度が 30 MB/s でドライブの速度が 38 MB/s)。
 
 
=== ジャンボフレームを使用する LAN 構成 ===
 
 
PC1 (JF 有効)
 
 
PC2 (JF 有効) <----> Gigabit Ethernet スイッチ (JF 有効) <----> ルーター (JF 無効) <----> ケーブルモデム (JF 無効)
 
 
PC3 (JF 有効)
 
 
上記の例では、PC の NIC は全て JF を使うように設定され、同じく JF を使用する Gigabit Ethernet スイッチに接続されています。スイッチは更にアップリンクポートでルーターに接続されていますが、ルーターではジャンボフレームを使うことはできず、さらにルーターが接続するケーブルモデムもジャンボフレームを使用しません。
 
 
一部のウェブサイトが何を言っていようと、上記の構成は 100% 問題なく動作します。ネットワーク内の JF が有効になった転送 (スイッチ間) は非常に高速です。PC から WAN (インターネット) への転送速度は JF が無効になっている場合と変わりません。
 
 
== 参照 ==
 
 
* [http://sd.wareonearth.com/~phil/jumbo.html Gigabit Ethernet Jumbo Frames - And why you should care]
 

2022年1月13日 (木) 12:34時点における最新版