Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxのブリッジを実装するプロトコルスタック

Linuxのブリッジを実装するプロトコルスタック

  

ブリッジ上((II)から出発ブリッジ構成):ブリッジ・デバイスは、2階建てであり、それは床のようなスイッチの深さ前であってもよいです。データをレイヤ2プロトコルで転送します。データを転送するブリッジは、典型的には、CAMテーブルに渡し、MACポート対応テーブルを維持します。この表のデータは、対応するポートブリッジ転送へ送信することができる:1:パケットを受信します。それは、このパッケージでない場合は、独自のCAMテーブルには、パケットの送信元アドレスを含むかどうかを決定し、0.2として送信元アドレスとポートのCAMテーブルの更新を置く:そうならばパケットは、マシンに上位層に送信されたユニットを送信するかどうかを判断しますプロトコルスタック処理そうでない場合は、CAMテーブルを調べます。適切な出口を見つけてください。 3:出口が見つかった場合、パッケージは出口に送信されます。存在しない場合は、各ポートに送信されます。 4:CAMテーブルの対応するエントリが指定された時間内に更新されない場合、この項目を削除してください。ブリッジ設定:Brctlはブリッジを設定するための良いツールです。そのソースコードと設定方法は非常に簡単です。ブリッジの設定プロセスについて説明し、Linuxカーネルがどのように段階的に管理されるのかを確認します。今、brctlはaddif仲間eth1OK橋を(eth1のブリッジBR0はeth0に追加されると)brctlはaddif BR0はeth0:その後、ブリッジにインターフェイスを追加する(ブリッジBR0年代の構築)brctl addbrのBR0:まず、ブリッジを作成構成されました。このLinuxホストがスイッチとして使用することができ、かつeth0からeth1にパケットを転送することができます。それでは、コードが最初のbrctl addbrを処理する方法を見てみましょう。 brctlコードを参照してください、それが呼び出されますが見つかりました:のioctl(br_socket_fd、SIOCBRADDBR、brname); brctlその後はaddifのbrctlコードで呼び出しますのioctl(br_socket_fd、SIOCBRADDIF、& IFR);ああ。 Brctlコードは非常に簡単です、ちょうど設定ツールのユーザ空間ioctl.Linuxブリッジ分析を呼び出す:まあ、今はブリッジモードのカーネル分析を入力することができます:static int型__init br_init(無効)(ネット/brige /BR。 C){//バッファスラブbr_fdb_initを割り当てる(); //netfiterブリッジ工程、後のセクション(での#ifdef CONFIG_BRIDGE_NETFILTERif(br_netfilter_init分析し))リターン1;ユーザ空間brioctl_set位ENDIF //ioctl関数呼び出しを(br_ioctl_deviceless_stub); //プロセス受信したデータパケットは、つまり、私たちはnetif_receive_skb機能br_handle_frame_hookbr_handle_frame_hook = br_handle_frame上記参照;定義された(CONFIG_ATM_LANE)の#if | |  定義された(CONFIG_ATM_LANE_MODULE)br_fdb_get_hook = br_fdb_get; br_fdb_put_hook = br_fdb_put;#endifの//netdev_chain通知リストに登録。通知リストについては、すでに導入している、ここでregister_netdevice_notifierを説明しない(& br_device_notifier); 0を返す;}

Copyright © Windowsの知識 All Rights Reserved