近年、IP(Internet Protocol:インターネットプロトコル)技術を利用する次世代電話網として、電話・データ通信・ストリーミング放送の融合したマルチメディアサービスを実現するNGN(Next Generation Network:次世代ネットワーク)が構築されてきている。例えば、NGNを構築して、PC、電話、TVなど情報家電の通信インフラを1つにまとめることが考えられている。この際、情報家電間および情報家電とNGNとを接続するために、ホームゲートウェイ(HGW:Home Gateway)が用いられる。つまり、HGWは、家庭内のLAN(Local Area Network)または無線LAN(WLAN:Wireless LAN)とNGNなどのWAN(Wide Area Network)とを相互接続するものである。
HGWは、情報家電とインターネット等のネットワークとをプロトコル中継、アドレス変換、IPパケットの転送を行うことによって相互接続する。そのため、NGNにおいて新しいサービスを追加するために通信規格を追加・変更する場合、HGWのファームウェアを更新するだけで新しいサービスをユーザに提供することができる。
一般に、ファームウェアの更新を有効なものにするためにHGWをリセット(再起動)しなければならない。HGWのファームウェアの更新は、通常、インターネットなどを介して自動的に行われており、ファームウェアが更新されるとその都度自動的にHGWが再起動される。
しかしながら、HGWはいつでも再起動してもいいものではない。すなわち、電話通信(通話)中にHGWのリセットが行われると通話が遮断されてしまうので、HGWは、通話中はリセットしないように制御しなければならない。
以上のように、HGWのような中継装置では、ファームウェアの更新のために自動的に再起動を行うことが求められている。その一方で、再起動によって、通信サービスを中断させないことが求められている。例えば、下記の特許文献1から3には、再起動による通信サービスの中断を防ぐ技術が開示されている。
具体的には、特許文献1には、中継装置が、特定の通信装置からの契機信号を受信したときに、自装置の再起動を行うことによって、自装置が確実に通信を行っていない状態で再起動を行う技術が開示されている。
また、特許文献2には、VoIP(Voice over IP)回線で通話を行っているときに再起動を要する操作が行われた場合に、利用者に再起動の許可を求め、許可が無いときは通話終了時に再起動を行うことによって、再起動による通話の中断を防ぐ技術が開示されている。
さらに、特許文献3には、通信中のデータが存在しないことが確認されたときに再起動を実行することによって、通信中のデータが再起動によって破壊されることを防ぐ技術が開示されている。
ここで、通話以外のデータ通信の場合には、データ通信が途切れたとしても、再起動後にデータの再送信を行うことでリカバリーできる可能性があるので、再起動による通信の中断は許容できる。つまり、通話以外のデータ通信が行われている場合には、ファームウェアの更新等によるHGWの再起動を優先してもよい。しかし、通話のデータ通信が中断することは問題であるから、通話中にはHGWを再起動させないことが好ましい。
このように、通話以外のデータ通信よりも再起動を優先させるが、通話のデータ通信は再起動によって中断させないようにするためには、現在行われているデータ通信が、通話によるものであるか否かを判定する必要がある。
例えば、特許文献2のように、通話専用の回線を備えている装置であれば、その回線を使用しているか否かによって、現在行われているデータ通信が、通話によるものであるか否かを判定することができる。
また、従来の一般的なNGN用のHGWでは、NGNの通信規格がSIP(Session Initiation Protocol)で標準化されていることから、現在行われているデータ通信が、通話によるものであるか否かを判定することができる。これにより、通話中にのみ再起動を行わないように制御することもできる。これについて、図9〜12に基づいて説明する。
図9は、従来のNGN用のHGW200と、NGN51、Internet(インターネット)52、NGN端末41、42、およびPC44との接続関係を示す図である。図示のように、HGW200は、LAN31、WLAN32、およびWAN33と接続している。
そして、HGW200は、LAN31を介してNGN端末41と接続され、WLAN32を介してNGN端末42およびPC44と接続されている。さらに、HGWは、WAN33を介してNGN51およびインターネット52と接続されている。このような接続関係の下、HGW200は、NGN端末41、NGN端末42、およびPC44と、NGN51またはインターネット52との通信を中継している。
図10は、従来のHGW200の要部構成を示すブロック図である。図示のように、HGW200は、制御部101、記憶部102、LANインターフェース11、WLANインターフェース12、およびWANインターフェース13を含む。そして、制御部101は、パケット転送部103、電話部4、およびリセット制御部106を含む。また、記憶部102は、電話呼フラグ記憶部7を含む。
パケット転送部103は、HGW200の主要機能であるアドレス変換機能、およびファイアウォール機能などを有している。すなわち、パケット転送部103は、LAN31、WLAN32、またはWAN33(以下、HGW200が接続しているLAN31、WLAN32およびWAN33のネットワークを総称して接続ネットワークとも称する)を介してパケットデータを受信し、受信したパケットデータが電話呼である場合には、電話部4に当該パケットデータの処理を行わせる。また、受信したパケットデータが電話呼ではない場合には、ウィルスなどの危険なデータでないか確認し、正常なデータであれば、必要に応じてアドレス変換して所定の転送先に送信する。なお、電話呼であるか否かは、電話部4が利用しているポート番号を見て判断することができる。
電話部4は、電話呼に関する制御を行う。具体的には、電話部4は、パケット転送部103が電話呼の受信を確認したときに、通話を開始するための処理を行う。また、通話の開始後は、受信した通話のパケットを通話の相手端末に転送する処理を行う。そして、通話を終了するときには、通話を終了するための処理を行う。
また、電話部4は、電話呼の受信を確認したときに、電話呼フラグを電話呼フラグ記憶部7に立てる(電話呼フラグをONにする)。さらに、電話部4は、電話呼の受信の終了を確認したときに、電話呼フラグ記憶部7の電話呼フラグを下げる(電話呼フラグをOFFにする)。なお、電話部4は、SIPメッセージを転送する、いわゆるB2BUA(Back to Back User Agent)の機能も有する。
リセット制御部106は、HGW200のファームウェアの更新などにより、HGW200の再起動の要求があったときに、電話呼フラグ記憶部7に記憶されている電話呼フラグの有無(ON/OFF)を参照して、HGW200の再起動を実行するか否かを制御する。
次に、HGW200において、SIPによる通話開始時、および通話終了時に行われる処理の詳細について図11を用いて説明する。図11は、SIPによる通話開始時時・通話終了時の典型的なシーケンスを示す図であり、同図(a)は通話開始時のシーケンスを示し、同図(b)は通話終了時のシーケンスを示す図である。ここでは、発呼側と着呼側とのSIPメッセージの転送を行うサーバとしてプロキシ・サーバ(Proxy Server;SIP Proxy)がある場合を考える。
同図(a)に示すように、通話開始時には、発呼側は、プロキシ・サーバを介してSIP INVITEを着呼側に送信し、着呼側は、SIP INVITEを受信して、当該SIP INVITEに対する200OKを、プロキシ・サーバを介して発呼側に送信する。そして、発呼側がSIP INVITEに対する200OKを受信すると、通話が開始される。
一方、通話終了時には、同図(b)に示すように、電話の接続を切る側は、切られる側に対してプロキシ・サーバを介してSIP BYEを送信する。そして、電話の接続を切られる側は、SIP BYEに対する200OKを、プロキシ・サーバを介して切る側に送信する。そして、切る側がSIP BYEに対する200OKを受信すると、通話が終了となる。
このように、SIPでは、電話呼の受信時に、電話呼の受信を示すSIPメッセージであるSIP INVITEが送受信される。また、通話終了時には、通話の終了を示すSIPメッセージであるSIP BYEが送受信される。このため、電話部4は、SIPメッセージを参照することによって、通話中であるか否かを判断することができる。
次に、図12を用いて、リセット制御部106の動作を説明する。図12は、リセット制御部106が行う再起動制御のシーケンスを示す図である。上述のように、電話部4は、正常な電話呼を発呼または着呼したとき、より詳細にはSIP INVITEまたはSIP INVITEに対する200OKの受信を確認したときには、電話呼フラグ記憶部7に電話呼フラグを立てる。電話呼フラグが立てられた後は、リセット制御部106は、HGWのリセットの要求があったとしても、リセットを行わないように制御する。
そして、電話部4は、通話を終了したとき、より詳細にはSIP BYEまたはSIP BYEに対する200OKの受信を確認したときには、電話部4は、電話呼フラグ記憶部7の電話呼フラグを下げる。リセット制御部106は、電話呼フラグが下げられた状態において、HGW200のリセットの要求があったときには、リセットが行われるように制御する。
このように、HGW200では、リセット制御部106が、電話部4が電話呼を送受信していることを示す電話呼フラグに応じてリセットの可否を制御する。これにより、HGW200では、電話中に再起動が行われることを防ぐことができる。
ここで、携帯電話等の通信端末においても、通信のオールIP化が進められており、3GPP(Third Generation Partnership Project)などによって標準規格の策定が行われている。その中で、次世代(S3G(Super3G)、3.9G)の携帯電話では、WLANやLTE(Long Term Evolution)などの無線通信機能を備えることも可能となっている。
例えば、WLANを用いて3G網にアクセスするための技術として、3GPPにより標準化されたI−WLAN(Interworking WLAN)技術がある。また、LTEを用いて3G網にアクセスするための技術として、3GPPによりSAE(System Architecture Evolution)の仕様の策定が進められている。
ここで、上記のような無線通信機能を有する通信端末が3G網にアクセスする方法を図13に基づいて説明する。図13は、I−WLANの無線通信機能を有する3G端末(UE)43と、3G網(3GNetwork)56との接続関係を示す図である。3G端末43は、Non3Gアクセスにて、3G網56に接続するようになっている。
なお、Non3Gアクセスとは、携帯電話における通常の通信経路(携帯電話の中継基地)を介さずに3G網56にアクセスすることをいう。例えば、上記のI−WLANやSAEなどでは、Non3Gアクセスが行われる。
図示のように、3G端末43は、WLAN AP(Access Point)34を介してインターネット52に接続する。これは、IPによるアクセスである。I−WLANでは、3G端末43と、3G網の末端であるePDG(evolved Packet Data Gateway)53との間にIPsecトンネルを張ることによって、IPネットワークから3Gネットワークへのアクセスを実現する。
このように、I−WLANなどの技術を用いることにより、3G端末は、WLAN APを介して3G網にアクセスすることができる。この場合には、3G端末は、通話のデータについてもIPsecパケットとして、WLAN APを介して3G網と送受信することができる。
なお、一般的には、WLAN AP34は、ファームウェアの自動更新を行わない。そのため、WLAN AP34が自動的にリセットされることもない。例えば、家庭内にあるWLAN AP34の場合、リセットは、通常手動で行われる。また、商用的なWLAN AP34(例えばホットスポットなど)の場合、計画的に再起動が行われる。
このように、従来は、WLAN AP34のリセットは、自動化されていなかったため、WLAN AP34を介して通話しているときにリセットが行われて通話が中断するという問題は生じていなかった。そのため、通話中にWLAN AP34の再起動を抑制する技術は、考えられていなかった。
しかしながら、近年では、NGNのネットワークの中に3G端末を取り込み、NGN用のHGWを3G端末のWLAN APとして使用されるようになった。NGN用のHGWを3G端末のWLAN APとして用いる場合、HGWは、3G端末の電話呼を電話呼として管理せず、電話呼以外の通信データとして処理する。
このため、従来のHGWでは、3G端末の電話呼の送受信中に、ファームウェアの更新などがあった場合にも、自動的にリセットが行われる。つまり、従来のNGN用のHGWを3G端末のWLAN APとして用いる場合、3G端末の電話呼を電話呼として管理できないため、3G端末の通話を中断するようなリセットが行われる虞がある。
ここで、通話のデータをIPsecパケットで送受信する場合には、IPsecパケットは、暗号化されておりSIPであるかの判定はできないため、通話のデータと通話以外のデータとを識別することができない。
つまり、通話のデータをIPsecパケットで送受信することが可能となることによって、通話中に再起動を行わないように制御することができないという問題が生じる。
なお、上記特許文献3では、通話のデータか否かにかかわらず、通信中のデータがある場合には再起動を制御している。このため、通話以外のデータ通信中において再起動を優先させることができず、必要な再起動が行われない虞がある。
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、通話のデータがIPsecパケットで送受信される状況下において、通話中に再起動を行わないように制御する中継装置等を実現することにある。
本発明に係る中継装置は、上記課題を解決するために、通信パケットの中継を行うと共に、所定のタイミングで再起動を行う中継装置であって、上記通信パケットの中継を行うパケット中継手段と、上記パケット中継手段が中継する上記通信パケットが、IPsecプロトコルによって暗号化された通信パケットであるIPsecパケットであるか否かを判定するIPsecパケット判定手段と、上記IPsecパケット判定手段が、上記パケット中継手段が中継する通信パケットがIPsecパケットであると判定したときに、再起動を行わないようにする再起動制御手段とを備えていることを特徴としている。
また、本発明に係る中継方法は、通信パケットの中継を行うと共に、所定のタイミングで再起動を行う中継装置の中継方法であって、上記通信パケットの中継を行うパケット中継ステップと、上記パケット中継ステップにおいて中継される上記通信パケットが、IPsecプロトコルによって暗号化された通信パケットであるIPsecパケットであるか否かを判定するIPsecパケット判定ステップと、上記IPsecパケット判定ステップにおいて、上記パケット中継ステップにおいて中継される通信パケットがIPsecパケットであると判定したときに、再起動を行わないように制御する再起動制御ステップとを含むことを特徴としている。
上記の構成によれば、中継する通信パケットに対してIPsecパケットであるか否かを判定して、中継する通信パケットがIPsecであると判定した場合に、再起動を行わないように制御を行う。
すなわち、上記の構成によれば、IPsecパケットを中継するときには、中継装置の再起動が行われない。このように、通話のデータの送信に用いられるIPsecパケット中継時に再起動させないことにより、再起動による通話の中断を防ぐことができる。
なお、IPsecパケットには、通話に使用されているもの(例えばVoIPのIPsecパケット)と、それ以外のもの(例えばHTTPのIPsecパケット)とが含まれる。しかしながら、どのようなデータの通信中であっても再起動を行わないようにする特許文献3の技術と比べて、通話に使用されることの多いIPsecパケットの中継時に限って再起動を制御する上記の構成の方が、通話以外のデータ通信中において再起動を優先させることができる点で有利である。
また、上記パケット中継手段が中継する通信パケットは、IPv4のUDPパケットであって、上記IPsecパケット判定手段は、上記パケット中継手段が中継するIPv4のUDPパケットの送信先及び送信元のポート番号と、IPsecパケットの中継の際に用いられるポート番号とが一致する場合に、当該通信パケットがIPsecパケットであると判定することが好ましい。
ここで、中継装置において中継される通信パケットには、そのあて先及び送信元のポート番号が付されているが、上記IPv4のUDPパケットがIPsecパケットであるときには、特定のポート番号が使用される。
そこで、上記の構成によれば、上記パケット中継手段が中継する通信パケットがIPv4のUDPパケットの場合、上記IPv4のUDPパケットの送信先及び送信元のポート番号と、IPsecパケットの送受信の際に用いられる特定のポート番号とが一致していることを確認することによって、当該通信パケットがIPsecパケットであるか否か判定している。
例えば、IPv4の場合には、IPsecパケットの送受信時には、当該通信パケットの送信先がWANである場合を除いて、送信先及び送信元のポート番号として500番が使用される。このため、上記IPsecパケット判定手段は、中継する通信パケットの送信先及び送信元のポート番号が500番であることを確認した場合に、当該パケットをIPsecパケットであると判定してもよい。
なお、IPv4を利用しHGWでNAT(Network address translation)を行う場合において、IPsecパケットをWANに送信する場合には、送信元のポート番号として500番以外が使用され、送信先のポート番号として500が使用される。このため、上記IPsecパケット判定手段は、IPsecパケットをWANに送信する場合には、中継する通信パケットの送信先のポート番号が500番であり、送信元のポート番号が500番でないことを確認したときに、当該パケットをIPsecパケットであると判定してもよい。
また、上記パケット中継手段が中継する通信パケットは、IPv4のUDPパケットであって、上記IPsecパケット判定手段は、上記パケット中継手段が中継する通信パケットのUDPチェックサムフィールドの値がゼロである場合に、当該通信パケットがIPsecパケットであると判定することが好ましい。
ここで、中継装置において中継されるUDPパケットには、データの検査のためにチェックサムフィールドが設けられていることがある。そして、IPv4のIPsecパケットの中には、チェックサムフィールドに特定の値が格納されているものもある。
そこで、上記の構成によれば、上記パケット中継手段が中継する通信パケットがIPv4のUDPパケットの場合、当該通信パケットのUDPチェックサムフィールドの値を確認することによって、当該通信パケットがIPsecパケットであるか否か判定している。
例えば、IETF(Internet Engineering Task Force)では、IPv4において、UDPパケットがUDP Encapsulationされた通信パケット、すなわちIPv4のIPsecパケットのUDPチェックサムフィールドをゼロに設定する仕様となっている。したがって、上記IPsecパケット判定手段は、通信パケットがIPv4のUDPパケットであり、かつそのUDPチェックサムフィールドの値がゼロであることを確認した場合に、当該通信パケットをIPsecパケットであると判定してもよい。
なお、UDPチェックサムフィールドの値のみに基づいて、通信パケットがIPsecパケットであるか否かを判定してもよいが、上述の送信先及び送信元のポート番号による判定を併用してもよい。
例えば、送信先及び送信元のポート番号に基づいてIPsecパケットであると判定した通信パケットについて、さらにそのUDPチェックサムフィールドの値から、当該通信パケットがIPsecパケットであるか否かを判定するようにしてもよい。これにより、中継する通信パケットがIPsecパケットであるか否かをより厳密に判断することができる。
また、上記IPsecパケット判定手段は、上記パケット中継手段が中継する通信パケットのヘッダの値が、当該通信パケットがIPsecパケットであることを示している場合に、当該通信パケットがIPsecパケットであると判定することが好ましい。
ここで、IPsecパケットのヘッダには、当該通信パケットがIPsecパケットであることを示す情報が含まれていることもある。そこで、上記の構成によれば、中継する通信パケットのヘッダの値を確認することによって、当該通信パケットがIPsecパケットであるか否か判定する。
例えば、IPsecパケットのヘッダには、当該通信パケットがIPsecパケットであることを示す情報が含まれている場合がある。したがって、上記IPsecパケット判定手段は、通信パケットのヘッダの値が、当該通信パケットがIPsecパケットであることを示していることを確認した場合に、その通信パケットをIPsecパケットであると判定してもよい。
また、上記IPsecパケット判定手段は、上記パケット中継手段が中継する通信パケットのペイロード長が、予め定めたIPsecパケットのペイロード長の下限値以上、かつ、上限値以下である場合に、該通信パケットがIPsecパケットであると判定することが好ましい。
上述のように、IPsecパケットには、通話に使用されているものと、それ以外のものとが含まれる。そして、通信中にリセットが行われると問題があるのは、通話に使用しているIPsecパケットである。つまり、IPsecパケットのうち、通話に使用しているものと、それ以外のものとを判別し、通話以外のIPsecパケットをリセットの判定に用いないようにすること(IPsecパケットではないものとして取り扱うこと)によって、IPsecパケットの送受信時であっても、それが通話のパケットでない場合にはリセットを行うことが可能になる。
ここで、通話に使用されているIPsecパケットは、通話等のデータの送受信に用いられる性質上、そのペイロード長が一定の範囲内に含まれることが多い。このため、通話に使用されているIPsecパケットのペイロード長の上限値及び下限値を予め設定することができる。
そこで、上記の構成によれば、中継する通信パケットのペイロード長が、予め定めた下限値と上限値とで規定される範囲内に含まれているか否かを確認することによって、当該通信パケットがIPsecパケットであるか否か判定する。
例えば、VoIP/IPTV電話に用いられるIPsecパケットのペイロード長は、160BYTEから1479BYTEの範囲に含まれることが多い。このため、上記IPsecパケット判定手段は、例えば上記下限値を160BYTEとし、上記上限値を1479BYTEとして、中継する通信パケットがIPsecパケットであるか否かを判定してもよい。
これにより、IPsecパケットの中継時であっても、それが通話のパケットでない場合には再起動を行うことが可能になる。
また、上記再起動制御手段は、上記IPsecパケット判定手段が、上記パケット中継手段が中継する通信パケットがIPsecパケットであると判定した後の一定時間Tの間は、再起動を行わないように制御することが好ましい。
ここで、通話のデータがIPsecパケットで送受信されるときには、一連の通話が複数のIPsecパケットに分割して送受信される。このため、通話データを構成するIPsecパケットの1つが受信または送信された後、該IPsecパケットの次のIPsecパケットが受信または送信されるまでには、タイムラグが生ずる。このタイムラグの期間は、IPsecパケットの受信中ではないが、一連の通話データの受信または送信中であるから、この期間に再起動が行われることは好ましくない。
そこで、上記の構成によれば、上記IPsecパケット判定手段が、上記パケット中継手段の中継する通信パケットがIPsecパケットであると判断した後の一定時間Tの間は、上記中継装置の再起動を行わないようにしている。
このように、再起動を行わないようにする期間に、時間Tの幅を持たせることによって、IPsecパケットを受信または送信した後、次のIPsecパケットを受信するまでのタイムラグの期間に再起動が行われる可能性を低減することができる。つまり、上記の構成によれば、一連の通話データの受信中に再起動が行われる可能性を低減することができる。
また、上記一定時間Tは、上記パケット中継手段がIPsecパケットを受信する、予め定められた一定の時間間隔t1の自然数倍であることが好ましい。
上記のように、IPsecパケットを受信または送信した後、次のIPsecパケットを受信または送信するまでのタイムラグが発生するが、このタイムラグの期間が一定である場合がある。
そこで、上記の構成によれば、上記一定時間Tを、上記タイムラグの期間に合わせて設定している。つまり、上記一定時間Tを、IPsecパケットが上記パケット中継手段に対して送信される、予め定められた一定の時間間隔t1の自然数倍としている。
したがって、上記タイムラグの期間に再起動が行われること、すなわち一連の通話データの受信中に再起動が行われることを防ぐことができる。
また、上記一定時間Tは、連続して受信される通信パケットが一連の通話データを構成する通信パケットであるか否かを判定する基準として予め定められた基準時間t2より大きいことが好ましい。
上述のように、一連の通話データを構成する各通信パケットは、時間間隔を空けて受信される。ここで、一定以上の時間を空けて通信パケットが受信された場合には、それらの通信パケットは、一連の通話データを構成しないものと判断される。長時間、続きの通信パケットが受信されない場合には、通信パケットの送信等に失敗している可能性があるからである。なお、連続して受信される通信パケットが一連の通話データを構成する通信パケットであるか否かを判定する基準となる基準時間は、予め定められる。
逆に言えば、通信パケットの受信間隔が上記基準時間以下であれば、それらの通信パケットは、一連の通話データを構成する可能性がある。したがって、少なくとも上記基準時間の間は、通信パケットの受信が行われていなくとも、再起動を行わないようにすることが好ましい。
そこで、上記の構成によれば、上記一定時間Tを、連続して受信される通信パケットが一連の通話データを構成する通信パケットであるか否かを判定する基準として予め定められた基準時間t2より大きく設定している。したがって、上記の構成によれば、一連の通話データの受信中に再起動が行われる可能性を低減することができる。
また、上記パケット中継手段は、受信時間t3の間通信パケットを受信し、その後送信時間t4の間に通信パケットの送信を行う処理の繰り返しによって通信パケットの中継を行い、上記一定時間Tは、上記受信時間t3と送信時間t4との和の自然数倍であり、上記IPsecパケット判定手段は、上記パケット中継手段が送信する通信パケットがIPsecパケットであるか否かを判定することが好ましい。
ここで、通信パケットの中継には、通信パケットを受信する処理と、受信した通信パケットを他の装置に送信する処理とが含まれている。そして、上記中継装置において、通信パケットがIPsecパケットであるか否かを判定する処理は、通信パケットを受信するときに行ってもよいし、送信するときに行ってもよい。
しかし、通信パケットを受信するときに、当該通信パケットがIPsecパケットであると判定した後、上記一定時間Tが経過したときに、中継装置が通信パケットを送信する処理を行っていた場合には、送信している通信パケットがIPsecパケットであっても、再起動が行われる可能性がある。通信パケットを送信するときにIPsecパケットの判定を行う場合も同様である。
すなわち、通話の中断を完全に防ぐためには、通信パケットを受信するときにIPsecパケットの判定を行う場合には、少なくとも次の通信パケットの受信時までは、再起動を行わないようにする必要がある。同様に、通信パケットを送信するときにIPsecパケットの判定を行う場合には、少なくとも次の通信パケットの送信時までは、再起動を行わないようにする必要がある。
そこで、上記の構成によれば、上記一定時間Tを、受信時間t3と送信時間t4との自然数倍としている。これにより、一連の通話データの受信中に再起動が行われることを防ぐことができる。
また、上記中継装置は、自装置が接続されているWANから通信パケットを受信するWAN通信部を備え、上記IPsecパケット判定手段は、上記WAN通信部から受信した通信パケットをIPsecパケットであると判定しないことが好ましい。
WANには不特定多数の人間がアクセス可能であることから、WANから受信した通信パケットに対しては、特にセキュリティ対策を厚くして、第三者からの攻撃を防ぐ必要がある。例えば、上記中継装置では、IPsecパケットの中継時に再起動を行わないようにしているので、該中継装置に定期的にIPsecパケットを送信して、再起動をさせないようにする攻撃を受ける可能性がある。
そこで、上記の構成によれば、上記IPsecパケット判定手段は、上記WAN通信部から受信した通信パケットをIPsecパケットであると判断しない。これにより、上記のような攻撃を受けることなく、必要な再起動を行うことができる。
なお、上記中継装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記中継装置の各手段として動作させることにより、上記中継装置をコンピュータにて実現させる制御プログラム、及びそれを記録したコンピュータ読み取り可能な記録媒体も本発明の範疇に入る。
以上のように、本発明に係る中継装置は、通信パケットの中継を行うパケット中継手段と、上記パケット中継手段が中継する上記通信パケットが、IPsecプロトコルによって暗号化された通信パケットであるIPsecパケットであるか否かを判定するIPsecパケット判定手段と、上記IPsecパケット判定手段が、上記パケット中継手段が中継する通信パケットがIPsecパケットであると判定したときに、再起動を行わないように制御する再起動制御手段とを備えている構成である。
また、本発明に係る中継方法は、通信パケットの中継を行うと共に、所定のタイミングで再起動を行う中継装置の中継方法であって、上記通信パケットの中継を行うパケット中継ステップと、上記パケット中継ステップにおいて中継される上記通信パケットが、IPsecプロトコルによって暗号化された通信パケットであるIPsecパケットであるか否かを判定するIPsecパケット判定ステップと、上記IPsecパケット判定ステップにおいて、上記パケット中継ステップにおいて中継される通信パケットがIPsecパケットであると判定したときに、再起動を行わないように制御する再起動制御ステップとを含む構成である。
上記の構成によれば、通話のデータの送受信に用いられるIPsecパケットの中継時に再起動が行われないので、再起動による通話の中断を防ぐことができるという効果を奏する。
本発明の一実施形態について図1から図8に基づいて説明すると以下の通りである。ここでは、まず、本実施形態の通信システムの概要について、図2に基づいて説明する。
〔通信システムの概要〕
図2は、HGW(中継装置)20と、NGN51、インターネット52、3G網56、NGN端末41、42、および3G端末(UE)43との接続関係の一例を示す図である。HGW20はNGNに対応したゲートウェーであり、図示のように、LAN31、WLAN32、およびWAN33と接続している。また、HGW20は、WAN33を介してNGN51およびインターネット52と接続している。さらに、HGW20は、LAN31を介してNGN端末41と接続し、WLAN32を介してNGN端末42および3G端末43と接続している。このような接続関係の下、HGW20は、NGN端末41、NGN端末42、および3G端末43と、NGN51またはインターネット52との通信を中継している。
NGN端末41、42、および3G端末43は、HGW20を介して通信を行うクライアント端末である。ここでは、NGN端末41は固定電話機、NGN端末42は携帯型情報端末、3G端末43は携帯電話機である例を示している。無論、HGW20のクライアント端末は、これらの端末に限られない。
そして、NGN端末41、42、および3G端末43は、それぞれLAN31またはWLAN32を介してHGW20にアクセスし、該HGW20を介して相互に通信を行う。また、NGN端末41、42、および3G端末43は、それぞれLAN31またはWLAN32を介してHGW20にアクセスし、該HGW20のWAN33を介してNGN51およびインターネット52にアクセスする。
ここで、3G端末43が、3G網56にアクセスするときには、図13の従来例と同様に、3G網の末端であるePDG53、PDNゲートウェー54を経由して、3G網56のServing Gateway55に接続する。この際、IP網から3Gへアクセスするために、3G端末43と、ePDG53との間にIPsecトンネルが張られる。そして、このIPsecトンネルを介して3G網56とIPsecパケット、すなわちIPsecプロトコルによって暗号化された通信パケットの送受信が行われる。
〔HGW20のハードウェア構成〕
次に、HGW20のハードウェア構成について、図3に基づいて説明する。図3は、HGW20のハードウェア構成の一例を示すブロック図である。図示のように、HGW20は、CPU21、不揮発性メモリ22、揮発性メモリ23、LAN NIC(Network Interface Card)24、WLAN NIC25、WAN NIC26、操作部27、および表示部28を含む構成である。
CPU21は、HGW20で行われる各種処理を統括して制御する。CPU21は、不揮発性メモリ22または揮発性メモリ23からプログラムまたはデータなどを読み出して、所定の処理を実行する。CPU21が実行する処理については、後に詳しく説明する。
不揮発性メモリ22は、例えば、HD(ハードディスク)などで構成されており、CPU21が処理に用いるプログラムおよびデータなどを保持する。
揮発性メモリ23は、CPU21が処理を行うためにプログラムまたはデータを一時保存する記録媒体(いわゆるメインメモリ)である。
LAN NIC24は、HGW20がLAN31に接続するためのインターフェースである。同様に、WLAN NIC25は、HGW20がWLAN32に接続するためのインターフェースであり、WAN NIC26は、HGW20がWAN33に接続するためのインターフェースである。
図示の例では、HGW20は、LAN NIC24を介してLAN31に接続し、LAN31からNGN端末41に接続している。また、WLAN NIC25を介してWLAN32に接続し、WLAN32からNGN端末42および3G端末43に接続している。そして、WAN NIC26を介してWAN33に接続し、WAN33からNGN51およびインターネット52に接続している。
操作部27は、ユーザがHGW20に操作入力を行うためのものである。操作部27は、ユーザが所望の操作入力を行えるものであればよく、特に限定されない。
表示部28は、ユーザにHGW20の動作状態または処理内容を通知するものである。表示部28は、例えばLED(Light Emitting Diode)のように点灯、点滅等で通知を行うものであってもよいし、液晶表示パネル等のように画像を表示して通知を行うものであってもよい。なお、操作部27および表示部28は、HGW20の必須の構成ではない。
〔HGW20のソフトウェア構成〕
次に、HGW20のソフトウェア構成について図1に基づいて説明する。図1は、HGW20のソフトウェア構成の一例を示すブロック図である。図示のように、HGW20は、制御部1、記憶部2、LANインターフェース(LAN通信部)11、WLANインターフェース(WLAN通信部)12、およびWANインターフェース(WAN通信部)13を含む。
制御部1は、上述のCPU21に相当するものであり、パケット転送部(パケット中継手段)3、電話部4、タイマ5、およびリセット制御部(再起動制御手段)6を含む。記憶部2は、上述の不揮発性メモリ22または揮発性メモリ23に相当するものであり、電話呼フラグ記憶部7およびIPsecフラグ記憶部8を含む。さらに、パケット転送部3は、IPsecパケット検知部(IPsecパケット判定手段)3aおよびIPsecフラグ設定部3bを含む。
パケット転送部3は、HGW20が中継するパケット(通信パケット)、具体的にはLAN31、WLAN32、またはWAN33を介して伝送されてくるパケットを監視し、LAN31、WLAN32、またはWAN33の何れへ転送すべきかを判断する。つまり、パケット転送部3は、いわゆるルータの機能を有する。
具体的には、パケット転送部3は、接続ネットワークからパケットを受信した場合、パケットのヘッダを確認して、電話部4で処理するパケットか自身で処理するパケットかを判断する。そして、パケット転送部3は、電話部4で処理すると判断した場合、電話部4に当該パケットを送信する。なお、電話部4で処理するパケットは、SIPの電話呼及びRTP(Real-time Transport Protocol)の音声データ等である。一方、パケット転送部3は、自身で処理するパケットを受信した場合には、当該パケットのヘッダを確認して、所定の宛先へ接続ネットワークを介して送信する。
IPsecパケット検知部3aは、パケット転送部3が中継するパケットがIPsecパケットであるか否かを判定する。そして、IPsecパケット検知部3aは、パケット転送部3が中継するパケットがIPsecパケットであると判定した場合、タイマ5に対して一定時間Xのタイマをスタートするように命令する。また、IPsecパケット検知部3aは、パケット転送部3が中継するパケットがIPsecパケットであると判定すると、その旨をIPsecフラグ設定部3bに対して通知する。
IPsecフラグ設定部3bは、IPsecパケット検知部3aから、パケット転送部3が中継するパケットがIPsecパケットである旨の通知を受けると、IPsecフラグ記憶部8にIPsecフラグを立てる。IPsecフラグは、パケット転送部3がIPsecパケットの中継を行っていることを示すものであり、このフラグが立っている間は、HGW20のリセットが行われないように制御される。
電話部4は、パケット転送部3によって振り分けられたSIPに基づく電話呼を管理し、また、RTPの音声データ等を所定の宛先へ転送する。つまり、電話部4は、SIPにおいて、いわゆるB2BUAの機能を有するものである。また、電話部4は、SIPメッセージを参照することによって、通話中であるか否かを判断する。電話部4は、詳細は後述するが、通話中であると判断したときには、通話中(電話呼の送受信中)であることを示す電話呼フラグを電話呼フラグ記憶部7に立てる。このフラグが立っている間も、HGW20のリセットが行われないように制御される。
タイマ5は、IPsecパケット検知部3aによって定められた時間(一定時間X)を計時(カウント)するものである。なお、タイマ5の計時のスタートおよび計時のリセットは、IPsecパケット検知部3aの命令に従って行われる。
リセット制御部6は、電話呼フラグ記憶部7に記憶されている電話呼フラグ、およびIPsecフラグ記憶部8に記憶されているIPsecフラグの有無に応じて、HGW20のリセットを制御する。
電話呼フラグ記憶部7は、電話部4によって立てられた電話呼フラグを記憶するものであり、IPsecフラグ記憶部8は、IPsecフラグ設定部3bによって立てられたIPsecフラグを記憶するものである。
LANインターフェース11、WLANインターフェース12、およびWANインターフェース13は、それぞれLAN NIC24、WLAN NIC25、およびWLAN NIC26に対応している。図示のように、LANインターフェース11、WLANインターフェース12、およびWANインターフェース13は、何れもパケット転送部3および電話部4と接続している。
つまり、LAN31、WLAN32、またはWAN33を介してHGW20が受信するパケットは、全てパケット転送部3に受信されるようになっている。そして、HGW20が接続ネットワークを介して送信するパケットのうち、SIPの電話呼及びRTPの音声データ等は、電話部4が送信し、それ以外のパケットは、パケット転送部3が送信する。
以上のように、本実施形態では、HGW20の各ブロック、特に制御部1を、CPU21を用いてソフトウェアによって実現する例を説明する。
すなわち、HGW20は、各機能を実現する制御プログラムの命令を実行するCPU21、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアであるHGW20の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記HGW20に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
また、HGW20を通信ネットワークと接続可能に構成し、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。無論、制御部1をハードウェアロジックによって構成することもできる。
〔HGW20が行う処理の流れ〕
次に、HGW20が行う処理の流れについて、図4〜7に基づいて説明する。ここで、上述のように、HGW20は、中継するパケット(通信パケット)がIPsecパケットであるか否かを判定し、IPsecパケットであると判定した場合に、リセットを行わないようにする。このIPsecパケットであるか否かの判定は、パケットを受信したとき、またはパケットを送信するときに行われる。
〔パケット受信時にIPsecパケットの判定を行う場合の例〕
ここでは、まず、パケット転送部3がパケットを受信したときに、当該パケットがIPsecパケットであるか否かの判定を行う例について、図4および図5に基づいて説明する。図4および図5は、パケット転送部3が接続ネットワークからパケットを受信する際の処理の一例を示すフローチャートである。
パケット転送部3は、LAN31、WLAN32、またはWAN33からのパケット受信を確認する(S10)と、受信したパケットがSIPによる電話呼(通常の電話呼)のパケットか否かを判断する(S11)。
ここで、受信したパケットが通常の電話呼であると判断した場合(S11でYES)には、パケット転送部3は、受信したパケットを電話部4に転送する。そして、パケットの転送を受けた電話部4は、通話が開始されたか否かを確認する(S12)。具体的には、電話部4は、SIP INVITEの受信を確認したとき、またはSIP INVITEに対する200OKの受信を確認したときに通話が開始されたと判断する。
通話が開始されたことが確認された場合(S12でYES)には、電話部4は、電話呼フラグ記憶部7に、上記開始された通話に対応する電話呼フラグを立てる(S13)。上述のように、この電話呼フラグはHGW20のリセット禁止を示すフラグである。
S12において、通話が開始されたことが確認されなかった場合(S12でNO)、およびS13で電話呼フラグを立てた後には、電話部4は、通話が終了されたか否かを確認する(S14)。具体的には、電話部4は、現在管理している電話呼、つまり、S12で受信を確認したSIP INVITE、またはSIP INVITEに対する200OKに対するSIP BYEを受信したとき、またはSIP BYEに対する200OKを受信したときに通話が終了されたと判断する。
ここで、通話が終了されたことが確認された場合(S14でYES)には、電話部4は、電話呼フラグ記憶部7に立てられている、当該終了された通話に対応する電話呼フラグを下げる(S15)。
S14において、通話が終了されたことが確認されなかった場合(S14でNO)、およびS15で電話呼フラグを下げた後には、処理はS10に戻る。つまり、パケット転送部3は、パケットの受信を待ち受け、パケットの受信を確認したとき(S10)に、受信したパケットが通常の電話呼であるか確認する(S11)。そして、通常の電話呼であることを確認した場合には、再びS12からS15の処理が行われる。
一方、S11において、受信したパケットが通常の電話呼以外のパケットであると判断した場合(S11でNO)には、パケット転送部3のIPsecパケット検知部3aは、受信パケット判定処理を行う(S21)。これにより、S10で受信したパケットがIPsecパケットであるか否かが判定される。なお、受信パケット判定処理の詳細については後述する。
ここで、受信パケット判定処理の結果、受信したパケットがIPsecではないと確認された場合(S22でNO)には、処理はS10に戻る。一方、受信したパケットがIPsecであると確認された場合(S22でYES)には、IPsecパケット検知部3aは、その旨をIPsecフラグ設定部3bに通知する。
次に、IPsecパケットの受信が確認された旨の通知を受けたIPsecフラグ設定部3bは、IPsecフラグ記憶部8に、IPsecフラグが立っているか否かを確認する(S23)。
ここで、IPsecフラグが立っていないことが確認された場合(S23でYES)には、IPsecフラグ設定部3bは、IPsecフラグ記憶部8にIPsecフラグを立てる(S24)。そして、タイマ5に指示して一定時間Xの計測をスタートさせる(S26)。
一方、すでにIPsecフラグが立っていることが確認された場合(S23でNO)には、タイマ5によって上記一定時間Xの計測が行われていることになるので、IPsecフラグ設定部3bはタイマ5のカウントをリセットする(S25)。そして、タイマ5に指示して一定時間Xの計測を再スタートさせる(S26)。
次に、IPsecフラグ設定部3bは、タイマ5のカウントがゼロになったか否か、すなわち上記一定時間Xが経過したか否かを確認する(S27)。ここで、タイマ5のカウントがゼロになっていた場合(S27でYES)には、IPsecフラグ設定部3bは、IPsecフラグ記憶部8に立てられているIPsecフラグを下げる(S28)。一方、タイマ5のカウントがゼロになっていなかった場合(S27でNO)には、処理はS10に戻り、次のパケットの受信が行われる。
なお、IPsecフラグ設定部3bは、IPsecフラグをIPsecパケットの受信が確認される度に立ててもよい。その場合、タイマ5のカウントは、各IPsecフラグについて行われる。つまり、IPsecパケットの受信が確認されてIPsecフラグが立てられた後、そのIPsecフラグが下げられる前に、別のIPsecパケットの受信が確認されたときには、2つ目のIPsecフラグが立てられる。そして、1つ目のIPsecフラグが立てられた後、一定時間Xが経過したときに1つ目のIPsecフラグが下げられ、2つ目のIPsecフラグが立てられた後、一定時間Xが経過したときに、2つ目のIPsecフラグが下げられる。
〔一定時間Xについて〕
IPsecフラグが立てられてから下げられるまでの一定時間Xは、リセットを行わないように制御されるが、この一定時間Xは、IPsecパケットの送信間隔に合わせて設定することが好ましい。すなわち、一般に、IPsecパケットは、一定の時間間隔で送受信される。このため、一定時間XをIPsecパケットの送信間隔に合わせることによって、1つのIPsecパケットの送信または受信が確認された後、次のIPsecパケットの送信または受信が行われるまでの間、IPsecフラグが立てられた状態を保つことができる。これにより、IPsecパケットの送受信中にリセットが行われることを防ぐことができる。
例えば、音声符号化方式であるG.711(mu−law)によって、通話に関する通信データがコーデックされている場合、20ms(一定の時間間隔t1)ごとにIPsecパケットの送受信が行われる。このため、3G端末43がmu−lawに対応している場合には、Xを20msのm倍(m:自然数)に設定すればよい。
なお、HGW20の消費電力を抑えるためには、各部材の処理を簡素化することが好ましく、IPsecフラグの上げ下げ回数も必要最小限に抑えることが好ましい。そこで、IPsecパケットの通過周期(20ms)毎にIPsecフラグの確認または再起動の制御判断を行うのではなく、例えば、一定時間Xを20msのm倍(m:2以上の自然数)に設定することがより好ましい。
また、一定時間Xは、HGW20のスリープ時間に合わせて設定してもよい。例えば、WiFi(登録商標)では、省電力化のために、WLAN APが電源管理機能を有する仕様となっている。上記の電源管理機能を有するWLAN APには、100msの間送信機能がスリープし、受信のみを行うものもある。そして、100msスリープした後、数msの間にそれまでに蓄積しているデータの送信を行う。そして、また、100msのスリープモードに入る。
HGW20が、このような電源管理機能を有する場合には、上記一定時間Xを送信機能がスリープする100ms(受信時間t3)+数ms(送信時間t4)に設定することによって、一連の通話データを構成するIPsecパケットの送受信中にリセットが行われることを防ぐことができる。
また、上記一定時間Xは、ジッタバッファに基づいて設定することが望ましい。ジッタバッファは、パケットの送信時に発生するジッタをカバーするためのバッファである。例えば、IPsecパケットを用いて通話を行うVoIP(Voice over IP)では、送信側のパケットを送信する間隔と受信側のパケットを受信する間隔とが一致しない場合がある。そのため、VoIPによるパケットデータを送受信する場合、パケットの損失を防ぐために受信側にジッタバッファを設ける。
ジッタバッファを設けた3G端末43では、受信するVoIPパケットが遅延した場合であっても、ジッタバッファで規定される所定時間内に受信すれば、連続した通話データとみなす。そのため、一連の通話データを途切れさせないために、HGW20においても、3G端末43におけるジッタバッファで規定される所定時間(基準時間t2)内に受信した通信パケットを、連続した通話データと判断可能である。なお、上記所定時間は、ジッタバッファが蓄積可能な通信パケットの受信に要する時間である。例えば、ジッタバッファが、VoIPパケット4個分の容量に設定されている場合には、一般的にVoIPパケットは20ms毎に送信されるので、上記所定時間は80msとなる。
このように、通信パケットの受信間隔が、上記所定時間以下であれば、その通信パケットは、連続した通話データである可能性があるので、上記所定時間内にはリセットを行わないようにすることが好ましい。つまり、上記一定時間Xは、上記所定時間以上に設定することが好ましい。これにより、連続した通話データがリセットによって中断されることを防ぐことができる。
ただし、上記一定時間Xは、IPsecパケットの送信時間間隔、スリープ時間、またはジッタバッファに正確に一致している必要はなく、上記の効果が得られる程度の誤差を含んだ時間であってもよい。例えば、上記一定時間Xが20msの場合、(20ms−数ms)から(20ms+数ms)の範囲に設定してもよい。
〔受信パケット判定処理〕
次に、図4のS21で行われる受信パケット判定処理の詳細について図5に基づいて説明する。図5は、受信パケット判定処理の一例を示すフローチャートである。
まず、IPsecパケット検知部3aは、受信したパケットがWAN側から受信したものであるか否かを確認する(S211)。具体的には、IPsecパケット検知部3aは、パケットをWANインターフェース13で受信したときには、WAN側で受信したと判断する。一方、パケットをLANインターフェース11またはWLANインターフェース12で受信したときには、WAN側で受信されなかった(LAN側で受信した)と判断する。
ここで、WAN側から受信したと判断した場合(S211でYES)には、IPsecパケット検知部3aは、受信したパケットをIPsecパケットではないと判断して(S212)、受信パケット判定処理を終了する。
なお、WAN側からのパケット受信時に、無条件で受信したパケットをIPsecパケットではないと判断する理由は、HGW20のセキュリティを向上させるためである。つまり、HGW20は、IPsecパケットの受信時にリセットが行われないように制御するので、定期的にIPsecパケットを受信している状態ではリセットが行われない。
このため、何者かがHGW20のリセットを妨害する目的でHGW20にIPsecパケットを定期的に送信する可能性がある。このような攻撃は、不特定多数の者がアクセス可能なWAN経由で行われる可能性が高い。ゆえに、HGW20では、WAN側から受信したパケットをHGW20のリセット制御の判断に使用しないこととして、セキュリティを向上させている。
一方、WAN側で受信されなかった(LAN側で受信した)と判断した場合(S211でNO)には、IPsecパケット検知部3aは、受信したパケットのヘッダを参照して、当該パケットがIPv6のIPsecパケットかどうかの確認をする(S213)。これは、IPv6では、IPsecパケットのヘッダ情報に該パケットがIPsecパケットであることを示す情報が含まれているからである。
ここで、当該パケットがIPv6のIPsecパケットであることが確認された場合(S213でYES)には、IPsecパケット検知部3aは、受信したパケットをIPsecパケットと判断して(S214)、受信パケット判定処理を終了する。
一方、受信したパケットがIPv6のIPsecパケットであることが確認されなかった場合(S213でNO)には、IPsecパケット検知部3aは、受信したパケットの送信元ポートが500であり、かつ送信先ポートも500であるか否かを確認する(S215)。
送信元ポートが500であり、かつ送信先ポートも500であるパケットは、IPv4のIPsecパケットと考えられる。これは、HGW20が中継するパケットは、IPv6およびIPv4の2種類のパケットであり、一般的にIPv4の場合グローバルアドレスが不足しており、NAPT(Network Address Port Translation)によるIPアドレスの変換が行われる。そのため、IPsecを利用する場合はUDP encapsulationという技術を用いてUDPに見せかける。結果、HGW20は、ヘッダを参照してもIPsecであることが識別できない(単なるUDP(User Datagram Protocol)パケットとして識別する)。そのため、IPsecパケットの送受信の際に用いられるポート番号(送信元ポート=500、且つ、送信先ポート=500)と通信パケットの宛先及び送信元のポート番号が一致するかどうかを確認することによって、通信パケットがIPsecパケットであるかどうかを判断する。
したがって、送信元ポートが500であり、かつ送信先ポートも500であることが確認された場合(S215でYES)には、IPsecパケット検知部3aは、受信したパケットをIPsecパケットと判断して(S214)、受信パケット判定処理を終了する。
なお、S215の処理の代わりに、IPsecパケット検知部3aは、受信した通信パケットがIPv4のUDPパケットであり、かつそのUDPチェックサムフィールドが0であるか否かを確認してもよい。IPv4のUDPパケットが、IPsecパケットである場合には、チェックサムフィールドがゼロに設定されるからである。
すなわち、IETFでは、IPv4のUDPパケットをUDP Encapsulationした通信パケット、つまりIPv4のIPsecパケットのUDPチェックサムフィールドをゼロに設定する仕様となっている。したがって、IPsecパケット検知部3aは、通信パケットがIPv4のUDPパケットであり、かつそのUDPチェックサムフィールドの値がゼロであることを確認した場合に、当該通信パケットをIPsecパケットであると判定してもよい。
なお、ここでは、中継する通信パケットが、IPv6かIPv4の何れかの通信パケットであることを想定しているので、S213でNOと判定された通信パケットは、IPv4の通信パケットであると考えられる。つまり、S215で判定の対象となる通信パケットは、IPv4の通信パケットであると考えられる。このため、S215において、チェックサムフィールドに基づいて当該通信パケットがIPsecパケットであるか否かを判定する場合には、チェックサムフィールドの値がゼロであるか否かのみが判定される。
また、IPsecパケット検知部3aは、S215でYESと判断した後に、さらに当該通信パケットがIPv4のUDPパケットであり、かつそのUDPチェックサムフィールドが0であるか否かを確認してもよい。この場合には、より厳密に通信パケットがIPsecパケットであるか否かを判定することができる。なお、この場合には、ポート番号による判定と、チェックサムフィールドによる判定とをそれぞれ別の機能ブロックが実行するようにしてもよい。
一方、送信元ポートが500であり、かつ送信先ポートも500であることが確認されなかった場合(S215でNO)には、IPsecパケット検知部3aは、受信したパケットはIPsecパケットではないと判断して(S212)、受信パケット判定処理を終了する。
〔パケット送信時にIPsecパケットの判定を行う場合の例〕
続いて、パケット転送部3がパケットを送信するときに、当該パケットがIPsecパケットであるか否かの判定を行う例について、図6および図7に基づいて説明する。図6および7は、パケット転送部3が接続ネットワークへパケットを送信する際の処理の一例を示すフローチャートである。なお、図6には図4と同様の処理が含まれている。これらの処理については、同一の参照番号を付してその説明を省略する。
まず、パケット転送部3が接続ネットワークにパケットを送信することを確認する(S30)と、パケット転送部3のIPsecパケット検知部3aは、送信パケット判定処理を行う(S31)。これにより、S30で送信するパケットがIPsecパケットであるか否かが判定される。なお、送信パケット判定処理の詳細については後述する。
ここで、送信パケット判定処理の結果、送信するパケットがIPsecではないと確認された場合(S32でNO)には、処理はS30に戻る。一方、送信するパケットがIPsecであると確認された場合(S32でYES)には、IPsecパケット検知部3aは、その旨をIPsecフラグ設定部3bに通知する。以下の処理は、図4のS23からS28の処理と同じである。
〔送信パケット判定処理〕
次に、図6のS31で行われる送信パケット判定処理の詳細について、図7に基づいて説明する。図7は、送信パケット判定処理の一例を示すフローチャートである。
まず、IPsecパケット検知部3aは、送信するパケットのヘッダを参照して、当該パケットがIPv6のIPsecパケットかどうかの確認をする(S311)。ここで、当該パケットがIPv6のIPsecパケットであることが確認された場合(S311でYES)には、IPsecパケット検知部3aは、送信するパケットをIPsecパケットと判断して(S312)、送信パケット判定処理を終了する。
一方、送信するパケットがIPv6のIPsecパケットであることが確認されなかった場合(S311でNO)には、IPsecパケット検知部3aは、当該パケットの送信先がLAN側であるか否かを確認する(S313)。
ここで、パケットの送信先がLAN側であることが確認された場合(S313でYES)には、IPsecパケット検知部3aは、送信するパケットの送信元ポートが500であり、かつ送信先ポートも500であるか否かを確認する(S314)。
LAN側へ送信するパケットの送信元ポートが500であり、かつ送信先ポートも500である場合には、当該パケットは、IPv4のIPsecパケットと考えられる。このため、送信元ポートが500であり、かつ送信先ポートも500であることが確認された場合(S314でYES)には、IPsecパケット検知部3aは、送信するパケットをIPsecパケットと判断して(S312)、送信パケット判定処理を終了する。
一方、送信元ポートが500であり、かつ送信先ポートも500であることが確認されなかった場合(S314でNO)には、IPsecパケット検知部3aは、送信するパケットはIPsecパケットではないと判断して(S316)、送信パケット判定処理を終了する。
ここで、パケットの送信先がLAN側でないこと、すなわちパケットの送信先がWAN側であることが確認された場合(S313でNO)には、IPsecパケット検知部3aは、送信するパケットの送信元ポートが500ではなく、かつ送信先ポートが500であるか否かを確認する(S315)。
WAN側へ送信するパケットの送信元ポートが500ではなく、かつ送信先ポートが500である場合には、当該パケットは、IPv4のIPsecパケットと考えられる。このため、送信元ポートが500でなく、かつ送信先ポートが500であることが確認された場合(S315でYES)には、IPsecパケット検知部3aは、送信するパケットをIPsecパケットと判断して(S312)、送信パケット判定処理を終了する。
なお、図5の例と同様に、送信する通信パケットがIPv4のUDPパケットであり、かつそのUDPチェックサムフィールドが0であるか否かに基づいて、当該通信パケットがIPsecパケットであるか否かを判定してもよい。また、S314またはS315でYESと判断した後に、チェックサムフィールドに基づく判定を行ってもよい。
一方、送信元ポートが500でなく、かつ送信先ポートが500であることが確認されなかった場合(S315でNO)には、IPsecパケット検知部3aは、送信するパケットはIPsecパケットではないと判断して(S316)、送信パケット判定処理を終了する。
なお、電話部4も、パケットの送信時に当該パケットが通話データであるか否かを判断してもよい。この場合には、電話部4は、SIPメッセージを確認することによって通話開始・通話終了を判断して、パケットを送信する際に通話中と判断した場合に電話呼フラグを立てる。
〔リセット制御処理〕
次に、電話呼フラグおよびIPsecフラグの有無に基づいて、HGW20のリセット(再起動)を制御するリセット制御部6の処理を図8に基づいて説明する。図8は、リセット制御部6が行うリセット制御処理の一例を示すフローチャートである。
まず、リセット制御部6は、HGW20のファームウェアのアップデート時等に発生されるリセット指示を受信する(S50)。そして、リセット制御部6は、リセット指示を受信したときに、リセット禁止フラグの確認を行う(S51)。具体的には、リセット制御部6は、電話呼フラグ記憶部7の電話呼フラグおよびIPsecフラグ記憶部8のIPsecフラグの状態を確認する。
そして、リセット制御部6は、電話呼フラグおよびIPsecフラグの何れも立っていない状態となっているか否かを確認する(S52)。ここで、電話呼フラグおよびIPsecフラグのどちらのフラグも立っていないことが確認された場合(S52でYES)、リセット制御部6は、S50で受信したリセット指示に従ってHGW20のリセットを開始する(S53)。これにより、リセット制御処理は終了する。
一方、少なくとも1つのフラグが立っていることが確認された場合(S52でNO)には、リセット制御部6は、一定時間Yだけスリープ(待機)する(S54)。なお、一定時間Yの経過は、例えばタイマ5に計測させればよい。
そして、一定時間Yの経過後、リセット制御部6は、リセット禁止フラグの再確認を行い(S51)、フラグが立っていれば再び一定時間Yの待機を行い(S54)、フラグが立っていなければリセットを開始する(S53)。
このように、リセット制御処理では、電話呼フラグおよびIPsecフラグの何れも立っていない状態となったことが確認されたときにリセットが開始されるようになっている。これにより、通話が通常の電話呼によるものであっても、IPsecによるものであっても、通話中にリセットが行われて通話が途切れることを防ぐことができる。
〔一定時間Yについて〕
一定時間Yは、リセット禁止フラグ(電話呼フラグおよびIPsecフラグ)の状態を確認する周期を示すものであるから、IPsecフラグが立てられてから下げられるまでの一定時間Xに合わせて設定すればよい。なお、上記一定時間XおよびYは、同じでもよいが、異なっていてもよい。例えば、上記一定時間Xを20msに設定し、上記一定時間Yを20msのn倍に設定してもよい。
〔IPsecパケットが通話に使用されているものであるか否かの判定方法〕
上記では、IPv6パケットの場合パケットヘッダに基づいて、またIPv4パケットの場合、パケットの送信元および受信元のポート番号に基づいてIPsecパケットとそれ以外のパケットとを判定する例について説明した。
ここで、IPsecパケットには、通話に使用されているもの(例えばVoIPのIPsecパケット)と、それ以外のもの(例えばHTTPのIPsecパケット)とが含まれる。そして、上述のように、通信中にリセットが行われると問題があるのは、通話に使用しているIPsecパケットである。つまり、IPsecパケットのうち、通話に使用しているものと、それ以外のものとを判別し、通話以外のIPsecパケットをリセットの判定に用いないようにすること(IPsecパケットではないものとして取り扱うこと)によって、IPsecパケットの送受信時であっても、それが通話のパケットでない場合にはリセットを行うことが可能になる。
具体的には、IPsecパケットを送信する、または受信したと判定したときに、さらに以下のような判定を行うことによって、当該IPsecパケットが通話に使用されているものであるか否かを判定することもできる。
例えば、パケットのペイロード長に基づいて、IPsecパケットが通話に使用されているものであるか否かを判定するようにしてもよい。すなわち、通信パケットのペイロード長が、予め定めたIPsecパケットのペイロード長の下限値以上、かつ、上限値以下である場合に、該通信パケットが電話に使用されているIPsecパケットであると判定してもよい。
ここで、一般的に、通話に関する通信パケット(例えば、VoIP/IPTVで通話に用いられる通信パケット)のペイロード長は、160バイトから1479バイトとなっている。このため、判定の対象となっているパケットのペイロード長が160バイト以上である場合に、当該パケットを電話に使用されているIPsecパケットと判断してもよい。同様に、判定の対象となっているパケットのペイロード長が1479バイト以下である場合に、当該パケットを電話に使用されているIPsecパケットと判断してもよく、当該パケットのペイロード長が160バイトから1479バイトの間である場合に、当該パケットを電話に使用されているIPsecパケットと判断してもよい。これにより、IPsecパケットの送受信時であっても、それが電話のパケットでない場合にはリセットを行うことが可能になる。
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。