本発明は、パケット転送装置に関し、更に詳しくは、広域網であるインターネットに接続されたアクセス網において、ISP(Internet Service Provider)に接続されるユーザ端末数の制限機能を備えたパケット転送装置に関する。
ユーザ端末からインターネットへのアクセス回線の広帯域化と、ネットワーク機能を搭載した各種家電機器の普及に伴って、単一ユーザが所有する複数の端末を同時にISP(Internet Service Provider)の管理サーバに接続する要求が多くなっている。ここで「単一ユーザ」とは、ISPにおけるインターネット接続サービスの契約単位となるユーザを意味し、一般的には、1つのアクセス回線を介してISPに接続される個々の世帯を指す。
ユーザ端末をインターネットに接続するためには、各ユーザ端末にIP(Internet Protocol)アドレスを割り当てる必要がある。IPアドレスの割当ては、一般に、DHCP(Dynamic Host Configuration Protocol)やPPPoE(Point-to-Point Protocol over Ethernet)等の通信プロトコルに従って行われる。
DHCPは、ユーザ端末がレイヤ2のサブネットワークに接続された時、そのサブネットワーク上の端末として妥当なIPアドレスをユーザ端末に動的に割り当てるための通信プロトコルである。また、PPPoEは、各ISPに所属するBAS(Broadband Access Server)とユーザ端末との間のEthernet(登録商標)回線上に、ポイント・ツー・ポイントの仮想的なレイヤ2セッション(PPPoEセッション)を接続するための通信プロトコルである。この場合、各ユーザ端末には、PPPoEセッションを介して、PPP(Point-to-Point Protocol)プロトコルによってIPアドレスが割り当てられる。
単一ユーザが複数の端末を所有する場合、各ユーザ端末は、例えば、ユーザ宅に設置されたホームルータ(レイヤ3のパケット中継装置)を経由してアクセス網に接続される接続形態と、レイヤ2のパケット中継装置であるハブを通してアクセス網に接続される接続形態がある。DHCPやPPPoEにおいて、ISPの管理サーバがIPアドレスを割り当てるクライアントは、前者の接続形態ではホームルータであり、後者の接続形態では個々のユーザ端末である。
例えば、DHCPを適用した場合、前者の接続形態では、IPアドレスはホームルータにのみ割り当てられるが、後者の接続形態では、ユーザが所有する複数の端末にそれぞれ個別のIPアドレスが割り当てられる。後者の接続形態にPPPoEを適用した場合、ユーザが所有する複数の端末が、それぞれ個別にPPPoEセッションを接続できる。PPPoEが適用される通信環境では、1台のクライアント(ユーザ端末またはホームルータ)が複数のPPPoEセッションを必要とする場合がある。例えば、PPPoEセッション毎に異なったサービスを利用する場合や、同一クライアントを異なる複数のISPに接続する場合である。
以上のように、ISPが各ユーザに割り当てるIPアドレスの数や、同一ユーザが接続するPPPoEセッションの数は、ユーザが所有する端末の数、ホームルータの有無、ユーザが利用したいサービスの種類などの条件によって異なる。しかしながら、各ユーザからのIPアドレスの割当て要求やPPPoEセッションの接続要求を無制限に受け付けると、ISPの管理サーバであるBASまたはDHCPサーバにおける負荷が増大する。また、特定のユーザが多数のIPアドレスを使用すると、通信リソースの占有によって、ユーザ間での享有できる通信サービスに不公平が生じるため、ユーザ毎に、割当て可能なIPアドレス数や同時に接続可能なセッション数を制限する必要がある。
例えば、ユーザ端末とISPの管理サーバ(DHCPサーバまたはBAS)が、ユーザ毎に個別のアクセス回線(物理的な回線、またはVLAN:Virtual Local Area Network等の論理的な回線)で接続されたネットワーク構成の場合、管理サーバ側で、アクセス回線毎の割当てIPアドレスやセッション数を管理することにより、ユーザ毎の割当てIPアドレス数や接続セッション数を制限できる。
しかしながら、ユーザ端末が接続されたアクセス回線と管理Pサーバとの間にレイヤ2スイッチ(L2SW)を配置し、このL2SWで複数ユーザのトラフィックを単一アクセス回線に集約して管理サーバに転送するネットワーク構成においては、管理サーバは、ユーザ毎に個別のアクセス回線を識別することができない。この場合、管理サーバ側では、ユーザ毎の割当てIPアドレス数や接続セッション数を制限することが不可能となる。
上述したL2SWが適用されたアクセス網構成において、ユーザ毎の割当てIPアドレス数やセッション数の制限する従来技術として、例えば、次のものが知られている。
(1)ISPの管理サーバ(DHCPサーバまたはBAS)とL2SWとを連携させ、ユーザ端末からセッション接続要求パケットまたはIPアドレス割当て要求パケットを受信したL2SWが、管理サーバに、要求パケットを受信したアクセス回線の識別情報を通知する方式。
(2)セッション接続手順に付随してユーザ認証を行う場合に、認証サーバが、ユーザ毎に割当て済みのIPアドレス数や接続中のセッション数を記憶しておき、これらの数が上限値に達したユーザからの新たなセッション接続要求を拒否する方式。
DHCPを適用した通信環境において、方式(1)について述べた公知文献として、例えば、特許文献1がある。
然るに、上述した従来方式(1)、(2)は、何れもISPに所属する管理サーバ(DHCPサーバ、BASまたは認証サーバ)に適用されるものであり、L2SW単独でユーザへの割当てIPアドレス数や接続セッション数を制限するものではない。従来方式(1)は、L2SWと管理サーバとの連携を前提としているため、例えば、L2SWが、管理サーバの所属するISPとは独立した企業体によって運用され、L2SWと管理サーバとの間の連携動作(アクセス回線の識別情報の通知)を保証できない場合、実現困難となる。
また、ISPの管理サーバには複数のL2SWが接続され、ISPの管理サーバは、これらのL2SWを介して多数のユーザ端末からセッションの接続要求やIPアドレスの割当て要求を受け付けているため、従来方式(1)、(2)は、接続ユーザ端末を制限するための処理負荷が管理サーバに集中するという問題がある。
本発明の目的は、ISPの管理サーバの負荷を軽減して、ユーザ毎の割当てIPアドレス数やPPPoEセッション数を制限可能なパケット転送装置(L2SW)を提供することにある。
上記目的を達成するため、本発明のパケット転送装置は、
それぞれが少なくとも1つのユーザ端末と接続されたアクセス回線を収容する複数の第1インタフェース部と、ユーザ端末と広域ネットワークとの間の通信に必要な通信制御情報を管理する管理サーバと接続するための第2インタフェース部と、制御部とからなり、
上記制御部が、ユーザ端末の固定アドレスと対応して、該ユーザ端末が接続された第1インタフェース部を特定する接続ポート識別子と、管理サーバから該ユーザ端末に動的に割り当てられ、該ユーザ端末が各ユーザパケットに適用する特定ヘッダ情報との関係を示す複数のテーブルエントリからなる管理テーブルを備え、
上記制御部が、広域ネットワークとの通信に先立って各ユーザ端末が管理サーバとの間で実行する所定の通信プロトコル手順の実行中に、上記管理テーブルに基づいて、ユーザ端末への特定ヘッダ情報の割当て可否を判定し、特定ヘッダ情報の割当てが不可と判断されたユーザ端末については、該ユーザ端末からの受信パケット、または該ユーザ端末宛の上記管理サーバからの受信パケットを廃棄することを特徴とする。
更に詳述すると、本発明のパケット転送装置は、上記制御部が、ユーザ端末から、所定の通信プロトコル手順における最初のパケットを受信した時、上記管理テーブルに基づいて、該ユーザ端末への特定ヘッダ情報の割当て可否を判定し、特定ヘッダ情報の割当てが可と判断されたユーザ端末については、上記管理テーブルに該ユーザ端末の固定アドレスと対応した新たなテーブルエントリを追加しておき、上記管理サーバからユーザ端末に通知される特定ヘッダ情報をテーブルエントリに登録することを特徴とする。
上述した所定の通信プロトコル手順が、例えば、PPPoE(Point-to-Point Protocol over Ethernet)の場合、管理テーブルに登録される固定アドレスはユーザ端末のMACアドレス、特定ヘッダ情報はPPPoEセッション識別子となる。この場合、上記制御部は、上記管理テーブルに登録された同一接続ポート識別子をもつPPPoEセッション識別子の個数が所定値に達していた時、上記接続ポート識別子をもつ第1インタフェース部に接続されたユーザ端末から発生する新たなPPPoEセッションの接続要求を受付不可と判断し、該ユーザ端末から送信されたPPPoEディスカバリステージのパケットを廃棄する。また、上記制御部は、上記管理テーブルに登録された同一接続ポート識別子をもつPPPoEセッション識別子の個数が所定値以内にある時、同一ユーザ端末からの複数のPPPoEセッション接続要求を受け入れ、該ユーザ端末と前記管理サーバとの間でPPPoEパケットを中継する。
所定の通信プロトコル手順が、例えば、DHCP(Dynamic Host Configuration Protocol)の場合、管理テーブルに登録される固定アドレスはユーザ端末のMACアドレス、特定ヘッダ情報はユーザ端末のIPアドレスとなる。この場合、上記制御部は、管理テーブルに登録された同一接続ポート識別子をもつテーブルエントリの個数が所定値に達していた時、上記接続ポート識別子をもつ第1インタフェース部に接続されたユーザ端末から発生するIPアドレスの割当て要求を受付不可と判断し、ユーザ端末から送信されたIPアドレス取得のためのDHCPパケットを廃棄する。
本発明によれば、ISPの管理サーバと複数のユーザ端末との間に配置されるパケット転送装置(L2SW)が単独で、アクセス回線毎の割当てIPアドレス数や接続セッション数を制限できるため、ISPの管理サーバにおける負荷の集中を軽減することが可能となる。
以下、図面を参照して本発明の実施例について説明する。
図1は、本発明のパケット転送装置(レイヤ2スイッチ:L2SW)10を含むネットワーク構成の第1の実施例を示す。
ここに示したネットワークは、L2SW10に収容された複数のユーザ網NW(NW−A、NW−B、NW−C、・・・)と、インターネットIPNWとからなり、L2SW10は、ISPが管理するBAS(Broadband Access Server)30を介して、インターネットIPNWに接続されている。BAS30には、インターネット接続要求元のユーザを認証するために認証サーバ31が接続されている。但し、認証サーバ31の機能は、BAS30に内蔵されていてもよい
ユーザ網NWには、例えば、NW−A、NW−Cのように、複数のユーザ端末20(20−A1〜20−A2、20−C1〜20−C3)が、宅内ハブ21(21A、21C)を介して、L2SW10に接続されるものと、NW−Bのように、ユーザ端末20−B1が、アクセス回線50Bを介してダイレクトにL2SW10に接続されるものとがある。
ここで、例えば、ユーザ端末20−B1の位置にホームルータを配置し、図示しない複数のユーザ端末をホームルータ経由でアクセス回線50Bに接続してもよい。同様に、宅内ハブ21の何れかの支線に、ホームルータを経由して複数のユーザ端末を接続してもよい。従って、以下の説明において、ユーザ端末20には、このようなホームルータも含まれるものとする。
L2SW10は、これらのユーザ網に接続されたアクセス回線50a、50b、50c、・・・と、BAS30との接続回線50uとを収容する各入出力ポート(入出力回線インタフェース)に対して、個別のポートID(Pa、Pb、Pc、・・・Pu)を割り当てている。
各ユーザ端末20は、L2SW10を介して、BAS30との間でPPPoEセッションの接続手順を実行する。PPPoEセッションの接続と、認証サーバ31によるユーザ認証およびIPアドレス割当てに成功すると、各ユーザ端末20は、セッション識別子(S−ID)と割当てIPアドレスとを適用して、PPPoEセッションを通してインターネットへのユーザパケットの送信が可能となる。BAS30は、PPPoEセッションから受信したユーザパケットをデカプセル化し、IPパケット形式でインターネットIPNWに中継すると共に、インターネットIPNWから受信したIPパケットをPPPoEヘッダでカプセル化し、宛先アドレスと対応したPPPoEセッションに中継する。
本実施例では、L2SW10が、PPPoEセッション管理テーブル40を備え、このテーブルを参照して、各ユーザ端末とBAS30との間での通信パケットの転送を制御することを特徴としている。PPPoEセッション管理テーブル40には、図3で詳述するように、PPPoEセッションの接続を要求したユーザ端末の固定アドレス(MACアドレス)と対応して、接続ポートIDと接続済みセッションの識別子(セッションID)とが記憶される。
L2SW10は、ユーザ端末20またはBAS30からPPPoEパケットを受信すると、受信パケットに付されたレイヤ2のヘッダ(MAC)情報のみならず、PPPoEメッセージの種類も判定した上で、PPPoEセッション管理テーブル40に従ったパケット転送制御を行う。例えば、ユーザ端末から新たPPPoEセッションの接続要求パケットを受信した時、L2SW10は、PPPoEセッション管理テーブル40を参照して、当該ユーザ端末とBAS30との間の接続済みのセッション数が予め決められた上限値に達しているか否かを判定する。
もし、接続済みセッション数が上限値に達していなければ、L2SW10は、ユーザ端末のMACアドレスをもつ新たなテーブルエントリをPPPoEセッション管理テーブル40に登録して、受信パケットをBAS30に転送する。接続済みセッション数が上限値に達していた場合、L2SW10は、受信パケットを廃棄することによって、同一ユーザ端末が上限値を越えるセッションを接続するのを阻止する。新たなセッション接続を阻止するためには、L2SW10が、新たなテーブルエントリをPPPoEセッション管理テーブル40に登録することなく、PPPoEセッションの接続要求パケットをBAS30に転送しておき、BAS30から応答パケットを受信した時、該応答パケットに対応するテーブルエントリがPPPoEセッション管理テーブル40に未登録であることを理由に、受信パケットを廃棄するようにしてもよい。
図2は、本発明のL2SW10の1実施例を示すブロック構成図である。
L2SW10は、プロセッサ(制御部)11と、プロセッサ11が実行する各種のプログラムを格納したメモリ12と、データメモリ13と、複数対の入力回線インタフェース14−iおよび出力回線インタフェース5−i(i=1〜n)と、これらの要素を接続する内部バス16とからなる。メモリ12には、本発明に関係するプログラムとして、上りPPPoEパケット処理ルーチン100と、下りPPPoEパケット処理ルーチン200と、タイムアウト監視ルーチン300が用意されている。また、メモリ13には、前述したPPPoEセッション管理テーブル40と、その他のテーブルとして、例えば、パケット転送に必要なルーティング情報を定義したルーティングテーブルが用意されている。
入力回線インタフェース14−iと出力回線インタフェース5−iは、図1に示したアクセス回線50A〜50Uの何れかに接続され、それぞれポートID(Pa〜Pu)が割り当てられている。アクセス回線50からの受信信号は、入力回線インタフェース14−iで処理され、受信パケットに変換して入力バッファに一時的に蓄積される。
プロセッサ11は、これらの入力回線インタフェースを循環的にアクセスし、入力バッファから受信パケットを順次に読み出す。プロセッサ11は、ユーザ網に接続されたアクセス回線50A〜50Cを収容している入力回線インタフェースからの受信パケットは、上りPPPoEパケット処理ルーチン100によって処理し、BAS30との接続回線を収容している入力回線インタフェース14−nからの受信パケットは、下りPPPoEパケット処理ルーチン200によって処理する。上りPPPoEパケット処理ルーチン100と下りPPPoEパケット処理ルーチン200については、図8、図9を参照して後で詳述する。
図3は、PPPoEセッション管理テーブル40の1例を示す。
PPPoEセッション管理テーブル40は、ユーザ端末20のMACアドレス41と対応して、接続ポートID欄42と、セッションID欄43と、タイムアウト時刻欄44とをもつ複数のテーブルエントリ400−1、400−2、・・・からなる。
接続ポートID欄42は、MACアドレス41をもつユーザ端末と接続されたアクセス回線50が収容された入力回線インタフェース14のポートIDを示す。セッションID欄43は、上記ユーザ端末とBAS30との間に既に接続済みとなっているPPPoEセッションの識別子を示す。本実施例では、個々のユーザ端末が同時に接続可能なPPPoEセッションの個数に制限があり、各テーブルエントリ400には、予め決められた上限値の範囲内で、セッションIDが登録される。タイムアウト時刻欄44には、セッションIDと対応して、PPPoEセッションを自動的に切断するためのタイムアウト時刻が登録される。
上記PPPoEセッション管理テーブル40には、L2SW10が、ユーザ端末から最初のPPPoEセッションの接続要求パケット(PPPoE Active Discovery Initiation:PADI)を受信した時点で、MACアドレス41にユーザ端末のMACアドレス、接続ポートID欄42に上記接続要求パケットの入力ポートIDを含む新たなテーブルエントリが追加される。セッションID欄43には、BAS30からのセッションID割当て待ち状態にあることを示す予約コードが設定され、タイムアウト時刻欄44には、現在時刻に所定時間を加えたタイムアウト時刻が設定される。上述したPPPoEセッション管理テーブル40への新たなテーブルエントリの追加は、上りPPPoEパケット処理ルーチン100によって行われる。
PADIパケットを受信した時、該パケットの送信元MACアドレスをもつテーブルエントリが既に存在していた場合、PPPoEセッション管理テーブル40への新たなテーブルエントリの追加はなく、既存のテーブルエントリに対して、上述したセッションID(予約コード)とタイムアウト時刻の値が追加される。上りPPPoEパケット処理ルーチン100は、PADIパケットの受信の都度、PPPoEセッション管理テーブル40を参照し、受信パケットの送信元MACアドレスと対応するセッションIDの個数をチェックすることによって、登録セッションIDの個数が既に上限値に達したユーザ端末からの新たなPPPoEセッションの接続要求を阻止する
タイムアウト時刻欄44の値は、当該PPPoEセッションでの通信パケットの受信の都度、上りPPPoEパケット処理ルーチン100および下りPPPoEパケット処理ルーチン200によって更新される。タイム監視ルーチン300は、タイムアウト時刻欄44を定期的にチェックし、タイムアウト時刻に達したセッションIDをPPPoEセッション管理テーブル40から自動的に削除する。1つのセッションIDの削除によって、セッションID欄43が空になった場合、テーブルエントリそのものがPPPoEセッション管理テーブル40から削除される。
ここでは、セッションID毎に異なったタイムアウト時刻44の値が設定されているが、タイムアウト時刻は、同一テーブルエントリ内の複数のセッションIDで共用してもよい。この場合、同一ユーザ端末が接続した全てのPPPoEセッションでパケット通信が途絶えた時、タイムアウトが発生し、テーブルエントリがPPPoEセッション管理テーブル40から削除されることになる。
図1において、各ユーザ端末20に付随して表示したMACとS−IDの値は、各ユーザ端末のMACアドレスと、そのユーザ端末が接続中のPPPoEセッションのセッションIDを示している。図3のテーブルエントリ400−1〜400−4は、それぞれユーザ端末20−A1、20−B1、20−C1、20−C2によるPPPoEセッションの接続状態を示している。
図4は、PPPoEのパケットフォーマットを示す。
PPPoEのパケットは、MACヘッダ81と、PPPoEヘッダ82と、PPPoEペイロード83とからなる。MACヘッダ81は、サブネット区間におけるパケットの宛先および送信元のアドレスを示す宛先MACアドレス811および送信元MACアドレス812と、MACヘッダに続くパケットの形式を示すタイプ813と、その他の情報を含んでいる。PPPoEパケットの場合、タイプ813の値によって、MACヘッダ81の次にPPPoEヘッダ82が位置していることが判る。
PPPoEヘッダ82は、パケット種別コード821と、セッション識別子(S−ID)822と、その他の情報項目を含んでいる。パケット種別コード821の値によって、PPPoEペイロード83に含まれるパケット(メッセージ)の種類が特定される。セッションID値が未定の段階で送信されるPPPoEパケット、例えば、PADI、PADO(PPPoE Active Discovery Offer)、PADRの場合、S−ID822には、セッションIDが未決定であることを示す値が設定される。既にセッションIDが決定している段階で送信されるPPPoEパケット、例えば、PADS(PPPoE Active Discovery Session-confirmation)、PADT(PPPoE Active Discovery Terminate)およびセッションステージの通信パケットの場合、S−ID822の値によってPPPoEセッションを識別できる。
PPPoEディスカバリステージの通信パケットは、PPPoEペイロード83に新たなセッションに関する各種のパラメータ値を含み、PPPoEセッションステージ以降の通信パケットは、PPPoEペイロード83に各種のPPPパケットを含む。
図5は、ユーザ端末20が、BAS30との間に新たなPPPoEセッションを接続する場合のL2SW10の動作を示す通信シーケンスを示す。
図5において、ステップSQ1〜SQ8は、本発明が関係するPPPoEディスカバリステージの通信シーケンスであり、ステップSQ9、SQ10、SQ11は、PPPoEディスカバリステージで接続されたPPPoEセッションを通して行われるPPPoEセッションステージの通信シーケンスを示している。
新たなPPPoEセッションを接続する場合、ユーザ端末20は、BAS30宛にPPPoEのPADI(PPPoE Active Discovery Initiation)パケットを送信する(SQ1)。L2SW10は、PADIパケットを受信すると、PPPoEセッション管理テーブル40を参照して、受信パケットの送信元MACアドレスと接続ポートIDとで特定されるユーザ別の接続セッション数をチェックする(S10)。ここで、もし、MACアドレス41が送信元MACアドレスに一致するテーブルエントリがPPPoEセッション管理テーブル40に無ければ、L2SW10は、送信元MACアドレスをMACアドレス41とする新たなテーブルエントリを追加した後、受信パケットをBAS30に転送する(SQ2)。
PPPoEセッション管理テーブル40に、MACアドレス41が送信元MACアドレスに一致するテーブルエントリが既に存在していた場合、L2SW10は、接続セッション数が上限値に達していなければ、セッションID欄を予約した後、受信パケットをBAS30に転送し、接続済みセッション数が上限値に達していれば、受信パケットを廃棄する。但し、受信したPADIパケットをBAS30に転送しておき、BAS30から応答パケットを受信した時、接続済みセッション数が上限値に達していることを理由に、応答パケットを廃棄するようにしてもよい。
BAS30は、PADIパケットを受信すると、応答パケットとして、PPPoEのPADO(PPPoE Active Discovery Offer)パケットを返信する(SQ3)。L2SW10は、BAS30からPADOパケットを受信すると、受信パケットの宛先MACアドレスに対応するテーブルエントリがPPPoEセッション管理テーブル40に登録されているか否かをチェックする(S11)。宛先MACアドレスを持つテーブルエントリが登録済みで、且つ、セッションID欄が予約済みであれば、L2SW10は、受信パケットを宛先MACアドレスと対応するポートIDをもつ出力回線インタフェースに出力する。これによって、PADOパケットが要求元のユーザ端末20に転送される(SQ4)。セッションID欄が予約されていなかった場合、または、宛先MACアドレスと対応するテーブルエントリが未登録の場合、L2SW10は、受信パケットを廃棄する。
PADOパケットを受信したユーザ端末20は、次に、BAS30宛にPPPoEのPADR(PPPoE Active Discovery request)パケットを送信する(SQ5)。L2SW10は、PADRを受信すると、PPPoEセッション管理テーブル40をチェックし(S12)、MACアドレス41が受信パケットの送信元MACアドレスに一致するテーブルエントリが登録済みで、セッションID欄が予約済みの場合は、受信パケットをBAS30に転送する(SQ6)。送信元MACアドレスに該当するテーブルエントリが未登録、またはセッションID欄の予約がなければ、L2SW10は、受信パケットを廃棄する。
BAS30は、PADRパケットを受信すると、応答パケットとして、PPPoEのPADS(PPPoE Active Discovery Session-configuration)パケットを返信する(SQ7)。L2SW10は、BAS30からPADSパケットを受信すると、PPPoEセッション管理テーブル40から、受信パケットの宛先MACアドレスと対応するテーブルエントリを検索し、受信したPADSパケットが示すセッションIDをこのテーブルエントリに登録(S13)した後、PADSパケットをユーザ端末20に転送する(SQ8)。PADSパケットを受信した場合も、送信元MACアドレスに該当するテーブルエントリが未登録、またはセッションID欄の予約がなければ、L2SW10は、受信パケットを廃棄する。
PADSパケットを受信したユーザ端末20は、この後、BAS30との間で、PPP
oEセッションステージのPPPリンクの確立手順(SQ9)、ユーザ認証手順(SQ10)、IPアドレス割当て手順(SQ11)を実行することによって、インターネット通信状態となる。
図6は、PPPoEセッションステージにおけるデータパケットの通信シーケンスを示す。ユーザ端末20が送受信するデータパケット(PPPパケット)は、セッションID822を含むPPPoEヘッダによってカプセル化されている。
ユーザ端末20がデータパケットを送信すると(SQ21)、これを受信したL2SW10が、PPPoEセッション管理テーブル40をチェックし(S20)、受信パケットの送信元MACアドレスに該当するテーブルエントリに、受信パケットのセッションIDが登録済みであることを確認して、受信パケットをBAS30に転送する(SQ22)。送信元MACアドレスに該当するテーブルエントリが未登録の場合、または、受信パケットが示すセッションIDがテーブルエントリに未登録の場合、L2SW10は、受信パケットを廃棄する。BAS30は、L2SW10からデータパケットを受信すると、これをデカプセル化した後、インターネットに転送する。
一方、インターネット(例えば、Webサーバ)からユーザ端末20宛に送信されたデータパケットは、BAS30によって、セッションID822を含むPPPoEヘッダでカプセル化され、L2SW10に送信される(SQ23)。L2SW10は、BAS10からデータパケットを受信すると、PPPoEセッション管理テーブル40をチェックし(S21)、受信パケットの宛先MACアドレスに該当するテーブルエントリに、受信パケットのセッションIDが登録済みであることを確認して、受信パケットをユーザ端末20に転送する(SQ24)。宛先MACアドレスに該当するテーブルエントリが未登録の場合、または、受信パケットが示すセッションIDがテーブルエントリに未登録の場合、L2SW10は、受信パケットを廃棄する。
図7は、PPPoEセッション切断時の通信シーケンスを示す。
PPPoEセッション切断シーケンスは、PPPoEのセッションステージSQ30と、それに続くPPPoEのディスカバリステージに分けられる。
ユーザ端末20側からセッションを切断する場合、ユーザ端末は、BAS30との間で、PPPoEのセッションステージSQ30(IPアドレスの解放手順とPPPリンクの切断手順)を実行した後、BAS30宛にPPPoEのPADT(PPoE Active Discovery Terminate)パケットを送信する(SQ31)。L2SW10は、PADTパケットを受信すると、PPoEセッション管理テーブル40から、受信パケットの送信元MACアドレスと対応するテーブルエントリを検索し、受信パケットが示すセッションIDを削除(S31)した後、受信パケットをBAS30に転送する(SQ32)。
尚、セッションIDの削除によって、上記テーブルエントリのセッションID欄43が空になった場合、L2SW10は、テーブルエントリそのものをPPoEセッション管理テーブル40から削除する。
BAS30側からPPPoEセッションを切断する場合も、図7と同様の手順で、PPoEセッション管理テーブル40のデータ削除とPADTパケットの転送が行われる。
図8は、上りPPPoEパケット処理ルーチン100のフローチャートを示す。
L2SW10のプロセッサ11は、ユーザ網NWと接続された入力回線インタフェース14から受信パケットを読み出すと、PPPoEセッション管理テーブル40から、MACアドレス41が受信パケットの送信元MACアドレスと一致するテーブルエントリを検索する(ステップ101)。検索の結果(102)、MACアドレスが一致するテーブルエントリが無かった場合、プロセッサ11は、受信パケットの種類を判定し(103)、受信パケットがPADIパケットでなければ、受信パケットを廃棄して(121)、このルーチンを終了する。
受信パケットがPADIパケットの場合、プロセッサ11は、受信パケットの入力ポートIDと同一の接続ポートID42で、PPPoEセッション管理テーブル40に登録済みのセッション数をカウントし、セッション数が予め決められた上限値MAXに達しているか否かを判定する(104)。セッション数が上限値に達していた場合は、プロセッサ11は、受信パケットを廃棄して(121)、このルーチンを終了する。
セッション数が上限値未満の場合、プロセッサ11は、MACアドレス41、接続ポートID42に受信パケットの送信元MACアドレスと入力ポートIDを含み、セッションID欄43の1つ空きフィールドを予約した新たなテーブルエントリを生成し、これをPPPoEセッション管理テーブル40に追加する(105)。この後、プロセッサ11は、予約されたセッションIDフィールドと対応するタイムアウト時刻44を更新し(119)、受信パケットをBAS30との接続回線50Uが収容された出力回線インタフェース15−nに中継し(120)、このルーチンを終了する。
ステップ102で、MACアドレス41が受信パケットの送信元MACアドレスと一致するテーブルエントリが検索された場合、プロセッサ11は、検索されたテーブルエントリが示す接続ポートID42と、受信パケットの入力ポートIDを比較する(106)。ポートIDが一致した場合、プロセッサ11は、受信パケットの種類を判定する(108)。ポートIDが不一致の場合は、プロセッサ11は、モバイル型のユーザ端末が別のユーザ網に移動してパケットを送信したものと判断し、テーブルエントリの接続ポートID42の値を受信パケットの入力ポートIDに変更(107)してから、受信パケットの種類を判定する(108)。但し、ポートIDが不一致の場合、破線で示すように、受信パケットを廃棄して(121)、このルーチンを終了するようにしてもよい。
ステップ108で、受信パケットがPADIパケットの場合、プロセッサ11は、受信パケットの入力ポートIDと同一の接続ポートID42で、PPPoEセッション管理テーブル40に登録済みのセッション数(セッションIDの個数)をカウントし、セッション数が予め決められた上限値に達しているか否かを判定する(109)。セッション数が上限値に達していた場合、プロセッサ11は、受信パケットを廃棄して(121)、このルーチンを終了する。セッション数が上限値未満の場合、プロセッサ11は、セッションID欄43の1つの空きフィードを予約し(110)、これと対応するタイムアウト時刻を更新し(119)、受信パケットをBAS30に中継して(120)、このルーチンを終了する。
受信パケットがPADIパケットでなかった場合、プロセッサ11は、受信パケットがPADRパケットか否かを判定する(111)。受信パケットがPADRパケットの場合、プロセッサ11は、検索されたテーブルエントリのセッションID欄をチェックし(112)、セッションID欄が予約されていなければ、受信パケットを廃棄して(121)、このルーチンを終了する。セッションID欄が予約されていた場合、プロセッサ11は、タイムアウト時刻を更新し(119)、受信パケットをBAS30に中継して(120)、このルーチンを終了する。
ステップ111で、受信パケットがPADRパケットでなかった場合、プロセッサ11は、受信パケットがPADTパケットか否かを判定する(113)。受信パケットがPADTパケットの場合、プロセッサ11は、受信したPADTパケットが示す切断対象となるセッションIDが、テーブルエントリのセッションID欄43に登録されているか否かを判定する(114)。もし、切断対象セッションIDがテーブルエントリに登録されていなければ、プロセッサ11は、受信パケットを廃棄して(121)、このルーチンを終了する。
切断対象セッションIDがテーブルエントリに登録されていた場合、プロセッサ11は、該テーブルエントリから切断対象セッションIDを削除し(115)、テーブルエントリの残りセッション数(ID数)を判定する(116)。残りセッション数がゼロでなければ、プロセッサ11は、受信パケットをBAS30に中継して(120)、このルーチンを終了する。セッションIDの削除によって、テーブルエントリの残りセッション数がゼロになった場合、プロセッサ11は、テーブルエントリそのものをPPPoEセッション管理テーブル40から削除し(117)、受信パケットをBAS30に中継して(120)、このルーチンを終了する。
ステップ113で、受信パケットがPADTパケットでなかった場合、プロセッサ11は、受信パケットが示すセッションIDが、テーブルエントリのセッションID欄43に登録されているか否かを判定する(118)。もし、セッションIDがテーブルエントリに登録されていなければ、プロセッサ11は、受信パケットを廃棄して(121)、このルーチンを終了し、セッションIDがテーブルエントリに登録されていた場合は、受信パケットが示すセッションIDと対応するタイムアウト時刻を更新し(119)、受信パケットをBAS30に中継して(120)、このルーチンを終了する。
図9は、下りPPPoEパケット処理ルーチン200のフローチャートを示す。
L2SW10のプロセッサ11は、BAS30と接続された入力回線インタフェース14−nから受信パケットを読み出すと、PPPoEセッション管理テーブル40から、MACアドレス41が受信パケットの宛先MACアドレスと一致するテーブルエントリを検索する(ステップ201)。検索の結果(202)、宛先MACアドレスに該当するテーブルエントリが無かった場合、プロセッサ11は、受信パケットを廃棄して(216)、このルーチンを終了する。
宛先MACアドレスに該当するテーブルエントリが検索された場合、プロセッサ11は、受信パケットの種類を判定する。受信パケットがPADOパケットの場合(203)、プロセッサ11は、上記テーブルエントリのセッションID欄43をチェックし(204)、予約されていなければ、受信パケットを廃棄して(216)、このルーチンを終了する。セッションID欄43が予約されていた場合、プロセッサ11は、予約フィールドと対応するタイムアウト時刻を更新し(214)、受信パケットを宛先MACアドレスと対応するユーザ網接続用の何れかの出力回線インタフェース15に中継して(215)、このルーチンを終了する。
受信パケットがPADSパケットの場合(205)、プロセッサ11は、該PADSパケットが示す割当てセッションIDが上記テーブルエントリに既に登録済みか否かを判定する(206)。もし、登録済みであれば、プロセッサ11は、上記テーブルエントリのタイムアウト時刻欄44で、上記セッションIDと対応したタイムアウト時刻の値を更新し(214)、受信パケットを宛先MACアドレスと対応するユーザ網接続用の何れかの出力回線インタフェース15に中継して(215)、このルーチンを終了する。
ステップ206で、テーブルエントリに割当てセッションIDが未登録の場合、プロセッサは、上記テーブルエントリのセッションID欄43をチェックし(207)、予約されていなければ、受信パケットを廃棄して(216)、このルーチンを終了する。セッションID欄43が予約されていた場合、プロセッサ11は、PADSパケットが示す割当てセッションIDをセッションID欄43に登録し(208)、該セッションIDと対応するタイムアウト時刻を更新し(214)、受信パケットを宛先MACアドレスと対応するユーザ網接続用の何れかの出力回線インタフェース15に中継して(215)、このルーチンを終了する。
ステップ205で、受信パケットがPADSパケットでなかった場合、プロセッサ11は、受信パケットのセッションIDがテーブルエントリのセッションID欄43に登録済みか否かを判定する(209)。もし、受信パケットのセッションIDが未登録の場合、プロセッサ11は、受信パケットを廃棄して(216)、このルーチンを終了し、登録済みの場合は、受信パケットがPADTパケットか否かを判定する(210)。
受信パケットがPADTパケットの場合、プロセッサ11は、PADSパケットが示すセッションIDをテーブルエントリから削除し(211)、該テーブルエントリの残りのセッション数(セッションIDの個数)をチェックする(212)。残りのセッション数がゼロでなければ、受信パケットを宛先MACアドレスと対応するユーザ網接続用の何れかの出力回線インタフェース15に中継して(215)、このルーチンを終了する。残りのセッション数がゼロとなった場合、プロセッサ11は、上記テーブルエントリそのものをPPPoEセッション管理テーブル40から削除(213)した後、ステップ215を実行する。
ステップ210で、受信パケットがPADT以外のパケット(例えば、データパケット)の場合、プロセッサ11は、受信パケットが示すセッションIDと対応するタイムアウト時刻を更新し(214)、受信パケットを宛先MACアドレスと対応するユーザ網接続用の何れかの出力回線インタフェース15に中継して(215)、このルーチンを終了する。
図10は、本発明のパケット転送装置(レイヤ2スイッチ:L2SW)10を含むネットワーク構成の第2の実施例を示す。図1と比較すると、本実施例のネットワークは、L2SW10が、IPアドレス管理テーブル70を備え、ルータ32を介してインターネットIPNWに接続されたことに特徴がある。
ここで、ルータ32は、DHCP(Dynamic Host Configuration Protocol)に従って、ユーザ端末20に使用期限付きのIPアドレスの割当て/解放を行うDHCPサーバとしての機能を備えている。但し、ルータ32の位置に、DHCPリレーエージェントを配置してもよい。この場合、ルータ32とは別にDHCPサーバを配置しておき、ユーザ端末20とDHCPサーバが、ルータ32(DHCPリレーエージェント)を介して、DHCPパケットを送受信することになる。
本実施例では、L2SW32が、IPアドレス管理テーブル70を用いて、アクセス回線毎にユーザ端末への割当てIPアドレス数を制限し、ユーザ端末20とルータ32との間のパケット通信を制御する。
図11は、実施例2に適用されるL2SW10のブロック構成図である。
本実施例のL2SW10は、図2に示したL2SWと同一の構成要素からなり、メモリ12に、プロセッサ11が実行する本発明に関係するプログラムとして、上りパケット処理ルーチン400、下りパケット処理ルーチン500、リース期間監視ルーチン600が用意されている。また、メモリ13に、IPアドレス管理テーブル70を備えている。
上りパケット処理ルーチン400は、ユーザ端末20から受信したIPパケット(DHCPパケットを含む)またはARP(Address Resolution Protocol)パケットの転送を制御するためのプログラムであり、必要に応じてIPアドレス管理テーブル70を更新し、IPアドレス管理テーブル70に従って、受信パケットのルータ32への中継要否を判断する。
下りパケット処理ルーチン500は、ルータ32から受信したIPパケット(DHCPパケットを含む)またはARPパケットのユーザ端末20への転送を制御するためのプログラムであり、必要に応じてIPアドレス管理テーブル70を更新し、IPアドレス管理テーブル70に従って、受信パケットのユーザ端末20への中継要否を判断する。
図12は、IPアドレス管理テーブル70の1例を示す。
IPアドレス管理テーブル70は、ユーザ端末20のMACアドレス71と対応して、接続ポートID72と、割当てIPアドレス73と、リソース終了時刻74とを示す複数のテーブルエントリ700−1、700−2、・・・からなる。
接続ポートID72は、実施例1と同様、MACアドレス71をもつユーザ端末との接続されたアクセス回線が収容された入力回線インタフェースのポート識別子を示し、割当てIPアドレス73は、ルータ32が上記ユーザ端末に割り当てた期限付きのIPアドレスの値を示し、リソース終了時刻74は、割当てIPアドレスの有効期限を示している。
IPアドレス管理テーブル70には、L2SW10が、ユーザ端末から接続要求(DHCP DISCOVER)パケットを受信した時、上りパケット処理ルーチン400によって、新たなテーブルエントリが追加される。また、各テーブルエントリには、L2SW10が、ユーザ端末からのIPアドレス割当て要求(DHCP REQUEST)に応答してルータ32が返送するIPアドレス通知(DHCP ACK)パケットを受信した時、下りパケット処理ルーチン500によって、割当てIPアドレス73とリソース終了時刻74とが登録される。
リソース終了時刻74は、ユーザ端末からの要求によって延長可能であり、リース期間監視ルーチン600によって定期的にチェックされる。リソース終了時刻に達したテーブルエントリは、リース期間監視ルーチン600によって、IPアドレス管理テーブル70から自動的に削除される。
実施例1では、一つのMACアドレス(ユーザ端末)に対して複数のセッションIDを割り当てることができたが、実施例2では、各MACアドレス(ユーザ端末)に対して一つのIPアドレスが割り当てられる。
図13は、本実施例でL2SW10が送受信するデータパケットおよびDHCPパケットのフォーマットを示す。
L2SW10がユーザ端末20、またはルータ32から受信するデータパケットおよびDHCPパケットは、MACヘッダ81と、IPヘッダ84と、IPペイロード85とからなる。IPヘッダには、プロトコルタイプ841、送信元IPアドレス842、宛先IPアドレス843、その他の情報項目が含まれる。プロトコルタイプ841は、IPペイロード85に適用されるプロトコルを示しており、例えば、IPペイロードがUDPパケットを含む場合、プロトコルタイプ841には、UDPパケットを示す特定値が設定される。
DHCPパケットは、UDP(User Datagram Protocol)パケットの一種であり、図14に示すように、IPペイロード85に、UDPヘッダ86とDHCPメッセージ87とを含む。UDPヘッダ86には、送信元ポート番号861、宛先ポート番号862、その他の情報項目が含まれる。DHCPパケットの場合、送信元ポート番号と宛先ポート番号は、DHCPプロトコルを示す特定値が設定され、UDPヘッダ86の後にDHCP以外の別プロトコルのデータが続く場合は、そのプロトコルに対応した値が設定される。
DHCPメッセージ87は、割当てIPアドレス871、メッセージタイプ872、リース期間873、その他の情報項目が含まれる。割当てIPアドレス871は、ルータ32がユーザ端末に割り当てたIPアドレス、または割当て候補IPアドレスを示す。割当てIPアドレスが未定の場合は、未定であることを示す特定値が設定される。
メッセージタイプ872には、DHCPメッセージのタイプ、例えば、「DISCOVER」、「OFFER」、「REQUEST」、「ACK」、「NAK」、「DECLINE」または「RELEASE」を示すコードが設定される。リース期間873には、ルータ32がユーザ端末に割り当てたIPアドレスの有効期間を表す値(または希望値)が設定される。但し、リース期間873は、DHCPメッセージの種類によっては不要となる。
図15は、ユーザ端末が、IPアドレスと対応するMACアドレスを知るための送信するARPパケットのフォーマットを示す。ARPパケットは、MACヘッダ81の後にARPメッセージMを含んでいる。
図16は、上りパケット処理ルーチン400のフローチャートを示す。
L2SW10のプロセッサ11は、ユーザ網NWと接続された入力回線インタフェース14から受信パケットを読み出すと、IPアドレス管理テーブル70から、MACアドレス71が受信パケットの送信元アドレスと一致するテーブルエントリを検索する(ステップ401)。検索の結果(402)、送信元MACアドレスに該当するテーブルエントリが無かった場合、プロセッサ11は、受信パケットの種類を判定し(403)、受信パケットがDHCP DISCOVERパケットでなければ、受信パケットを廃棄して(414)、このルーチンを終了する。
受信パケットがDHCP DISCOVERパケットの場合、プロセッサ11は、受信パケットの入力ポートIDと同一の接続ポートID72で、IPアドレス管理テーブル70に登録済みの割当てIPアドレス数(テーブルエントリ数)をカウントし、割当てIPアドレス数が予め決められた上限値MAXに達しているか否かを判定する(404)。同一の接続ポートIDで割当てIPアドレス数が既に上限値に達していた場合、プロセッサ11は、受信パケットを廃棄して(414)、このルーチンを終了する。
割当てIPアドレス数が未だ上限値に達していなければ、プロセッサ11は、MACアドレス71と接続ポートID72に、受信パケットの送信元MACアドレスと入力ポートIDを含み、割当てIPアドレス73とリソース終了時刻74が空欄の新たなテーブルエントリを生成し、これをIPアドレス管理テーブル70に追加する(405)。この後、プロセッサ11は、受信パケットをルータ32との接続回線を収容した出力回線インタフェース15−nに中継して(413)、このルーチンを終了する。
ステップ402で、受信パケットの送信元MACアドレスに該当するテーブルエントリが見つかった場合、プロセッサ11は、検索されたテーブルエントリの接続ポートID72と受信パケットの入力ポートIDとを比較する(40)。ポートIDが一致した場合、プロセッサ11は、受信パケットの種類を判定し(408)、ポートIDが不一致の場合は、モバイル型のユーザ端末が別のユーザ網に移動してパケットを送信したものと理解して、上記テーブルエントリの接続ポートID72の値を受信パケットの入力ポートIDに変更(407)してから、受信パケットの種類を判定する(408)。但し、ポートIDが不一致の場合、破線で示すように、受信パケットを廃棄して(414)、このルーチンを終了するようにしてもよい。
受信パケットがDHCP DISCOVERパケットの場合、プロセッサ11は、同一のユーザ端末からDHCP DISCOVERパケットが再度送信されたものと理解して、上記テーブルエントリの割当てIPアドレス73をクリア(409)した後、受信パケットをルータ32との接続回線を収容した出力回線インタフェース15−nに中継して(413)、このルーチンを終了する。
受信パケットが、IPアドレス解放のためのDHCP DECLINEパケットまたはDHCP RELEASEパケットの場合(410)、プロセッサ11は、上記テーブルエントリをIPアドレス管理テーブル70から削除(412)した後、受信パケットをルータ32との接続回線を収容した出力回線インタフェース15−nに中継して(413)、このルーチンを終了する。
受信パケットが、DHCP DISCOVERパケット、DHCP DECLINEパケット、DHCP RELEASEパケットの何れにも該当しなかった場合、すなわち、ステップ410の判定結果がNoの場合、プロセッサ11は、受信パケットをルータ32との接続回線を収容した出力回線インタフェース15−nに中継して(413)、このルーチンを終了する。
図17は、下りパケット処理ルーチン500のフローチャートを示す。
L2SW10のプロセッサ11は、ルータ32と接続された入力回線インタフェース14−nから受信パケットを読み出すと、IPアドレス管理テーブル70から、MACアドレス71が受信パケットの送信元アドレスと一致するテーブルエントリを検索する(ステップ501)。検索の結果(502)、宛先MACアドレスに該当するテーブルエントリが無かった場合、プロセッサ11は、受信パケットを廃棄して(509)、このルーチンを終了する。
宛先MACアドレスに該当するテーブルエントリが見つかった場合、プロセッサ11は、受信パケットの種類を判定する。受信パケットが、DHCP ACK(Acknowledge)パケットの場合(503)、プロセッサ11は、上記テーブルエントリの割当てIPアドレス73に、受信したDHCP ACKパケットが示す割当てIPアドレスの値を登録し(504)、上記テーブルエントリのリソース終了時刻74に、現在時刻に上記DHCP ACKパケットが示すリース期間を加えた値を設定する(505)。この後、プロセッサ11は、受信パケットを宛先MACアドレスと対応する出力回線インタフェース15に中継して(508)、このルーチンを終了する。
受信パケットが、DHCP NAK(Negative Acknowledge)パケットの場合(506)、プロセッサ11は、IPアドレス管理テーブル70から上記検索テーブルエントリを削除し(507)、受信パケットを宛先MACアドレスと対応する出力回線インタフェース15に中継して(508)、このルーチンを終了する。受信パケットが、DHCP ACKパケット、DHCP NAKパケット以外のパケットの場合、プロセッサ11は、受信パケットを宛先MACアドレスと対応する出力回線インタフェース15に中継して(508)、このルーチンを終了する。
図18は、実施例2において、ユーザ端末20が、L2SW10を介して、ルータ(DHCPサーバ)32との間で行うIPアドレス割当てのための通信シーケンスを示す。
インターネットIPNWへのアクセスに先立って、ユーザ端末20は、ルータ32に、DHCP DISCOVERパケットを送信する(SQ41)。上記DHCP DISCOVERパケットを受信したL2SW10は、上りパケット処理ルーチン400を実行して、IPアドレス管理テーブル70を参照し、接続ポート当たりの割当てIPアドレスの個数をチェックし、割当てIPアドレス数が上限値に達していなければ、IPアドレス管理テーブル70に新たなテーブルエントリを追加して(S40)、受信パケットをルータ32に中継する(SQ42)。割当てIPアドレス数が上限値に達していれば、ユーザ要求は無視され、受信パケットは廃棄される。
ルータ32は、上記DHCP DISCOVERパケットに応答して、DHCP OFFERパケットを返送する(SQ43)。上記DHCP OFFERパケットを受信したL2SW10は、下りパケット処理ルーチン500を実行してIPアドレス管理テーブル70をチェックし、受信パケットの宛先MACアドレスと対応するテーブルエントリが登録済みであることを確認して(S41)、受信パケットをユーザ端末20に中継する(SQ44)。
DHCP OFFERパケットを受信したユーザ端末20は、次に、DHCP REQUESTパケットをルータ32に送信する(SQ45)。上記DHCP REQUESTパケットは、L2SW10によってルータ32に中継され(SQ46)、ルータ32は、上記DHCP REQUESTパケットに応答して、割当てIPアドレスとリース期間を指定したDHCP ACKパケットを返送する(SQ47)。L2SW10は、上記DHCP ACKパケットを受信すると、IPアドレス管理テーブルで宛先MACアドレスに該当するテーブルエントリの有無をチェックし、受信パケットが示す割当てIPアドレスとリース期間をIPアドレス管理テーブルに登録(S42)した後、受信パケットをユーザ端末20に中継する(SQ48)。
ユーザ端末20は、上記DHCP ACKパケットによって割当てIPアドレスを取得すると、ARPプロトコルに従って、上記割当てIPアドレスに対応するMACアドレスの問合せを行い、自端末以外に同一IPアドレスをもつユーザ端末が存在していないことを確認して(SQ50)、インターネットIPNWとの通信を開始する。
図19は、実施例2におけるユーザIPパケット(またはARPパケット)の通信シーケンスを示す。
ユーザ端末20が、割当てIPアドレスを送信元IPアドレスに適用して、ユーザIPパケットを送信すると(SQ51)、これを受信したL2SW10は、上りパケット処理ルーチン400を実行して、IPアドレス管理テーブル70を参照し(S50)、受信パケットの送信元MACアドレスに該当するテーブルエントリがIPアドレス管理テーブル70に登録済みであることを確認して、受信パケットをルータ32に中継する(SQ52)。
送信元MACアドレスに該当するテーブルエントリがIPアドレス管理テーブル70に未登録の場合、L2SW10(上りパケット処理ルーチン400)は、受信パケットを廃棄する。但し、上り方向の受信パケットをルータ32に中継しておき、ルータ側から受信する下り方向のパケットを下りパケット処理ルーチン500によって廃棄するようにしてもよい。
インターネットIPNW上のサーバがユーザ端末20宛に送信したIPパケットは、ルータ32を介してL2SW10に転送される(SQ53)。L2SW10は、上記IPパケットを受信すると、下りパケット処理ルーチン500を実行して、IPアドレス管理テーブル70を参照し(S51)、IPアドレス管理テーブル70に受信パケットの宛先MACアドレスに該当するテーブルエントリが登録済みであることを確認して、受信パケットをユーザ端末20に中継する(SQ54)。宛先MACアドレスと対応するテーブルエントリがIPアドレス管理テーブル70に未登録の場合、L2SW10(下りパケット処理ルーチン500)は、受信パケットを廃棄する。
図20は、実施例2において、ユーザ端末20が、L2SW10を介して、ルータ(DHCPサーバ)32との間で行うIPアドレス解放のための通信シーケンスを示す。
ユーザ端末20は、自分に割り当てられたIPアドレスを無効化または解放する時、ルータ32宛に、DHCP DECLINEパケットまたはDHCP RELEASEパケットを送信する(SQ61)。DHCP DECLINEパケットは、ユーザ端末に割り当てられたIPパケットが、ARP手順によって、別のユーザ端末に割り当てられたIPアドレスと競合することが判明した時、IPアドレスの割当てを無効にするために送信されるDHCPパケットであり、DHCP RELEASEパケットは、正常に割り当てられたIPパケットが不要になった時、IPパケットを解放するために送信されるDHCPパケットである。
上記DHCPパケットを受信したL2SW10は、上りパケット処理ルーチン400を実行して、受信パケットで解放要求されたIPアドレス(送信元MACアドレスに対応するテーブルエントリ)をIPアドレス管理テーブル70から削除(S60)した後、受信パケットをルータ32に中継する(SQ62)。
IPアドレス管理テーブル70からのテーブルエントリの削除は、上述したDHCP DECLINEパケットまたはDHCP RELEASEパケットの受信時以外に、例えば、リソース終了時刻に達した時、あるいは、ユーザ端末からのリース期間の延長要求がルータ32によって拒否された時にも行われる。
例えば、ユーザ端末20が、リース期間の延長要求(DHCP REQUEST)パケットを送信すると(SQ71)、L2SW10は、上りパケット処理ルーチン400を実行して、受信パケットをルータ32に中継する(SQ72)。ここで、ルータ32が、リース期間の延長を拒否するDHCP NAKパケットを返送(SQ73)した場合、L2SW10は、下りパケット処理ルーチン500を実行し、IPアドレス管理テーブル70から、上記DHCP NAKパケットの宛先MACアドレスと対応するテーブルエントリを削除して(S70)、受信パケットをユーザ端末20に中継する。
以上の実施例では、ISPの管理サーバ(BASや、DHCPサーバとしての機能を備えたルータ)に1つのパケット転送装置(L2SW)10が接続されたネットワーク構成(図1、図10)について説明したが、実際の応用においては、管理サーバには、複数のパケット転送装置が接続され、これらのパケット転送装置を介して多数のユーザ端末が管理サーバと交信する。
本発明の実施例によれば、各パケット転送装置(L2SW)10が、それぞれ単独で、管理サーバに接続されるユーザ端末数をアクセス回線毎に制限することができるため、管理サーバの負荷を軽減することが可能となる。
また、本発明によれば、ISPの管理サーバとの連携を前提とすることなく、広域ネットワークであるインターネットへのユーザ端末の接続数を制限できるため、既存ネットワーク環境への導入が容易であり、例えば、同一ユーザがIPアドレスの割当て要求やセッション接続要求を大量に発信する不正なDoS(Denial of Service)攻撃に対する耐性を高めることが可能となる。
尚、実施例では、L2SWの各回線インタフェース部が、それぞれアクセス回線を介して個別のユーザ網に接続されたネットワーク構成について説明したが、本発明は、回線インタフェース部に収容される特定のアクセス回線が、例えば、ポートVLAVとタグVLANとの変換機能を備えた別のL2SWを介して、複数のユーザ網に接続されるネットワーク構成に対しても適用可能である。この場合、上記特定アクセス回線では複数のタグVLANが多重化された状態となるため、例えば、図3に示したPPPoEセッション管理テーブル40において、上記特定アクセス回線の接続ポートIDについては、ポートIDとVLAN−IDとの組み合わせを適用することによって、VLAN毎にユーザ端末の接続数(PPPoEセッション数)を制限することが可能となる。
また、実施例では、各アクセス回線に個別のユーザ端末、またはHUBを介して複数のユーザ端末を接続したネットワーク構成について説明したが、本発明は、例えば、OLT(Optical Line Terminal)に収容された各光ファイバをスプリッタで複数の支線光ファイバに分岐し、各支線光ファイバにONU(Optical Network Unit)を介してユーザ端末を接続したPON(Passive Optical Network)において、各光ファイバから受信したパケットを上位網との接続回線に多重化するためにOLTに配置されるL2SWに対しても適用できる。
本発明のパケット転送装置(L2SW)を含むネットワーク構成の第1の実施例を示す図。
第1実施例に適用されるL2SW10のブロック構成図。
第1実施例のL2SW10が備えるPPPoEセッション管理テーブル40を示す図。
PPPoEパケットのフォーマット図。
第1実施例におけるPPPoEセッション接続時のL2SWの動作を示す通信シーケンス図。
第1実施例におけるPPPoEセッションステージにおけるデータパケットの通信シーケンスを示す図。
第1実施例におけるPPPoEセッションの切断時の通信シーケンスを示す図。
L2SW10で実行される上りPPPoEパケット処理ルーチン100のフローチャート。
L2SW10で実行される下りPPPoEパケット処理ルーチン200のフローチャート。
本発明のパケット転送装置(L2SW)を含むネットワーク構成の第2の実施例を示す図。
第2実施例に適用されるL2SW10のブロック構成図。
第2実施例のL2SW10が備えるIPアドレス管理テーブル70を示す図。
第2実施例でL2SWが送受信するパケットのフォーマット図。
図13のIPペイロード87に含まれるDHCPパケットのフォーマット図。
ARPパケットのフォーマット図。
第2実施例のL2SW10で実行される上りパケット処理ルーチン400のフローチャート。
第2実施例のL2SW10で実行される下りパケット処理ルーチン500のフローチャート。
第2実施例におけるIPアドレス割当て時のL2SWの動作を示す通信シーケンス図。
第2実施例におけるデータパケットの通信シーケンスを示す図。
第2実施例におけるIPアドレス解放のための通信シーケンスを示す図。
符号の説明
NW:ユーザ網、IPNW:インターネット、10:パケット転送装置(L2SW)、
11:プロセッサ、14:入力回線インタフェース、15:出力回線インタフェース、
20:ユーザ端末、21:HUB、30:BAS、31:認証サーバ、
32:ルータ(DHCPサーバ)、40:PPPoEセッション管理テーブル、
70:IPアドレス管理テーブル、100:上りPPPoEパケット処理ルーチン、
200:下りPPPoEパケット処理ルーチン、300:タイムアウト監視ルーチン、
400:上りパケット処理ルーチン、500:下りパケット処理ルーチン、
600:リース期間監視ルーチン。