Linuxのパフォーマンスチューニングの戦闘:Linuxのネットワーク上で、あなたが知っている必要があります()(たとえば33)

まず、セクションレビュー

前のセクションでは、我々は、ファイルシステムとディスクI / O、および対応するパフォーマンス分析と最適化手法の原則を学ぶために一緒に働きます。Linuxのネットワークサブシステム - 次に、我々は次の重要なモジュールを入力します。

最も複雑なのネットワーク処理の流れとして、我々はおよそ以前の話をしたスケジューリングの過程で、メモリ管理を割り込み処理し、I / Oはすべて密接にリンクされているので、私は説明するために、最後のモジュールとして、リソースのネットワークモジュールを置きます。

CPU、メモリだけでなく、I / Oを使用すると、ネットワークのコア機能は、Linuxシステムです。ネットワークは、一緒に技術に接続された別のコンピュータまたはデバイスのネットワークであり、特にクロスシステムプロセス、その性質上のプロセス間通信である
通信の間は、ネットワークを介して行わなければなりません。高並行性、分散型、クラウド・コンピューティング、マイクロテクノロジー・サービスの普及で、ネットワークのパフォーマンスがますます重要になります。

その後:

1、Linuxはネットワークがどのように働くかありますか?

2、どのような指標を行うネットワークのパフォーマンスを測定するには?

次の二つの記事、私は一緒にLinuxネットワークの動作原理とパフォーマンスを学ぶために行くことができます。

第二に、ネットワークモデル

それがネットワークに来るとき、私はあなたが、多くの場合、7つのロードバランシングに言及確信して、負荷が4つ、または3つのデバイス、2階建ての機器のバランスをとります。さて、ここ2、3、4、7を言うと、両方のはそれが何を意味するのですするには?

1、OSIネットワークモデル

実際には、標準化のための開放型システム間相互接続参照モデルコミュニケーション国際機関(オープンシステム間相互接続参照モデル)から、これらの層は、と呼ばれるOSIネットワークモデル

異種ネットワークデバイスの互換性の問題、および複雑なデカップリングネットワークのパケット処理フローを解決するために、OSIモデルは、アプリケーション層、プレゼンテーション層、セッション層、トランスポート層、ネットワーク層、データリンクに分割フレームワークをネットワーク分割します層と物理層
と他の7つの、それぞれの層は、異なる機能を担っています。その中でも、

アプリケーション層は、アプリケーションのための統一されたインタフェースを提供する責任があります。
プレゼンテーション層は、受信側システムと互換性のあるフォーマットにデータを変換するための責任があります。
セッション層は、コンピュータ間の通信接続を維持する責任があります。
トランスポート層は、パケットが形成され、データとヘッダの送信を担当します。
ネットワーク層は、データのルーティングおよび転送を担当します。
データリンク層は、MACアドレス指定を、誤り検出及び誤り訂正を担当しています。

2、TCP / IPモデル

しかし、OSIモデルを達成することができる方法を提供していませんでした、まだあまりにも複雑です。だから、Linuxでは、私たちが実際に使用し、別の、より実用的な4層モデル、すなわち、TCP / IPネットワークモデルです。

TCP / IPモデル、フレームは、4つの相互接続されたネットワークのアプリケーション層などのトランスポート層、ネットワーク層、ネットワークインターフェース層、に分割され、前記

物理層は、物理ネットワーク内のデータフレームを送信する責任があります。
アプリケーション層には、HTTP、FTP、DNSなどのユーザーにアプリケーションのセットを提供する責任があります。
トランスポート層は、TCP、UDPなどの通信を、エンド・ツー・エンドの責任です。
等IP、ICMP、などのネットワークパケットのカプセル化、アドレッシングおよびルーティングのためのネットワーク層

ネットワークインタフェース層は、カード搬送ネットワークフレームを介して、MACアドレスなど、物理ネットワークにおけるパケット伝送ネットワークを担当するエラー検出、などです。

以下に示すように、あなたがより良いTCP / IPとOSIモデルの画像との間の関係を理解するために、私は、絵を描きました。

もちろん、実際のLinuxのTCP / IPのモデルに従ってもののすることは、ネットワーク・プロトコル・スタックを実装していますが、学習の通常の交換で、我々はまだ通例OSI 7層モデルを記述するために使用されています。例えば、それは7および4つの荷重バランスになると、対応点
それぞれOSIモデルでは、アプリケーション層と(実際にはTCP / IPモデルに対応し、4つ及び3つ)のトランスポート層です。

TCP / IPモデルは、ネットワークプロトコル、これらの契約の原則の数が多いだけでなく、私たちのそれぞれが習得しなければならない知識の中核基盤を含んでいます。あなたは熟練していない場合、それはあなたが学校に行くことをお勧めします「TCP / IP詳細な」ボリュームIとの巻II、またはオタクの時間を学習
コラム「ネットワークプロトコルについて何かを」生産。

三、Linuxのネットワークスタック

TCP / IPモデルでは、ネットワーク送信中、パケットは、プロトコルスタックによれば、層によって着信データ層の上層、次いでカプセル化層の、プロトコル・ヘッダ、および次の層へ送られます。

もちろん、各レイヤにおけるネットワークパケット処理ロジックは、ネットワークプロトコル層に応じが使用されます。例えば、アプリケーション層では、アプリケーションはそれがJSONのHTTP用にカプセル化されたデータを送信する必要があり、HTTPプロトコルを使用することができる、RESTのAPIを提供する
プロトコル、及びその後TCP層に渡さ。

1、パッケージ

パッケージには、メタデータの固定フォーマットを上げる直前と元のロード後に、行うことは非常に簡単で、元のロードデータは変更されません。

以下の画像は、我々が見ることができることにより、例えば、TCPプロトコルへのネットワークパケットは、例えば、通信し、各封止層のアプリケーションデータ

どこで:

アプリケーションデータの前の輸送層TCPヘッダを付加し、
;ネットワーク層パケットTCPはIPヘッダを付加する前に、
それぞれのネットワークインターフェース層、及び前及び後、IPパケットのヘッダとトレイラが増加します。

新しい頭と尾は、ドキュメントのプロトコルを表示することができ、特定のフォーマットを知りたい、特定のプロトコルのフォーマットに従って入力されます。たとえば、あなたは、ここを参照してくださいTCPヘッダフォーマットを理解することができます

2. MTUは何ですか?Linuxの  MTUデフォルト値はどのくらいです

新しい頭と尾、ネットワークパケットのサイズを大きくするが、我々はすべてのことを知っている物理リンクをして任意のサイズのパケットを送信することはできません所定の最大IPパケットサイズの最大伝送単位設定されたネットワークインターフェイス(MTU)。
私たちの最も一般的なイーサネットで使用するには、MTUのデフォルト値は、(Linux用のデフォルトである)1500です

パケットがネットワークのMTUサイズを超えると、IPパケットの断片化は、MTU値よりも大きくないことを保証するために、ネットワーク層の上に断片化されるであろう。明らかに、MTU少なく、自然に、より優れたネットワークスループットを委託する必要が大きいです。

TCP / IPネットワークモデルとネットワークパケットにカプセル化の原則を理解した後、あなたは簡単に想像できる、Linuxカーネルのネットワークスタック、実際には、TCP / IPの4層構造に似ています。以下に示す、それはLinuxのIPネットワークスタックの一般的な概略図である

図:

 

 

 


(10.7描かれた一般的なIPネットワークスタック図参照画像「のパフォーマンストップ」)

3、LAN機器

私たちは、あなたが見つけることができ、上から下へのネットワークスタックを見て

ソケットの下に、それは我々が先に述べたトランスポート層、ネットワーク層とネットワークインターフェース層がある; 1、アプリケーションの上部には、あなたは、ソケット・インターフェースと対話するシステムを介して呼び出す必要があります。

図2に示すように、底部は、物理的なNICドライバとネットワークアダプタ装置です。

ここでは、簡単にカードについてI:

図1に示すように、基本的なデバイスは、ネットワークパケットを送受信するNICです。

図2に示すように、システム起動時に、カーネル内のネットワーク・カード・ドライバを介してシステムに登録カード。

3、およびネットワークトランシーバプロセスで、カーネルは割り込みを経由してカードと対話します。

前述と組み合わせたLinuxネットワークスタックは、それは、非常に複雑な処理のネットワークパケットを見ることができます。だから、NICハードウェアは、読み取り専用またはデータを送信するためにネットワークカードのコアを扱う割り込みプロトコルスタックロジックのほとんどが、一方で、ソフト割り込み処理を配置します

四、Linuxのネットワーク・トランシーバ・プロセス

Linuxのネットワークスタックの理解は、我々は最終的にどのようにLinuxのトランシーバのネットワークパケットで、見てください。

例えば、次のように物理的なカードであることに注意してください。実際には、Linuxはまた、大規模な仮想ネットワークの数をサポート
いくつかの違いがあるだろうデバイスとそのネットワークトランシーバプロセスを。

1、ネットワークパケット受信処理

私たちは、最初のネットワークパケットを受信する過程を見てください。

、ハードウェア割り込みに続いて、割り込みハンドラは、ネットワークパケットを受信した伝えるために、フレームは、ネットワークカードを到着したとき1には、カードはDMAモード、受信パケットキューへのネットワークパケットを通過します。

図2は、次に、バッファsk_buffにカードネットワークフレームに割り当てられたカーネルデータ構造(sk_buff)、コピーをするための割り込みハンドラと、ソフト割り込みを介して、カーネルに通知し、新しいネットワークフレームを受信します。

図3に示すように、次のカーネル・プロトコル・スタックは、ネットワークフレームバッファ、およびネットワークプロトコルスタック、ネットワークフレームに下から層によって層から除去されます。たとえば、

図1は、リンク層の正当性は、次いで、ネットワーク層に、ヘッダ、フレームの端を削除、(IPv4やIPv6などの)上位層プロトコルの種類を見つけるためにメッセージをチェックします。

図2に示すように、ネットワーク層のIPヘッダには、このような上位層の処理または転送などのネットワークパケットか否かを決定するために次のステップを、除去しました。ネットワーク層パケットがマシンに送信することを確認することである場合、それは(例えばTCPまたはUDPのような)上位層プロトコルタイプが削除され、行った
      IPヘッダをオフし、その後トランスポート層処理します。

3に記載のトランスポート層のTCPヘッダ又はUDPヘッダの抽出、4つのタプル識別子として<IP、送信元ポート、宛先IP、宛先ポートをソース>対応するソケットを見つけ、ソケットに受信バッファにデータをコピーします。

図4に示すように、最終的に、アプリケーションは、新たに受信したデータを読み取るためにソケットインタフェースを使用することができます。図中のピンクの矢印は、ネットワークパケットの処理経路を示しながら、より明確にこのプロセスを表現するために、私は絵を描いた、この図の左側部分は、受信処理を表します。

 

 

図2に示すように、ネットワークパケット送信処理

プロセスの理解を受信するネットワークパケットの後に、それは容易にネットワークパケット送信処理が理解されます。プロセスパケット伝送ネットワークは、逆方向で受信したネットワークパケットの伝送の方向を見つけることは容易であり、図の右半分です。

図1は、まず、アプリケーションはソケットAPI(例えばsendmsgのような)パケット伝送ネットワークを呼び出します。

これはシステムコールであるので、それはカーネルモードでソケット層に分類されます。ソケットソケットレイヤは、バッファにパケットを送信します。

2、その後、ネットワークプロトコルスタックのソケットバッファから送信されます、

図1に示すように、パケットを削除し、その後、TCP / IPスタックに応じて、上から下に層ごとに。

図2は、例えば、トランスポート層とネットワーク層は、それぞれ、次のホップを確認するために、そのTCPおよびIPヘッダ、IPルートルックアップを増加し、MTUサイズに応じて断片化。

図3に示すように、断片化されたパケット網の後、ネットワークインタフェースレイヤに送信、物理アドレスは、ネクストホップのMACアドレスを見つけるためのアドレスです。そして、キューに契約し、ヘッダとトレーラを追加します。

このすべてが完了した後、ソフト割り込みがあるでしょうドライバに通知:契約キュー新しいネットワークフレームを送信する必要があります

図3は、最終的には、DMAを通じてドライバーは、ネットワークフレームは、入札キューから読み出され、物理NICを通してそれを送信しています。

 V.の概要

今日の記事では、私はあなたがLinuxのネットワークが一緒に働く整理取るでしょう。

カード、スイッチ、ルータおよびその他のネットワークデバイスによって一緒に接続された複数のサーバ、相互接続されたネットワーク構成。ネットワークプロトコルやネットワーク機器の複雑さの不均一に、国際標準化機構は、7 OSIネットワークの一つ定義し
たモデルを、しかし、このモデルは標準的な方法は、より実用的なTCP / IPモデルであるという事実は、あまりにも複雑です。

Linuxネットワークスタックコア構成要素である4つのアプリケーション層、トランスポート層、ネットワーク層、ネットワークインターフェース層など、に分割TCP / IPモデル、ネットワーキング・フレームワーク、。

1、アプリケーション、ソケットインタフェースを介してネットワーク・プロトコル・スタック内の上から下に層によって第一の層は、パケットを送信し、最終的にカードに送信します。

最終用途に底部から層によって第一ネットワークスタック層を介してこれを受信しながら、図2に示すように、送信されます。

基本原則を理解した後、Linuxのネットワークトランシーバを処理し、あなたは確かにネットワークのパフォーマンスを観察する方法を知って待つことができません。だから、具体的には、どのような指標は、ネットワークパフォーマンスのLinuxそれを測定することができますか?私は次のだろう、心配しないで
詳細にあなたのためのセクションを説明します。

おすすめ

転載: www.cnblogs.com/luoahong/p/11464755.html