![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
daka | 投稿日時: 2007/10/11 23:27 |
新米 ![]() ![]() 登録日: 2007/8/31 居住地: 投稿: 11 |
データパケットの重複処理について いつもお世話になっております。
ちょっと質問します。 データパケットをブロードキャストし 受信ノードで重複したデータパケットを破棄するように動作させようとした場合 どのようにすればいいでしょうか? どのような情報が必要なのかも良く分からないので ご指摘いただければと思います。 |
hiro | 投稿日時: 2007/10/12 0:21 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: データパケットの重複処理について > データパケットをブロードキャストし
> 受信ノードで重複したデータパケットを破棄するように動作させようとした場合 > どのようにすればいいでしょうか? どのレイヤで重複判定するかによって、方法は微妙に異なると思いますが、 (Network Layer Settings: IP, QoS, Queuing & Schedulingだからネットワーク層?) 一般論では; 0 受け取ったデータを覚える場所を確保して、全て忘れる。 1 (データが届いたので)データを受け取る。 2 全ての覚えているデータと比較する。 3.1 同じものがあったら、今受け取ったデータは破棄し、6へ。 3.2 同じものがなかったら、覚えているデータを確認する。 4.1 もう覚えきれないなら(たとえば古い)データを捨てる。 5 今、受け取ったデータを覚える。 6 1の状態に戻る(実際にはMainloopに戻るか、通常の処理に進む)。 のような処理を受信ノードで行うことになりますが、 実際に重複の判定を行う方法についても、 ヘッダ部分(の一部)が等しい、データ部分(の一部)が等しい、などがあるので それによってどのレイヤで重複判定と破棄を行うか決まるかもしれません。 とりあえず、MAC_ReceivePacketFromPhy から上位層に向かってパケットの レイヤ間の伝達を追いかけるのが良いと思います。 用済みになったパケットの MESSAGE_Free 忘れないように。 |
daka | 投稿日時: 2007/10/12 0:39 |
新米 ![]() ![]() 登録日: 2007/8/31 居住地: 投稿: 11 |
Re: データパケットの重複処理について 早速の返信、ありがとうございます。
今の私の仕様では データパケットの受信ノードがパケットバッファなるものを持っていて 届いたパケットのSrcAddrとSeqNumをそこに記憶しています。 受信したデータパケットがパケットバッファ内の情報(SrcAddrとSeqNum)が一致すれば、それは重複パケットということで破棄。 その後の処理を行わない・・・ということにしています。 しかし、ログを見てみると重複判定されたパケットも上の層に上がっている感じでした。 重複パケットを上位層まで上げないで、ネットワーク層で破棄できないかどうかと悩み中です。 ご指摘のとおり、MAC_ReceivePacketFromPhyから追ってみたいと思います。 |
hiro | 投稿日時: 2007/10/12 1:06 |
長老 ![]() ![]() 登録日: 2005/7/16 居住地: 投稿: 452 |
Re: データパケットの重複処理について > 重複パケットを上位層まで上げないで、ネットワーク層で破棄できないかどうかと悩み中です。
> MAC_ReceivePacketFromPhyから追ってみたいと思います。 ネットワーク層であれば、 NETWORK_ReceivePacketFromMacLayer からでも良いかもしれません。 いずれにせよ、パケットの流れ追いかけるしかないので、がんばってください。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |