MTU設定でUbuntuインターネット速度を最適化する方法



問題を排除するために楽器を試してください

コンピューターのテキストは用語の適用方法が異なりますが、UbuntuはTCP最大伝送ユニット(MTU)を使用して、マシンがTCP / IPネットワーク接続を介して通過できるTCPパケットの最大サイズを指します。この値の計算は比較的簡単で、デフォルトはほとんどのマシンで機能しますが、異常な設定のためにパケットが断片化している場合は、システムをさらに最適化できる可能性があります。大きな単一の発信パケットを送信する方が、複数の小さな発信パケットを送信するよりも効率的です。



マシンの正しいMTU値を見つける最も簡単な方法は、ターミナルウィンドウを開くことです。 Ctrlキー、ATLキー、Tキーを押すか、Unityダッシュから開始します。 Ubuntu Serverを使用している場合は、デフォルトでグラフィカル環境がまったくないCLIインターフェイスになります。ターミナルに着いたら、ping -s 1464 -c1 distrowatch.comと入力し、出力を待ちます。何も受信しない場合は、ネットワーク接続が正しく構成されていません。適切な出力を受け取ったと仮定して、1464(1492)バイトのデータを読み取るセクションを探します。これは、28バイトのヘッダー情報を含むパケットを送信していることを示しています。



方法1:パケットの断片化についてping出力を調べる

pingコマンドは、パケットが複数のヘッダーデータが添付された複数のフラグメントとして送信されたかどうかを通知します。 「必要なフラグメントとDFセット(mtu = 1492)」または同様のテキストに関する警告の行の出力を調べます。ご使用のUbuntuのバージョンに含まれているpingのバージョンによっては、警告の表現が異なる場合があります。このテキストが存在しない場合は、現時点で断片化されたパケットを送信していないMTU測定をすでに使用している可能性があります。



システムに最適なMTUを見つけるには、このpingコマンドを小さなパケットサイズで実行し、時間の経過とともに断片化が始まるまで増やしてから、これをカットオフポイントと見なします。ヘッダーデータ用のスペースが必要なため、MTU =ペイロード+28であることに注意してください。さて、フラグメントなしでサイズを非常に大きなものに増やすことができれば、ネットワークインターフェイスはフラグメントを生成する必要なしに大量のパケットを処理できる可能性があります。最終的にFragneeded警告が表示された場合、これは、実行したサイズ以上のペイロードで送信されたパケットが複数のパケットとして送信されることを意味します。警告なしでping-s 2464 -c1 distrowatch.comを試行したが、ping -s 2465 -c1 distrowatch.comが警告を送信した場合、これは、2,464 +28がTCP / IP構成で処理できる最大のMTU設定であることを意味します。複数のフラグメント化されたパケットを送信する前。正確な値を特定するには、少し時間がかかる場合があります。



pingコマンドを複数回実行することで価値を考えたら、実行する必要があります sudo ifconfig 既知のネットワークインターフェイスのリストを検索します。 Ubuntuとその派生物はrootアカウントをハッシュしますが、例としてsudobashによって作成されたシェルから操作しました。各コマンドの前にsudoを個別に付けることをお勧めします。

正しいデバイスがわかったらすぐに、次のことを試してください。

sudo ifconfig interfaceName man ####

interfaceNameを使用しているネットワークアダプターの名前に置き換えてから、####を見つけたサイズにヘッダー情報の28を加えたものに置き換えます。 ifconfigを実行してNICのデフォルトMTUを確認し、それを複数回実行して、この前のコマンドで変更されるかどうかを確認できます。一部のネットワークインターフェースアダプターでは、変更できません。その場合、残念ながら、それ以上の最適化は無駄になります。ただし、これが機能した場合は、実際に永続的にすることができます。実行してみてください ifconfig | grep MTU 複数のコネクタがある場合はすべての値を検索し、使用しているコネクタに値を一致させることができます。

方法2:MTU最適化を固執させる

これまでのところ、システムに恒久的な変更を加えたことはありません。再起動すると、変更がすべて消去されます。これは、なんらかの間違いを犯して、インターネットに接続できなくなった場合に役立ちます。一方、MTUの正確な値を見つけた場合は、を編集する必要があります。 資料。これは、何かが起こった場合に備えて、コピーを作成するのにおそらく良い時期です。試してみてください または似たようなものなので、万が一に備えてコピーを用意します。グラフィカルに編集する場合は、次のように入力します パスワードを入力します。 Kubuntu、Xubuntu、またはLubuntuを使用している場合は、geditをUbunturespinが使用するグラフィカルテキストエディターに置き換える必要があります。たとえば、Xubuntuはgeditの代わりにマウスパッドを使用します。 Ubuntu Serverを使用している場合、または単にコマンドラインでの作業を好む場合は、代わりに次のように入力します。 、ルートシェルを使用していないと仮定します。

編集に使用した方法に関係なく、以前に吐き出されたインターフェースifconfigの名前を見つけてください。マシンの最初のWifiコネクタを見ているとしましょう。これは、おそらくwlan0などの名前になります。この場合、iface wlan0 inetstaticまたは同様のもので始まるコードスニペットを見つけます。マイレージは異なる場合がありますが、次の行には、住所の後に###。###。#。##形式のIPアドレスが表示されます。ネイティブIPv6接続を使用している場合は、フォーマットが異なる場合があります。ネットマスクとゲートウェイラインがあり、その後にホスト名などをリストしたものが続きます。下部に、mtuと数値を読み取る別の行があります。その番号を最適化MTU値に置き換え、ドキュメントを保存してから、テキストエディタを終了します。システムが機能することを確認するには、システムを再起動する必要があります。

数回の再起動後にすべてが正常になったら、〜/ Documentsディレクトリのinterfaces.bakファイルを削除します。代わりにsudomvを使用できます その後

その過程で何かがうまくいかなかった場合。

方法3:TCP受信ウィンドウ(RWIN)設定の編集

Ubuntuは、送信者をRWIN値として確認する前に、ホストが受け入れる最大量のデータを参照します。 30 MBのファイルをダウンロードした場合、リモートサーバーは実際には30MBのデータブロックをすぐに送信しません。 Ubuntuホストは、ファイルを要求したときに特定のRWIN番号を送信し、サーバーは、システムがデータを取得したことの確認応答を待つ前に、バイト数に達するまでデータのストリーミングを開始します。サーバーはこれを受信すると、別の確認応答を待つ前に追加のブロックの送信を開始します。

待ち時間は、リモートサーバーとの間でパケットを送受信するのにかかる時間です。接続レートはこの値に影響しますが、他の多くの遅延も同様です。 pingコマンドは、ラウンドトリップ時間(RTT)の数値の観点から遅延を説明します。 DistroWatchの以前のpingからの出力を見てください。 time = 134 msという行があります。これは、パケットがUbuntuマシンからdistrowatch.comに往復して再び戻るのにかかった時間です。 1,492バイトのパケットを送信していたので、134ミリ秒で、合計転送速度を見つけるための式を計算できました。

1,492 /.134秒= 11,134.328バイト/秒。これは約10.88バイナリキロバイト/秒になります。これは全体的にかなり遅いため、個別に送信された各パケットを確認する必要がないようにRWINが用意されています。

UbuntuのRWIN設定は、MTU設定とは別のものです。次の式を使用して、インターネット接続の帯域幅遅延積(BDP)を計算します。

(インターネット接続が提供する必要のある最大帯域幅の合計(バイト/秒))(RTT(秒))= BDP

TCPパケットサイズはRWINに影響しませんが、パケットサイズ自体は、方法1で選択した値の影響を受けます。次のコマンドを使用して、RWINに関連するカーネル変数を検索します。

_memの後にスペースがありますが、引用されたテキストのどこにもスペースがないことに注意してください。いくつかの値が返されます。必要なものは net.ipv4.tcp_rmem、net.ipv4.tcp_wmemおよびnet.ipv4.tcp_mem 。これらの値の後の数字は、それぞれの最小値、デフォルト値、および最大値を表しています。これらは、受信ウィンドウのメモリベクトル、送信ベクトル、およびTCPスタックベクトルを表します。 Ubuntu Kylinを実行している場合は、追加のリストがたくさんある可能性があります。これらの追加値は無視しても問題ありません。 Kylinの一部のユーザーは、他のスクリプトに示されている値の一部も表示される場合がありますが、もう一度これらの行を探すだけです。

UbuntuにはRWIN変数がありませんが、net.ipv4.tcp_rmemは近くにあります。これらの変数は、TCPサイズだけでなく、メモリ使用量を制御します。これには、データソケット構造によって消費されたメモリや大規模なバッファ内の短いパケットが含まれます。これらの値を最適化する場合は、方法1で設定した最大サイズのパケットを別のリモートサーバーに送信します。ヘッダー情報の28バイトを引いて、再び1,492バイトのデフォルトを使用しましょう。ただし、値が異なる場合があることに注意してください。コマンドping-s 1464 -c5 distrowatch.comを使用して、追加のRTTデータを取得します。

このテストは、昼と夜の異なる時間に複数回実行することをお勧めします。他のリモートサーバーにもpingを実行して、RTTがどの程度変化するかを確認してください。試してみるたびに平均130ミリ秒強だったので、式を使用してBDPを計算できます。非常に一般的な6メガビット/秒の接続を使用していると仮定しましょう。 BDPは次のよ​​うになります。

(6,000,000ビット/秒)(。133秒)*(1バイト/ 8ビット)= 99,750バイト

これは、デフォルトのnet.ipv4.tcp_rmem値が約100,000であることを意味します。 RTTが0.5秒ほど悪くなるのではないかと心配している場合は、さらに高く設定できます。パケットの送受信は同じインターネット接続を介して行われるため、net.ipv4.tcp_rmemとnet.ipv4.tcp_wmemにあるすべての値を同じように設定する必要があります。この最初の変数はTCPトランザクションに設定された最大のバッファメモリサイズの合計であるため、通常、net.ipv4.tcp_memをnet.ipv4.tcp_wmemおよびnet.ipv4.tcp_rmemで使用されるのと同じ値に設定する必要があります。

コマンドを発行します そして、これらの設定の両方が0または1に設定されているかどうかを確認します。これは、オフまたはオンの状態を示します。

net.ipv4.tcp_no_metrics_saveを1に設定すると、Linuxカーネルはnet.ipv4.tcp_rmem値とnet.ipv4.tcp_wmem値の間の受信ウィンドウを動的に最適化するように強制されます。 net.ipv4.tcp_moderate_rcvbufを有効にすると、輻輳が後続の接続に影響を与えるのを防ぎます。永続的な変更を行う前に、http://www.speedtest.netまたはhttp://www.bing.com/search?q=speed+testで速度チェックを実行して、測定値を把握していることを確認してください。

計算値で変数を一時的に変更します。必ず#を計算した合計に置き換えてください。

sudo sysctl -w net.ipv4.tcp_rmem =” #### ##### ######” net.ipv4.tcp_wmem =” #### ##### ######” net.ipv4.tcp_mem =” #### ##### ######” net.ipv4.tcp_no_metrics_save = 1 net.ipv4.tcp_moderate_rcvbuf = 1

接続を再テストして速度が向上したかどうかを確認し、向上していない場合はコマンドを再度微調整して再実行します。ターミナルで上キーを押すと、最後に使用したコマンドを繰り返すことができることを忘れないでください。適切な値を見つけたら、開きます とともに gksu または 須藤 方法1のテキストエディタコマンドを使用して、次のように行を編集し、もう一度#を計算値に置き換えます。もちろん、バックアップも必要です。 間違えた場合に備えて、パート1と同じ方法でファイルします。作成した場合は、同じ方法で復元することもできます。

net.ipv4.tcp_rmem = #### ##### ######

net.ipv4.tcp_wmem = #### ##### ######

net.ipv4.tcp_mem = #### ##### ######

net.ipv4.tcp_no_metrics_save = 1

net.ipv4.tcp_moderate_rcvbuf = 1

すべて問題がないことを確認したら、保存します。次のコマンドを発行します。

sudo sysctl -p

これにより、Linuxカーネルはで設定を再読み込みします 、そしてすべてがうまくいけば、それはあなたに少なくともいくらかより速いネットワーク接続を与えるはずです。元のデフォルトによっては、違いが実際には劇的であるか、まったく目立たない可能性があります。

読んだ8分