JP5816872B2 - 情報処理装置、プログラム、情報処理方法、および情報処理システム - Google Patents

情報処理装置、プログラム、情報処理方法、および情報処理システム Download PDF

Info

Publication number
JP5816872B2
JP5816872B2 JP2010095429A JP2010095429A JP5816872B2 JP 5816872 B2 JP5816872 B2 JP 5816872B2 JP 2010095429 A JP2010095429 A JP 2010095429A JP 2010095429 A JP2010095429 A JP 2010095429A JP 5816872 B2 JP5816872 B2 JP 5816872B2
Authority
JP
Japan
Prior art keywords
vpn
address
interface
group
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010095429A
Other languages
English (en)
Other versions
JP2011217335A (ja
Inventor
悟史 小林
悟史 小林
憲且 大石
憲且 大石
Original Assignee
株式会社ネクステック
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社ネクステック filed Critical 株式会社ネクステック
Priority to JP2010095429A priority Critical patent/JP5816872B2/ja
Publication of JP2011217335A publication Critical patent/JP2011217335A/ja
Application granted granted Critical
Publication of JP5816872B2 publication Critical patent/JP5816872B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、VPNクライアントとVPN(Virtual Private Network)の通信を行うWAN側のインターフェースと、2以上のLANと接続するLAN側のインターフェースを有するVPNサーバが、複数のLANに対応してパケット送信を行う処理に好適な技術に関する。
本発明は、さらに、VPNの通信を行うVPNサーバとVPNクライアントの間におけるルーティング処理に関し、特にEthernetフレームを利用したVPNに関するルーティング処理に好適な技術に関する。
近年、インターネットや通信事業者が持つネットワークを用いて端末間に仮想的な専用線を接続するVPN技術が普及している。VPN技術には、公衆ネットワークとしてインターネットを利用するインターネットVPNと、通信事業者が管理する専用のサービス網を用いて提供されるVPNがある。
インターネットVPNには、VPNの構成に必要な暗号化、認証等の機能を備えたプロトコルをルータやファイアウォール機器に実装してVPNを実現するIPsec(IP security)と、SSLプロトコルを利用してVPNを実現するSSL−VPNのなどがある。
また、通信事業者が管理する専用のサービス網を用いて提供されるVPNには、ラベルとルーティングテーブルを用いたMPLS(Multi Protocol Label Switching)によってVPNを実現するIP−VPNと、EthernetフレームにVLANタグと呼ばれる情報を付加してVPNを実現する広域Ethernetなどがある(例えば、MPLSについて特許文献1参照)。
特許4109692号公報
図19は、複数のLANと接続するVPNサーバのネットワーク構成を説明するための図である。
図19に示したシステムでは、VPNクライアントとLANの組からなる複数のグループが構成されており、同じグループに属するVPNクライアントとLANに属する端末のみが、VPNサーバ110を介して通信をすることができる。
例えば図19に示したシステムでは、VPNクライアント500A及びこれに接続する端末600AとLAN1に属する端末130A、VPNクライアント500B及びこれに接続する端末600BとLAN2に属する端末130B、VPNクライアント500C及びこれに接続する端末600CとLAN3に属する端末130Cが、同じグループに属しており、各グループ内でVPNの通信ができる。
しかし、VPNサーバ110のWAN側インターフェース111に2以上のVPNクライアントを接続し、LAN側インターフェース112にも2以上のLANと接続して、VPNクライアントとLANの所定の組み合わせをグループとして、VPNサーバ110がVPNの通信を仲介する場合、従来は、図に示すとおり、LAN側のインターフェースを物理的に増設する必要があった(LAN側インターフェース112A乃至C)。
また、単にスイッチ端末を追加しただけでは、VPNサーバの制御部は、受信したパケットが、どのLANに属する端末に転送すべきかを判断することができないという問題があった。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、1のLAN側インターフェースによって、2以上のLANとVPNクライアントからなるグループのVPN通信をすることが可能な、新規かつ改良された情報処理装置、プログラム、情報処理方法および情報処理システムを提供することにある。
図1は、Ethernetフレームを利用するVPNのネットワークの構成を説明するための図である。
図2は、一般的な通信パケットの構造を示す図である。ここで、Ethernetフレームは、図2に示す通り、MACヘッダとIPパケットからなる。IPパケットは、IPヘッダとデータからなる。データはTCPヘッダとデータ断片からなる。
図1において、例えば端末600Bから端末600Aに対してVPNの通信を行う場合のVPNセッションは、まずは端末BのVPNクライアントBからVPNサーバ宛に作成される。その際、VPNセッションはTCPヘッダ内のアドレスにおいて設定される。
設定されたTCPヘッダ内のアドレスを用いて、VPNクライアントとVPNサーバ間でEthernetフレームが送受信される。
ところで、VPNの通信を行う端末600A乃至CのVPNクライアント500A乃至Cがすべて同一のISP(Internet Service Provider)のネットワーク内にあるとは限らない。このため、図1に示す通り、VPNサーバ100はルータ200A乃至Cを介して複数のISP300A乃至Cと接続する。
図1におけるVPNサーバ100は、接続したISPから固定のIPアドレスが割り当てられている。具体的には、例えばISPA社300AからはIP−A、ISPB社300BからはIP−B、ISPC社300CからはIP−Cがそれぞれ割り当てられる。
一方、図1におけるVPNクライアント500A乃至CのIPアドレスは、ISPのネトワークに接続する際にISPから割り当てられて動的に決定される。
ここで例えばVPNクライアント500BからVPNサーバ100を介してVPNクライアント500AにVPNの通信を行う場合について説明する。
VPNクライアント500BからVPNサーバ100へ送信されるパケットは、パケット内の宛先IPアドレスとルータが持つ従来の一般的なルーティングテーブルに基づいて送信される。
VPNサーバ100は、VPNクライアント500Bから受信したEthernetフレームをVPNクライアント500Aに転送する際、受信したパケットのMACヘッダに記載されたMACアドレスに基づいて転送先となるVPNクライアント500Aを決定する。
次に、決定したVPNクライアント500Aをキーにして図3のVPNセッションテーブルを検索して使用するTCP自側アドレスとTCPクライアント側IPアドレスを選択し、選択したVPNクライアント500A宛にパケットを送信する。
VPNサーバ100が一社のISPのみに接続している場合には、VPNサーバは、VPNクライアントから受信したパケットを、転送先のVPNクライアントに向けて、接続した一のISPに送信すれば足りる。
しかしVPNサーバ100が複数のISPに接続している場合は、いずれのISPに送信するかを含めて最適な転送先を選択する必要がある。転送先が不適の場合は、パケットが遠回りすることで通信品質が劣化する場合や、転送先のVPNクライアントにパケットが到達しない場合が起こりうるためである。
従来の一般的なルーティングテーブルによって経路制御をする場合は、ルーティングテーブル内に宛先IPアドレスの項目があるために経路制御できる宛先IPアドレスのグループと、ルーティングテーブル内に宛先IPアドレスの項目がないために経路制御できない宛先IPアドレスのグループが存在していた。
このため、IPパケットの宛先IPアドレスが、経路制御の対象となる宛先IPアドレスのグループに含まれていれば、そのグループに関連付けられた転送先ルータにIPパケットを転送する経路制御ができる。
例えば、図1におけるVPNクライアントA500Aの宛先IPアドレスと、VPNサーバ100に割り当てられたIP−AのIPアドレスとがルーティングテーブル内に項目があり、同じ宛先IPアドレスグループに属していれば、最適な転送先としてルータA200Aを選択することができる。
しかし、ISP内において経路制御の対象となるIPアドレスグループは細分化されており、同一のISP内にも種々のIPアドレスグループが含まれている。このため、同じISPA社のネットワークに属している場合でも、ISPA社から割り当てられたIP−AのIPアドレスと、VPNクライアントA500Aに割り当てられたIPアドレスとは同じIPアドレスグループに属しない場合が多い。
IPパケットの宛先IPアドレスが、経路制御の対象となる宛先IPアドレスのグループに含まれていない場合は、最適な転送先とは限らないデフォルト経路と呼ばれるISP宛にパケットを一律に送信することになり、経路制御されずにパケットが送信されてしまうことによって通信時間が遅れる問題があった。
このような経路制御の対象となる宛先IPアドレスの項目がないために経路制御できない場合の対策として、例えば図4のように、接続されたVPNクライアントのIPアドレスと同数の項目を有するルーティングテーブルを動的に作成する必要がある。
しかし、宛先IPアドレスと同数の項目を備えてルーティングテーブルを作成することは、管理運用のコストが嵩むことに加えて、規模拡張性に欠くという問題がある。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、従来の一般的なルーティングテーブルでは選択できない最適な転送先を選択することが可能な、新規かつ改良された情報処理装置、プログラム、情報処理方法および情報処理システムを提供することにある。
中央処理装置と、2以上の端末と接続する第1のインターフェースと、2以上の端末又はローカルエリアネットワークと接続する第2のインターフェースと、第1のインターフェースと接続する所定の端末と、第2のインターフェースと接続する所定の端末又はローカルエリアネットワークとを、グループとして記録する第1のテーブルと、グループに属する端末又はローカルエリアネットワークの転送先となるアドレスを記録する第2のテーブルと、を備え、
前記中央処理装置は、第1のテーブルに記録された所定のグループに属する端末又はローカルエリアネットワークからパケットを受信した場合は、第1のテーブルに基づいて所定のグループに属する他の端末又はローカルエリアネットワークを特定し、第2のテーブルに基づいて転送先となるアドレスを特定し、前記パケットを特定した前記アドレスに転送する情報処理装置である。
前記第2のテーブルに記録されたローカルエリアネットワークは、VLANタグによって識別され、前記中央処理装置は、受信したパケットに含まれるVLANタグによって、前記第1のテーブルに記録した所定のグループに属する他の端末又はローカルエリアネットワークを特定する。
また、前記情報処理装置は、VPNサーバであり、前記第1のインターフェースは、少なくとも一つのVPNクライアントと接続し、前記VPNサーバと前記VPNクライアントの間の通信はVPNによる通信である
以上説明したように本発明によれば、VPNサーバのグループテーブルと転送先テーブルを用いることによって、LAN側インターフェースに接続された複数のVPNクライアントとLANからなるグループの通信を制御することができる。
さらに、本発明によれば、宛先IPアドレスのみによるIPルーティングテーブルでは選択できない最適な転送先をソースIPアドレスを用いることによって特定することができる。
本実施の形態に係るネットワークの構成を説明するための説明図である。 Ethernetフレームの構造を示すための説明図である。 VPNセッションテーブルを示すための説明図である。 宛先IPアドレスによるIPルーティングテーブルを示す説明図である。 VPNサーバの概略構成を示すブロック図である。 VPNサーバのソースアドレスIPルーティングテーブルの構成を説明するための説明図である。 ルータの概略構成を示すブロック図である。 VPNクライアントの概略構成を示すブロック図である。 VPNサーバのパケット転送処理のフロー図である。 ソースIPアドレスルーティングテーブルの構造を示す構造図である。 ソースIPアドレスルーティングテーブルのエントリ例を示す説明図である。 IPアドレスを番号順に並べたIPアドレス空間におけるIPアドレスブロックを示す構造図である。 ソースIPアドレスルーティングテーブルの最適なエントリ探索処理のフロー図である。 図13の探索ループの詳細なフロー図である。 ソースIPアドレスルーティングテーブルの最適なエントリ探索処理の第2の実施例を示すフロー図である。 図15の探索ループの詳細なフロー図である。 エントリ探索回数を示す説明図である。 本願におけるVPNセッションで用いられるパケットの構造を示すための説明図である。 LAN側のインターフェースの課題が発生するネットワークの構成を説明するための説明図である。 LAN側のインターフェースの実施例の形態に係るネットワークの構成を説明するための説明図である。 LAN側のインターフェースの実施例の形態に係るVPNサーバの概略構成を示すブロック図である。 グループテーブルと転送先テーブルのデータ構造例を示すデータ構造図である。 LAN側のインターフェースからパケットを受信した場合の転送前の事前処理を示すフロー図である。 LAN側のインターフェースからパケットを受信した場合の転送処理を示すフロー図である。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
1.本発明の実施の形態に係るネットワーク構成
2.VPNサーバのパケット転送処理のフロー例
3.ソースIPアドレスルーティングテーブルの例
4.最適候補エントリの探索処理フロー例
5.最適候補エントリの探索処理フローの第2の実施例
6.LAN側インターフェースの実施例
[本発明の実施の形態に係るネットワーク構成]
まず、本発明の実施の形態に係るネットワーク構成について説明する。図1は本実施の形態に係るネットワークの構成を説明するための説明図である。
図1において、VPNサーバ100は、ルータA200A乃至ルータC200C、ISPA社300A乃至ISPC社300C、ルータD400A乃至ルータF400C、VPNクライアントA500A乃至VPNクライアントC500Cを介して、端末600A乃至端末600Cと接続されている。各機器間は、例えばイーサネットケーブルによって接続されている。
次に図1におけるVPNサーバ100、ルータA200A乃至ルータC200C、ルータD400A乃至ルータF400C、VPNクライアントA500A乃至VPNクライアントC500Cの概略構成について説明する。
図5は、VPNサーバの概略構成を示すブロック図である。
VPNサーバ100は、図5に示す通り、CPU101、VPNセッションテーブル102、ソースIPアドレスルーティングテーブル103、宛先アドレスによるIPルーティングテーブル104、インターフェースA105、B106、C107、記憶部108からなる。
CPU101は、VPNサーバ内の各ブロックの処理の制御を行う。
VPNセッションテーブル102は、VPNサーバがVPNクライアントにパケットを送信する際にVPNセッションを決定するために用いるテーブルである。具体的には、先に図3について説明した通りである。
図6は、VPNサーバのソースアドレスIPルーティングテーブルの構成を説明するための説明図である。
ソースIPアドレスルーティングテーブル103は、図6に示す通り、ソースIPアドレス、転送先ルータ、使用インターフェースの項目を有し、事前にISPA乃至ISPCから割り当てられたソースIPアドレスと、転送先ルータ及び使用するインターフェースを一組として管理する。
VPNサーバのCPU101は、いずれかのインターフェースで受信した転送対象となるパケットのソース(送信元)IPアドレスをキーにしてソースIPアドレスルーティングテーブル103を検索し、転送先ルータと使用するインターフェースを決定する。このテーブルの詳細については後述する。
ソースIPアドレスには、事前にISPA乃至Cから割り当てられた固定IPアドレスが使用される。このため、ソースIPアドレスルーティングテーブルの項目数は、接続するISPの数で足り、接続するVPNクライアントの数と同数の項目を持つ必要がない。また、このテーブルは、例えばVPNサーバの起動時に設定することにしてもよい。
宛先IPアドレスによるIPルーティングテーブルは、先に図4について説明した通り、宛先IPアドレス、転送先ルータ、使用インターフェースの項目を有し、これらを一組として管理する。
インターフェースA105乃至C107は、ISP毎に割り当てられて他の機器と接続され、パケットの送受信を行う。
記憶部108はVPNの通信に必要な暗号化、メッセージ認証、接続先認証等の情報を記憶する。
図7は、ルータの概略構成を示すブロック図である。
ルータ200A乃至200Cは、図7に示す通り、CPU201と、ルーティングテーブル202とインターフェース203、204からなる。
なお、ルータ400A乃至400Cは、ルータ200A乃至200Cと実質的に同一の機能構成であるため説明を省略する。
CPU201は、ルーティングテーブル202に基づいてパケットの中継先を判断し、判断された中継先へのパケットの送受信を制御する。
ルーティングテーブル202は、パケットの中継先が登録されたテーブルである。
インターフェース203、204は、他の機器と接続され、パケットの送受信を行う。
図8は、VPNクライアントの概略構成を示すブロック図である
VPNクライアント500A乃至500Cは、図8に示す通り、CPU501、記憶部502、インターフェース503、504からなる。
[VPNサーバのパケット転送処理フロー例]
次に、本発明のVPNサーバのパケット転送処理フローについて説明する。図9は、VPNサーバのパケット転送処理のフロー図である。
VPNサーバ100のいずれかのインターフェースが、VPNクライアントからのEthernetフレームの転送要求を受信する(S702)。
VPNサーバ100のCPU101が、受信したパケットのMACヘッダに記載されたMACアドレスに基づいて転送先VPNクライアントを決定する(S704)。
VPNサーバ100のCPU101が、決定した転送先VPNクライアントをVPNセッションテーブル102に参照し、TCPの自側アドレスを決定する(S706)。
次にVPNサーバ100のCPU101は、決定したTCPの自側アドレスをキーにしてソースIPアドレスルーティングテーブル103を検索し、テーブルに存在するか否かを確認する(S708)。
TCP自側アドレスがソースIPアドレスルーティングテーブル103に存在する場合は、ソースIPアドレスルーティングテーブルから転送先ルータ及び使用インターフェースを決定する(S710)。
TCP自側アドレスがソースIPアドレスルーティングテーブル103に存在しない場合は、宛先アドレスによるIPルーティングテーブルから転送先ルータ及び使用インターフェースを決定する(S712)。
VPNサーバ100のCPU101は、決定したインターフェースを使用して、決定した転送先ルータに対してパケットを送信する(S714)。
上記の通り、例えばVPNクライアント500BがVPNサーバ100のいずれのIPアドレスに接続してきたか(いずれのISPを経由して送信してきたか)に応じて、VPNサーバ100が、VPNクライアント500Aに転送するために最適な転送先ルータ200を選択する。これによって、通信経路を最短にして応答時間を短縮し、通信条件を改善することができる。
また、ソースIPアドレスルーティングテーブル103と宛先アドレスを使用したルーティングテーブル104の双方を用いることで、宛先アドレスを使用したルーティングテーブル104のみを用いて処理する場合に比較して、最適な転送先の選択に使用するテーブルの項目数を少なくすることができる。
[ソースIPアドレスルーティングテーブルの例]
図10は、ソースIPアドレスルーティングテーブル103の構造を示す構造図である。ソースIPアドレスルーティングテーブル103は、先に図6において説明した通り、ソースIPアドレス、転送先ルータ、使用インターフェースの項目を有するテーブルである。しかし、より詳細には、図10に示す通り、各項目がツリー構造を模したリンク付きリストである。
図11は、ソースIPアドレスルーティングテーブル103の各構成要素を示す説明図である。
より詳細には、ソースIPアドレスルーティングテーブル103の各構成要素は、IPアドレスプレフィックス、ネットマスク、使用インターフェース、転送先ルータ、next、childからなる。
IPアドレスプレフィックスは、IPアドレスのプレフィックス部分である。また、ネットマスクは、IPアドレスのネットマスク部分である。
「プレフィックス」及び「ネットマスク」は、IPアドレスブロックの範囲を示している。
32bitで構成されるIPアドレスは、アドレスをグループに分割して扱う場合に、一般に「プレフィックス」と呼ばれる部分と「ネットマスク」と呼ばれる部分で表現される。すなわち、あるIPアドレスに対して「ネットマスク」とのAND演算を行い、その結果が「プレフィックス」と一致する場合、そのIPアドレスは当該プレフィックスとネットマスクで表現される。
例えば、図11のIPアドレスのグループには、例えば、192.168.1.1や192.168.1.250等のIPアドレスが含まれる。ネットマスク255.255.255.0とAND演算を行うといずれも192.168.1.0となってプレフィックスと一致するためである。一方、例えば172.16.250.1等のIPアドレスは、AND演算結果がプレフィックスと一致しないため、IPアドレスのグループには含まれない。
使用インターフェースは、パケットを転送するインターフェース名である。また、転送先ルータは、パケットの転送先となるルータのIPアドレスである。
nextは、次のIPアドレスプレフィックスを持つエントリへのリンクである。nextでリンクするエントリは、範囲が異なる前後のIPアドレスグループを指す。
一方、childは、より小さいIPアドレスプレフィックスを持つエントリへのリンクである。childでリンクするエントリは、さらに狭い範囲のIPアドレスグループを指す。
図12は、IPアドレス空間において、例えば0.0.0.0から255.255.255.255までの全体のIPアドレスを順に並べた場合の構造図であり、IPアドレス空間の全体の中における、それぞれのIPアドレスグループの位置関係の例を示すものである。
図10に示したエントリ▲1▼、▲3▼及び▲7▼とエントリ▲4▼及び▲5▼はnextの関係にある。これはIPアドレスの範囲が異なり、IPアドレスを番号順に並べた際、前後のIPアドレスグループに位置することになる。
一方、エントリ▲1▼のchildでリンクするエントリ▲2▼、エントリ▲3▼のchildでリンクするエントリ▲4▼、エントリ▲5▼のchildでリンクするエントリ▲6▼は、IPアドレスを番号順に並べた際、より狭い範囲のIPアドレスグループに位置することになる。
[最適候補エントリの探索処理フロー例]
ソースIPアドレスルーティングテーブル103を用いてIPパケットを転送する場合は、IPパケットのソースアドレスが、テーブルを構成するどのエントリに含まれているかを判断し、そのエントリに記載されている転送先ルータおよび使用インターフェースを使用する。
ここで、IPアドレスグループは、図12に示す通り階層構造を持つため、一のIPアドレスに対する最適なエントリとは、そのIPアドレスが属しうるグループで最も範囲が狭いものとなる。
図10の構造から最適なエントリを選択するために、ソースIPアドレスルーティングテーブルを参照し、「最適候補エントリ」及び「現在エントリ」の二つの変数を用いて図13及び図14の処理を行う。
次に、本発明のVPNサーバの最適なエントリ探索処理フローについて説明する。
図13は、ソースIPアドレスルーティングテーブル103の最適なエントリ探索処理のフロー図である。
VPNサーバ100のCPU101は、受信したパケットからソースIPアドレスを抽出する(S802)。
VPNサーバ100のCPU101は、変数である最適候補エントリを初期化する(S804)。
VPNサーバ100のCPU101は、変数である現在エントリをrootエントリのchildに設定する(S806)。
変数である最適候補エントリの初期化と、同じく変数である現在エントリの設定を終えた後、VPNサーバ100のCPU101は、探索ループ処理を行う(S808)。当該処理の詳細は図14で説明する。
探索ループ処理の結果、VPNサーバ100のCPU101は、最適候補エントリが存在するか否かを判断する(S810)。
最適候補エントリが存在する場合は、VPNサーバ100のCPU101は、存在する最適候補エントリを転送先に設定する(S812)。
最適候補エントリが存在しない場合は、VPNサーバ100のCPU101は、転送先が存在しないと判断して処理を終える(S814)。
図14は、図13の探索ループ(S808)の詳細なフロー図である。以下に、探索ループ処理の詳細について説明する。
探索ループ処理のスタート(S902)の後、VPNサーバ100のCPU101は、現在エントリのIPアドレスの範囲にパケットのIPアドレスが含まれるか否かを判断する(S904)。
現在エントリのIPアドレスの範囲にパケットのIPアドレスが含まれている場合は、VPNサーバ100のCPU101は、現在エントリを最適候補エントリとする(S906)。
次にVPNサーバ100のCPU101は、現在エントリのchildが存在するか否かを判断する(S908)。
現在エントリのchildが存在する場合は、現在エントリをそのchildに設定する(S910)。
現在エントリのIPアドレスの範囲にパケットのIPアドレスが含まれていない場合は、VPNサーバ100のCPU101は、現在エントリのnextが存在するか否かを判断する(S912)。
現在エントリのnextが存在する場合は、VPNサーバ100のCPU101は、現在エントリをそのnextへと設定する(S914)。
現在エントリのnextが存在しない場合は、VPNサーバ100のCPU101は、探索ループを終了する(S916)。
また、現在エントリのchildが存在しない場合は、VPNサーバ100のCPU101は、探索ループを終了する(S916)。
[最適候補エントリの探索処理フローの第2の実施例]
図15は、ソースIPアドレスルーティングテーブル102の最適候補エントリの探索処理の第2の実施例を示すフロー図である。
VPNサーバ100のCPU101は、パケットからソースIPアドレスを抽出する(S1002)。
VPNサーバ100のCPU101は、最適候補エントリを初期化する(S1004)。
変数である最適候補エントリの初期化を終えた後、VPNサーバ100のCPU101は、探索ループ処理を行う(S1006)。当該処理の詳細は図16で説明する。
探索ループ処理の結果、VPNサーバ100のCPU101は、最適候補エントリが存在するか否かを判断する(S1008)。
最適候補エントリが存在する場合は、VPNサーバ100のCPU101は、存在する最適候補エントリを転送先に設定する(S1010)。
最適候補エントリが存在しない場合は、VPNサーバ100のCPU101は、転送先が存在しないと判断して処理を終える(S1012)。
図16は、図15の探索ループ(S1006)の詳細なフロー図である。以下に、探索ループ処理の詳細について説明する。
探索ループ処理のスタート(S1102)の後、VPNサーバ100のCPU101は、表の先頭エントリを走査対象とする。ここで表の先頭とは、IPアドレスを番号順に並べたIPアドレス空間上にエントリを配置した場合に若い番号となるエントリの意味である。
VPNサーバ100のCPU101は、走査対象となるエントリのIPアドレスの範囲に、パケットのIPアドレスが含まれるか否かを判断する(S1106)。
走査対象となるエントリのIPアドレスの範囲に、パケットのIPアドレスが含まれていない場合は、追って説明するS1116の処理を行う。
VPNサーバ100のCPU101は、走査対象となるエントリのIPアドレスの範囲にパケットのIPアドレスが含まれる場合は、最適候補エントリが存在するか否かを判断する(S1108)。
VPNサーバ100のCPU101は、最適候補エントリが存在する場合は、最適候補エントリと走査対象となるエントリのIPアドレスの範囲を比較し、最適候補エントリが走査対象エントリよりも狭い範囲か否かを判断する(S1110)。
最適候補エントリのIPアドレスの範囲が走査対象エントリのIPアドレスの範囲よりも狭い範囲ではない場合は、追って説明するS1116の処理を行う。
VPNサーバ100のCPU101は、最適候補エントリのIPアドレスの範囲が走査対象エントリのIPアドレスの範囲よりも狭い範囲となる場合は、走査対象エントリを最適候補エントリに設定する(S1112)。
VPNサーバ100のCPU101は、最適候補エントリが存在しなかった場合は、走査対象エントリを最適候補エントリに設定する(S1114)。
S1106において走査対象となるエントリのIPアドレスの範囲にパケットのIPアドレスが含まれていない場合、S1110において最適候補エントリのIPアドレスの範囲が走査対象エントリのIPアドレスの範囲よりも狭い範囲ではない場合、S1112において走査対象エントリを最適候補エントリに設定した場合、およびS1114において走査対象エントリを最適候補エントリに設定した場合は、VPNサーバ100のCPU101は、走査対象が、ソースIPアドレスルーティングテーブルの表のIPアドレス順の末尾に達したか否かを判断する(S1116)。
VPNサーバ100のCPU101は、走査対象が、ソースIPアドレスルーティングテーブルの表のIPアドレス順の末尾に達した場合は探索ループ処理を終了する(S1118)。
VPNサーバ100のCPU101は、走査対象が、ソースIPアドレスルーティングテーブルの表のIPアドレス順の末尾に達していない場合は、次のエントリを走査対象とした後に(S1129)、S1106の判断を再度行う。
図17は、エントリ走査回数を示す説明図である。具体的には、図10のリンク構造を持つソースIPアドレスルーティングテーブルに対して、それぞれのエントリが選択されるまでに必要なエントリの走査回数、及びいずれのエントリも選択されないことが決まるまでに必要なエントリの走査回数を、本願方式によって処理する場合と、図10のリンク構造を持たない単純なルーティングテーブルによって処理する場合とで計算結果を比較した図である。
図18は、VPNサーバ100とVPNクライアントA乃至Cとの間でやりとりされるパケット構造を示すための説明図である。
本願では、図2に示した一般的なEthernetフレームのパケットを用いてVPNの通信を行うことが可能である。しかし、より好適には、VPNクライアントがVPNサーバに対してVPNセッションを張る際に、一般的なEthernetフレームから図18に示した構造からなるパケットを作成してVPNの通信を行う。
IPヘッダ701とTCPヘッダ702は、VPNサーバとVPNクライアントの間でVPNの通信を行うために必要なIPアドレス等のデータを含むものである。
データ断片703は、VPNサーバとVPNクライアントの間で運ばれるデータである。例えば、図2に示したEathernetフレームがデータ断片となる場合もある。この場合は、IPヘッダ701とTCPヘッダ702のいずれか又は双方が、Eathernetフレーム内のIPヘッダ、TCPヘッダをそのまま用いていてもよい。
また、データ断片703は、Eathernetを用いた通信のデータであれば、IPX、SNA、FNAのいずれのデータでもよい。更に、宛先不定のブロードキャストデータであってもよい。
図9〜図18の処理によれば、VPNサーバ101内のルーティングテーブルの効率的な構築が可能になるため、ルーティングテーブル走査の高速処理が可能となる。
また、ルーティングテーブルが小規模となるため、管理・運用のコストを安価とすることができる。
[LAN側インターフェースの実施例]
図20は、LAN側のインターフェースの実施例の形態に係るネットワークの構成を説明するための説明図である。
図20において、VPNサーバ120のWAN側インターフェースは、図示しないルータ、インターネット、VPNクライアント500A乃至500Cを介して、端末600A乃至600Cと接続されている。各機器間は、例えばイーサネットケーブルによって接続されている。
また、VPNサーバ120のLAN側インターフェースは、VLAN対応スイッチ140を介して、VLAN1乃至3の端末130A乃至Cと接続されている。
ここで、VPNサーバ120を介して接続されている機器は、本実施例では、VPNクライアントAとVLAN1の構成端末(端末130A)がグループを構成し、VPNクライアントBとVLAN2の構成端末(端末130B)が別のグループを構成し、VPNクライアントCとVLAN3の構成端末(端末130C)が更なる別のグループを構成している。
ここで「グループ」とは、同一グループと識別される親機−子機または子機同士間のコネクションの間でのみデータを転送することである。グループとして識別する方法として、例えば802.1qに規定されるVLAN対応スイッチを用いることができる。
次に、VPNサーバ120の概略構成について説明する。なお、図面番号が同一の機器の構成は前述の通りであるため、説明を省略する。
また、VLAN対応スイッチ140は、LAN側インターフェース122とVLAN1乃至3とを単に結線したものであるため、構成の詳細な説明は省略する。
図21は、LAN側のインターフェースの実施例の形態に係るVPNサーバ120の概略構成を示すブロック図である。
VPNサーバ120は、図21に示す通り、CPU101、記憶部108、WAN側インターフェース121、LAN側インターフェース122、グループテーブル123、転送先テーブル124からなる。なお、図面番号が同一のブロックの機能は前述の通りであるため、説明を省略する。
WAN側インターフェース121は、図示しないルータを介してインターネットと接続されている。
LAN側インターフェース122は、VLAN対応スイッチ140を介してVLAN1乃至3と接続されている。また、LAN側インターフェース122とVLAN対応スイッチ140との間にやりとりされるパケットには、タグが付加されている。
タグは、例えばIEEE802.qに規定されるVLANタグをいう。具体的には、複数のネットワークを論理的に多重化し、物理的に1つのネットワークにおいて、論理的に異なる複数のネットワーク(グループ)内の端末間の通信のみを可能とするために用いるタグである。
図22は、グループテーブル123と転送先テーブル124のデータ構造例を示すデータ構造図である。
グループテーブル123は、VPNクライアントとVLANタグ(またはタグなし)との一組を、一のグループとして記録する。例えばVPNサーバ120が受信したパケット中に、VPNクライアントA500AのアドレスまたはVLAN1のタグが含まれている場合は、VPNサーバ120は、グループテーブル123を参照して、本パケットはGroup1に属するものであると判断することができる。
転送先テーブル124は、グループ毎に、グループに属する転送先となる端末と、宛先MACアドレスとを関連つけて記録する。例えばVPNサーバ120が受信したパケット中に、VPNクライアントAのアドレスが含まれている場合は、グループテーブル123を参照して、Group1に属するものであると判断する。その後、VPNサーバ120は、転送先テーブルを参照して、VLAN1のネットワークに属する端末であるB:B:B:B:B及びC:C:C:C:CのMACアドレスを宛先として、受信したパケットをVPNクライアントへ転送する。
転送先テーブル124は、グループにVLANタグが付いていない場合は転送先を特定できないため、不定とした宛先と、LAN側インターフェースのアドレスを宛先MACアドレスとして関連付けて記録する
図23は、LAN側のインターフェースからパケットを受信した場合の転送前の事前処理を示すフロー図である。
VPNサーバ120は、LAN側インターフェース122からパケットを受信する(S1202)。
VPNサーバ120のCPU101は、受信したパケットはVPNクライアントから送信されたものか否かを判断する(S1204)。具体的には、例えば、パケットをWAN側インターフェース121で受信した場合は、VPNクライアントから送信されたものと判断する。
VPNサーバ120のCPU101は、受信したパケットがVPNクライアントから送信されたものでない場合は、受信したパケットにVLANタグが付いているか否かを判断する(S1206)。
VPNサーバ120のCPU101は、受信したパケットがVPNクライアントから送信されたものである場合は、入力インターフェースをVPNクライアント名と設定する(S1208)。
VPNサーバ120のCPU101は、受信したパケットにVLANタグが付いている場合は、入力インターフェースを「VLANx」と設定する(S1210)。ここでxは例えばタグの値に設定する。
VPNサーバ120のCPU101は、受信したパケットにVLANタグが付いていない場合は、入力インターフェースを「タグなし」と設定する(S1212)。
VPNサーバ120のCPU101は、グループテーブル123を参照し、設定した入力インターフェースの値がグループテーブル123に存在するか否かを確認する(S1214)。
入力インターフェースがグループテーブル123に存在する場合は、VPNサーバ120のCPU101は、転送先テーブル124を参照し、特定されたグループに関連付けられた転送先テーブルのデータを取得する(S1216)。
一方、入力インターフェースがグループテーブル123に存在しない場合は、VPNサーバ120のCPU101は、受信したパケット破棄して処理を終了する(S1218)。
VPNサーバ120のCPU101は、特定されたグループに関連付けられた転送先テーブル124のデータを取得した後、宛先MACアドレスが転送先テーブルに存在するか否かを判断する(S1220)。
宛先MACアドレスが転送先テーブルに存在する場合は、転送処理へ進む(S1222)。
宛先MACアドレスが転送先テーブルに存在しない場合は、VPNサーバ120のCPU101は、宛先MACアドレスを転送先テーブル124に登録し、転送先は当該パケットの入力インターフェースと設定する(S1224)。
図24は、LAN側のインターフェースからパケットを受信した場合の転送処理を示すフロー図である。
転送前の事前処理を行った後に、VPNサーバ120のCPU101は転送処理を開始する(S1302)。
VPNサーバ120のCPU101は、宛先MACアドレスが転送先テーブルに存在するか否かを判断する(S1304)。
宛先MACアドレスが転送先テーブルに存在する場合は、VPNサーバ120のCPU101は、転送先がVPNクライアントか否かを判断する(S1306)。
宛先MACアドレスが転送先テーブルに存在しない場合は、VPNサーバ120のCPU101は、グループテーブル123における同一グループに属する、入力インターフェースを除くすべての宛先MACアドレスにパケットを送信する(S1308)。
転送先がVPNクライアントでない場合は、VPNサーバ120のCPU101は、転送先が「VLANx」か否かを判断する(1310)。
転送先がVPNクライアントである場合は、VPNサーバ120のCPU101は、当該VPNクライアントへパケットを転送する(S1312)。
転送先が「VLANx」でない場合は、VPNサーバ120のCPU101は、LAN側インターフェースへパケットを出力する(S1314)。
転送先が「VLANx」である場合は、VPNサーバ120のCPU101は、パケットにVLANタグを新たに付与する(S1316)。タグを用いて新たなグループの通信を管理するためである。
図20〜図24の処理によれば、VPNサーバ120がグループテーブル123と転送先テーブル124とタグを用いることで、一のLAN側インターフェースを用いて、複数のVLANを多重化させることができる。
また、この結果、物理的にインターフェースを増設する必要がないため、管理・運用のコストを安価とすることができる。
また、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW等の光ディスク、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。または、ネットワークを介してプログラムコードをダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
以上、添付図面を参照しながら本発明の好適な実施の形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと解される。
100 VPNサーバ
101 CPU
102 VPNセッションテーブル
103 ソースIPアドレスルーティングテーブル
104 宛先アドレスを使用したルーティングテーブル
105 インターフェースA
106 インターフェースB
107 インターフェースC
108 記憶部
110 VPNサーバ
111 WAN側インターフェース
112 LAN側インターフェース
112A LAN側インターフェースA
112B LAN側インターフェースB
112C LAN側インターフェースC
120 VPNサーバ
121 WAN側インターフェース
122 LAN側インターフェース
123 グループテーブル
124 転送先テーブル
130 端末
130A 端末A
130B 端末B
130C 端末C
140 VLAN対応スイッチ
200 ルータ
200A ルータA
200B ルータB
200C ルータC
201 CPU
202 ルーティングテーブル
203 インターフェース
204 インターフェース
300 ISP
300A ISPA
300B ISPB
300C ISPC
400 ルータ
400A ルータD
400B ルータE
400C ルータF
500 VPNクライアント
500A VPNクライアントA
500B VPNクライアントB
500C VPNクライアントC
501 CPU
502 記憶部
503 インターフェース
504 インターフェース
600 端末
600A 端末A
600B 端末B
600C 端末C
701 IPヘッダ
702 TCPヘッダ
703 データ断片

Claims (4)

  1. 中央処理装置と、
    2以上の端末と接続する第1のインターフェースと、
    2以上の端末又はバーチャルローカルエリアネットワーク(VLAN)と接続する第2のインターフェースと、
    第1のインターフェースと接続する所定の端末と、第2のインターフェースと接続する所定の端末又はバーチャルローカルエリアネットワーク(VLAN)とを、グループとして記録する第1のテーブルと、
    第2のインターフェースと接続する前記グループに属する転送先となるVPN端末又はバーチャルローカルエリアネットワーク(VLAN)と、宛先MACアドレスを関連付けて記録する第2のテーブルと、
    を備え、
    前記中央処理装置は、第1のテーブルに記録された所定のグループに属する端末又はバーチャルローカルエリアネットワーク(VLAN)からパケットを前記第1又は第2のインターフェースで受信した場合は、受信した前記パケットのソース(送信元)IPアドレスを用いて、第1のテーブルに基づいて所定のグループを特定し、
    前記特定されたグループを用いて、第2のテーブルに基づいて転送先となるVPN端末又はバーチャルローカルエリアネットワーク(VLAN)と宛先MACアドレスを特定した場合は、前記パケットを特定した前記アドレスに転送し、
    前記特定されたグループを用いて、第2のテーブルに基づいて転送先となるVPN端末又はバーチャルローカルエリアネットワーク(VLAN)と宛先MACアドレスを特定できなかった場合は、前記パケットを特定した前記所定のグループに属するすべてのVPN端末及びバーチャルローカルエリアネットワーク(VLAN)の宛先MACアドレスに送信する、
    情報処理装置。
  2. 前記第2のテーブルに記録されたローカルエリアネットワークは、VLANタグによって識別され、
    前記中央処理装置は、受信したパケットに含まれるVLANタグによって、前記第1のテーブルに記録した所定のグループに属する他の端末又はローカルエリアネットワークを特定する
    請求項1に記載の情報処理装置。
  3. 前記情報処理装置は、VPNサーバであり、
    前記第1のインターフェースは、少なくとも一つのVPNクライアントと接続し、
    前記VPNサーバと前記VPNクライアントの間の通信はVPNによる通信である、
    請求項2に記載の情報処理装置。
  4. コンピュータに、
    2以上の端末と接続する第1のインターフェースと、
    2以上の端末又はバーチャルローカルエリアネットワーク(VLAN)と接続する第2のインターフェースと、
    第1のインターフェースと接続する所定の端末と、第2のインターフェースと接続する所定のVPN端末又はバーチャルローカルエリアネットワーク(VLAN)とを、グループとして記録する第1のテーブルと、
    第2のインターフェースと接続する前記グループに属する転送先となるVPN端末又はバーチャルローカルエリアネットワーク(VLAN)と、宛先MACアドレスを関連付けて記録する第2のテーブルと、
    を用いて通信を行い、
    前記中央処理装置は、第1のテーブルに記録された所定のグループに属する端末又はバーチャルローカルエリアネットワーク(VLAN)からパケットを前記第1又は第2のインターフェースで受信した場合は、受信した前記パケットのソース(送信元)IPアドレスを用いて、第1のテーブルに基づいて所定のグループを特定し、
    前記特定されたグループを用いて、第2のテーブルに基づいて転送先となるVPN端末又はバーチャルローカルエリアネットワーク(VLAN)と宛先MACアドレスを特定した場合は、前記パケットを特定した前記アドレスに転送し、
    前記特定されたグループを用いて、第2のテーブルに基づいて転送先となるVPN端末又はバーチャルローカルエリアネットワーク(VLAN)と宛先MACアドレスを特定できなかった場合は、前記パケットを特定した前記所定のグループに属するすべてのVPN端末及びバーチャルローカルエリアネットワーク(VLAN)の宛先MACアドレスに送信する、
    ためのプログラム。
JP2010095429A 2010-03-31 2010-03-31 情報処理装置、プログラム、情報処理方法、および情報処理システム Active JP5816872B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010095429A JP5816872B2 (ja) 2010-03-31 2010-03-31 情報処理装置、プログラム、情報処理方法、および情報処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010095429A JP5816872B2 (ja) 2010-03-31 2010-03-31 情報処理装置、プログラム、情報処理方法、および情報処理システム

Publications (2)

Publication Number Publication Date
JP2011217335A JP2011217335A (ja) 2011-10-27
JP5816872B2 true JP5816872B2 (ja) 2015-11-18

Family

ID=44946570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010095429A Active JP5816872B2 (ja) 2010-03-31 2010-03-31 情報処理装置、プログラム、情報処理方法、および情報処理システム

Country Status (1)

Country Link
JP (1) JP5816872B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3491828B2 (ja) * 2000-09-04 2004-01-26 日本電信電話株式会社 閉域網間接続システムと閉域網間接続方法およびその処理プログラムを記録した記録媒体ならびにホスティングサービスシステム
US7099912B2 (en) * 2001-04-24 2006-08-29 Hitachi, Ltd. Integrated service management system
TWI310275B (en) * 2004-10-19 2009-05-21 Nec Corp Virtual private network gateway device and hosting system
JP2006128803A (ja) * 2004-10-26 2006-05-18 Japan Telecom Co Ltd ネットワーク中継装置及びネットワークシステム
JP2008060631A (ja) * 2006-08-29 2008-03-13 Alaxala Networks Corp 通信装置及びマルチキャストユーザ認証方法

Also Published As

Publication number Publication date
JP2011217335A (ja) 2011-10-27

Similar Documents

Publication Publication Date Title
EP3342127B1 (en) Network packet flow controller with extended session management
US11503116B1 (en) Network neighborhoods for establishing communication relationships between communication interfaces in an administrative domain
EP3231160B1 (en) Stateful load balancing in a stateless network
EP3198822B1 (en) Computer network packet flow controller
US8396954B2 (en) Routing and service performance management in an application acceleration environment
US8165023B2 (en) Methods for the secured interconnection of VNET sites over WAN
US8462790B2 (en) Label switching in fibre channel networks
CN1879388B (zh) 双模式防火墙
WO2017209932A1 (en) Link status monitoring based on packet loss detection
WO2004075482A1 (ja) ネットワークシステム、ラーニングブリッジノード、ラーニング方法及びそのプログラム
WO2017209925A1 (en) Flow modification including shared context
WO2017209944A1 (en) Session continuity in the presence of network address translation
CN107948150B (zh) 报文转发方法及装置
JP4241329B2 (ja) 仮想アクセスルータ
JP5589210B2 (ja) 情報処理装置、プログラム、情報処理方法、および情報処理システム
JP5816872B2 (ja) 情報処理装置、プログラム、情報処理方法、および情報処理システム
JP2005057693A (ja) ネットワーク仮想化システム
SE541314C2 (en) Methods and apparatuses for routing data packets in a network topology
US7454522B2 (en) Connection management apparatus for network devices
KR100431207B1 (ko) 엠피엘에스(mpls)기반망에서의 엑스트라넷아이피-브이피엔(ip-vpn)서비스 제공 방법
Mehra et al. Analyzing security attack on layer 2 and comparing the performance of different routing protocols
WO2023125993A1 (zh) 隧道加密,转发和解密方法以及装置
JP2003258876A (ja) パケット転送装置、パケット転送方法およびその処理プログラム
CHAKMA Study of Computer Networking Protocols and an implementation by writing a program to retrieve a data file from a network drive of another Computer.
CN116389340A (zh) 数据传输方法、装置和网络设备、系统及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130325

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140610

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150331

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150724

R150 Certificate of patent or registration of utility model

Ref document number: 5816872

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250