(57)【特許請求の範囲】
【請求項１】
宛先解決や品質保証を各処理エンジンで分散して処理してパケットの送出順序を決定するルータ装置において、
パケット送出順序の決定を分散して処理を行なっているスケジューリングブロックをリング状に結び、パケットの送出情報を伝えることを特徴とするルータ装置。
【請求項２】
宛先解決や品質保証を各処理エンジンで分散して処理してパケットの送出順序を決定するルータ装置において、
スケジューリングブロックのパケットの送出情報受け渡しをメッシュ構成とすることを特徴とするルータ装置。
【請求項３】
受信したパケットのヘッダ情報を用いて出力するパケットのタイミング制御を行なう制御部を並列に備え、該並列に設けられた各制御部から出力されたパケットを出力順に出力ポートから出力するルーティング装置において、
受信したパケット及び該受信したパケットの受信順序情報を前記並列に設けられた制御部のいずれかに振り分ける振り分け手段を備え、
各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御する、
ことを特徴とするルーティング装置。
【請求項４】
受信したパケットのヘッダ情報を用いて出力するパケットのタイミング制御及び出力するポートを決定する制御部を並列に備え、該並列に設けられた各制御部から出力されたパケットを出力順に前記決定された出力ポートから出力するルーティング装置において、
受信したパケット及び該受信したパケットの受信順序情報を前記並列に設けられた制御部の何れかに振り分ける振り分け手段を備え、
各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御する、
ことを特徴とするルーティング装置。
【請求項５】
前記処理部は、少なくとも前記パケットのヘッダ情報を用いてパケットを何れかのフローに分類し、フロー毎に前記タイミング制御を行ない、
前記各制御部は、前記規制をフロー毎に区別して行なう、
ことを特徴とする請求項３又は４の何れかに記載のルーティング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はルーチングを行なう装置、特にルータ装置に関し、パケット順序逆転防止機能を備えたものに関する。ルータ装置は、入力されたパケットに対し、そのパケットの宛先を解決し、指定されたポートに対し出力する宛先解決処理や、通信品質として定義されている低遅延、帯域保証、転送保証、ジッタ保証等のサービスを行なうことが必要とされるが、ネットワークの速度が高速になってくると、１つの処理部（以下、処理エンジンと称する）で上記のような高機能を高速で処理することが不可能となってくる。そのため、複数のパケット処理エンジンを使用し、宛先解決や品質保証を分散して処理を行なうルータ装置が必要とされている。
【０００２】
【従来の技術】
図１１は従来システムの構成例を示す図である。図において、１０１がエッジルータ、１０２がコアルータ、１０６がユーザ網のネットワーク（ユーザサイト）となる。ユーザサイトは１〜６まで設けられている場合を示す。キャリアやプロバイダ網で使用されているルータは、各ユーザ網から受信／送信するデータの宛先解決や品質の保証を行なっている。このように構成されたシステムにおいて、例えばユーザサイト１〜ユーザサイト６の間でデータのやりとりを行なうことができる。
【０００３】
この種のシステムでは、近年のインターネットの普及及び高速化にともない、従来のように１つの処理エンジンで、受信した全てのパケットを処理することが不可能になってきた。
【０００４】
図１２は従来の分散処理の構成図であり、ルータ装置３００の構成を示している。この実施例は、高速処理を行なうために分散処理を行なっているルータ装置の構成を示している。ルータ装置３００は、パケットを入力する受信インタフェース３０１、パケットを分離すると共に各パケットに対してシーケンス番号を付加する分離部（デマルチプレクサ:ＤＭＵＸ）３０７と、該分離部３０７の出力を受けてパケットの制御を行なう処理エンジン３０８と、これら処理エンジン３０８の出力を受けてフレーム組み立て、待ち合わせを行なう多重化部（マルチプレクサ：ＭＵＸ）３０９と、該多重化部３０９の出力を受けて外部に送信する送信インタフェース３０６より構成されている。
【０００５】
処理エンジン１は、分離部３０７の出力を受けて宛先解決フローを付与する宛先解決・フロー決定部３０２と、該宛先解決・フロー決定部３０２の出力を受けるメモリ３０３、該メモリ３０３と接続され、スケジューリング（品質保証）を行なうスケジューリング部３０４及びメモリ３０３と接続され、フレーム（又はパケット）の送信処理を行なう送信処理部３０５とで構成されている。この処理エンジンの構成は、他の処理エンジン２〜４の構成と同じである。
【０００６】
受信インタフェース３０１で受信したパケットは、分離部３０７で、処理エンジンの処理性能に合わせ、パケット毎に振り分けが行なわれる。この時、各パケットに対してシーケンス番号が付与される。
【０００７】
振り分ける方法には、▲１▼１つのパケットを数ブロックに分解する方法と、▲２▼パケット単位に振り分ける方法がある。そして、パケットの入力順にシーケンス番号を付与して分散処理のブロックへ送出している。各処理エンジン３０８に入力されたパケットは、従来通り、宛先解決、フロー決定、スケジューリングが行なわれ、処理エンジン３０８よりパケットの送出が行なわれる。
【０００８】
送出されたパケットは、多重化部３０９でパケット毎に多重化するが、多重化する方法も振り分けに応じて２種類あり、ブロック単位に振り分ける場合には、本多重化部３０９でフレームを組み立てるためのパケットブロックの待ち合わせ及び並べ直しを行なう場合と、パケット単位に振り分ける場合には、シーケンス番号順に出力するために、パケットの待ち合わせを行なう場合があり、多重化されたパケットは、送信インタフェース３０６を通り、出力される。
【０００９】
分散処理において、分離部３０７のシーケンス番号付与、及び多重化部３０９の待ち合わせが必要な理由は、現在のＩＰ（インターネットプロトコル）のネットワークにおいては、ＴＣＰ（ネットワーク層のトランスポート層の通信プロトコル）のように、パケットが順番通りに到着することを期待しているパケットがあるためである。もし、順番通りにパケットを出力しなければ、順序逆転が発生してしまい、その結果、パケットの再送が発生し、無駄なトラフィックを増加させてしまう。
【００１０】
【発明が解決しようとする課題】
しかしながら、上記分散処理方式では、それぞれ以下のような問題が発生する。
【００１１】
１つのパケットをブロック単位に分解して処理する分散処理方式は、各処理ブロックに分解したパケットしか入力されないため、１パケット分のデータが必要な処理には対応できず、高機能な処理は実現できない。また、高速なネットワークに対応するために、高速な処理が必要とされる多重化部において、パケット組み立てを行なわなければならないため、高速なネットワークに対応できない。
【００１２】
また、パケット単位に振り分ける方式では、同一フロー（パケットの送り先、宛先、プロトコル等によって分類されるパケットの一連の流れ、グループ）に属するパケットであっても、異なる処理エンジンに振り分けられることもある。
【００１３】
しかしながら、フローは、送信／受信端末やパケットの種類等をもとに品質制御を行なうために決定されるが、同一フローのパケットについては、ＴＣＰのように、パケットが順番通りに到着することが期待される場合がある。
【００１４】
そのために、同一フローを違う処理エンジンで処理を行なった場合、パケットの出力順序を決定するスケジューリング部３０４が、各処理エンジン毎に独立して動作しているため、順番通りに出力されなければならないパケットが、順番通りに出力されず、順序逆転が発生してしまい、前述の期待に対応することができない。
【００１５】
また、出力側の多重化部でシーケンス番号通りにパケットの並び替えを行なうこととしても、やはり並び替えを高速に行なうことが難しく、高速なネットワークに対応できない。
【００１６】
本発明はこのような課題に鑑みてなされたものであって、パケットの順序逆転防止すると共に、高速な処理を行なうことができるルーティング装置及びルータ装置を提供することを目的としている。
【００１７】
【課題を解決するための手段】
（１）図１は本発明の原理ブロック図である。図１２と同一のものは、同一の符号を付して示す。図に示す装置はルーティング装置の一例としてのルータ装置の構成を示している。図において、３０１はパケットを受信する受信インタフェース、３０７は該受信インタフェース３０１の出力を受けてパケット毎に各処理エンジンに振り分け出力する分離部（ＤＭＵＸ）、３０８は該分離部３０７からのパケットを受信し、出力するパケットのタイミング制御を行なう制御部としての処理エンジンである。図では、＃１〜＃４までの４個の処理エンジンが並列に設けられている場合を示すが、これに限るものではない。任意の数の処理エンジンを設けることができる。
【００１８】
３０９は、各処理エンジン３０８からの出力を受けてパケットを各処理エンジンからの出力パケットを出力順に多重化する多重化部（ＭＵＸ）、３０６は該多重化部３０９の出力を受けて外部に送信する送信インタフェースである（図には示していないが、複数の出力ポートを有し、パケットを何れかの出力ポートから選択出力する機能を有する。）。４００は、各スケジューリング部４０４をリング状に接続するリング配線である。
【００１９】
各処理エンジン３０８において、３０２は分離部３０７からのパケットのヘッダ情報を用いて宛先解決（例えば、何れかの出力ポートから出力すべきかを設定する）とフローの決定（例えばパケットが何れのフローに属するか分類する）を行なう宛先解決・フロー決定部、３０３はパケットデータを記憶するメモリ、４０４はパケットのスケジューリングを行ない、品質保証を維持するためのスケジューリングを行なうスケジューリング部、３０５はメモリ３０３からの読み出しパケットを多重化部３０９に送出する送信処理部である。
【００２０】
このように構成すれば、各処理エンジンのスケジューリング部４０４をリング状に接続するリング配線４００を用いて各スケジューリング部（スケジューリングブロック）間でデータのやりとりを行なう。即ち、通信手段を有することによって、フロー番号や受信時に付加したシーケンス番号を基に、パケットの順序逆転を防止することができる。ここで、フロー番号とは、フローを識別するための識別情報である。
【００２１】
（２）請求項２記載の発明は、宛先解決や品質保証を各処理エンジンで分散して処理してパケットの送出順序を決定するルータ装置において、スケジューリングブロックのパケットの送出情報受け渡しをメッシュ構成とすることを特徴とする。
【００２２】
このように構成すれば、パケットの順序逆転を防止するための処理をより高速に行なうことができる。
（３）請求項３記載の発明は、受信したパケットのヘッダ情報を用いて出力するパケットのタイミング制御を行なう制御部を並列に備え、該並列に設けられた各制御部から出力されたパケットを出力順に出力ポートから出力するルーティング装置において、受信したパケット及び該受信したパケットの受信順序情報を前記並列に設けられた制御部のいずれかに振り分ける振り分け手段を備え、各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御することを特徴とする。
【００２３】
このように構成すれば、各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制することができる。
（４）請求項４記載の発明は、受信したパケットのヘッダ情報を用いて出力するパケットのタイミング制御及び出力するポートを決定する制御部を並列に備え、該並列に設けられた各制御部から出力されたパケットを出力順に前記決定された出力ポートから出力するルーティング装置において、受信したパケット及び該受信したパケットの受信順序情報を前記並列に設けられた制御部の何れかに振り分ける振り分け手段を備え、各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御することを特徴とする。
【００２４】
このように構成すれば、各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制することができる。
（５）請求項５記載の発明は、前記処理部は、少なくとも前記パケットのヘッダ情報を用いてパケットを何れかのフローに分類し、フロー毎に前記タイミング制御を行ない、前記各制御部は、前記規制をフロー毎に区別して行なうことを特徴とする請求項３又は４の何れかに記載のルーティング装置。
【００２５】
このように構成すれば、前記各制御部は、前記規制をフロー毎に区別して行なうようにすることができる。
この発明において、順序逆転をチェックする処理を、分散処理しているブロックで行なうことを特徴とする。
【００２６】
このように構成すれば、ルータ装置を複数の処理エンジンに分割して、分割されたエンジン毎に順序逆転をチェックする処理を並行して行なうことで、処理の高速化を図ることができる。
【００２７】
また、この発明において、パケット順序逆転のチェックを、ネットワークの品質保証を行なうブロックで行なうことを特徴とする。
このように構成すれば、パケット順序逆転のチェックを効率よく行なうことができる。
【００２８】
また、この発明において、前記各制御部は、他の制御部との間で通信を行なう通信手段を備え、各制御部は、該通信手段を用いて出力しようとするパケットに対応する前記受信順序情報を他の制御部に通知し、他の制御部は、該通信手段を用いて通知された情報である受信順序より先の順序のパケットが未出力である場合には、前記通信手段を用いて該出力しようとするパケットの出力の規制を促す通知を行ない、該規制を促されたパケットを出力しようとする制御部は、該規制を促されたパケットの出力を遅らせることで、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御することを特徴とする。
【００２９】
このように構成すれば、パケットの出力の順序規制を確実に行なうことができる。
【００３０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を詳細に説明する。
先ず、図１の原理ブロックについて詳細に説明する。パケットを受信した受信インタフェース３０１は、フレーム変換を行なうと同時に順序逆転検出用のシーケンス番号（パケットの受信順序情報の例として用いた）を各パケットに付与する。シーケンス番号を付与されたパケットは、分離部３０７で、パケット毎に各処理エンジン３０８へ振り分けられ（例えばランダム、各処理エンジンに対して）、宛先決定、品質保証制御が行われた後、出力される。即ち、インタフェース３０１、分離部３０７を振り分け手段として用いた。
【００３１】
その際、スケジューリング部４０４でパケットの出力順序が決定されるが、スケジューリング部４０４をリング状に接続するリング配線４００を使用し、フロー番号や受信時に付加したシーケンス番号をもとにパケットの順序逆転をチェックする。
【００３２】
本発明では、パケットの順序逆転を防止するためのシーケンス番号チェックは、分散処理を行なっているスケジューリング部４０４で行なっており、データを伝えるリングやチェック処理は、回線速度の１／ｎ（ｎは分散処理の個数）となっている。そのため、多重化部３０９では、出力されたデータをそのままインタフェース３０６へ入力順に出力するだけですみ、高度な処理が必要とされる部分は低速で処理できることから、高速なネットワークに対応することができる。
【００３３】
図２はシーケンス番号付与の説明図である。パケットが受信インタフェース３０１にＡ,Ｂ,Ｃ,Ｄの順で入力され、受信インタフェース３０１では、装置内バスのフォーマットへ置き換えるとともに、各パケットに対して入力順に０,１,２,３のシーケンス番号を付与し、装置が受信したパケットの順番をシーケンス番号をチェックすることにより可能としている。図の例の場合では、分離部３０７は順に入力されたパケットをフロー番号に従い図に示すように、それぞれの処理エンジンに入力している。
【００３４】
このように構成すれば、各処理エンジンをリング状に接続するリング配線４００を用いて各処理エンジン間でデータのやりとりを行なうことによって、フロー番号や受信時に付加したシーケンス番号を基に、パケットの順序逆転を防止することができる。
【００３５】
また、本発明によれば、ルータ装置３０８を複数の処理エンジンに分割して、分割されたエンジン毎に順序逆転をチェックする処理を並行して行なうことで、処理の高速化を図ることができる。
【００３６】
また、本発明によれば、パケット順序逆転のチェックを、ネットワークの品質保証を行なうブロックで行なうことができる。これにより、パケット順序逆転のチェックを効率よく行なうことができる。
【００３７】
図３はスケジューリング部のリング構成を示す図である。図では、＃１〜＃４までの４個のスケジューリング部４０４が設けられ、これらはリング配線４００でリング状に配線されている。図において、４００Ａはパケットの送信前に順序逆転の確認を行なう送信リクエストバス、４００Ｂはパケットの送出後、送信したことを伝える送信完了通知バスである。そして、これらリング配線は、＃１→＃２→＃３→＃４の順番でデータの受け渡しを行なっている。
【００３８】
図４はスケジューリング部４０４の一実施の形態例を示すブロック図である。図において、５０１は送信フロー信号を受けて、フローの振り分けを行なうフロー振り分け部、５０２は該フロー振り分け部５０１の振り分けに応じてフロー番号を保持するスケジューリングキュー、５０３は該スケジューリングキュー５０２からのパケットを保持するパケット出力待ちバッファ、５０４はパケット出力待ちバッファ５０３の出力を受けるパケット出力バッファである。パケット出力待ちバッファ５０３には送信リクエストバス４００Ａが接続され、パケット出力バッファ５０４には送信完了通知バス４００Ｂが接続されている。
【００３９】
また、パケット出力待ちバッファ５０３には送信リクエストバス４００Ａが接続され、パケット出力バッファ５０４には送信完了通知バス４００Ｂが出力されている。また、パケット出力バッファ５０４からは、パケット出力許可信号が出力されている。このように構成された回路の動作を説明すれば、以下の通りである。
【００４０】
メモリ３０３（図１参照）より受信した受信パケットのシーケンス番号、メモリ３０３へ書き込みを行なっているパケットの識別子、フロー番号は、フロー振り分け部５０１において、フロー毎にスケジューリングを行なうスケジューリングキュー５０２へ振り分けを行ないキューイングされる。この場合において、パケットデータそのものは、メモリ３０３に蓄えられており、スケジューリング部４０４には入ってこない。
【００４１】
キューイングされたデータは、他のキューイングされているデータとともにスケジューリングされ、パケットの出力順序決定が行なわれる。スケジューリングの結果、出力許可となったパケットのデータは、いったんパケット出力待ちバッファ５０３へ蓄えられ、その出力許可となったパケットのフロー番号とシーケンス番号を送信リクエストバス４００Ａに出力する。
【００４２】
例えば、スケジューリング部＃１で送出許可となったパケットのデータ（フロー番号、シーケンス番号）は、スケジューリング部＃２へ出力を行ない、スケジューリング部＃２では、スケジューリング部＃１より受信したフロー番号とシーケンス番号を基に、自分のスケジューリングキュー５０２にキューイングされている同一のフロー番号のシーケンス番号をチェックし、スケジューリング部＃１から受信したフロー番号のシーケンス番号より小さいシーケンス番号がキューに存在している場合は、順序逆転発生と判断する。この例だと若いシーケンス番号が後から出てくることになるから、順序逆転である。
【００４３】
順序逆転と判断された場合には、バス上のデータにＮＧを示す値を付加して次のスケジューリング部＃３へ出力する。同一フロー番号で大きい番号のみがキューに存在している場合にはＯＫを示す値を出力する。スケジューリング部＃３と＃４も同様のチェックを行ない、スケジューリング部＃１から出力した送信リクエストデータは再た＃１へ戻ってくる。スケジューリング部＃１は戻ってきたデータの＃２，＃３，＃４の結果から、全ての結果がＯＫを示す値であれば、パケット出力バッファ５０４に出力し、メモリ３０３に対してパケットの出力許可を行ない、パケットが出力される。即ち、メモリ３０３から読み出されたパケットデータは、送信処理部３０５を経て多重化部３０９へ送られ、多重化された後、送信インタフェース３０６から外部に出力される。
【００４４】
ここで、送信リクエストバス４００Ａより戻ってきたデータで、１つでもＮＧを示す値があれば、パケット出力待ちバッファ５０３に格納されたまま、待ち状態となる。即ち、パケットの出力の規制を行なう。出力待ちとなったデータは、送信完了通知バス４００Ｂで他のスケジューリング部で出力されたパケットのフロー番号を認識し、出力待ちとなっているフロー番号と同一のフロー番号のパケットがある場合、再度、送信リクエストバス４００Ａへ送信リクエストを他のスケジューリング部４０４へ送信することにより、順序逆転の確認を行なった後、パケットの送出許可を出力する。
【００４５】
図５は各バスのフォーマットを示す図である。スケジューリング部４０４が受信する送信フロー番号は、パケットを受信した時に付加される受信の順番を示すシーケンス番号と、メモリ３０３へ書き込みを行なっているパケットの識別を行なう識別子と、パケットの品質制御を行なうために必要なフロー番号で構成される。
【００４６】
メモリ３０３に対するパケットの送信許可は、シーケンス番号とメモリ３０３へ書き込んでいるパケットを識別するパケット識別子で構成される。フロー番号はもはや不要なので、パケットの送信許可には含まれていない。本データを受信したメモリ３０３は、パケット識別子で示したパケットをメモリ３０３から読み出し、送信処理部３０５を介して多重化部３０９へパケットの送出を行なう。
【００４７】
送信リクエストバス４００Ａは、各スケジューリング部４０４毎に帯域割り当てを行なっており、送信チェックを行なうフロー番号と、他のスケジューリング部のチェック結果で構成されている。例えば、スケジューリング部＃１であれば、送信を行ないたいパケットのフロー番号を割り当てられた信号のフロー番号の領域へ書き込みを行ない、多のスケジューリング部＃２，＃３，＃４の領域については受信したフロー番号のチェックを行なうため、スケジューリング部＃１で保持している同一のフロー番号のシーケンス番号とチェックを行ない、受信したシーケンス番号より小さいシーケンス番号を保持していれば、ＮＧを示す値をチェック＃１の記憶領域に書き込みを行ない、大きいシーケンス番号を保持又は、同一のフロー番号を保持していなければＯＫを示す値を書き込み、送出を行なう。
【００４８】
送信完了通知バス４００Ｂは、パケット出力許可の出力を行なったフロー番号を書き込み送信する。フロー番号を受信した他のスケジューリング部は、出力待ちとなっているフロー番号とチェックを行ない、同一のフロー番号が出力待ちとなっていれば、再度送信リクエストを送信する。このようにして、パケットの送出を促す。
【００４９】
なお、メモリ３０３はパケットに対応させて、宛先解決フロー決定部３０２による宛先解決により求めた出力ポート番号情報を記憶しており、送信処理部３０５は、多重化部３０９へパケットにあわせてその出力ポート情報を出力する。送信インタフェース部３０６は、出力ポート情報を用いて、パケットを複数のパケットのうちの対応するポートから選択出力する。
【００５０】
図６は本発明のスケジューリング部の詳細な一実施の形態例を示すブロック図である。全体構成については、図３に示す通りである。この実施の形態例は、分散して処理を行なうスケジューリング部（品質保証部）４０４を連携させて構成されている。
【００５１】
図において、９０１はメモリ３０３（図１参照）がパケットを受信し、そのパケットのシーケンス番号、識別子、フロー番号をスケジューリング部４０４へ出力し、スケジューリングの指示を行なうエンキュー指示（フロー番号をメモリに書くこと）を基に、受信したエンキュー指示をフロー番号毎に振り分けを行なうフロー振り分け部９０１である。９０２は振り分けられたエンキュー指示が、そのキューでの順番が先頭になるまで一旦メモリ９０２ａへ格納するキューバッファ、９０３は各キューの先頭の情報を送信順序決定部９０４へ見せるため、キューの先頭をデータを一旦メモリ９０２ａから読み出し、保持しておく先頭キューバッファである。
【００５２】
９０４は各キューの先頭のデータの情報から、次にどのキューからデータの読出しを行なうか決定を行なう送信順序決定部、９０５は該送信順序決定部９０４のスケジューリングの結果、先頭キューバッファ９０３のデータの選択を行なうキュー選択部、９０６はキュー選択部９０５で選択されたデータを、実際にパケットの出力状態になるまで保持を行なうパケット出力待ちバッファ、９０７は出力許可となったパケットについて、パケットを保持しているメモリ３０３へパケットの出力指示を行なうデキュー（フロー番号を読み出すこと）選択部である。
【００５３】
９０８は受信した送信リクエストバス４００Ａ上のスケジューリング結果と、自分で保持している先頭キューバッファを比較し、シーケンス番号のチェックを行なうシーケンス番号チェック部、９０９はパケット出力待ちバッファ９０６の状態と、シーケンス番号チェック部９０８のチェック結果より送信リクエストデータの生成を行なう送信リクエストバス組立て部、９１０はデキュー選択部９０７からデキュー指示より送信完了通知データの生成を行なう送信完了通知バス組立て部である。
【００５４】
１１１はデキュー選択部９０７の出力をラッチするフリップフロップ（ＦＦ）で、その出力はデキュー指示信号として外部に出力されると共に、送信完了通知バス組立て部１１０に入っている。送信リクエストバス組立て部９０９の出力には送信リクエストバス４００Ａが接続され、送信完了通知バス組立て部９１０の出力には送信完了通知バス４００Ｂが接続されている。シーケンス番号チェック部９０８へは送信リクエストバス４００Ａが接続され、送信リクエストバス組立て部９０９へは送信完了通知バス４００Ｂが接続されている。このように構成された回路の動作を説明すれば、以下の通りである。
【００５５】
ルータ装置に入力され、入力順にシーケンス番号が付加されたパケットは、そのパケットの品質保証を行なうために、一旦メモリ３０３へ保存され、スケジューリング部４０４からの出力待ち状態となる。パケットがメモリ３０３へ書き込まれると、そのパケットのスケジューリング指示を行なうため、メモリ３０３からスケジューリング部４０４に対してエンキュー指示が出力される。
【００５６】
エンキュー指示を受信したスケジューリング部４０４では、スケジューリング部４０４内のフロー振り分け部９０１において、受信したエンキュー指示のフロー番号（ナンバ）を検出し、該フロー番号に対応したキューバッファ９０２に対して出力を行なう。
【００５７】
キューバッファ９０２では、対応したフロー番号のエンキューデータを、内部メモリ９０２ａへ書き込む。メモリ９０２ａへの書き込み及び読み出しは、先に受信したデータから書き込みを行ない、読み出しは先に書き込まれたデータより読み出す。即ち、フロー番号単位には本キューバッファ９０２がＦＩＦＯ構成となるため、同一のフロー番号では順番は変わらない。
【００５８】
キューバッファ９０２において、各キューの先頭にきたデータは、送信順序決定部９０４でスケジューリングができるように、一旦先頭キューバッファ９０３へ書き込みを行ない、各キューの先頭の情報が送信順序決定部９０４から見えるようにしている。送信順序決定部９０４では、各フローのパケット情報を基にスケジューリングを行ない、どのキューからパケットを出力するか決定を行なう。
【００５９】
送信順序決定部９０４のスケジューリングの結果は、キュー選択部９０５へ出力され、先頭キューバッファ９０３のデータを選択し、選択されたデータは、分散処理を行なっている他のスケジューリング部４０４との順序逆転のチェックを行なうため、一旦パケット出力待ちバッファ９０６へ書き込まれる。パケット出力待ちバッファ９０６に書き込まれたデータは、分散処理を行なっている他のスケジューリング部４０４とのチェックの結果、そのパケットの順序逆転が発生していないと判断されれば、デキュー選択部９０７へ出力され、パケット出力待ちバッファ９０６で出力待ちとなっているデータの選択が行われた後、メモリ３０３へデキュー指示が出力される。
【００６０】
シーケンス番号チェック部９０８は、送信リクエストバス４００Ａから受信した、分散処理を行なっている他のスケジューリング部４０４で出力待ちとなっているパケットのシーケンス番号と、自分の先頭キューバッファ９０３で保持している受信したフロー番号と同じフロー番号のシーケンス番号とを比較する。比較する方法は、以下のとおりである。
【００６１】
即ち、受信したフロー番号とシーケンス番号と、先頭キューバッファ９０３で保持している、対応するフロー番号のシーケンス番号との大小比較を行ない、自分の先頭キューバッファ９０３で保持しているシーケンス番号の方が、他のスケジューリング部４０４より受信したフロー番号のシーケンス番号よりも大きい場合には、チェック結果をＯＫとし、自分のシーケンス番号の方が小さければ、チェック結果をＮＧとする。
【００６２】
このチェック結果は、送信リクエストバス４００Ａの生成のために、送信リクエストバス組み立て部９０９へ送信される。また、本シーケンス番号チェック部９０８では、送信リクエストバス４００Ａから受信する、自分の出力待ちバッファ９０６で出力待ちとなっているデータの、他のスケジューリング部４０４でのシーケンス番号チェック結果の分離を行ない、他のスケジューリング部のシーケンス番号チェック結果をデキュー選択部９０７へ出力する。デキュー選択部９０７では、分離され受信したチェック結果がＯＫであれば、対応するフロー番号のデータをデキュー指示としてメモリ３０３へ出力する。
【００６３】
送信リクエストバス組立て部９０９では、シーケンス番号チェック部９０８のチェック結果を受信し、パケット出力待ちバッファ９０６で新たに出力待ちとなったパケットのフロー番号とチェック結果を多重し、送信リクエストバス４００Ａとして送出する。また、本ブロック（スケジューリング部）では、送信完了通知バス４００Ｂ経由で受信する他のチップ（スケジューリング部）がデキューを行なったフロー番号をチェックし、パケット出力待ちとなっている同一のフロー番号のデキューリクエストを、再度送信リクエストバス４００Ａへ送出する。
【００６４】
送信完了通知バス組立て部９１０では、デキュー指示を行なったパケットのフロー番号を、分散処理を行なっている他のチップへ伝えるため、他のチップから受信する送信完了データに、自分がデキューしたフロー番号を多重し、送信完了通知バス４００Ｂとして送出する。
【００６５】
以上、説明したように、この実施の形態例によれば、パケットの入力時に付加されたシーケンス番号を基に、分散して処理を行なうスケジューリング部同士が、送信リクエストバス４００Ａと送信完了通知バス４００Ｂを介して、デキューしたいパケットのシーケンス番号のチェックを行なうことにより、出力パケットの順序逆転を防止する。
【００６６】
図７は本発明の第２の発明の原理ブロック図である。図１に示す第１の発明がリング状配線で接続されたものであるのに対して、本発明（第２の発明）は各スケジューリング部１００１をメッシュ配線で結ぶようにしたものである。図において、１００１はスケジューリング部で、ここでは＃１〜＃４までの４個が設けられている場合を示すが、これに限るものではない。任意の数を設けることができる。各スケジューリング部１００１は、分散処理を行なう各スケジューリング部と、送信リクエストバス、送信リクエスト返信バス、送信完了通知バスを介して１対１で接続されている。スケジューリング部１００１間はバス４１０Ａと４１０Ｂで相互接続されている。それぞれのバスは、図に示すような送信リクエストバス４１１と、送信リクエスト返信バス４１２と、送信完了通知バス４１３から構成されている。
【００６７】
図８は第２の発明の一実施の形態例を示すブロック図で、スケジューリング部の内部構成を示している。図７と同一のものは、同一の符号を付して示す。フロー振り分け部１１０１、キューバッファ１１０２、先頭キューバッファ１１０３、送信順序決定部１１０４、キュー選択部１１０５は、図６のフロー振り分け部９０１、キューバッファ９０２、先頭キューバッファ９０３、送信順序決定部９０４、キュー選択部９０５とそれぞれ同様である。
【００６８】
デキュー選択部１１０７は、シーケンス番号チェック結果処理部１１１１の各スケジューリング部１００１からの処理結果を基にデキュー指示を出力し、デキューしたことを、送信リクエストバス組立て部１１０９及び送信完了通知バス組立て部１１１０へ送出する。送信完了通知バス組立て部１１１０では、受信したデキュー指示の信号を基に他のスケジューリング部１００１に対してデキューを行なったパケットのフロー番号を通知する。
【００６９】
送信リクエストバス組立て部１１０９では、パケット出力待ちバッファ１１０６の状態を監視し、新たにデキュー待ちとなったパケットのデキューリクエストを他のスケジューリング部１００１に対して送出すると共に、一旦デキューが待ち状態となったパケットに対して他のスケジューリング部１００１からの送信完了のフロー番号を検出し、デキュー待ちとなっている同一のフロー番号がある場合は、再度送信リクエストを送出する。
【００７０】
シーケンス番号チェック結果処理部１１１１では、本スケジューリング部１００１から送信したデキューリクエスト要求に対して返信してきた全スケジューリング部のチェック結果の判定を行ない、全てＯＫであればデキュー選択部１１０７に対してＯＫであるフロー番号を通知し、デキューさせる。若し、ＮＧのスケジューリング部が一つでもあれば、デキュー待ちの指示を送信リクエストバス組み立て部１１０９へ通知し、他のスケジューリング部１００１が送信完了を通知してくるまで、そのフロー番号のパケットは送信待ちとなる。
【００７１】
＃２〜＃４のシーケンス番号チェック部１１０８では、分散処理を行なっている他のスケジューリング部１００１からの送信リクエスト要求を受信して、自分の保持している同一フロー番号のシーケンス番号と比較し、自分の保持しているシーケンス番号が小さければＮＧを、大きければＯＫを送信リクエスト返信バス４１２（図７参照）を介して通知する。
【００７２】
以上、説明したように、この実施の形態例では、各バスをリング構成ではなく、各スケジューリング部１００１と１対１で接続することにより、リクエストの発信から返信までの時間を短かくすることができ、装置内遅延の短縮や、スケジューリング結果と実際のパケット送出時間の誤差を小さくすることができる。従って、パケットの順序逆転を防止するための処理をより高速に行なうことができる。
【００７３】
図９は本発明システムの他の構成例を示すブロック図である。図１２と同一のものは、同一の符号を付して示す。ルータ装置３００は、パケットを入力する受信インタフェース３０１、パケットを分離すると共に各パケットに対してシーケンス番号を付加する分離部（デマルチプレクサ:ＤＭＵＸ）３０７と、該分離部３０７の出力を受けてパケットの制御を行なう処理エンジン３０８と、これら処理エンジン３０８の出力を受けてフレーム組み立て、待ち合わせを行なう多重化部（ＭＵＸ）３０９と、該多重化部３０９の出力を受けて外部に送信する送信インタフェース３０６より構成されている。
【００７４】
処理エンジン１は、分離部３０７の出力を受けて宛先解決フローを付与うる宛先解決・フロー決定部３０２と、該宛先解決・フロー決定部３０２の出力を受けるパケットを格納するメモリ３０３と、該メモリ３０３と接続され、スケジューリング（品質保証）を行なうスケジューリング部４５０及びフレーム（又はパケット）の送信処理を行なう送信処理部３０５とで構成されている。
【００７５】
前述した実施の形態例では、他のスケジューリング部に対する送信完了通知を、スケジューリング部からメモリ３０３に対するデキュー指示により送信していたが、送信側よりバックプレッシャー信号（パケット送出禁止信号）を受信した場合には、実際のパケット送出時にパケットの順序が逆転する場合がある。
【００７６】
そのため、図９に示すように、送信側のバックプレッシャーがある場合には、実際にパケットを送出したことを送信処理部３０５より送信完了通知として受信することで、パケット出力の順序逆転を防止している。
【００７７】
図１０はスケジューリング部の他の実施の形態例を示すブロック図である。図６と同一のものは、同一の符号を付して示す。図６の実施の形態例では、他のスケジューリング部に対してパケットを送信したことを通知する送信完了通知バス４００Ｂの生成をデキュー指示より生成していたが、本実施の形態例では、送信完了通知をトリガに生成を行なっている。図において、送信完了通知バス組み立て部９１０に送信処理部３０５で生成した送信完了通知信号が入力されている点が図６の場合と異なる。
【００７８】
以上の構成により、実際にパケットを送出してから他のスケジューリング部に対して送信完了を通知することから、同じフローのパケット送信間隔は、前述の実施の形態例に比べて広くなる（パケットの送出が遅くなる）が、送信側でバックプレッシャーを受信した場合においても、順序逆転をすることなく、パケットの送出が行なえることで、信頼性が高くなる。
（付記１）  宛先解決や品質保証を各処理エンジンで分散して処理してパケットの送出順序を決定するルータ装置において、
パケット送出順序の決定を分散して処理を行なっているスケジューリングブロックをリング状に結び、パケットの送出情報を伝えることを特徴とするルータ装置。
（付記２）  宛先解決や品質保証を各処理エンジンで分散して処理してパケットの送出順序を決定するルータ装置において、
スケジューリングブロックのパケットの送出情報受け渡しをメッシュ構成とすることを特徴とするルータ装置。
（付記３）  受信したパケットのヘッダ情報を用いて出力するパケットのタイミング制御を行なう制御部を並列に備え、該並列に設けられた各制御部から出力されたパケットを出力順に出力ポートから出力するルーティング装置において、
受信したパケット及び該受信したパケットの受信順序情報を前記並列に設けられた制御部のいずれかに振り分ける振り分け手段を備え、
各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御する、
ことを特徴とするルーティング装置。
（付記４）  受信したパケットのヘッダ情報を用いて出力するパケットのタイミング制御及び出力するポートを決定する制御部を並列に備え、該並列に設けられた各制御部から出力されたパケットを出力順に前記決定された出力ポートから出力するルーティング装置において、
受信したパケット及び該受信したパケットの受信順序情報を前記並列に設けられた制御部の何れかに振り分ける振り分け手段を備え、
各制御部は、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御する、
ことを特徴とするルーティング装置。
（付記５）  前記処理部は、少なくとも前記パケットのヘッダ情報を用いてパケットを何れかのフローに分類し、フロー毎に前記タイミング制御を行ない、
前記各制御部は、前記規制をフロー毎に区別して行なう、
ことを特徴とする付記３又は４の何れかに記載のルーティング装置。
（付記６）  順序逆転をチェックする処理を、分散処理しているブロックで行なうことを特徴とする付記１記載のルータ装置。
（付記７）  パケット順序逆転のチェックを、ネットワークの品質保証を行なうブロックで行なうことを特徴とする付記１記載のルータ装置。
（付記８）  前記各制御部は、他の制御部との間で通信を行なう通信手段を備え、
各制御部は、該通信手段を用いて出力しようとするパケットに対応する前記受信順序情報を他の制御部に通知し、
他の制御部は、該通信手段を用いて通知された情報である受信順序より先の順序のパケットが未出力である場合には、前記通信手段を用いて該出力しようとするパケットの出力の規制を促す通知を行ない、
該規制を促されたパケットを出力しようとする制御部は、該規制を促されたパケットの出力を遅らせることで、前記受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制するように前記タイミングを制御する、
ことを特徴とする付記５又は６の何れかに記載のルーティング装置。
【００７９】
【発明の効果】
以上説明したように、本発明によれば以下の効果が得られる。
（１）請求項１記載の発明によれば、各処理エンジンをリング状に接続するリング配線を用いて各処理エンジン間でデータのやりとりを行なうことによって、フロー番号や受信時に付加したシーケンス番号を基に、パケットの順序逆転を防止することができる。
【００８０】
（２）請求項２記載の発明によれば、パケットの順序逆転を防止するための処理を高速に行なうことができる。
（３）請求項３記載の発明によれば、各制御部は、受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制することができる。
【００８１】
（４）請求項４記載の発明によれば、各制御部は、受信順序情報を用いて、他の制御部が未出力のパケットより後に受信したパケットの出力を規制することができる。
【００８２】
（５）請求項５記載の発明によれば、各制御部は、規制をフロー毎に区別して行なうようにすることができる。
このように、本発明によれば、パケットの順序逆転防止すると共に、高速な処理を行なうことができるルーティング装置及びルータ装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の原理ブロック図である。
【図２】シーケンス番号付与の説明図である。
【図３】スケジューリング部のリング構成を示す図である。
【図４】スケジューリング部の一実施の形態例を示すブロック図である。
【図５】各バスのフォーマットを示す図である。
【図６】本発明のスケジューリング部の一実施の形態例を示すブロック図である。
【図７】本発明の第２の発明の原理ブロック図である。
【図８】第２の発明のスケジューリング部の一実施の形態例を示すブロック図である。
【図９】本発明システムの他の構成例を示すブロック図である。
【図１０】スケジューリング部の他の実施の形態例を示すブロック図である。
【図１１】従来システムの構成例を示す図である。
【図１２】従来の分散処理の構成図である。
【符号の説明】
３０１  受信インタフェース
３０２  宛先・解決フロー決定部
３０３  メモリ
３０５  送信処理部
３０６  送信インタフェース
３０８  処理エンジン
４００  リング配線
４０２  宛先解決・フロー決定部
４０３  メモリ
４０４  スケジューリング部
４０５  送信処理部
【図１】
0003854132.tif 000002
【図２】
0003854132.tif 000003
【図３】
0003854132.tif 000004
【図４】
0003854132.tif 000005
【図５】
0003854132.tif 000006
【図６】
0003854132.tif 000007
【図７】
0003854132.tif 000008
【図８】
0003854132.tif 000009
【図９】
0003854132.tif 000010
【図１０】
0003854132.tif 000011
【図１１】
0003854132.tif 000012
【図１２】
0003854132.tif 000013