PPPoEのプロトコルを用いた通信システムの一例の構成の概要を図10に示す。
図10に示すように、インターネット1には、ブロードバンド接続業者2のサーバが接続されている。家庭や事業所の通信設備は、光ケーブルやADSL(Asymmetric Digital Subscriber Line)3を通じてブロードバンド接続業者2と接続され、このブロードバンド接続業者2を通じてインターネット1に接続される。
家庭や事業所においては、光ケーブルやADSL3は、ブロードバンドモデム/回線終端装置4を通じてルータ5に接続される。ルータ5には、例えばイーサーネット(登録商標)からなるLAN(Local Area Network)を通じて複数台のパーソナルコンピュータ6やゲーム機7が接続されている。
この図10のシステム構成において、ルータ5がPPPoEの機能を備えていれば、複数のパーソナルコンピュータ6からインターネット1に直接にアクセスすることができる。その場合のPPPoEクライアントは、ルータ5である。この場合に、ブロードバンドモデム/回線終端装置4は、PPPoEブリッジと呼ばれる中継装置を備える。
なお、ゲーム機7がPPPoEの機能を備えていれば、ゲーム機7は、ブロードバンドモデム/回線終端装置4のPPPoEブリッジを通じて、ルータ5を介さずにPPPoEパケットの転送ができる。
この通信システムにおけるPPPoEでのシーケンスは、例えば特許文献1(特開2003−333064号公報)に示されているように、図11に示すようなものとなる。また、PPPoEフレームのフォーマットは、図12に示すようなものとなっている。先ず、図12のPPPoEフレームのフォーマットについて説明する。
図12に示すように、PPPoEフレームは、宛先アドレス「DESTINATION_ADDR」、送信元アドレス「SOURCE_ADDR」、パケット種別「ETHER_TYPE」、データ「payload」、エラー検出用のチェックサム「CHECKSUM」とからなる。宛先アドレス「DESTINATION_ADDR」、送信元アドレス「SOURCE_ADDR」、パケット種別「ETHER_TYPE」は、PPPoEフレームのヘッダ部である。
パケット種別「ETHER_TYPE」は、管理用パケットと、データ通信用のパケットとを判別するための判別情報である。具体的には、このパケット種別「ETHER_TYPE」が、「0x8863」であるときには、そのパケットは、管理用パケット(Discovery Stage(PPPoEセッションの開始時))であることを示しており、「0x8864」であるときには、そのパケットは、データ通信用パケット(PPP Session Stage(PPPによる通信時)であることを示している。
したがって、このパケット種別「ETHER_TYPE」が上記のいずれであるかを認定することにより、パケットが管理用のパケットであるか、データ通信用のパケットであるかを判別することができる。
データ「payload」は、バージョン「VER」と、タイプ「TYPE」と、パケットのセッションの状態を示すコード「CODE」と、PPPoEのセッション識別情報(セッションID(Identification))「SESSION_ID」と、ペイロードの長さの情報「LENGTH」とからなるヘッダ部と、データ部としてのペイロード「payload」とからなる。
セッションIDは、通信を開始しようとする2点間で接続されるパケット伝送路を識別するための伝送路識別情報である。セッションは、ここでは、仮想的な伝送路を意味するものとする。
コード「CODE」は、図12に示すように、5個のセッションの状態を示すものとされている。すなわち、「CODE」は、PADI(PPPoE Active Discovery Initiation)と、PADO(PPPoE Active Discovery Offer)と、PADR(PPPoE Active Discovery Request)と、PADS(PPPoE Active Discovery Session−confirmation)と、PADT(PPPoE Active Discovery Terminate)との5種のコード情報のいずれかとなる。
次に、図11を参照して、PPPoEでの通信シーケンスを説明する。図11において、PPPoEクライアントは、図10のルータなどである。PPPoEサーバは、ブロードバンド接続業者2のサーバである。
(1)先ず、PPPoEクライアントは、PPPoEサーバを探すパケット(「CODE」がPADIのパケット;以下、PADIパケットという)をブロードキャストで送信する。
(2)PPPoEサーバは、これに対して返答のパケット(「CODE」がPADOのパケット;以下、PADOパケットという)を、PPPoEクライアントに返す。
(3)PPPoEクライアントは、この返答のPADOパケットにより、PPPoEサーバが特定できるので、その特定したPPPoEサーバに、セッションの開始を要求するパケット(「CODE」がPADRのパケット;以下、PADRパケットという)を送る。
(4)このPADRパケットを受け取ったPPPoEサーバは、通信を開始しようとする伝送路についてのセッションIDを設定し、当該セッションIDを含めたセッションIDを通知するのためのパケット(「CODE」がPADSのパケット;以下、PADSパケットという)を、PPPoEクライアントに返す。
以上の(1)−(4)までのシーケンス(PPPoEセッションステージ)により、PPPoEサーバは、セッションを確立するPPPoEクライアントの宛先アドレス「DESTINATION_ADDR」を特定し、また、セッションIDの設定およびセッションIDのPPPoEクライアント端末への通知を行う。
以上のPPPoEセッションステージの次には、PPPセッションステージのシーケンスが行われる。
(5)先ず、LCP(Link Control Protocol)によりネゴシエーションを行い、データリンク(パケット伝送路)を確立する。
(6)次に、認証を行う。
(7)次に、PPPのネゴシエーションが開始され、IPCP(Internet Protocol Control Protocol)ネゴシエーションにより、インターネット1上のグローバルIPアドレスの割り当てが行なわれる。
(8)そして、PPPによる通信が開始される。
PPPoEクライアントとPPPoEサーバとの間では、上述した(1)−(4)のPPPoEセッションステージでは、管理用のパケットがやり取りされ、それ以降の上述した(5)−(8)のPPPセッションステージでは、データ通信用のパケットがやり取りされる。
前述したブロードバンドモデム/回線終端装置4のPPPoEブリッジは、図11に示すように、PPPoEクライアントとPPPoEサーバとの間に設けられて、両者の間におけるパケットの中継を行うものである。
ところで、従来のPPPoEブリッジ10は、図13に示すように、WAN(Wide Area Network)側インターフェース11と、LAN側インターフェース12と、ブリッジ部13とで構成されている。
図10の例の場合、WAN側インターフェース11は、インターネット側に接続されるインターフェースであり、LAN側インターフェース12は、ルータ5に接続されるインターフェースである。
ブリッジ部13は、マイクロコンピュータやDSP(Digital Signal Processor)などで構成されており、ソフトウエア処理により、管理用のパケットと、データ通信用のパケットとを、両者の区別なく、WAN側インターフェース11からLAN側インターフェース12に、あるいはその逆に、図10において、点線矢印で示すように中継転送するようにしている。
上記の特許文献は、次の通りである。
特開2003−333064号公報
以下、この発明による中継装置の実施形態を、上述した図10の通信システムの、ブロードバンドモデム/回線終端装置4に設けられるPPPoEブリッジに適用した場合を例に取って、図を参照しながら説明する。
図1は、この発明による中継装置の実施形態としてのPPPoEブリッジ20の構成の概要を示すブロック図である。図1に示すように、この実施形態のPPPoEブリッジ20は、前述した従来例のPPPoEブリッジ部10のWAN側インターフェース11およびLAN側インターフェース12と同様のWAN側インターフェース21およびLAN側インターフェース22を備える。
そして、この実施形態のPPPoEブリッジ20においては、前述した従来例のPPPoEブリッジ部10のブリッジ部10は、管理パケットブリッジ部23と、データパケットブリッジ部24との2つに分け、管理パケットブリッジ部23は、WAN側インターフェース21およびLAN側インターフェース22に対して、データパケットブリッジ部24を介して接続されるように構成する。
データパケットブリッジ部24は、WAN側インターフェース21またはLAN側インターフェース22から到来するPPPoEパケットが、管理用のパケットであるか、データ通信用のパケットであるかを判定する機能を備える。
そして、データパケットブリッジ部24は、WAN側インターフェース21またはLAN側インターフェース22から到来するPPPoEパケットが、管理用のパケットであると判定したときには、当該管理用のパケットを管理パケットブリッジ部23に渡すようにする。
また、データパケットブリッジ部24は、WAN側インターフェース21またはLAN側インターフェース22から到来するPPPoEパケットが、データ通信用のパケットであると判定したときには、当該データ通信用のパケットは、管理パケットブリッジ部23には渡さずに、自己のブリッジ部24内を透過(転送中継)させるようにする。
つまり、この実施形態のPPPoEブリッジ20においては、管理パケットブリッジ部23は、管理用のパケットのみを取り扱い、データ通信用のパケットは、データパケットブリッジ部24のみを透過するように構成される。
すなわち、管理用のパケットは、図1において、点線矢印25で示すように、管理パケットブリッジ部23により、WAN側インターフェース21とLAN側インターフェース22との間における中継転送(以下、WAN側インターフェース21とLAN側インターフェース22との間における中継転送をブリッジ転送という)がなされる。また、データ通信用のパケットは、図1において、点線矢印26で示すように、データパケットブリッジ部24により、ブリッジ転送がなされる。
この結果、この実施形態のPPPoEブリッジ20では、図11のPPPoEのシーケンスに示したPPPoEセッションのシーケンスでの管理用パケットのブリッジ転送は、管理パケットブリッジ部23が実行し、セッションが確立した後のPPPセッションでのデータ通信用パケットのブリッジ転送は、データパケットブリッジ部24を通じてのみ行われる。
この実施形態では、管理パケットブリッジ部23は、マイクロコンピュータを備え、その処理をソフトウエア処理により実行するものとして構成されている。また、データパケットブリッジ部24は、この例では、FPGA(Field Programable Gate Array)によるハードウエア処理の構成とされる。
管理パケットブリッジ部23は、管理用のパケットのみを取り扱えばよいので、ソフトウエア処理であってもその負担は軽くなり、パフォーマンスが向上する。そして、管理パケットブリッジ部23でセッション管理をすることも容易になる。
また、データパケットブリッジ部24は、FPGAによるハードウエア処理構成であるので、データ通信用のパケットのブリッジ転送は、いわゆるワイヤースピードでの高速転送が可能となる。しかも、その場合に、データパケットブリッジ部24は、管理パケットブリッジ部23のパフォーマンスを考慮する必要はない。
図2に、この実施形態のPPPoEブリッジ20における管理パケットブリッジ部23およびデータパケットブリッジ部24の、より詳細な構成について説明する。
図2に示すように、管理パケットブリッジ部23は、WANドライバ301と、LANドライバ302と、ソフトブリッジ303と、上位アプリケーション(図では上位アプリと略記)304とをソフトウエア機能として有する。すなわち、前述もしたように、管理パケットブリッジ部23は、マイクロコンピュータを備え、このマイクロコンピュータがソフトウエア処理として、各部の機能を実行するものである。
WANドライバ301は、データパケットブリッジ部24のWAN側の通路のインターフェースと接続されて、管理用のパケットを、データパケットブリッジ部24を介してWAN側インターフェース21との間で送受信するためのものである。
LANドライバ302は、データパケットブリッジ部24のLAN側の通路のインターフェースと接続されて、管理用のパケットを、データパケットブリッジ部24を介してLAN側インターフェース22との間で送受信するためのものである。
ソフトブリッジ303は、WANドライバ301と、LANドライバ302との間での管理用のブリッジ転送を行う機能を備える。
また、ソフトブリッジ303は、後述するように、確立されたセッション(伝送路)のセッションIDを通知するのためのPADSパケットから、確立されたセッションのセッションIDを取得し、上位アプリケーション304に取得したセッションIDのセッション開始を通知すると共に、上位アプリケーション304の指示に従い、取得したセッションIDを、データパケットブリッジ部24のレジスタに対してセットする制御処理を行なう。
また、ソフトブリッジ303は、切断要求のPADTパケットから、切断要求されたセッションのセッションIDを取得し、上位アプリケーション304に取得したセッションIDのセッション切断を通知すると共に、上位アプリケーション304の指示に従い、取得したセッションIDを、データパケットブリッジ部24のレジスタに対してクリアする制御処理を行なう。
さらに、ソフトブリッジ303は、上位アプリケーション304が管理するセッション以外の未知のセッションのセッションIDのパケットを受け取ったときには、当該パケットを廃棄し、セッション未知通知を上位アプリケーション304に送ると共に、上位アプリケーション304の指示に従い、通信の相手方に成りすまして、つまり、PPPoEクライアントおよびPPPoEサーバに成りすまして、当該未知のセッションを切断する機能も備える。
上位アプリケーション304は、この実施形態では、セッション管理を行なうと共に、上述したようにソフトブリッジ303を制御する。
また、上位アプリケーション304は、例えば、管理パケットブリッジ部23のマイクロコンピュータが記憶するプログラムの更新をネットワークを通じて行うことができる機能を備えている。つまり、上位アプリケーション304は、PPPoEブリッジ部20が、自分からインターネットにアクセスする機能を備える。そして、そのアクセスを行なう必要がある場合に、空きのセッションがない場合に、ソフトブリッジ303に指示して、PPPoEクライアントおよびPPPoEサーバに成りすまして、いずれかのセッションを切断して空きを生成することができる機能も備える。
データパケットブリッジ部24は、WAN側インターフェース21と接続されるインターフェース401と、WANドライバ301と接続されるインターフェース402と、LAN側インターフェース22と接続されるインターフェース403と、LANドライバ302と接続されるインターフェース404とを備える。
そして、WAN側インターフェース21から受け取ったパケットの、インターフェース401からインターフェース402に向かう通路には、パケット判定部405と、分配部406とがシリーズに設けられる。また、LAN側インターフェース22から受け取ったパケットの、インターフェース403からインターフェース404に向かう通路には、パケット判定部408と、分配部409とがシリーズに設けられる。
また、インターフェース402からインターフェース401に向かう通路には、調停部410が設けられ、インターフェース404からインターフェース403に向かう通路には、調停部407が設けられる。
そして、分配部406と調停部407とが接続されて、分配部406から調停部407へのパケット通路が形成される。また、分配部409と調停部410とが接続されて、分配部409から調停部410へのパケット通路が形成される。すなわち、分配部406と調停部407とが接続されることにより、WAN側からのパケットを、LAN側にブリッジ転送するためのブリッジ通路が形成され、分配部409と調停部410が接続されることにより、LAN側からのパケットを、WAN側にブリッジ転送するためのブリッジ通路が形成される。
さらに、データパケットブリッジ部24は、レジスタ部411を備える。このレジスタ部411には、管理パケットブリッジ部23のソフトブリッジ303により、インターフェース412を通じて、当該PPPoEブリッジ20を通じて確立されたセッションのセッションIDが書き込まれる。また、そのセッションが切断されたときには、レジスタ部411のそのセッションIDは、上位アプリケーション304により、クリアされる。
このレジスタ部411のセッションIDの情報は、パケット判定部405および408に供給される。
パケット判定部405は、WAN側から送られてくるパケットのヘッダ部のパケット種別「ETHER TYPE」により、当該パケットが管理用のパケットか、データ通信用のパケットかのパケット種別判定をする。そして、パケット判定部405は、受け取ったパケットがデータ通信用パケットであると判定したときには、さらに、ヘッダ部のセッションIDと、レジスタ部411にセットされているセッションIDとを比較して、一致しているか否かのセッションID判定をする。そして、パケット判定部405は、前記パケット種別判定の結果(例えばフラグ)と、セッションID判定の結果(例えばフラグ)と共に、パケットを分配部406に渡す。
分配部406は、パケット判定部405からのパケットを、前記判定結果に基づいて、インターフェース402に渡すか、調停部407に渡すかの分配処理をする。すなわち、分配部406は、当該パケットが管理用のパケットであるときには、そのパケットは、インターフェース402を通じて管理パケットブリッジ部23に渡すように構成されている。また、分配部406は、当該パケットがデータ通信用であって、セッションID判定結果が一致であるときには、そのパケットは、調停部407に渡すように構成されている。分配部406は、セッションID判定結果が不一致であるときには、そのパケットは、インターフェース402を通じて管理パケットブリッジ部23に渡すように構成されている。
同様に、パケット判定部408は、LAN側から送られてくるパケットのヘッダ部のパケット種別「ETHER TYPE」により、当該パケットが管理用のパケットか、データ通信用のパケットかのパケット種別判定をする。そして、パケット判定部408は、受け取ったパケットがデータ通信用パケットであると判定したときには、さらに、ヘッダ部のセッションIDと、レジスタ部411にセットされているセッションIDとを比較して、一致しているか否かのセッションID判定をする。そして、パケット判定部408は、前記パケット種別判定の結果(例えばフラグ)と、セッションID判定の結果(例えばフラグ)と共に、パケットを分配部409に渡す。
分配部409は、パケット判定部408からのパケットを、前記判定結果に基づいて、インターフェース404に渡すか、調停部410に渡すかの分配処理をする。すなわち、分配部409は、当該パケットが管理用のパケットであるときには、そのパケットは、インターフェース404を通じて管理パケットブリッジ部23に渡すように構成されている。また、分配部409は、当該パケットがデータ通信用であって、セッションID判定結果が一致であるときには、そのパケットは、調停部410に渡すように構成されている。分配部409は、セッションID判定結果が不一致であるときには、そのパケットは、インターフェース404を通じて管理パケットブリッジ部23に渡すように構成されている。
調停部407および410は、分配部406および409からのパケットと、インターフェース404および402からのパケットの衝突が生じないように調停するためのもので、PPPoEにおいて予め定められている優先順位に従って調停を行なうように構成されている。PPPoEフレームのヘッダ部には、各パケットの優先順位の情報が含められており、調停部407および410では、その優先順位の情報に基づいて、衝突が生じないように、パケットの調停を行なう。
以上の処理により、セッションが確立した後のデータ通信用のパケットは、データパケットブリッジ部24のみを通過(ブリッジ転送)するように制御され、WANやLANを通じて送られてくる管理用のパケットや、未知のパケットは、管理パケットブリッジ部23に送られる。
なお、パケット判定部405および408は、レジスタ部411にセッションIDがセットされていないときには、全てのパケットを管理パケットブリッジ部23側に渡すように構成するようにしても良い。
管理パケットブリッジ部23は、PPPoEセッションにおいて受け取る管理用のパケットを、ソフトブリッジ303を通じてブリッジ転送するようにする。そして、管理パケットブリッジ部23は、そのPPPoEセッションにおいて、サーバから通知されたセッションIDを取得して、データパケットブリッジ部24のレジスタ部411にセットするようにする。
また、管理パケットブリッジ部23は、通信状態から切断要求の管理用のパケット(PADTパケット)を受信したときには、そのPADTパケットのヘッダ部に含まれるセッションIDを取得し、そのセッションIDを、データパケットブリッジ部24のレジスタ部411からクリアするようにする。
次に、以上説明したPPPoEブリッジ20において実行される接続シーケンス、切断シーケンスなどのシーケンスを説明して、この実施形態のPPPoEブリッジ20での処理動作を、さらに説明する。
[接続シーケンス;図3]
図3は、実施形態のPPPoEブリッジ20における接続シーケンス例を説明するためのシーケンス図である。この図3は、図11で示したPPPoE通信シーケンスに対応するものである。
図11に示したように、PPPoEセッションステージにおいては、(1)−(4)のシーケンスがなされる。なお、図3に示すように、この接続シーケンスが開始される前には、セッションの空きが存在しているとする。セッションの空きや、通信中は、セッション管理を行なう上位アプリケーション304が把握している。
先ず、PPPoEクライアントからのPPPoEサーバを探すPADIパケットは、LAN側インターフェース22を通じてデータパケットブリッジ部24に入力される。データパケットブリッジ部24では、パケット判定部408で、このPADIパケットを管理用のパケットと判定する。この判定結果により、分配部409は、インターフェース404を通じて、当該PADIパケットを管理パケットブリッジ部23に渡す。
管理パケットブリッジ部23では、LANドライバ302を通じて、このPADIパケットを受け、ソフトブリッジ303を通じてWANドライバ301に透過(ブリッジ転送)させる。WANドライバ301からのPADIパケットは、データパケットブリッジ部24で、インターフェース402、調停部410およびインターフェース401を順次通り、WAN側インターフェース21を通じてPPPoEサーバ側に送出される。
次に、PPPoEサーバ側からは、返答のPADOパケットが送られてくるが、このPADOパケットは、WAN側インターフェース21を通じてデータパケットブリッジ部24に入力される。データパケットブリッジ部24では、パケット判定部405で、このPADOパケットを管理用のパケットと判定する。この判定結果により、分配部406は、インターフェース402を通じて、当該PADOパケットを管理パケットブリッジ部23に渡す。
管理パケットブリッジ部23では、WANドライバ301を通じて、このPADOパケットを受け、ソフトブリッジ303を通じてLANドライバ302に透過(ブリッジ転送)させる。LANドライバ302からのPADOパケットは、データパケットブリッジ部24で、インターフェース404、調停部407およびインターフェース403を順次通り、LAN側インターフェース21を通じてPPPoEクライアント側に送出される。
次に、PPPoEクライアント側からは、セッションの開始を要求するPADRパケットが送られてくる。このPADRパケットは、LAN側インターフェース22を通じてデータパケットブリッジ部24に入力される。データパケットブリッジ部24では、パケット判定部408で、このPADRパケットを管理用のパケットと判定する。この判定結果により、分配部409は、インターフェース404を通じて、当該PADRパケットを管理パケットブリッジ部23に渡す。
管理パケットブリッジ部23では、LANドライバ302を通じて、このPADRパケットを受け、ソフトブリッジ303を通じてWANドライバ301に透過(ブリッジ転送)させる。WANドライバ301からのPADRパケットは、データパケットブリッジ部24で、インターフェース402、調停部410およびインターフェース401を順次通り、WAN側インターフェース21を通じてPPPoEサーバ側に送出される。
次に、PPPoEサーバ側からは、セッションIDを通知するのためのPADSパケットが送られてくる。このPADSパケットは、WAN側インターフェース21を通じてデータパケットブリッジ部24に入力される。データパケットブリッジ部24では、パケット判定部405で、このPADSパケットを管理用のパケットと判定する。この判定結果により、分配部406は、インターフェース402を通じて、当該PADSパケットを管理パケットブリッジ部23に渡す。
管理パケットブリッジ部23では、WANドライバ301を通じて、このPADSパケットを受け、ソフトブリッジ303を通じてLANドライバ302に透過(ブリッジ転送)させる。このとき、ソフトブリッジ303は、PADSパケットからセッションIDを取得保持する。そして、ソフトブリッジ303は、取り出したセッションIDと共に、セッション開始通知を上位アプリケーション304に渡す。
上位アプリケーション304は、受け取ったセッションIDをセッション管理のために保持して、当該セッションは通信中とするセッション管理を行なう。そして、上位アプリケーション304は、セッション開始要求をソフトブリッジ303に送る。これを受けたソフトブリッジ303は、データパケットブリッジ部24のレジスタ部411に、確立されたセッションのセッションIDをセットする。
レジスタ部411へのセッションIDのセットにより、データパケットブリッジ部24は、LAN側インターフェース22との間におけるブリッジ転送の処理開始となる。
その後、ソフトブリッジ303は、PADSパケットを透過させて、LANドライバ302を通じてデータパケットブリッジ部24に送出する。これにより、PADSパケットは、データパケットブリッジ部24を通じてLAN側インターフェースに転送され、PPPoEクライアント側に送出され、セッションが確立される。
以上により、セッションが確立された後には、上位アプリケーション304により通信中が管理される。そして、PPPセッションで、WAN側インターフェース21とLAN側インターフェース22を通じてやり取りされるデータ通信用パケットは、図3の点線矢印で示すように、データパケットブリッジ部24のみを透過(ブリッジ転送)するようになる。
[切断シーケンス;図4]
図4は、実施形態のPPPoEブリッジ20における切断シーケンス例を説明するためのシーケンス図である。
この図4に示すように、通信中に、PPPoEクライアント側からLAN側インターフェース22を通じて、切断要求のPADTパケットが到来すると、データパケットブリッジ部24は、パケット判定部408で、このPADTパケットを管理用のパケットと判定する。この判定結果により、分配部409は、インターフェース404を通じて、当該PADTパケットを管理パケットブリッジ部23に渡す。
管理パケットブリッジ部23では、LANドライバ302を通じて、このPADTパケットを受け、ソフトブリッジ303を通じてWANドライバ301に透過(ブリッジ転送)させる。このとき、ソフトブリッジ303は、PADTパケットからセッションIDを取り出し、保持しているセッションIDと一致するかどうかチェックして、一致したときには、ソフトブリッジ303は、取り出したセッションIDと共に、上位アプリケーション304にセッション切断通知を送る。
上位アプリケーション304は、受け取ったセッションIDによりセッション切断となったセッションを認識し、そのセッションIDを削除するなどして、それをセッション管理に反映する。そして、上位アプリケーション304は、セッション切断要求をソフトブリッジ303に送る。
これを受けたソフトブリッジ303は、データパケットブリッジ部24のレジスタ部411にセットされている、切断されたセッションのセッションIDをクリアする。また、ソフトブリッジ303は、自己が保持しているセッションIDから、当該切断されたセッションのセッションIDを削除しておく。
レジスタ部411のセッションIDのクリアにより、データパケットブリッジ部24は、LAN側インターフェース22との間におけるブリッジ転送の処理停止となる。
その後、ソフトブリッジ303は、PADSパケットを透過させて、WANドライバ302を通じてデータパケットブリッジ部24に送出する。これにより、PADTパケットは、データパケットブリッジ部24を通じてLAN側インターフェースに転送され、PPPoEサーバ側に送出される。
このPADTパケットを受け取ったPPPoEサーバは、応答のためのPADTパケットをPPPoEクライアントに送ってくる。この応答のPADTパケットは、図4に示すように、WAN側インターフェース21から、データパケットブリッジ部24を経由して、管理パケットブリッジ部23で透過(ブリッジ転送)されて、LAN側インターフェース22に送出され、PPPoEクライアントに送られる。これにより、切断シーケンスが完了し、切断されたセッションは空き状態になる。この後、ソフトブリッジ303は、上位アプリケーション304にセッション停止通知を送る。上位アプリケーション304は、当該セッションは空きになったとして、セッション管理する。
[未知セッションシーケンス;図5]
図5は、実施形態のPPPoEブリッジ20において、そのときの状況ではありえない未知のパケットを受け取ったときのシーケンス例である。例えば、PPPセッションでの通信中においては、任意のタイミングでLCPエコー要求(LCP Echo−REQ)のパケットが送られ、リンク(セッション)が生きているかどうかを確認するようにされている。したがって、空き状態では、このLCPエコー要求のパケットはありえないパケットであり、そのパケットのセッションIDで示されるセッションは未知のセッションである。
この実施形態のPPPoEブリッジ20は、PPPoEクライアントおよびPPPoEサーバに成りすまして、このような未知のセッションは、切断処理するようにする。
すなわち、図5に示すように、通信が空き状態において、LCPエコー要求のパケットが、図5では、LAN側インターフェース22を通じて到来すると、データパケットブリッジ部24では、セッションIDがレジスタ部411にセットされていないので、当該LCPエコー要求のパケットは、管理パケットブリッジ部23に送られる。管理パケットブリッジ部23のソフトブリッジ303は、当該空き状態でのLCPエコー要求のパケットは、ありえないパケットであると判定して、そのパケットからセッションIDを取得した後、当該パケットを廃棄する。
そして、ソフトブリッジ303は、セッション未知通知を上位アプリケーション304に送る。上位アプリケーション304は、セッション切断要求をソフトブリッジ303に送る。
これを受けたソフトブリッジ303は、自己が通信の相手方の双方に成りすまして、つまり、PPPoEクライアントおよびPPPoEサーバに成りすまして、セッション切断シーケンスを実行する。
すなわち、ソフトブリッジ303は、LCP切断要求(LCP Term−REQ)のパケットを、データパケットブリッジ部24を通じて、LAN側インターフェース22から、PPPoEクライアントに送ると共に、WAN側インターフェース21からPPPoEサーバに送る。
LCP切断要求のパケットを受け取ったPPPoEクライアントおよびPPPoEサーバからは、その応答(LCP Term−ACK)のパケットが送られてくる。前述と同様にして、データパケットブリッジ部24を介して、当該応答のパケットを管理パケットブリッジ部23のソフトブリッジ303が受け取り、ソフトブリッジ303は、受け取った応答のパケットを廃棄する。
そして、ソフトブリッジ303は、セッション切断のPADTパケットを、データパケットブリッジ部24を通じて、LAN側インターフェース22から、PPPoEクライアントに送ると共に、WAN側インターフェース21からPPPoEサーバに送る。
セッション切断のPADTパケットを受け取ったPPPoEクライアントおよびPPPoEサーバからは、その応答としてPADTパケットが送られてくる。前述と同様にして、データパケットブリッジ部24を介して、当該応答のPADTパケットを管理パケットブリッジ部23のソフトブリッジ303が受け取り、ソフトブリッジ303は、受け取った応答のPADTパケットを廃棄する。その後、ソフトブリッジ303は、セッション停止通知を上位アプリケーション304に送る。
[切断要求シーケンス;図6]
図6は、実施形態のPPPoEブリッジ20が、PPPoEサーバにアクセスするために、通信中のセッションを切断するときのシーケンス例である。
すなわち、上位アプリケーション304は、通信中のセッションの切断要求をソフトブリッジ303に送る。これを受けたソフトブリッジ303は、データパケットブリッジ部24のレジスタ部411にセットされている通信中のセッションのセッションIDをクリアする。そして、ソフトブリッジ303は、自己が保持しているセッションIDから、当該切断されたセッションのセッションIDを削除しておく。
レジスタ部411のセッションIDのクリアにより、データパケットブリッジ部24は、LAN側インターフェース22との間におけるブリッジ転送の処理停止となる。
その後、ソフトブリッジ303は、PPPoEクライアントおよびPPPoEサーバに成りすまして、セッション切断シーケンスを実行する。このセッション切断シーケンスは、図5に示したものと同じであるので、ここでは、説明は省略する。
図6には、図示を省略したが、上位アプリケーション304は、ソフトブリッジ303からのセッション停止通知を受けた後に、例えば自己のソフトウエアプログラムの更新のために、PPPoEサーバを介して、特定のサーバにアクセスすることができる。
[管理パケットブリッジ部23における処理]
上述した接続シーケンス、切断シーケンスおよび未知セッション切断シーケンスを、管理パケットブリッジ部23が実行するための処理のフローチャートを、図7および図8に示す。なお、上述した図6の切断要求シーケンスをなすための処理のフローチャートについては省略する。この図7および図8のフローチャートの各ステップは、管理パケットブリッジ部23を構成するマイクロコンピュータが実行するもので、ソフトブリッジ303の処理と、上位アプリケーション304の処理を含むものである。
図7に示すように、管理パケットブリッジ部23は、受け取ったパケットのヘッダ部をチェックし(ステップS101)、受け取ったパケットが確立されたセッションのセッションIDを通知するPADSパケットか否かを判別する(ステップS102)。ステップS102において、受け取ったパケットがPADSパケットであると判別したときには、当該PADSパケットからセッションIDを取得して保持し、セッション開始を管理する(ステップS103)。
そして、管理パケットブリッジ部23は、ステップS103で取得したセッションIDを、データパケットブリッジ部24のレジスタ部411にセットし(ステップS104)、受け取ったPADSパケットは、ソフトブリッジ303を通じて透過させる(ステップS105)。そして、ステップS101に戻り、次のパケットのチェックする。
また、管理パケットブリッジ部23は、ステップS102で、受け取ったパケットがPADSパケットではないと判別したときには、受け取ったパケットがセッションの切断通知用のPADTパケットであるか否か判別する(図8のステップS111)。
このステップS111で、受け取ったパケットがPADTパケットであると判別したときには、管理パケットブリッジ部23は、当該PADTパケットからセッションIDを取得し、当該セッションIDのセッション切断を認識して、セッション管理に反映する(ステップS112)。
そして、管理パケットブリッジ部23は、データパケットブリッジ部24のレジスタ部411に記憶保持されている当該セッションIDをクリアする(ステップS113)。そして、ステップS105に進み、当該パケットPADTを透過させた後、ステップS101に戻り、このステップS101以降の処理を繰り返す。
また、ステップS111で、受け取ったパケットがPADTパケットではないと判別したときには、管理パケットブリッジ部23は、その状態でありえない未知のパケットであるか否か判別する(ステップS114)。そして、未知のパケットでないと判別したときには、管理パケットブリッジ部23は、ステップS105に進み、当該パケットPADTを透過させた後、ステップS101に戻り、このステップS101以降の処理を繰り返す。
また、ステップS114で、未知のパケットであると判別したときには、管理パケットブリッジ部23は、当該パケットを廃棄して、通信の相手方の双方に成りすまして、切断シーケンスを実行する(ステップS116)。そして、ステップS101に戻り、このステップS101以降の処理を繰り返す。
[データパケットブリッジ部24におけるパケット判定処理]
データパケットブリッジ部24は、この実施形態では、FPGAによるハードウエア構成とされるが、その処理動作を明瞭にするため、図9に、パケット判定部405または408での処理手順を説明するフローチャートを示す。
パケット判定部405または408は、パケットを受信すると(ステップS201)、セッションIDがレジスタ部411にセットされているかどうかチェックし(ステップS202)、レジスタ部411にセッションIDがセットされていないときには、パケットは管理パケットブリッジ部23に渡すようにする判定結果を付けて、受信したパケットを分配部406または409に渡す(ステップS207)。分配部406または409は、この判定結果を受けて、受け取ったパケットは、管理パケットブリッジ部23に渡すようにする。
ステップS202で、セッションIDがレジスタ部411にセットされていることが判明したときには、パケット判定部405または408は、受信したパケットのヘッダ部のパケット種別を参照して、当該パケットが管理用のパケットか、データ通信用のパケットであるかを判定する(ステップS204)。
そして、パケット判定部405または408は、受け取ったパケットが管理用のパケットであると判定したときは、管理パケットブリッジ部23に渡すようにする判定結果を付けて、受信したパケットを分配部406または409に渡す(ステップS207)。分配部406または409は、この判定結果を受けて、受け取ったパケットは、管理パケットブリッジ部23に渡すようにする。
また、パケット判定部405または408は、受け取ったパケットがデータ通信用のパケットであると判定したときは、当該パケットのセッションIDと、レジスタ部507に保持されているセッションIDとを比較して、両者が一致しているか否か判別する(ステップS205)。そして、両者が一致していると判別したときには、当該パケットは、自データパケットブリッジ部23内を透過させるようにする判定結果を付けて、受信したパケットを分配部406または409に渡す(ステップS206)。分配部406または409は、この判定結果を受けて、受け取ったパケットは、調停部410または407を通じて自データパケットブリッジ部24を透過させるように処理する。
また、ステップS205で、当該パケットのセッションIDと、レジスタ部507に保持されているセッションIDとが不一致であると判別したときには、パケット判定部405または408は、当該パケットは、管理パケットブリッジ部23に渡すようにする判定結果を付けて、受信したパケットを分配部406または409に渡す(ステップS207)。分配部406または409は、この判定結果を受けて、受け取ったパケットは、管理パケットブリッジ部23に渡すようにする。
[他の実施形態および変形例]
上述の実施の形態では、データパケットブリッジ部24は、FPGAを用いたハードウエア構成としたが、各部を個別の回路構成としたハードウエア構成であってもよい。また、データパケットブリッジ部24をDSPで構成するようにしてもよい。
また、管理パケットブリッジ部23は、DSPの構成とするようにしてもよい。
また、WAN側インターフェース21およびLAN側インターフェース22に接続される伝送路は、ケーブルによる有線路でも良いし、無線路であっても良い。
また、上述の実施形態は、中継装置をブロードバンドモデム/回線終端装置に含まれるPPPoEブリッジに適用した場合について説明したが、この発明の中継装置は、ルータやゲートウエイ内に設けるようにすることもできる。
また、上述の実施形態は、通信プロトコルがPPPoEである場合について説明したが、この発明は、PPPoEと同様のフォーマットの通信プロトコルの場合にも適用可能である。
20…PPPoEブリッジ、23…管理パケットブリッジ部、24…データパケットブリッジ部、303…ソフトブリッジ、405,408…パケット判定部、406,409…分配部、411…レジスタ部