(57)【要約】【課題】ルーティングループを検出する方法及び装置を提供する。【解決手段】かかる方法は、データパケットの期待ルーティングコスト、及び、ローカルノードが前記データパケットのために選択したルーティングのコストに基づいて、前記ローカルノードがターニングポイントであるかを判断し；前記ローカルノードがターニングポイントであれば、前記データパケットにマークを付け；前記ローカルノードによりマーキングされたデータパケットを受信すれば、ルーティングループが発生していると確定することを含む。【選択図】図１
2014239437.tif 000002
【特許請求の範囲】
【請求項１】
Ad  Hocネットワークにおけるノードであって、
受信したデータパケットにおける情報を解析する解析ユニット；
前記データパケットにおけるターニングポイントリスト又は履歴情報表におけるターニングポイント関連情報に基づいて、前記ノードが前記データパケットにマークを付けているかどうかを判断する判断ユニット；及び
前記ノードが前記データパケットにマークを付けているときに、ルーティングループが発生したと確定する処理ユニットを含む、ノード。
【請求項２】
請求項1に記載のノードであって、さらに、
前記ノードの生成したデータパケットにマークを付ける、又は、前記判断ユニットにより、前記ノードが、受信した前記データパケットにマークを付けておらず、且つ、前記ノードが、受信した前記データパケットのために選択したルーティングのコストが、前記データパケットの期待ルーティングコスト以上であると判断したときに、受信した前記データパケットにマークを付けるマーキングユニットを含む、ノード。
【請求項３】
請求項2に記載のノードであって、
前記マーキングユニットは、前記ノードの情報を前記データパケットのターニングポイントリストに追加し、又は、前記データパケットの情報を前記履歴情報表のターニングポイント関連情報に追加することで、生成した前記データパケット又は受信した前記データパケットにマークを付ける、ノード。
【請求項４】
請求項2に記載のノードであって、さらに、
前記ノードが、受信した前記データパケットにマークを付けておらず、且つ、前記ノードが、受信した前記データパケットのために選択したルーティングのコストが前記データパケットの期待ルーティングコスト以上である時に、マーキングされた後の前記データパケットを転送し；前記ノードが、受信した前記データパケットにマークを付けておらず、前記ノードが、受信した前記データパケットのために選択したルーティングのコストが前記データパケットの期待ルーティングコストよりも小さいときに、前記データパケットを転送する転送ユニットを含む、ノード。
【請求項５】
請求項4に記載のノードであって、さらに、
前記転送ユニットが、マーキングされた後の前記データパケットを転送する前に、又は、前記データパケットを転送する前に、前記データパケットのルーティングコストを前記データパケットに追加するデータ構築ユニットを含む、ノード。
【請求項６】
ルーティングループを検出する方法であって、
受信したデータパケットの期待ルーティングコスト、及び、ローカルノードが前記データパケットのために選択したルーティングのコストに基づいて、前記ローカルノードがターニングポイントであるかどうかを判断し；
前記ローカルノードがターニングポイントであれば、前記データパケットにマークを付け；及び
前記ローカルノードによりマーキングされたデータパケットを受信すれば、ルーティングループが発生していると確定する、ことを含む、方法。
【請求項７】
請求項6に記載の方法であって、
前記ローカルノードがターニングポイントであるかどうかを判断することは、
前記ローカルノードが前記データパケットのために選択したルーティングのコストが、前記データパケットの期待ルーティングコスト以上であれば、前記ローカルノードがターニングポイントであると確定することを含む、方法。
【請求項８】
請求項6に記載の方法であって、
前記データパケットにマークを付けることは、
前記ローカルノードの情報を前記データパケットのターニングポイントリストに追加し；又は
前記データパケットの情報をターニングポイント履歴情報表のターニングポイント関連情報に追加することを含む、方法。
【請求項９】
請求項8に記載の方法であって、
前記ローカルノードの情報が前記データパケットのターニングポイントリストにあれば、前記データパケットが、前記ローカルノードによりマーキングされたデータパケットであると確定し；又は
前記データパケットの情報が前記ローカルノードのターニングポイント履歴情報表のターニングポイント関連情報にあれば、前記データパケットが、前記ローカルノードによりマーキングされたデータパケットであると確定することを含む、方法。
【請求項１０】
請求項6に記載の方法であって、さらに、
前記データパケットのルーティングコストを前記データパケットに追加し、マーキングされた後のデータパケット、又は、マーキングされていないデータパケットを転送することを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信分野に関し、特に、Ad  Hocネットワークにおけるルーティングループの検出方法及び装置に関する。
【背景技術】
【０００２】
データパケットが無線Ad  Hocネットワークに伝送される時に、目標ノードに到達するために、通常、複数のノードの転送（forward又はrelay）を要する。データパケットは、一連のノードによって互いに重複転送される時に、ルーティングループに陥ってしまう。ルーティングループに陥ったデータパケットは、エンドレスに転送され、目標ノードに到達することができない。ルーティングループ問題を迅速に解決することができなければ、通信リソースの浪費を引き起こすことがあるだけではなく、ネットワークの正常作動に影響を与えることもある。
【０００３】
従来の解決方法としては、履歴情報表を採用してルーティングループを検出する方法がある。履歴情報表には、ノードが送信したデータパケットの情報が保存されている。ノードがデータパケットを受信したが、該データパケットの情報が既に履歴情報表に存在すれば、それは、ルーティングループが存在することを表す。従来の方法では、データパケットのルーティング経路上の全てのノードが、すべて、該データパケットの情報を履歴情報表に記憶させる必要がある。よって、従来の方法における履歴情報表は、ルーティングループ問題を検出及び解決することができるが、ネットワーク中のデータ量がとても大きい時に、履歴情報表は、大量にメモリを消費する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施例の主な目的は、ルーティングループの発生によるリソース浪費を避けるためのルーティングループの検出方法及び装置を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一側面によれば、Ad  Hocネットワークにおけるノードが提供され、前記ノードは、
受信したデータパケットにおける情報を解析する解析ユニット；
前記データパケットにおけるターニングポイントリスト又は履歴情報表におけるターニングポイント関連情報に基づいて、前記ノードが前記データパケットにマークを付けているかどうかを判断する判断ユニット；及び
前記ノードが前記データパケットにマークを付けている時に、ルーティングループが発生したと確定する処理ユニットを含む、ノード。
【０００６】
また、本発明の他の側面によれば、ルーティングループを検出する方法が提供され、前記方法は、
受信したデータパケットの期待ルーティングコスト、及び、ローカルノードが前記データパケットのために選択したルーティングのコストに基づいて、ローカルノードがターニングポイントであるかどうかを判断し；
ローカルノードがターニングポイントである場合、前記データパケットにマークを付け；及び
ローカルノードによってマークが付けられているデータパケットを受信した場合、ルーティングループが発生したと確定する、ことを含む、方法。
【０００７】
本発明の実施例の有益な効果は、本発明の実施例における方法及び装置によって、ルーティングループの発生によるリソース浪費を避け、ネットワークの正常作動を保証することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施例におけるルーティングループ検出方法のフローチャートである。
【図２Ａ】例一におけるソースノードによってデータパケットを送信するプロセスのフローチャートである。
【図２Ｂ】例一におけるソースノードによってデータパケットを送信する他のプロセスのフローチャートである。
【図３】例一におけるルーティングノードによってデータパケットを転送するプロセスのフローチャートである。
【図４Ａ】例二におけるソースノードによってデータパケットを送信するプロセスのフローチャートである。
【図４Ｂ】例二におけるソースノードによってデータパケットを送信する他のプロセスのフローチャートである。
【図５】例二におけるルーティングノードによってデータパケットを転送するプロセスのフローチャートである。
【図６】例二における履歴情報表を更新するプロセスのフローチャートである。
【図７】本発明の実施例におけるノードの構成図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら本発明を実施するための形態について詳しく説明する。
【００１０】
なお、本発明の実施例では、Ad  Hocネットワークを例として説明を行っているが、本発明は、Ad  Hocネットワークに限定されず、例えば、本発明の実施例により提供される方法及び装置は、センサーネットワークなどの他のMulti  hopネットワークにも適用し得る。
【００１１】
Ad  Hocネットワークでは、ルーティング表には、ノードのルーティング情報が記憶されている。本発明の実施例では、ノードが、表1に示すようなルーティング表の構造を有すると仮定する。表1には、ノードNi（i=1,…,n）が現在のノードの隣接ノードである。現在のノードは、データを任意の１つの隣接ノードに直接転送することができる。表1から分かるように、現在のノードがノードN1を経由してデータをノードNdestに転送するとき、必要なルーティングコストがC1であり、Nnを経由してデータをノードNdestに転送するとき、必要なルーティングコストがCnである。一般的に、ノードは、ルーティングコストが最小になるルーティング経路を選択してデータ転送を行う。
【表１】
2014239437.tif 000003
【００１２】
本発明の実施例では、ターニングポイントとは、データパケットのために選択したルーティングコストが該データパケットの期待（expected）ルーティングコスト以上であるノードを指す。例えば、ノードNが転送要のデータパケットを受信し、該データパケットの期待コストがC1であり、ノードNがルーティング表をルックアップして該データパケットのために選択したルーティングコストがC2である場合、C2≧C1であれば、ノードNはターニングポイントであり、そうでなければ、ノードNはターニングポイントではない。
【実施例１】
【００１３】
本実施例は、ルーティングループを検出する方法を提供する。図1は、該方法のフローチャートであり、該方法は、次のようなステップを含む。
【００１４】
ステップ101：受信したデータパケットの期待ルーティングコスト、及び、ローカルノードが前記データパケットのために選択したルーティングのコストに基づいて、ローカルノードがターニングポイントであるかどうかを判断する。
【００１５】
そのうち、ローカルノードは、ルーティング表をルックアップすることによって、前記データパケットのためにルーティングコストが最小のルーティングを選択し、また、データパケットの期待ルーティングコストと、選択したルーティングのコストとを比較することにより、ローカルノードがターニングポイントであるかどうかを判断することができる。
【００１６】
そのうち、選択したルーティングのコストが期待ルーティングコスト以上であれば、ローカルノードがターニングポイントであると判断し、言い換えれば、該ノードを経由して転送した該データパケットがまた戻する可能性があり、これによって、ルーティングループを形成し、ネットワークの正常作動に影響を与える。一方、選択したルーティングのコストが期待ルーティングコストよりも小さい場合、ローカルノードがターニングポイントではないと判断する。
【００１７】
ステップ102：ローカルノードがターニングポイントであれは、前記データパケットにマークを付ける（即ち、前記データパケットにマーキングを行う）。
【００１８】
そのうち、ステップ101の判断により、ローカルノードがターニングポイントであると確定すれば、該データパケットにマークを付け、その後、マークが付けられているデータパケットを転送する必要がある。その理由は、「ローカルノードが該データパケットのために選択したルーティングのルーティングコストが該データパケットの期待ルーティングコスト以上であれば、該データパケットが転送によってまた戻し、ルーティングループが生じる可能性があり、このようなデータパケットにマークを付けることによって、受信したデータパケットが、転送されたことのあるものであるかどうかを確認することができ、よって、ルーティングループが発生しているかどうかを判定することができ、後続の処理に根拠を提供することができる」とのことにある。
【００１９】
そのうち、ステップ101の判断により、ローカルノードがターニングポイントではないと判断すれば、従来の方法に従って該データパケットを転送し、例えば、該データパケットにおける送信ノードアドレス（LS）、受信ノードアドレス（LD）、及び期待ルーティングコスト（Cost）を変更して転送を行う。
【００２０】
そのうち、データパケットにマークを付ける方法については、後述する。
【００２１】
ステップ103：ローカルノードによってマークが付けられているデータパケットを受信した場合、ルーティングループが発生したと確定する。
【００２２】
そのうち、ルーティングループが発生したと確定した後に、ルーティングループの解決操作、例えば、前記データパケットを捨て、ルーティング表を更新し、又は、データパケットを再転送するなどの操作を行ってもよい。
【００２３】
以上の実施例では、ローカルノードは、データパケットを受信した後に、ローカルノードが該データパケットのターニングポイントであるかどうかに基づいて、該データパケットにマークを付けているかどうかを判断する。しかし、本発明は、これに限定されず、他の実施例では、１つのノードがその生成したデータパケットにマークを直接付けることもでき、これによって、ルーティングループの検出を行い、例えば、某ノードは、その生成したデータパケットにマークを付け、その後、一旦該データパケットを受信すると、ルーティングループが発生したと判断することができる。そのうち、その生成したデータパケットにマークを付ける他、該ノードは、同時に、該データパケットの期待ルーティングコストを該データパケットに添加（追加）することもでき、これにより、該データパケットを受信したノードは、これに基づいて、それが該データパケットのターニングポイントであるかどうかを確定することができる。
【００２４】
そのうち、ステップ102の方法で、ルーティングループの発生する可能性のあるデータパケットにマークを付け、又は、前述の方法で、生成したデータパケットにマックを付け、これにより、ローカルノードは、データパケットを受信した時に、該ローカルノードが該データパケットにマークを付けているかどうかを判断することができ、マークを付けていると判断すれば、これは、該ローカルノードが該データパケットを転送したことがある、又は、該データパケットが該ローカルノードの生成したデータパケットであるとのことを表し、即ち、ルーティングループが発生したとのことを表す。該データパケットを転送又は送信したことがあるから、このとき、該ローカルノードは、該データパケットを捨てることを選択してもよく、即ち、それに対して処理を行わない。判断により、ローカルノードが該データパケットにマークを付けていないと確定すれば、ステップ101〜102の処理を行い、即ち、該データパケットのためにルーティングコストを選択して、ローカルノードがターニングポイントであるかどうかを確定し、ローカルノードがターニングポイントである場合、該データパケットにマークを付けて転送し、ローカルノードがターニングポイントでない場合、該データパケットを直接転送する。データパケット（マークを付けた後のデータパケット、又は、マークを付けてないデータパケット）の転送過程において、該ノードは、該データパケットのルーティングコストを該データパケットに添加することができ、これにより、該データパケットを受信したノードは、ステップ101により、それ自身がターニングポイントであるかどうかを確定することができる。
【００２５】
そのうち、データパケットにマークを付ける方法が異なるので、受信したデータパケットが、ローカルノードによってマークが付けられているデータパケットであるかどうかを判断する方法も異なる。以下、これについて、詳しく説明する。
【００２６】
ステップ102では、ローカルノードがターニングポイントであれば、該データパケットにマークを付けることができる。本実施例では、マークを付ける方法を２つ提供し、一つは、ローカルノードの情報を、前記データパケットのターニングポイントリストに追加する方法であり、もう１つは、前記データパケットの情報を、ターニングポイントの履歴情報表のターニングポイント関連情報に追加する方法である。この２つの方法で該データパケットにマークを付けることにより、ローカルノードは再び該データパケットを受信した時に、それに基づいて、該データパケットを既に転送したと確定し、即ち、ルーティングループが既に生じたと確定することができ、これにより、ネットワークの正常作動に影響を与えることを避けるために、該データパケットを捨てることを選択することができる。
【００２７】
そのうち、前述の２つのデータパケットにマークを付ける方法は、例だけであり、本発明は、これらの方法に限定されず、データパケットにマークを付ける任意の適切な方法はすべて本発明の保護範囲に属する。
【００２８】
本実施例では、前述の一つ目の方法を採用してデータパケットにマークを付ける場合、即ち、ローカルノードの情報をデータパケットのターニングポイントリストに追加して、データパケットにマークを付ける場合、ステップ103において、ローカルノードの情報が、受信したデータパケットのターニングポイントリストに存在する時に、受信したデータパケットが、ローカルノードによりマークが付けられているデータパケットであると確定し、即ち、ローカルノードが該データパケットにマークを付けていると確定することができる。
【００２９】
本実施例では、該データパケットのフレーム構造が表2に示されている。
【表２】
2014239437.tif 000004
【００３０】
そのうち、GS(Global  Source)は、ソースノードのアドレスであり、GD(Global  Destination)は、目標ノードのアドレスであり、LS(Local  Source)は、送信ノードのアドレスであり、LD(Local  Destination)は、受信ノードのアドレスであり、Costは、期待ルーティングコストであり、Noは、ターニングポイントの個数であり、TP(Turning  Point)は、ターニングポイント情報リスト（ターニングポイントリストとも称される）であり、Seq(Sequence)は、データパケットの順番号であり、Len(Length)は、データ領域の長さであり、Dataは、データ領域である。
【００３１】
本実施例では、データパケットにおけるTPデータセグメント（データフィールド）の具体的な構造が表3に示されている
【表３】
2014239437.tif 000005
【００３２】
そのうち、TP_i（i=1,2,…,No）は、第i個のターニングポイントのターニングポイント情報である。該ターニングポイント情報は、ターニングポイントのアドレスを含んでもよい。
【００３３】
本実施例では、１つのノードは１つのデータパケットを受信し、ステップ101の判断で、ローカルノードがターニングポイントであると発見した時に、該ノードは、その関連情報を、該データパケットのターニングポイントリストに入れ（追加し）、これによって、該データパケットにマークを付けることを完成させる（ステップ102）。その後、該ノードは、再び１つのデータパケットを受信し、且ち、そのアドレスが該データパケットのターニングポイントリストに存在する時に、該データパケットにマークを付けていると確定し、即ち、該データパケットを転送したことがあると確定し、このときに、該ノードは、ルーティングループの解決操作、例えば、該データパケットを捨てる操作を実行してもよい（ステップ103）。
【００３４】
そのうち、表3に示されているTPデータセグメントの構造は、例だけであり、本発明は、これに限定されない。例えば、他の実施例では、各ターニングポイントに対応して、該ターニングポイントのアドレス、及び、受信ノード（該ターニングポイントが該データパケットを転送した時の受信ノード）のアドレスを含んでも良い。即ち、該ノードが該データパケットにマークを付ける時に、自分のアドレスを該データパケットのターニングポイントリストに入れるだけではなく、同時に、該データパケットの受信ノードのアドレスをも該データパケットのターニングポイントリストに入れる。これにより、１つのノードが１つのデータパケットを受信した場合、そのアドレスが該データパケットのターニングポイントリストにあれば、該データパケットにマークを付けたことがあると確定し得る。同時に、ノードのターニングポイントリストから、前回該データパケットを転送した時の受信ノードアドレスを得ることもできる。データパケットを該受信ノードアドレスに転送したときにルーティングループが発生したので、該受信ノードのルーティング情報を更新し、例えば、該受信ノードのルーティングコストを増加させるなどのことができる。
【００３５】
本実施例では、上述の２つ目の方法を採用してデータパケットにマークを付ける場合、即ち、データパケットの情報をターニングポイントの履歴情報表に追加してデータパケットにマークを付ける場合、ステップ103において、受信したデータパケットの情報がターニングポイントの履歴情報表に存在する時に、受信したデータパケットが、ローカルノードによりマークが付けられているデータパケットであると確定し、即ち、ローカルノードが該データパケットにマークを付けていると確定することができる。
【００３６】
本実施例では、該データパケットのフレーム構造が表4に示されている。
【表４】
2014239437.tif 000006
【００３７】
そのうち、GS(Global Source)は、ソースノードのアドレスであり、GD(Global  Destination)は、目標ノードのアドレスであり、LS(Local  Source)は、送信ノードのアドレスであり、LD(Local  Destination)は、受信ノードのアドレスであり、Costは、期待ルーティングコストであり、Seq(Sequence)は、データパケットの順番号であり、Len  (Length)は、データ領域の長さであり、Dataは、データ領域である。
【００３８】
本実施例では、ターニングポイントの履歴情報表の構造が表5に示されてさいる。
【表５】
2014239437.tif 000007
【００３９】
そのうち、GS(Global  Source)は、データパケットのソースノードアドレスであり、Seqstart(Start  Sequence)は、スタート順番号であり、Seqend(End  Sequence)は、エンド順番号であり、LD(Local  Destination)は、受信ノードアドレスであり、UT(Update  Time)は、該行の更新時間である。表5を例とすると、現在のノードは、ソースノードアドレスがN1であり、順番号がS1とE1との間であるデータパケットをすべてノードD1に転送し、最新の更新時間がT1である。
【００４０】
本実施例では、１つのノードが１つのデータパケットを受信し、ステップ101の判断により、ローカルノードがターニングポイントであるとのことを発見した時に、該ノードは、該データパケットのソースノードのアドレス、順番号、受信ノードアドレスを、その対応する行に保存し、また、該行の更新時間を更新し、これにより、該データパケットにマークを付けることを完成させる（ステップ102）。その後、該ノードは、再び１つのデータパケットを受信し、且つ、該データパケットのソースノードのアドレス、順番号が該ノードのターニングポイント履歴情報表に存在する時に、該データパケットにマークを付けていると確定し、即ち、該データパケットを転送したことがあると確定し、この時に、該ノードは、ルーティングループが発生したと判断し、ルーティングループの解決操作を行っても良い（ステップ103）。
【００４１】
そのうち、表5に示されている履歴情報表の構造は、例だけであり、本発明は、これに限定されない。例えば、他の実施例では、データパケットの順番号区間を保存せず、データパケットの順番号のみを表6（履歴情報表の構造その二）に示すように保存しても良い。ステップ101の判断により、ローカルノードがターニングポイントであると判断した時に、履歴情報表に該データパケットに対応する行がなければ、該データパケットのソースノードアドレス、順番号、受信ノードアドレスを１つの新しい行に保存し、また、該新しい行の更新時間を更新する。履歴情報表に該データパケットに対応する行があれば、該行の更新時間を更新するだけである。また、例えば、表5における受信ノードのアドレスもオプションであり、他の実施例では、該内容を保存せず、該データパケットのソースノードアドレス、順番号/順番号区間、及び更新時間だけを保存してもよく、受信したデータパケットにマークを付けているかどうかを判断する時に、これらの情報のみに基づいて判断を行う。
【表６】
2014239437.tif 000008
【００４２】
本実施例では、ルーティングループが発生したと確定した後に、ルーティングループの解決操作、例えば、データパケットを直接捨てる操作を行ってもよく、又は、ルーティング表の情報を更新してデータパケットを再転送する操作を行ってもよく、又は、前記ノードのローカルルーティング表における、前回前記データパケットを転送した時のルーティングノードのコストを最大と設定しても良く、その理由は、該ルーティング上でルーティングループが発生したので、該ルーティングがもう、データパケットの転送に適しないとのことにある。
【００４３】
本実施例におけるルーティングループを検出する方法をより明確にするために、以下、２つの例、即ち、ターニングポイントの情報をデータパケットに入れる方法で、データパケットにマークを付ける例、及び、データパケットの情報をターニングポイントの履歴情報表に入れる方法で、データパケットにマークを付ける例をそれぞれ挙げて、本実施例におけるルーティングループを検出する方法を詳しく説明する。
【００４４】
＜例一＞
本例では、ターニングポイントのアドレスをデータパケットに入れることで、データパケットにマークを付けることを例として、本発明の実施例におけるルーティングループを検出する方法を説明する。そのうち、データパケットのフレーム構造は、表2を例とし、ターニングポイントリストの構造は、表3を例とする。
【００４５】
図２Aは、例一におけるソースノードによって情報を送信する操作のフローチャートである。
【００４６】
図２Aを参照するに、ノードSは、ノードNにデータを送信する必要がある時に、先ず、ルーティング表から、目標ノードアドレスがNであり、且つ、ルーティングコストが最小であるルーティングノードを探し、ノードアドレスは、route_bestと記し、ルーティングコストは、cost_minと記す。その後、データパケットを構築し、GD=N、GS=S、LD=route_best、LS=S、Cost=cost_min、No=0であるようにさせ、最後に、該データパケットを送信する。
【００４７】
図２Bは、例一におけるソースノードによって情報を送信する他の操作のフローチャートである。
【００４８】
図２Bを参照するに、図２Aとの相違点は、この例では、データパケットを送信する前に、ノードSは、先ず、該データパケットにマークを付けることにあり、図２Bの例では、データパケットのフレーム構造を変更することによって、該データパケットにマークを付けるのである。例えば、そのGSを該データパケットに入れ、例えば、そのGSをターニングポイントリストに入れ、また、ターニングポイントの数に1をプラスする。マークを付ける具体的な方法については、上述の方法と同様であるため、ここでは、その詳しい説明を省略する。
【００４９】
図3は、ルーティングノードが該データパケット受信した後に、該データパケットにおけるデータを転送するプロセスのフローチャートである。
【００５０】
図3を参照するに、ノードRは１つの新しいデータパケットを受信した後に、先ず、データパケットの情報を解析し、データパケットの目標アドレスは、GDinと記し、ソースノードアドレスは、GSinと記し、送信ノードアドレスは、LSinと記し、受信ノードアドレスは、LDinと記し、期待ルーティングコストは、Cinと記し、ターニングポイントリストは、TPinである。
【００５１】
ノードRは、受信ノードLDinがRである（即ち、ローカルノードが該データパケットの受信ノードである）データパケットのみを処理し、他のデータパケットを捨てるべきである。ノードRが受信したデータパケットにはGDin=Rであれば、即ち、ノードRが該データパケットの目標ノードであれば、該ノードRは、該データパケットを上位層プロトコルに伝送すべきであり、そうでなければ、該ノードRは、データパケットを転送する必要がある。
【００５２】
転送時、ノードRは、先ず、該データパケットのターニングポイントリストTPinをチェックし、ノードRのアドレスが該データパケットのターニングポイントリストにあれば、データパケットが１つのルーティングループを通過し、ノードRが該データパケットを転送したことがあるとのことを表し、この場合、ノードRは、ルーティングループを検出し、ルーティングループの解決操作、例えば、該データパケットを捨てる操作を行う。ノードRのアドレスがターニングポイントリストになければ、ノードRは、該データパケットのためにルーティングを選択し、例えば、ルーティング表から、目標ノードアドレスがGDinであり、且つ、コストが最小であるノードを見つけ、ノードアドレスは、route_bestと記し、期待ルーティングコストは、cost_minと記す。
【００５３】
その後、ノードRは、データパケットを構築し、データパケットには、目標ノードアドレスがGDinであり、ソースノードアドレスがGSinであり、送信ノードアドレスがRであり、受信ノードアドレスがroute_bestである。
【００５４】
そのうち、cost_minがCin以上の時に、即ち、ノードRが該データパケットのために選択したルーティングのルーティングコストが、該データパケットの期待ルーティングコスト以上である時に、ノードRが該データパケットのターニングポイントであると確定し、ノードRは、その自分のアドレスをターニングポイントリストに追加し、No=No+1、TP_No=Rであるようになる。
【００５５】
最後に、該データパケットを送信する。
【００５６】
本例における方法は、ターニングポイントの情報をデータパケットに入れることにより、データパケットにマークを付ける。これにより、自分のアドレスが、受信したデータパケットにあるかどうかに基づいて、ルーティングループが発生しているかどうかを判断することができ、よって、ルーティングループの問題を迅速に解決し、通信リソースの浪費を避け、ネットワークの正常作動を保証することができる。
【００５７】
＜例二＞
本例では、データパケットの情報をターニングポイントの履歴情報表に保存する方法で、データパケットにマークを付けることを例として、本発明の実施例における方法について説明する。そのうち、データパケットのフレーム構造は、表4を例とし、ターニングポイントの履歴情報表の構造は、表5を例とする。
【００５８】
図４Ａは、例二におけるソースノードによって情報を送信する操作のフローチャートである。
【００５９】
図４Ａを参照するに、ノードSは、ノードNにデータを送信する必要がある時に、先ず、ルーティング表から、目標ノードアドレスがNであり且つルーティングコストが最小であるルーティングノードを見つけ、ノードアドレスは、route_bestと記し、ルーティングコストは、cost_minと記し、その後、データパケットを構築し、GD=N、GS=S、LD=route_best、LS=S、Cost=cost_minであるようにさせ、最後に、該データパケットを送信する。
【００６０】
図４Ｂは、例二におけるソースノードによって情報を送信する他の操作のフローチャートである。
【００６１】
図４Ｂを参照するに、図４Ａとの相違点は、該例では、データパケットを送信する前に、ノードSは、先ず、該データパケットにマークを付けることにあり、図２Bのマークを付ける方法との相違点は、図４Bの例では、履歴情報表を変更することによって該データパケットにマークを付けることにあり、例えば、そのGS、Seq及びroute_bestを履歴情報表にインサートする。具体的なマークを付ける方法は、上述と同様であるので、ここでは、詳しい説明を省略する。
【００６２】
図5は、ルーティングノードが該データパケットを受信した後に、該データパケットにおけるデータを転送するプロセスのフローチャートである。
【００６３】
図5を参照するに、ノードRは、１つの新しいデータパケットを受信した後に、先ず、データパケットの情報を解析し、データパケットの目標アドレスは、GDinと記し、ソースノードアドレスは、GSinと記し、送信ノードアドレスは、LSinと記し、受信ノードアドレスは、LDinと記し、期待ルーティングコストは、Cinと記し、データパケットの順番号は、Seqinである。
【００６４】
ノードRは、受信ノードLDinがR（即ち、ローカルノードが該データパケットの受信ノードである）であるデータパケットのみを処理し、他のデータパケットを捨てるべきである。ノードRが受信したデータパケットにはGDin=Rであれば、即ち、ノードRが該データパケットの目標ノードであれば、該ノードRは、該データパケットを上位層プロトコルに送信し、そうでなければ、該ノードRは、データパケットを転送する必要がある。
【００６５】
転送時に、ノードRは、先ず、ローカルに保存されているターニングポイント履歴情報表をチェックし、該データパケットが該履歴情報表にあれば、該データパケットが１つのルーティングループを経過したこと、即ち、ノードRが該データパケットを転送したことがあることを表し、この場合、ノードRは、ルーティングループの解決操作を行い、例えば、該ノードRは、ルーティング表を更新し、即ち、前回転送時のルーティングノードのコストを最大と設定する。該データパケットが該履歴情報表になければ、ノードRは、該データパケットのためにルーティングを選択し、例えば、ルーティング表から、目標ノードアドレスがGDinであり且つコストが最小であるノードを見つけ、ノードアドレスは、route_bestと記し、期待ルーティングコストは、cost_minと記す。
【００６６】
その後、ノードRは、データパケットを構築し、データパケットには、目標ノードアドレスがGDinであり、ソースノードアドレスがGSinであり、送信ノードアドレスがRであり、受信ノードアドレスがroute_bestである。
【００６７】
そのうち、cost_minがCin以上である時に、即ち、ノードRが該データパケットのために選択したルーティングのルーティングコストが、該データパケットの期待ルーティングコスト以上である時に、ノードRが該データパケットのターニングポイントであると確定し、ノードRは、（GSin、Seqin、route_best）を履歴情報表に追加する。
【００６８】
最後に、該データパケットを送信する。
【００６９】
図6は、ノードRが履歴情報表に新しい行を追加するプロセスのフローチャートである。
【００７０】
図6を参照するに、ノードRは、データパケットの情報（GSin、Seqin、route_best）を履歴情報表に挿入する時に、先ず、履歴情報表をルックアップする。
【００７１】
履歴情報表にはNi=GSin、Di=route_best、Ei=Seqin+1であれば、Niに対応する行を更新し、エンド順番号に1をプラスし、更新時間を現在の時間に更新する。
【００７２】
履歴情報表には上述の情報がなければ、新しい行を追加し、そのうち、ソースノードアドレスは、GSinであり、スタート順番号は、Seqinであり、エンド順番号は、Seqinであり、受信ノードアドレスは、route_bestであり、更新時間は、現在の時間である。
【００７３】
履歴情報表の某行を、一定時間を超えても更新してない時に、該行を削除する。この時に、１つのタイマーにより該操作を実現することができる。
【００７４】
本例の方法は、データパケットの情報をターニングポイントの履歴情報表に記憶することによって、データパケットにマークを付ける。これによって、受信したデータパケットの情報がターニングポイントの履歴情報表にあるかどうかに基づいて、ルーティングループが発生しているかどうかを判断することができるので、ルーティングループ問題を迅速に解決し、通信リソースの浪費を避け、ネットワークの正常作動を保証することがでｋる。
【００７５】
本発明の実施例は、ノードをも次の実施例2に記載のように提供する。該ノードが問題を解決する原理は、実施例1の方法に類似するので、その具体的な実施については、実施例1の方法の実施を参照することができるため、ここでは、内容が同じ部分の記載を省略する。
【実施例２】
【００７６】
本実施例は、Ad  Hocネットワークにおけるノードを提供する。図７、該ノードの構成図であり、図7を参照するに、該ノードは、次のようなユニットを含む。
【００７７】
解析ユニット71：受信したデータパケットにおける情報を解析し；
判断ユニット72：前記データパケットにおけるターニングポイントリスト又は履歴情報表におけるターニングポイント関連情報に基づいて、前記ノードが前記データパケットにマークを付けているかどうかを判断し；
処理ユニット73：前記ノードが前記データパケットにマークを付けている時に、ルーティングループが発生したと判断する。
【００７８】
１つの例では、該ノードは、さらに、次のようなユニットをも含む。
【００７９】
マーキングユニット74：前記ノードの生成したデータパケットにマークを付け、又は、前記判断ユニット72により、「前記ノードが、受信した前記データパケットにマークを付けておらず、且つ、前記ノードが、受信した前記データパケットのために選択したルーティングのコストが、前記データパケットの期待ルーティングコスト以上である」と判断した時に、受信した前記データパケットにマークを付ける。
【００８０】
そのうち、該マーキングユニット74は、前記ノードの情報を、生成したデータパケット又は受信したデータパケットのターニングポイントリストに追加することで、前記生成したデータパケット又は受信したデータパケットにマークを付けることができ、又は、生成したデータパケット又は受信したデータパケットの情報を、前記履歴情報表のターニングポイント関連情報に追加することで、生成したデータパケット又は受信したデータパケットにマークを付けることもできる。
【００８１】
１つの例では、該ノードは、さらに、次のようなユニットをも含む。
【００８２】
転送ユニット75：マーキングユニット74が前記ノードの生成したデータパケットにマークを付けた後に、前記データパケットを送信し、又は、前記マーキングユニット74が、受信した前記データパケットにマークを付けておらず、且つ、前記ノードが、受信した前記データパケットのために選択したルーティングのコストが、前記データパケットの期待ルーティングコスト以上である時に、マーキングされた後の前記データパケットを転送し；前記マーキングユニット74が、受信した前記データパケットにマークを付けていないが、前記ノードが、受信した前記データパケットのために選択したルーティングのコストが上述データパケットの期待ルーティングコストよりも小さい時に、前記データパケットを転送する。
【００８３】
そのうち、前記マーキングユニット74が、前記ノードのアドレスをデータパケットのターニングポイントリストに追加することで、データパケットにマークを付ける場合、マーキングされた後のデータパケットは、ソースノードアドレス、目標ノードアドレス、送信ノードアドレス、受信ノードアドレス、期待ルーティングコスト、ターニングポイント数、ターニングポイントリスト、データパケット順番号、データパケット長さ、及びデータ領域を含む。
【００８４】
そのうち、前記マーキングユニット74が、データパケットの情報を前記履歴情報表に追加することで、データパケットにマークを付ける場合、マーキングされた後のデータパケットは、ソースノードアドレス、目標ノードアドレス、送信ノードアドレス、受信ノードアドレス、期待ルーティングコスト、データパケット順番号、データパケット長さ、及びデータ領域を含む。
【００８５】
１つの例では、該ノードは、さらに、次のようなユニットをも含む。
【００８６】
データ構築ユニット76：前記転送ユニット75が、マーキングされた後の前記データパケットを転送する前に、又は、前記データパケットを転送する前に、前記データパケットのルーティングコストを前記データパケットに追加するために用いられ、これによって、該データパケットを受信したノードは、該データの解析に基づいて、ルーティングループが発生したかどうかを確定することができる。
【００８７】
１つの例では、前記処理ユニット73は、さらに、ルーティングループの発生を確定した後に、ルーティングループの解決操作を行い、例えば、前記ノードのローカルルーティング表における前回前記データパケットを転送した時のルーティングノードのコストを最大と設定する。
【００８８】
本実施例のノードは、データパケットにマークを付けることで、受信したデータパケットに基づいて、ルーティングループが発生しているかどうかを判断することができる。よって、ルーティングループの問題を迅速に解決し、通信リソースの浪費を避け、ネットワークの正常作動を保証することができる。
【００８９】
本発明の実施例は、さらに、通信ネットワークをも提供し、該通信ネットワークは、１つ又は複数の実施例2に記載のノードを含む。
【００９０】
本発明の実施例は、さらに、コンピュータ可読プログラムをも提供し、そのうち、端末装置において該プログラムを実行する時に、該プログラムは、コンピュータに、前記端末装置において実施例1に記載のルーティングループ検出方法を実行させる。
【００９１】
本発明の実施例は、さらに、コンピュータ可読プログラムを記憶した記憶媒体をも提供し、そのうち、該コンピュータ可読プログラムは、コンピュータに、端末装置において、実施例1に記載のルーティングループ検出方法を実行させる。
【００９２】
以上、本発明の好ましい実施形態を説明したが、本発明はこの実施形態に限定されず、本発明の趣旨を離脱しない限り、本発明に対するあらゆる変更は本発明の技術の範囲に属する。
【図１】
2014239437.tif 000009
【図２Ａ】
2014239437.tif 000010
【図２Ｂ】
2014239437.tif 000011
【図３】
2014239437.tif 000012
【図４Ａ】
2014239437.tif 000013
【図４Ｂ】
2014239437.tif 000014
【図５】
2014239437.tif 000015
【図６】
2014239437.tif 000016
【図７】
2014239437.tif 000017