メイン Link (MAC) Layer Protocol Implementation & Model Development 即時式ルータの実装について | 投稿するにはまず登録を |
題名 | 投稿者 | 日時 |
---|---|---|
即時式ルータの実装について | kome | 2010/12/13 16:02 |
» Re: 即時式ルータの実装について | chackn | 2010/12/14 20:59 |
Re: 即時式ルータの実装について | kome | 2010/12/15 18:00 |
Re: 即時式ルータの実装について | chackn | 2010/12/16 11:07 |
Re: 即時式ルータの実装について | kome | 2010/12/17 18:57 |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
chackn | 投稿日時: 2010/12/14 20:59 |
常連 登録日: 2005/5/13 居住地: Kanagawa, Japan 投稿: 61 |
Re: 即時式ルータの実装について komeさん、こんにちは。
無線のカットスルーモデルを作ったことがあるという同僚に聞いて みました。基本的には、あるI/Fで受信したパケット(の受信イベント) を、受信が完了する前に別のI/Fにコピーすることになるようです。 無線、有線限らず、通常、ストア・アンド・フォワード型のルータは [受信開始]->[受信終了]->[送信開始]->[送信終了]の順にイベント 処理を行います。その代りに、[受信開始]->[送信開始]->[受信終了]-> [送信終了]とやるわけですね。 有線モデルだとおっしゃるとおり、Hubのソース、mac802_3.cppが 参考になると思います。関数Mac802_3Layer()がイベントハンドラ 関数です。イベント(メッセージ)MSG_MAC_StartTransmissionの処 理が[受信開始]のトリガになっています。 同様に、MSG_MAC_TransmissionFinishedの処理は[受信終了]のトリ ガです。この関数を改造すればいいと思います。 あと、Switchのように特定のポートにだけ送信するようなことはこ のソースでは行っていません。必要なら追加実装しないといけません。 自分がそのパケット(フレーム)の宛先ノードの時だけイベント処理を すれば良さそうな気がします。 有線ですからエラー判定とかは考えなくていいのでしょうか? であれば、単純にイベント受信→適当な遅延→イベントの複製と いう処理で良いように思います。無線の場合、受信した信号を アナログ的に増幅して再度送信するので、ノイズが蓄積していく んですよね。有線も厳密に言えば同じなんですが。 こんな説明でお役に立てましたか? |
フラット表示 | 前のトピック | 次のトピック |