(57)【要約】【課題】ネットワーク上において輻輳が発生している地点を特定する。【解決手段】データの送信元である第一の通信装置と、前記データの宛先である第二の通信装置と、前記データを中継する一つ以上の中継装置と、が、セグメントルーティングによって前記データを送受信する通信方法。前記中継装置は、前記データを中継する際に、自装置における輻輳の発生有無を検出し、輻輳が発生している場合に、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、輻輳の発生を意味する第一のフラグをセットし、前記第二の通信装置は、受信したデータが有するルーティングヘッダ中に、前記第一のフラグがセットされているセグメントＩＤが存在する場合に、前記セグメントＩＤに対応する中継装置において輻輳が発生していると判定する。【選択図】図５
2020022139.tif 000002
【特許請求の範囲】
【請求項１】
データの送信元である第一の通信装置と、前記データの宛先である第二の通信装置と、前記データを中継する一つ以上の中継装置と、が、セグメントルーティングによって前記データを送受信する通信方法であって、
前記中継装置は、前記データを中継する際に、自装置における輻輳の発生有無を検出し、輻輳が発生している場合に、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、輻輳の発生を意味する第一のフラグをセットし、
前記第二の通信装置は、受信したデータが有するルーティングヘッダ中に、前記第一のフラグがセットされているセグメントＩＤが存在する場合に、前記セグメントＩＤに対応する中継装置において輻輳が発生していると判定する、
通信方法。
【請求項２】
前記第二の通信装置は、
受信した前記データに基づいて、前記データの伝送経路上に、輻輳が発生している中継装置があると判定した場合に、前記データを送信した前記第一の通信装置に、当該中継装置において輻輳が発生している旨を通知する通知データを送信する、
請求項１に記載の通信方法。
【請求項３】
前記第二の通信装置は、前記通知データを送信する際に、
前記第一のフラグを消去し、かつ、前記第一のフラグとは異なる領域に第二のフラグをセットする、
請求項２に記載の通信方法。
【請求項４】
前記通知データを受信した前記第一の通信装置は、
前記輻輳が発生している中継装置を経由するデータの量を減少させる措置を講じる、
請求項２または３に記載の通信方法。
【請求項５】
前記中継装置は、自装置において輻輳を検知した場合に、前記データを送信した前記第一の通信装置に、当該中継装置において輻輳が発生している旨を通知する第二の通知データを送信する、
請求項２から４のいずれかに記載の通信方法。
【請求項６】
前記中継装置は、前記通知データを送信した場合において、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、既に輻輳の発生を送信元に通知したことを意味する第三のフラグをセットする、
請求項５に記載の通信方法。
【請求項７】
前記第二の通信装置は、
受信した前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、前記第三のフラグがセットされているものがある場合、対応する中継装置については、前記通知データを生成しない、
請求項６に記載の通信方法。
【請求項８】
データの送信元である第一の通信装置と、前記データの宛先である第二の通信装置と、前記データを中継する一つ以上の中継装置と、が、セグメントルーティングによって前記データを送受信する通信システムであって、
前記中継装置は、
前記データを中継する際に、自装置における輻輳の発生有無を検出する検出手段と、
輻輳が発生している場合に、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、輻輳の発生を意味する第一のフラグをセットする通知手段と、を有し、
前記第二の通信装置は、
受信したデータが有するルーティングヘッダ中に、前記第一のフラグがセットされているセグメントＩＤが存在する場合に、前記セグメントＩＤに対応する中継装置において輻輳が発生していると判定する判定手段と有する、
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。
【背景技術】
【０００２】
複数の装置がパケットを中継することで通信を行うネットワークにおいて、経路上で輻輳が発生していることを検知する技術がある。例えば、ＴＣＰ／ＩＰには、輻輳情報通知機能 （ＥＣＮ）が定義されており、これにより、輻輳のためバッファが満たされている
中継装置がネットワーク上に存在することを検知することができる。
【０００３】
また、特許文献１には、ＥＣＮを利用して、ＵＤＰなど、ＩＰネットワークにおけるコネクションレス型プロトコルを利用する場合において輻輳を通知する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−０１５２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、技術の発達に伴い、ネットワークの状況に合わせた動的なルーティングが可能になっている。しかし、従来の技術においては、通信装置は、パケットの転送経路上において輻輳が発生していることを検出することはできるが、経路上のどの中継装置において輻輳が発生しているかを具体的に検出することはできない。
すなわち、従来の技術では、輻輳が発生している中継装置を回避して経路を動的に再生成することが容易ではないという点において課題があった。
【０００６】
本発明は上記の課題を考慮してなされたものであり、ネットワーク上において輻輳が発生している地点を特定することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る通信方法は、
データの送信元である第一の通信装置と、前記データの宛先である第二の通信装置と、前記データを中継する一つ以上の中継装置と、が、セグメントルーティングによって前記データを送受信する通信方法であって、前記中継装置は、前記データを中継する際に、自装置における輻輳の発生有無を検出し、輻輳が発生している場合に、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、輻輳の発生を意味する第一のフラグをセットし、前記第二の通信装置は、受信したデータが有するルーティングヘッダ中に、前記第一のフラグがセットされているセグメントＩＤが存在する場合に、前記セグメントＩＤに対応する中継装置において輻輳が発生していると判定することを特徴とする。
【０００８】
また、本発明に係る通信システムは、
データの送信元である第一の通信装置と、前記データの宛先である第二の通信装置と、前記データを中継する一つ以上の中継装置と、が、セグメントルーティングによって前記データを送受信する通信システムであって、前記中継装置は、前記データを中継する際に、自装置における輻輳の発生有無を検出する検出手段と、輻輳が発生している場合に、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に
対応するセグメントＩＤ中に、輻輳の発生を意味する第一のフラグをセットする通知手段と、を有し、前記第二の通信装置は、受信したデータが有するルーティングヘッダ中に、前記第一のフラグがセットされているセグメントＩＤが存在する場合に、前記セグメントＩＤに対応する中継装置において輻輳が発生していると判定する判定手段と有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ネットワーク上において輻輳が発生している地点を特定することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る通信システムの全体構成図である。
【図２】第一の実施形態に係る通信装置１０の機能構成図である。
【図３】第一の実施形態に係る中継装置２０の機能構成図である。
【図４】実施形態にて送信されるパケットの模式図である。
【図５】データの転送過程で書き換わるセグメントＩＤを説明する図である。
【図６】通信装置１０が行うパケット送信処理を示すフローチャートである。
【図７】通信装置１０が行うパケット受信処理を示すフローチャートである。
【図８】通信装置１０が行う輻輳通知処理を示すフローチャートである。
【図９】中継装置２０が行う処理を示すフローチャートである。
【図１０】第二の実施形態におけるセグメントＩＤを説明する図である。
【図１１】第二の実施形態で中継装置２０が行う処理を示すフローチャートである。
【図１２】第二の実施形態で通信装置１０が行うパケット受信処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
本発明に係る通信方法は、データの送信元である第一の通信装置と、前記データの宛先である第二の通信装置と、前記データを中継する一つ以上の中継装置と、が、セグメントルーティングによって前記データを送受信する通信方法である。
セグメントルーティングは、パケットの転送経路を示すセグメントＩＤをヘッダに付して送信するという特徴を持っており、これにより、パケットの送信元となる装置が、パケットの送信経路を柔軟に指定することが可能となる。
【００１２】
具体的には、中継装置が、データを中継する際に、自装置における輻輳の発生有無を検出し、輻輳が発生している場合に、ルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、輻輳の発生を意味する第一のフラグをセットする。また、第二の通信装置は、受信したデータが有するルーティングヘッダ中に、第一のフラグがセットされているセグメントＩＤが存在する場合に、対応する中継装置において輻輳が発生していると判定する。
【００１３】
ルーティングヘッダには、複数の中継装置に対応する複数のセグメントＩＤが存在する。そこで、中継装置が、輻輳を検知した場合に、自装置に対応するセグメントＩＤに、輻輳の発生を意味するフラグをセットしてパケットを中継する。かかる構成によると、受信側において、どの中継装置において輻輳が発生しているかを判定できるようになる。
【００１４】
また、前記第二の通信装置は、受信した前記データに基づいて、前記データの伝送経路上に、輻輳が発生している中継装置があると判定した場合に、前記データを送信した前記第一の通信装置に、当該中継装置において輻輳が発生している旨を通知する通知データを送信することを特徴としてもよい。
パケット（データ）受信側に位置する通信装置が輻輳の発生を判定できるため、どの中
継装置において輻輳が発生しているかを、パケット（データ）送信側に折り返し通知することが可能になる。また、これにより、経路の再設定やデータレートの抑制といった措置を講じることが可能になる。
【００１５】
また、前記第二の通信装置は、前記通知データを送信する際に、前記第一のフラグを消去し、かつ、前記第一のフラグとは異なる領域に第二のフラグをセットすることを特徴としてもよい。
【００１６】
受信したデータに第二のフラグがセットされていることは、パケットを受信した第二の通信装置によって第一のフラグが検出され、フラグが付け替えられたことを意味する。かかる構成によると、輻輳が発生した際のデータの送信方向（第一の通信装置が送信元であるパケットを伝送する過程で輻輳が発生したのか、第一の通信装置に宛てたパケットを伝送する過程で輻輳が発生したのか）を、第一の通信装置が識別することができる。
【００１７】
また、前記通知データを受信した前記第一の通信装置は、前記輻輳が発生している中継装置を経由するデータの量を減少させる措置を講じることを特徴としてもよい。
輻輳が発生している中継装置を経由するデータを減少させる措置として、例えば、データ送信の中断、データレートの抑制、送信経路の切り替えなどが挙げられるが、これ以外であってもよい。
【００１８】
また、前記中継装置は、自装置において輻輳を検知した場合に、前記データを送信した前記第一の通信装置に、当該中継装置において輻輳が発生している旨を通知する第二の通知データを送信することを特徴としてもよい。
【００１９】
このように、中継装置が輻輳を検知した場合に、ただちに通知データを第一の通信装置に送信するようにしてもよい。かかる構成によると、輻輳の発生をいち早く通知することが可能になる。
【００２０】
また、前記中継装置は、前記通知データを送信した場合において、前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、自装置に対応するセグメントＩＤ中に、既に輻輳の発生を送信元に通知したことを意味する第三のフラグをセットすることを特徴としてもよい。
また、前記第二の通信装置は、受信した前記データが有するルーティングヘッダに含まれる複数のセグメントＩＤのうち、前記第三のフラグがセットされているものがある場合、対応する中継装置については、前記通知データを生成しないことを特徴としてもよい。
【００２１】
中継装置が通知データを送信した場合、第二の通信装置が通知データを生成する必要がなくなる。よって、既に輻輳の発生を通知したことを知らせる第三のフラグをセットするようにしてもよい。
【００２２】
（第一の実施形態）
第一の実施形態に関して、図面を参照して説明する。図１は、第一の実施形態に係る通信システムの全体構成図である。図示したように、第一の実施形態に係る通信システムは、複数の通信装置１０が、複数の中継装置２０を有するネットワークを介してパケットを送受信するシステムである。
【００２３】
なお、図１では、通信装置１０Ａと通信装置１０Ｂを図示しているが、両者は同一の装置である。本実施形態では、最初にパケットを生成して送信する側を通信装置１０Ａとし、当該パケットを受信する側を通信装置１０Ｂとするが、区別する必要がない場合は、通信装置１０と称する。また、図１では、複数の中継装置２０Ａ，２０Ｂ，２０Ｃ・・・を
図示しているが、いずれも同一の装置である。区別する必要がない場合は、中継装置２０と称する。
【００２４】
本実施形態では、通信装置１０および中継装置２０は、ＳＲｖ６によるセグメントルーティングを行う。セグメントルーティングとは、パケットに含まれるセグメントＩＤ（必要に応じてＳＩＤと表記）によってトラフィック制御を行うルーティング方式であり、ネットワークをセグメントによって表現することで、シンプルで柔軟な制御の実現を目指したルーティング方式である。このうち、ＩＰｖ６拡張ヘッダを利用してセグメントを表現したものをＳＲｖ６と称する。
【００２５】
まず、本実施形態に係る通信装置１０の機能構成を、図２を参照しながら説明する。
通信装置１０は、送信パケット生成部１１、ヘッダ設定部１２、送信制御部１３、送信部１４、受信部１５、ヘッダ読取部１６を有して構成される。
【００２６】
通信装置１０は、ＣＰＵ（演算処理装置）、主記憶装置、補助記憶装置、ネットワークインタフェースを有する情報処理装置として構成することができる。補助記憶装置に記憶されたプログラムが主記憶装置にロードされ、ＣＰＵによって実行されることで、図２に図示した各手段が機能する。なお、図示した機能の全部または一部は、専用に設計された回路を用いて実行されてもよい。
【００２７】
送信パケット生成部１１は、通信相手となる通信装置１０に向けたデータを含んだパケットを生成する手段である。本実施形態では、送信パケット生成部１１は、ＩＰｖ６に規定されたフォーマットに従ってパケットを生成する。
【００２８】
ヘッダ設定部１２は、送信パケット生成部１１が生成したパケットに、セグメントルーティングにおいて利用されるヘッダを付加する手段である。具体的には、パケットを経由させる複数の中継装置を特定し、当該複数の中継装置に対応する複数のセグメントＩＤのリストを生成し、当該リストを、セグメントルーティングヘッダに挿入する。
【００２９】
送信制御部１３は、後述するヘッダ読取部１６が読み取った情報に基づいて、自装置が送信したパケットを他の通信装置１０に伝送する過程で輻輳が発生したことを検知し、輻輳を回避する措置を講じる手段である。輻輳を回避する措置として、例えば、送信の一時停止、送信データレートの抑制、輻輳が発生している中継装置の迂回などがあるが、これらに限られない。
また、送信制御部１３は、他の通信装置１０が送信したパケットが自装置に伝送される過程で輻輳が発生したことを検知し、当該他の通信装置１０に対して輻輳の発生を通知する機能を有する。詳細な処理については後述する。
【００３０】
送信部１４は、ヘッダ設定部１２が生成したヘッダに従って、生成されたパケットをネットワークに送出する手段である。
受信部１５は、自装置に宛てられたパケットをネットワークから受信する手段である。
送信部１４および受信部１５は、装置に備えられたネットワークインタフェースを介してパケットを送受信する。
ヘッダ読取部１６は、受信したパケットに含まれるセグメントルーティングヘッダを参照し、ネットワークにおける輻輳の有無を判定する手段である。判定結果は、送信制御部１３にフィードバックされ、輻輳を回避する措置、または、他の通信装置１０への通知が実行される。詳細な処理については後述する。
【００３１】
次に、本実施形態に係る中継装置２０の機能構成を、図３を参照しながら説明する。
中継装置２０は、受信部２１、経路制御部２２、輻輳検知部２３、送信部２４を有して
構成される。
【００３２】
受信部２１は、ネットワークを介して送信されたパケットを受信する手段である。また、送信部２４は、中継装置２０において処理されたパケットをネットワークに送出する手段である。受信部２１および送信部２４は、装置に備えられたネットワークインタフェースを介してパケットを送受信する。
【００３３】
経路制御部２２は、受信したパケットの転送先を判断し、ＩＰｖ６ヘッダおよびセグメントルーティングヘッダを書き換える手段である。
輻輳検知部２３は、中継装置２０が送出しようとしているパケットの送信側が輻輳しているか否かを判定する手段である。輻輳検知部２３は、輻輳の発生を検出した場合に、セグメントルーティングヘッダに含まれる自装置のセグメントＩＤに、輻輳が発生していることを通知する情報を追加する。これにより、ネットワーク上のどの地点で輻輳が発生しているかについての情報をパケットに含ませることが可能になる。
中継装置２０を通過したパケットは、次のホップ先（他の中継装置２０、または、宛先となる通信装置１０）へ転送される。
【００３４】
図４は、ＳＲｖ６によって送信されるパケットのデータフォーマットを示した図である（基本ヘッダの一部は省略）。当該パケットは、図示したように、宛先アドレス（Destination address）、送信元アドレス（Source address）、セグメントルーティングヘッダ
（Segment ID）を有して構成される。セグメントルーティングヘッダは、ルーティングを行うための要求に関する情報が格納される空間であり、Locator、Function、Argument等
の情報を格納することができる。Locatorは、例えば、要求を実行するノードの識別子が
格納されるフィールドである。また、Functionには、要求の識別子（例えば、ルーティングを行うノードが実行すべき関数の識別子）が格納される。本実施形態では、Functionに格納された値に基づいて、各中継装置２０が輻輳検知を行う。
また、Argumentには、要求を実行する際にノードが利用するデータを格納することができる。これらの情報の配置は、セグメントルーティングヘッダのサイズ（１２８ｂｉｔ）内で自由に設計することができる。例えば、ノードごとに異なるFunctionやArgumentを定義することも可能であるし、複数のノードが共用するFunctionやArgumentを定義することもできる。
【００３５】
本実施形態では、Argumentに、輻輳検知に関するデータを格納する。具体的には、図示したように、ｂ，ｎ，ｃ0，ｃ1の４ビットを定義する。当該データは、セグメントＩＤごとに設定される。すなわち、パケットが通過する中継装置２０のそれぞれについて、４ビットのデータ空間が確保される。
【００３６】
本実施形態では、パケットの中継過程において中継装置２０が輻輳を検知した場合に、自装置に対応するセグメントＩＤに含まれるビットｃ1の値に１をセットする。これによ
り、当該パケットを受信する全ての装置が、当該セグメントＩＤに対応する中継装置２０において輻輳が発生していることを認識することができる。例えば、当該パケットの宛先である通信装置１０Ｂが、輻輳の発生を認識することができる。
【００３７】
ここで、輻輳の発生を１ビットだけで識別しようとした場合、輻輳が発生した際のパケットの伝送方向を判別できないという問題が発生する。
例えば、パケットを受信した通信装置１０Ｂが、パケットを送信した通信装置１０Ａに対して輻輳の発生を通知することを考える。この場合、セグメントルーティングヘッダの内容をそのまま送り返すと、往路と復路で同じビットが使用されてしまうため、ある中継装置２０で輻輳が発生していることはわかるが、往路で輻輳が発生したのか、復路で輻輳が発生したのかを判定することができない。
そこで、本実施形態では、輻輳を通知するビットを二つ（ｃ0およびｃ1）設け、伝送方向によって異なるビットを使用する。
【００３８】
具体的な動作について、図５を参照しながら説明する。
ここでは、通信装置１０Ａにおいて生成されたパケットが、中継装置２０Ａおよび２０Ｂを経由し、通信装置１０Ｂに送信される例を考える。
Ａ：：１は、通信装置１０ＡのＩＰｖ６アドレスを表す。
また、Ｂ：：１は、通信装置１０ＢのＩＰｖ６アドレスを表す。
また、Ｓ１：：ｅｃ：０は、中継装置２０ＡのセグメントＩＤである。
また、Ｓ２：：ｅｃ：０は、中継装置２０ＢのセグメントＩＤである。
前述したように、セグメントＩＤは、ノードの識別子（Locator）と、要求の識別子（Function）と、要求を実行するノードが利用する情報（Argument）から構成される。すな
わち、Ｓ１およびＳ２が、中継装置２０の識別子である。また、ｅｃは、輻輳の検知を行う関数の識別子である。Argumentは、初期状態では０である。
【００３９】
通信装置１０Ａからパケットが送出されたタイミング（１）では、送信元アドレス（以下、ＳＡ）はＡ：：１であり、宛先アドレス（以下、ＤＡ）は、次のホップ先となる中継装置２０ＡのセグメントＩＤ（Ｓ１：ｅｃ：０）となる。なお、ＳＬは、セグメントルーティングヘッダに含まれるセグメントＩＤのリストを意味する。図示した例では、中継装置２０Ａ（Ｓ１）および中継装置２０Ｂ（Ｓ２）を経由してパケットが転送される旨が示されている。
【００４０】
中継装置２０Ａからパケットが送出されたタイミング（２）では、ＤＡが、次のホップ先となる中継装置２０ＢのセグメントＩＤ（Ｓ２：ｅｃ：０）に変化する。この書き換えは、中継装置２０Ａにおいて実行される。
【００４１】
ここで、中継装置２０Ｂの出力インタフェースにおいて輻輳が検知されたものとする。
この場合、中継装置２０Ｂが有する輻輳検知部２３が、自装置に対応するセグメントＩＤのArgumentに含まれるビットｃ1の値に１をセットする。ここで、（ｂ，ｎ，ｃ0，ｃ1
）＝（０，０，０，１）となるため、Argumentの値は１となる。すなわち、中継装置２０Ｂに対応するセグメントＩＤが、Ｓ２：：ｅｃ：１に書き換えられる。
【００４２】
通信装置１０Ｂは、自装置を宛先とするパケットを受信すると、受信したパケットに含まれるセグメントルーティングヘッダを参照し、輻輳が発生している中継装置の有無を確認する。ここで、ビットｃ1の値が１であるセグメントＩＤがあった場合、対応する中継
装置において輻輳が発生していることが分かる。
【００４３】
かかる場合において、通信装置１０Ｂは、経路上で輻輳が発生している旨を通知するパケット（以下、輻輳通知パケット）を生成し、通信装置１０Ａに対して送信する。
具体的には、対応するセグメントＩＤのArgumentに含まれるビットｃ1の値を０に戻し
、ビットｃ0の値に１をセットする。
このようなビット列を持つ輻輳通知パケットを通信装置１０Ａに送信することで、通信装置１０Ａは、自装置が送信元であるパケットを伝送する過程で輻輳が発生したのか、自装置に宛てたパケットを伝送する過程で輻輳が発生したのかを認識することができる。
【００４４】
例えば、通信装置１０Ａが受信したパケットに含まれるセグメントルーティングヘッダに、ビットｃ1の値に１がセットされたセグメントＩＤが含まれていた場合、通信装置１
０Ａは、自装置に向けたパケットの伝送経路上で輻輳が発生したことを認識することができる。また、ビットｃ0の値に１がセットされたセグメントＩＤが含まれていた場合、自
装置が送信元であるパケットの伝送経路上で輻輳が発生し、これを検知した通信相手が自
装置に向けて通知を行っていることを認識することができる。
このように、輻輳の発生を示すビットを２種類設けることで、輻輳が発生した際のパケットの送信方向を判別することが可能になる。
【００４５】
なお、通信装置１０Ｂは、輻輳通知パケットを生成する際に、さらに、ビットｎの値に１をセットする。ビットｎは、輻輳の通知のみを行う（ペイロードが付属していない）パケットであることを表すビット（通知のみビット）である。
すなわち、図５におけるタイミング（４）では、（ｂ，ｎ，ｃ0，ｃ1）＝（０，１，１，０）となるため、中継装置２０Ｂに対応するセグメントＩＤのArgumentの値は６となる。ビットｎは、通知を行う宛先の通信装置１０における利便性を考慮して付加されるものである。なお、輻輳通知パケットに、他のデータを相乗りさせることも可能である。その場合、ビットｎの値は０となる。
【００４６】
このようにして生成された輻輳通知パケットは、往路と逆方向の経路をたどり、通信装置１０Ａに到着する。
【００４７】
図５の例の場合、通信装置１０Ａは、往路において輻輳が発生したこと、および、中継装置２０Ｂにおいて輻輳が発生したことを認識することができる。なぜなら、中継装置２０Ｂに対応するセグメントＩＤのArgumentにおいて、ビットｃ0に１が設定されているた
めである。なお、ビットｃ0が０であり、ビットｃ1に１が設定されていた場合、通信装置１０Ｂが送信したパケットが自装置に到達するまでの間に輻輳が発生していることになる。
【００４８】
次に、通信装置１０が実行するパケット送信処理について、図６のフローチャートを参照しながら説明する。
まず、ステップＳ１１で、送信パケット生成部１１が、送信するパケットを生成する。
次に、ステップＳ１２で、ヘッダ設定部１２が、当該パケットの送信経路を生成し、セグメントルーティングヘッダを設定する。
次に、ステップＳ１３で、送信制御部１３が、当該パケットの送信経路上にある中継装置２０に関連する輻輳通知を既に受信しているか否かを判定する。
ここで、関連する輻輳通知を受信していない場合、送信制御部１３が、任意のアルゴリズムに従って送信レートを増加させ（ステップＳ１４）、ステップＳ１５において、送信部１４を介してパケットを送信する。
【００４９】
ステップＳ１３で、輻輳通知を受信していた場合、送信制御部１３が、任意のアルゴリズムに従って送信レートを低下させ、もしくは、送信を一旦中断させる（ステップＳ１６）。
ステップＳ１７では、送信が中断されており、かつ、送信中断を継続するか否かを判定する。送信の中断を継続する場合（ステップＳ１７−Ｙｅｓ）、送信すべきデータをキューに蓄積する（ステップＳ１８）。送信が中断されていない場合や、送信を再開する場合（ステップＳ１７−Ｎｏ）、ステップＳ１５でデータの送信を実行する。なお、キューに蓄積されたデータは、このタイミングで送信される。
【００５０】
次に、通信装置１０が実行するパケット受信処理について、図７のフローチャートを参照しながら説明する。図７の処理は、受信部１５が、自装置に宛てたパケットを受信したタイミングで開始される。
まず、ステップＳ２１で、ヘッダ読取部１６が、受信したパケットに含まれるセグメントルーティングヘッダに、ビットｎの値に１がセットされたセグメントＩＤが存在しないことを判定する。
ここで、否定判定であった場合、受信したパケットは、輻輳通知を行うためだけのパケ
ットであることがわかるため、次いで、該当するセグメントＩＤのビットｃ0の値に１が
セットされているか否かを判定する（ステップＳ２２）。ここで肯定判定であった場合、対応する中継装置２０において輻輳が発生しているため、ステップＳ２３へ遷移し、送信制御部１３が、輻輳を回避する措置を講じる。なお、ステップＳ２２で否定判定であった場合、データ異常と判定し、パケットを破棄する（ステップＳ２４）。輻輳通知パケットは、必ずビットｃ0がセットされているはずだからである。
【００５１】
ステップＳ２１で肯定判定であった場合、ステップＳ２５へ遷移し、受信したパケットに含まれるセグメントルーティングヘッダに、ビットｃ0またはビットｃ1の値に１がセットされたセグメントＩＤが存在しないことを判定する。ここで肯定判定であった場合、輻輳は発生していないため、ステップＳ３０へ遷移し、ペイロードに配置されているデータを処理する。
【００５２】
ステップＳ２５で否定判定であった場合、ステップＳ２６へ遷移し、セグメントルーティングヘッダに、ビットｃ1の値に１がセットされたセグメントＩＤが存在するか否かを
判定する。ここで否定判定となるケースは、ビットｃ0の値に１がセットされたセグメン
トＩＤが存在し、かつ、ビットｃ1の値に１がセットされたセグメントＩＤが存在しない
ケースである。当該ケースは、自装置が送信元であるパケットを伝送する過程で発生した輻輳を通信相手が検知し、通信相手が自装置に向けて通知を行っているケースであるため、ステップＳ２７へ遷移し、送信制御部１３が、輻輳を回避する措置を講じたのちに、ステップＳ３０でデータの処理を行う。
【００５３】
ステップＳ２６で肯定判定となるケースは、相手側の通信装置１０から送信されたパケットが自装置に到達するまでの間に輻輳が発生しているケースであるため、ステップＳ２８へ遷移し、相手側の通信装置１０に対して輻輳の通知を行う処理（以下、輻輳通知処理）を実行する（後述）。
その後、ステップＳ２９で、セグメントルーティングヘッダに、ビットｃ0の値に１が
セットされたセグメントＩＤが存在するか否かを判定する。ここで肯定判定であった場合、通信相手からも輻輳が通知されていることを意味するため、ステップＳ２７へ遷移し、自装置も、輻輳を回避する措置を講じる。最後に、ステップＳ３０で、ペイロードに配置されているデータを処理する。
【００５４】
次に、ステップＳ２８で行う輻輳通知処理について、図８のフローチャートを参照しながら説明する。
相手側の通信装置１０に対して輻輳の通知を行う場合、まず、ステップＳ４１で、輻輳が発生している中継装置２０に対応するセグメントＩＤを特定し、当該セグメントＩＤのArgumentに含まれるビットｃ0の値に１をセットし、かつ、ビットｃ1の値に０をセットする。
次に、ステップＳ４２で、相手側の通信装置１０に対して送信するデータがあるか否かを判定する。ここで否定判定であった場合、ビットｎの値に１をセットし（ステップＳ４３）、相手側の通信装置１０に対して輻輳通知パケットを送信する（ステップＳ４４）。
【００５５】
ステップＳ４２で肯定判定であった場合（送信するデータがある場合）、ステップＳ４５へ遷移し、輻輳に起因した送信中断中であるか否かを判定する。ここで、送信中断中である場合、データの送信は行えないため、ステップＳ４３へ遷移し、輻輳通知パケットのみを送信する。送信中断中でない場合、ビットｎの値に０をセットし（ステップＳ４６）、相手側の通信装置１０に対してデータパケットを送信する（ステップＳ４７）
【００５６】
次に、中継装置２０がパケットを中継する処理について、図９のフローチャートを参照しながら説明する。
まず、ステップＳ５１で、受信部２１がパケットを受信する。
ステップＳ５２では、経路制御部２２が、受信したパケットに含まれるセグメントルーティングヘッダを参照し、宛先アドレスを書き換える処理（ヘッダ処理）を行う。
次に、ステップＳ５３で、経路制御部２２が、保持している経路表を参照し、パケットの出力インタフェースを決定する。
次に、ステップＳ５４で、輻輳検知部２３が、出力先として決定したインタフェースに輻輳が発生しているか否かを判定する。ここで肯定判定であった場合、自装置に対応するセグメントＩＤのArgumentに含まれるビットｃ1の値に１をセットする（ステップＳ５５
）。
その後、ステップＳ５６で、送信部２４がパケットを出力インタフェースに出力する。ステップＳ５４で否定判定であった場合、ステップＳ５６へ遷移する。
【００５７】
以上説明したように、第一の実施形態によると、セグメントルーティングを用いた通信システムにおいて、ネットワーク上で輻輳が発生している箇所を、パケットの宛先である通信装置１０に通知することができる。また、当該パケットを送信した通信装置１０に対しても、輻輳の発生有無および発生箇所を通知することができる。
特に、輻輳が発生した際のパケットの送信方向を判別することができるため、各通信装置が、輻輳を抑制するための適切な対策を講じることが可能になる。
【００５８】
（第二の実施形態）
第一の実施形態では、パケットを受信した通信装置１０Ｂが輻輳通知パケットを生成し、当該パケットを送信した通信装置１０Ａに送信した。これに対し、第二の実施形態は、中継装置２０が、中継の過程において輻輳通知パケットを生成し、送信元である通信装置１０Ａに送り返す実施形態である。
【００５９】
第二の実施形態における動作について、図１０を参照しながら説明する。
ここでは、通信装置１０Ａにおいて生成されたパケットが、中継装置２０Ａおよび２０Ｂを経由し、通信装置１０Ｂに送信される例を考える。
タイミング（１）におけるデータの内容は、第一の実施形態と同様である。
【００６０】
ここで、中継装置２０Ａの出力インタフェースにおいて輻輳が検知されたものとする。
この場合、中継装置２０Ａが有する輻輳検知部２３が、通信装置１０Ａに対する輻輳通知パケットを生成する。（４）に示したように、輻輳通知パケットは、中継装置２０Ａを送信元とし、通信装置１０Ａを宛先としたパケットである。中継装置２０Ａは、自装置に対応するセグメントＩＤのArgumentに含まれるビットｎの値に１をセットし、ビットｃ0
の値に１をセットする。ここで、（ｂ，ｎ，ｃ0，ｃ1）＝（０，１，１，０）となるため、Argumentの値は６となる。すなわち、中継装置２０Ａに対応するセグメントＩＤは、Ｓ１：：ｅｃ：６となる。当該輻輳通知パケットによると、第一の実施形態と同様に、通信装置１０Ａが、輻輳の発生箇所と方向を認識することができる。
【００６１】
第二の実施形態では、中継装置２０が輻輳通知パケットを送信するため、通信装置１０Ｂが輻輳通知パケットを送信することを抑制しなければならない。そこで、第二の実施形態では、中継装置２０Ａが、既に輻輳の通知を行ったことを表すビットに値を設定する。
図４に示したビットｂは、伝送経路上において、輻輳通知パケットを折り返し送信したことを示すビット（折返しビット）である。
中継装置２０Ａは、中継対象のパケットについて、自装置に対応するセグメントＩＤのArgumentに含まれるビットｂの値に１をセットし、ビットｃ1の値に１をセットする。こ
こで、（ｂ，ｎ，ｃ0，ｃ1）＝（１，０，０，１）となるため、Argumentの値は９となる。すなわち、中継装置２０Ａに対応するセグメントＩＤは、Ｓ１：：ｅｃ：９となる。当該パケットを受信した通信装置１０Ｂは、既に中継装置２０Ａによって輻輳通知パケット
が送信されたことを認識することができる。
【００６２】
第二の実施形態において中継装置２０がパケットを中継する処理について、図１１のフローチャートを参照しながら説明する。なお、第一の実施形態と同一のステップについては、点線で図示し説明は省略する。
【００６３】
第二の実施形態では、出力インタフェースに輻輳が発生していた場合、ステップＳ５７で、中継装置２０が輻輳通知パケットを生成する。具体的には、自装置に対応するセグメントＩＤのArgumentに含まれるビットｎの値に１を、ビットｃ0の値に１をセットする。
【００６４】
次に、ステップＳ５８で、輻輳通知パケットを、中継対象のパケットを送信した通信装置１０に送信する。
次に、ステップＳ５９で、中継対象のパケットについて、自装置に対応するセグメントＩＤのArgumentに含まれるビットｂの値に１を、ビットｃ1の値に１をセットする。
【００６５】
次に、第二の実施形態において通信装置１０が実行するパケット受信処理について、図１２のフローチャートを参照しながら説明する。図１２の処理は、受信部１５が、自装置に宛てたパケットを受信したタイミングで開始される。
まず、ステップＳ６１で、ヘッダ読取部１６が、受信したパケットに含まれるセグメントルーティングヘッダに、ビットｂの値に１がセットされたセグメントＩＤが存在しないことを判定する。ここで肯定判定であった場合、中継装置２０による輻輳通知は行われていないため、処理は図７へ遷移し、第一の実施形態と同様の処理が行われる。
【００６６】
ステップＳ６１で否定判定であった場合、受信したパケットに含まれるセグメントルーティングヘッダに、ビットｎの値に０がセットされ、ビットｃ1の値に１がセットされた
セグメントＩＤが存在するか判定する（ステップＳ６２）。ここで否定判定であった場合、データ異常と判定し、パケットを破棄する（ステップＳ６３）。
ステップＳ６２で肯定判定であった場合、ステップＳ６４でデータの処理を行う。
次に、受信したパケットに含まれるセグメントルーティングヘッダに、ビットｃ0の値
に１がセットされたセグメントＩＤが存在するか判定する（ステップＳ６５）。ここで、肯定判定であった場合、ステップＳ６６において、輻輳を回避する措置を講じる。否定判定であった場合と、ステップＳ６３が終了した場合、および、ステップＳ６６が終了した場合、処理は初期状態に戻る。
【００６７】
以上説明したように、第二の実施形態によると、中継装置２０が輻輳を検知した場合に、パケットを送信した通信装置１０Ａに輻輳通知パケットを送信する。これにより、輻輳の発生を通信装置１０Ａにいち早く通知することができる。
【００６８】
（変形例）
本開示において説明した処理や手段は、技術的な矛盾が生じない限りにおいて、自由に組み合わせて実施することができる。
【００６９】
また、１つの装置が行うものとして説明した処理が、複数の装置によって分担して実行されてもよい。あるいは、異なる装置が行うものとして説明した処理が、１つの装置によって実行されても構わない。コンピュータシステムにおいて、各機能をどのようなハードウェア構成（サーバ構成）によって実現するかは柔軟に変更可能である。
【００７０】
本発明は、上記の実施形態で説明した機能を実装したコンピュータプログラムをコンピュータに供給し、当該コンピュータが有する１つ以上のプロセッサがプログラムを読み出して実行することによっても実現可能である。このようなコンピュータプログラムは、コ
ンピュータのシステムバスに接続可能な非一時的なコンピュータ可読記憶媒体によってコンピュータに提供されてもよいし、ネットワークを介してコンピュータに提供されてもよい。非一時的なコンピュータ可読記憶媒体は、例えば、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクドライブ（ＨＤＤ）等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤディスク・ブルーレイディスク等）など任意のタイプのディスク、読み込み専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード、フラッシュメモリ、光学式カード、電子的命令を格納するために適した任意のタイプの媒体を含む。
【符号の説明】
【００７１】
１０・・・通信装置
１１・・・送信パケット生成部
１２・・・ヘッダ設定部
１３・・・送信制御部
１４，２４・・・送信部
１５，２１・・・受信部
１６・・・ヘッダ読取部
２０・・・中継装置
２２・・・経路制御部
２３・・・輻輳検知部
【図１】
2020022139.tif 000003
【図２】
2020022139.tif 000004
【図３】
2020022139.tif 000005
【図４】
2020022139.tif 000006
【図５】
2020022139.tif 000007
【図６】
2020022139.tif 000008
【図７】
2020022139.tif 000009
【図８】
2020022139.tif 000010
【図９】
2020022139.tif 000011
【図１０】
2020022139.tif 000012
【図１１】
2020022139.tif 000013
【図１２】
2020022139.tif 000014