JPWO2008105032A1 - クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置 - Google Patents

クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置 Download PDF

Info

Publication number
JPWO2008105032A1
JPWO2008105032A1 JP2009501034A JP2009501034A JPWO2008105032A1 JP WO2008105032 A1 JPWO2008105032 A1 JP WO2008105032A1 JP 2009501034 A JP2009501034 A JP 2009501034A JP 2009501034 A JP2009501034 A JP 2009501034A JP WO2008105032 A1 JPWO2008105032 A1 JP WO2008105032A1
Authority
JP
Japan
Prior art keywords
packet
sequence number
server
ack
udp 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.)
Granted
Application number
JP2009501034A
Other languages
English (en)
Other versions
JP4851585B2 (ja
Inventor
松本 剛
松本  剛
毅 山崎
毅 山崎
眞子 河口
眞子 河口
修一 北口
修一 北口
雄介 島田
雄介 島田
耕太郎 岡崎
耕太郎 岡崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008105032A1 publication Critical patent/JPWO2008105032A1/ja
Application granted granted Critical
Publication of JP4851585B2 publication Critical patent/JP4851585B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1868Measures taken after transmission, e.g. acknowledgments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Hardware Redundancy (AREA)

Abstract

本発明の課題は、障害が発生して待機系の装置に切り換えるときに、クライアント装置と待機系のサーバ装置のアプリケーションプログラム間の通信の継続性を確保することである。クライアント装置の通信処理部は、UDPパケットを複数のサーバ装置にマルチキャストして、複数のサーバ装置との間で同時にコネクションを確立する。コネクションを確立した後、アプリケーションのデータを複数のサーバ装置にマルチキャストする。障害発生時には、待機系のサーバ装置が、クライアント装置からマルチキャストされたデータパケットを受信してアプリケーション間通信を継続する。

Description

本発明は、クライアント装置と複数のサーバ装置とからなるシステムの通信方法、その通信プログラム、そのシステムに用いられるクライアント装置及びサーバ装置に関する。
基幹システムにおけるアプリケーション間通信は、高い信頼性が要求されるため再送制御機能等を有するTCP(Transmission Control Protocol)が用いられている。また、装置に障害が発生した場合にも処理が継続できるように現用系の装置と待機系の装置が設けられている。
上記のシステムでは、障害発生時に現用装置のTCPコネクション情報(IPアドレス、ポート番号、シーケンス番号)と転送されるデータを待機装置に引き継ぐ必要があるが、この引き継ぎが以下の理由から困難であった。
(1)IPアドレス、ポート番号については2台の装置間で共通のIPアドレス、ポート番号を用いることで引き継ぎが可能となるが、シーケンス番号並びに転送データについては、通信中に随時流れるパケットの中で変化していくために確実な引き継ぎが困難である。
(2)TCPコネクションは、送信者と受信者が1対1のポイントツーポイント接続であり、同時に複数の装置間で同一のTCPコネクション情報を用いてコネクションの確立を行うことはTCP上で許されない。
(3)上記の問題を解決する方法として、受信者がパケットの送受信の都度、そのシーケンス番号、データも含めて待機装置に情報を送信し、その後受信データの上位アプリケーションへの通知・送信データの相手装置への送信を行うことで理論的には可能である。しかし、この方法はTCPの転送性能が著しく劣化することと、TCPの実装レイヤがOS(カーネル)であるため、このような実装を行うことが難しい。
従って、現状では、現用装置の障害が発生した時点で待機装置に切り換えた後、クライアントと待機装置との間で再度TCPコネクションを確立し、アプリケーション間でのデータの到達の確認を行った後、業務を再開する必要がある。そのため業務の中断時間が長くなるという問題点があった。
UDP(User Datagram Protocol)のマルチキャスト通信機能を用いることで同一データを同時に複数の装置に送信することは可能であるが、UDPには送達確認・再送制御等の信頼性機能が無いため、基幹システムのアプリケーション間通信には使用することができなかった。
他の方法として、アプリケーション自身が独自にコネクション制御機能を実装し、かつ複数の通信相手装置とのコネクションを管理することで、障害発生時に待機装置に切り換えたときの業務の継続性を確保することが考えられる。
しかしながら、この方法はアプリケーション毎にコネクション制御機能と複数の通信相手装置とのコネクションを管理する機能を有する必要があり、アプリケーション側の処理を大幅に変更する必要がある。
特許文献1には、アプリケーションに、単一の応答パケットで複数のデータパケットに対する確認応答情報を送信する機能を設けることで、確認応答パケットの送信に使用される帯域を削減することが記載されている。
特許文献1には、マルチキャスト通信においてデータパケットの送達確認を行うことについては記載されていない。
特許文献2には、マルチキャスト通信において、サーバがパケット毎に代表クライアントを指定する代表識別情報を付加してパケットを送信し、代表識別情報を有するパケットを受信したクライアントのみが応答パケットを送信することで、応答パケット数を減らすことが記載されている。
特許文献2には、マルチキャスト通信において、TCPと同等な信頼性を確保することについては記載されていない。
特開2004−80070号公報 特開2004−120137号公報
本発明の課題は、障害発生時に待機系の装置に切り換えるときに、クライアント装置と現用系に切り換えたサーバ装置のアプリケーションプログラム間の通信の継続性を確保することである。
本発明は、クライアント装置と複数のサーバ装置とかなるシステムの通信方法であって、シーケンス番号を付加したUDPパケットをマルチキャストで複数のサーバ装置に送信してクライアント装置と前記複数のサーバ装置との間で同時にコネクションを確立し、コネクションを確立した後、アプリケーションプログラムのデータを含むUDPパケットに後続のシーケンス番号を付加してマルチキャストで前記複数のサーバ装置に送信し、送信済のUDPパケットのシーケンス番号を記憶手段に記憶し、送信した前記UDPパケットに対するACKパケットが前記複数のサーバ装置の内の少なくとも1つ以上から返送されたとき、前記ACKパケットに付加されているシーケンス番号と、前記記憶手段に記憶されている送信済の前記UDPパケットのシーケンス番号を比較してUDPパケットの送達を確認する。
上記のコネクションの確立とは、最初のシーケンス番号を付加してUDPパケットをマルチキャストされたことに対して複数のサーバ装置の内の1つ以上からACKパケットがクライアント装置に返信されたことを言う。
この発明によれば、UDPパケットを用いて高速で、かつ信頼性の高いアプリケーション間通信を実現できる。また、クライアント装置と複数のサーバ装置との間で同時にコネクションを確立してデータ送信することができるので、クライアント装置と通信中のサーバ装置に障害が発生し、他のサーバ装置に切り換えた場合でも、クライアント装置とそのサーバ装置のアプリケーションプログラム間の通信を継続することができる。
上記の発明の通信方法において、前記複数のサーバ装置がそれぞれ受信済のUDPパケットのシーケンス番号を記憶し、新たに受信したUDPパケットのシーケンス番号と、記憶してある受信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認し、前記UDPパケットの送達を確認したとき、各サーバ装置が受信した前記UDPパケットのシーケンス番号をACK番号として付加した前記ACKパケットを前記クライアント装置に返送する。
このように構成することで、クライアント装置側で、送信したUDPパケットが各サーバ装置に送達されたか否かを確認することができる。
上記の発明の通信方法において、前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、現用系の前記サーバ装置の障害が検出され、待機系の前記サーバが現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置のアプリケーションプログラムと現用系となった前記サーバ装置のアプリケーションプログラムとの間の通信を継続させる。
このように構成することで、現用系のサーバ装置に障害が発生して待機系のサーバ装置に切り換えたときに、クライアント装置のアプリケーションプログラムと現用系に切り換えたサーバ装置のアプリケーションプログラムとの間の通信の継続性を確保できる。従って、障害が発生して待機系の装置に切り換えたときにアプリケーションプログラムの処理が中断するのを回避できる。
上記の発明の通信方法において、前記UDPパケットは、データ部にデータパケットか、ACKパケットか、NACKパケットかのパケットの種別を示すFLAG情報と、連番で設定されるシーケンス番号と、ACK番号とが付加されて送信される。
このように構成することで、UDPパケットを用いてパケットの送達確認を簡単に実現できる。
上記の発明の通信方法において、未送達のUDPパケットのシーケンス番号を付加したNACKパケットを前記クライアント装置に送信して、未送達の前記UDPパケットの再送を要求する。
このように構成することで、NACKパケットに付加されているシーケンス番号により未送達のパケットを特定できるので、そのパケットを再送することができる。
上記の発明の通信方法において、前記UDPパケットのデータ部に、前記UDPパケットを受信したときに、アプリケーションプログラムからの指示に基づいてネットワークレイヤが前記ACKパケットを返送するアプリケーションモードと、前記UDPパケットを受信したとき、前記ネットワークレイヤの判断で前記ACKパケットを返送するネットワークモードの何れであるかを指定する情報を付加する。
このように構成することで、アプリケーションプログラムがデータを確認した後、ACKを返送する必要がある場合には、アプリケーションプログラムからの指示に基づいてネットレイヤからクライアント装置にACKパケットを返送することができる。これによりネットワーク上を流れるACKパケットの数を減らすことができる。
本発明の他の態様は、クライアント装置と複数のサーバ装置とからなるシステムに用いられるクライアント装置であって、シーケンス番号を付加したUDPパケットを前記複数のサーバ装置にマルチキャストで送信して前記複数のサーバ装置との間で同時にコネクションを確立するコネクション確立手段と、アプリケーションプログラムのデータを含むUDPパケットに後続のシーケンス番号を付加して前記複数のサーバ装置にマルチキャストで送信する送信手段と、送信した前記UDPパケットに対するACKパケットが前記複数のサーバ装置の内の少なくとも1つ以上から返送されたとき、前記ACKパケットに付加されているシーケンス番号と、前記記憶手段に記憶されている送信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認する確認手段とを備える。
この発明によれば、UDPパケットを用いて高速で、かつ信頼性の高いアプリケーション間の通信を実現できる。また、クライアント装置と複数のサーバ装置との間で同時にコネクションを確立してデータを送信することができるので、クライアント装置と通信中のサーバ装置に障害が発生し、他のサーバ装置に切り換えた場合でも、クライアント装置とそのサーバ装置のアプリケーションプログラム間の通信を継続することができる。
上記の発明のクライアント装置において、前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、前記送信手段は、現用系の前記サーバ装置の障害が検出され、待機系の前記サーバ装置が現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置の前記アプリケーションプログラムと現用系に切り換えられた前記サーバ装置のアプリケーションプログラムとの間の通信を継続させる。
このように構成することで、障害が発生して待機系のサーバ装置を現用系に切り換えたときに、クライアント装置のアプリケーションプログラムと現用系に切り換えられたサーバ装置のアプリケーションプログラム間の通信の継続性を確保できる。
本発明の他の態様は、クライアント装置と複数のサーバ装置とからなるシステムに用いられるサーバ装置であって、前記クライアント装置からマルチキャストで送信され、シーケンス番号が付加されたUDPパケットを受信したとき、ACKを返信して前記クライアント装置との間でコネクションを確立するコネクション確立手段と、受信済のUDPパケットのシーケンス番号を記憶する記憶手段と、新たに受信したUDPパケットのシーケンス番号と、前記記憶手段に記憶されている受信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認する確認手段と、前記UDPパケットの送達を確認したとき、受信した前記UDPパケットのシーケンス番号を付加したACKパケットを前記クライアント装置に送信するACK送信手段とを備える。
この発明によれば、UDPパケットを用いて高速で、かつ信頼性の高いアプリケーション間の通信を実現できる。また、クライアント装置と複数のサーバ装置との間で同時にコネクションを確立してデータを送信することができるので、クライアント装置と通信中のサーバ装置に障害が発生し、他のサーバ装置に切り換えた場合でも、クライアント装置とそのサーバ装置のアプリケーションプログラム間の通信を継続することができる。
実施の形態のシステム構成図である。 実施の形態の通信処理部が実装されるレイヤを示す図である。 実施の形態のUDPパケットのフォーマットを示す図である。 動作モードの説明図である。 サーバ装置の通信処理部の受信処理のフローチャートである。 シーケンス番号チェック処理のフローチャートである。 ACTIVE装置とSTANDBY装置の制御表を示す図である。 サーバ装置のACK返信処理のフローチャートである。 クライアント装置の送信処理のフローチャートである。 クライアント装置の制御表と受信者リストを示す図である。 クライアント装置のACK受信処理(1)のフローチャートである。 クライアント装置のACK受信処理(2)のフローチャートである。 クライアント装置の再送処理のフローチャートである。 再送タイマの説明図である。 タイムアウト時の通信処理部と状態管理部の動作説明図である。 クライアントとサーバ装置の通信シーケンス(1)を示す図である クライアントとサーバ装置の通信シーケンス(2)を示す図である。 API関数の説明図である。 API関数を用いた通信シーケンスを示す図である。 障害発生時の動作説明図である。 アプリケーション・セーフモードの送達確認方法の説明図である。 アプリケーション・クイックモードの送達確認方法の説明図である。 ネットワーク・セーフモードの送達確認方法の説明図である。 ネットワーク・クイックモードの送達確認方法の説明図である。
以下、本発明の実施の形態について図面を参照して説明する。図1は、実施の形態のクライアント装置と複数のサーバ装置からなる基幹系のシステムのシステム構成図である。
このシステムは、クライアント装置(または中継装置)11と現用系(ACTIVE)のサーバ装置12と、待機系(STANDBY)の複数のサーバ装置13、14と、状態管理装置15とからなる。
状態管理装置15は、サーバ装置12〜14の状態を監視して、現用系のサーバ装置12に障害が発生したとき、待機系のサーバ装置13または14に切り換える制御等を行う。また、状態管理装置15は、クライアント装置11の状態管理部21に対して、サーバ装置の異常を通知する機能も持っている。
各サーバ装置12、13、14の状態管理部22、23、24は、状態管理装置15と同様の機能を有しており、複数のサーバ装置の中の1台をACTIVE装置、他の装置をSTANDBY装置として管理し、各装置のハードウェア、ソフトウェアの状態を監視する。そして、ACTIVE装置の障害を検出すると、STANDBY装置に切り換える機能を有する。
クライアント装置11の状態管理部21は、通信処理部31がサーバ装置12〜14との通信異常を検出した場合に、状態管理装置15と連携して、サーバ装置の故障の診断を行う。診断の結果、特定のサーバ装置が故障と判断した場合には、通信処理部31で管理しているサーバの監視対象リストから故障となったサーバ装置をはずすことを行う。
図1の矢印aは、各サーバ装置12〜14の状態管理部22〜24が互いに他のサーバ装置のハードウェア及びソフトウェアの状態を監視し、障害の発生を検出する動作を示している。
クライアント装置11の通信処理部31は、UDP(User Datagram Protocol)に基づいてシーケンス番号として初期値(例えば、「1」)を設定したUDPパケットを複数のサーバ装置12〜14にマルチキャストで送信して、複数のサーバ装置12〜14との間で同時にコネクションを確立する機能(コネクション確立手段に対応する)を有する。
通信処理部31は、アプリケーションプログラムからの送信要求に基づいてデータパケットを現用系及び待機系のサーバ装置12〜14にマルチキャスト通信で送信する機能(送信手段に対応する)を有する。
また、通信処理部31は、マルチキャスト送信したUDPパケットに対する各サーバ装置12〜14の確認応答ACK(Acknowledgment)を受信したか否かにより、UDPパケットの送達の確認する機能(確認手段に対応する)を有する。通信処理部31は、UDPパケットをマルチキャストで送信するときに、パケットの到着順序を保証するために、連番のシーケンス番号をデータ部にヘッダとして付加する。
通信処理部31は、現用系と待機系の全てのサーバ装置12〜14から、最初に送信したUDPパケット(シーケンス番号として初期値「1」が設定されたパケット)に対するACKパケットを受信したことを確認した後、アプリケーションプログラム(以下、アプリケーションと呼ぶ)に対してコネクションの確立を通知する。
図1の矢印bは、例えば、コネクション確立時にクライアント装置11から複数のサーバ装置12〜14にマルチキャスト送信されるUDPパケットの流れを示している。
クライアント装置11の通信処理部31は、各サーバ装置12〜14からのパケットの未送達を知らせる否定応答パケットNACK(Negative Acknowledgment)を受信したとき、未送達のパケットを再送する機能を有する。
サーバ装置12〜14の通信処理部32〜34は、クライアント装置11から、例えば、シーケンス番号1のUDPパケットを受信すると、ACKパケットをクライアント装置11にユニキャストで送信し、さらにそのUDPパケットをアプリケーションに渡してコネクションを確立する機能を有する(サーバ装置のコネクション確立手段に対応する)。アプリケーションは、例えば、パケットのデータ部のシーケンス番号が「1」であることからコネクション確立用のパケットであることを認識できる。
また、サーバ装置12〜14の各通信処理部32〜34は、受信済のUDPパケットのシーケンス番号をメモリ等の記憶手段に記憶する機能と、新たに受信したUDPパケットのシーケンス番号と、メモリ等に記憶してある受信済のUDPパケットのシーケンス番号を比較してパケットの抜けがないか否かを確認する機能(確認手段に対応する)を有する。さらに、受信したUDPパケットのシーケンス番号が、受信済のUDPパケットのシーケンス番号と連番になっていない場合には、パケットが未送達と判断し、未送達パケットのシーケンス番号を付加したNACKパケットをユニキャストでクライアント装置11に送信してパケットの再送を要求する機能(NACK送信手段に対応する)を有する。
図1の矢印cは、各サーバ装置12〜14からクライアント装置11に送信されるACKパケットの流れを示している。
図2は、実施の形態のクライアント装置11及びサーバ装置12〜14のレイヤの構成を示す図である。アプリケーションレイヤの下位層のネットワークレイヤには、TCP、UDPのプロトコルが実装されており、実施の形態の通信機能(通信処理部)は、このUDPベースにしたプログラムとして実装される。
次に、図3は、実施の形態の通信方法で使用されるUDPパケットのフォーマットを示す図である。
実施の形態のUDPパケットは、図2に示すように通常のUDPパケットのデータ部に、FLAG、SEQ、ACK、MODE、STATUSがヘッダとして付加されている。
FLAGには、そのパケットがデータパケット、NACK、ACKの何れであるかを示すパケット種別が格納される。FLAGには、例えば、データパケットのとき「1」が、NACKパケットのとき「2」が、ACKパケットのとき「3」が格納される。
SEQは、連番のシーケンス番号が格納される。なお、同一のセッションであっても、動作モードが異なると(例えば、セーフモードとクイックモード)、SEQには異なるシーケンス番号が設定される。
ACKには、ACK番号が格納される。ACK番号は、ACKまたはNACKパケットがどのシーケンス番号のパケットに対する応答パケットであるかを示すための情報であり、対象となるパケットのシーケンス番号が格納される。また、データパケットのACK番号は、パケットの送信元からの受信済みシーケンス番号が格納される。
MODEには、パケットの送信元がどの動作モードで応答を待っているかを示すモード情報が格納される。本実施の形態では、動作モードとして、ノーウェイト(no-wait)モード、ネットワーク・クイック(network-quick)モード、ネットワーク・セーフ(network-safe)モード、アプリケーション・クイック(application-quick)モード、アプリケーション・セーフ(application-safe)モードの5種類のモードが設けられており、それらのモードの内の1つを指定する情報がMODEに格納される。MODEには、例えば、ノーウェイト・モードのとき「1」、ネットワーク・クイックモードのとき「2」、ネットワーク・セーフモードのとき「3」、アプリケーション・クイックモードのとき「4」、アプリケーション・セーフモードのとき「5」が格納される。
STATUSには、応答パケットの送信元のサーバ装置のステータスが格納される。例えば、サーバ装置12が現用系であれば、サーバ装置12からの応答パケットにはSTATUSとして「ACTIVE」が格納され、待機系のサーバ装置13からの応答パケットには、STATUSとして「STANDBY」が格納される。クライアント装置11側では、このSTATUSを参照することで、送信元のサーバ装置がACTIVEか、STANDBYかを知ることができる。パケットの残りのデータ部には、アプリケーションのデータが格納される。
図4は、上記の5種類のモードの説明図である。ノーウェイト(no-wait)モードは、パケットをマルチキャスト送信したときに、応答送信者からのACK返信を待たないモードである。
ネットワーク・セーフ(network-safe)モードは、ネットワークレイヤがACKの返送レイヤで、かつ全てのサーバ装置からのACK返信を待つモードである。ネットワーク・クイック(network-quick)モードは、ネットワークレイヤが返送レイヤで、かつ特定の応答送信者からのACK返信のみを待つモードである。
アプリケーション・セーフ(application-safe)モードは、アプリケーションレイヤが返送レイヤで、かつ全ての応答送信者からのACK返信を待つモードである。アプリケーション・クイック(application-quick)モードは、アプリケーションレイヤが返送レイヤで、かつ特定の応答送信者からのACK返信のみを待つモードである。
動作モードをネットワーク・セーフまたはクイックに設定し、返送レイヤをネットワークレイヤにした場合には、OSに近いレイヤで素早くACKを返送することができる。本実施の形態で、アプリケーションレイヤを返送レイヤにするモードを設けたのは、受信側のアプリケーションが送信側のアプリケーションからのデータが正常であることを確認した後、ACKを返す場合があるからである。この場合、アプリケーションモードに設定されれば、受信側のアプリケーションからACKの送信の指示があった段階でACKが送信されるので、ネットワーク上を流れるACKパケットの数を減らすことができる。
次に、実施の形態のクライアント・サーバシステムにおいて、サーバ装置12〜14の受信処理について、図5及び図6のフローチャートを参照して説明する。
図5は、サーバ装置12〜14の通信処理部32〜34における受信処理のフローチャートである。
この処理の前提としてクライアント装置11から複数のサーバ装置12〜14に対して、シーケンス番号として初期値が設定されたUDPパケットがマルチキャストで送信され、クライアント装置11と複数のサーバ装置12〜14間でコネクションが確立されているものとする。
各サーバ装置12〜14の通信処理部32〜34は、OS(Operating System)に対して受信待ちデータがあるかを確認し(図5,S11)、受信待ちデータがあるか否かを判定する(S12)。
受信待ちデータが存在するときには(S12、YES)、ステップS13に進み、OSからパケットを受信する。そして、ステップS14のシーケンス番号チェック処理を実行する。このシーケンス番号チェック処理では、受信したUDPパケットのヘッダに格納されているシーケンス番号と、制御表41に格納されている受信済パケットのシーケンス番号が連番になっているかを調べ、パケットの欠落があるか否かを判断する。
図6は、図5のステップS14のシーケンス番号チェック処理の詳細なフローチャートである。
受信パケットのヘッダにあるシーケンス番号Aと、制御表41に格納されている受信済パケットのシーケンス番号Bを比較する(図6、S21)。
ここで、制御表41について簡単に説明する。現用系のサーバ装置(ACTIVE装置)と待機系のサーバ装置(STANDBY装置)は、コネクションが確立された段階でそれぞれ図7(A)、(B)に示すような制御表41a、41bを作成する。
制御表41a、41bは、マルチキャストIPアドレスと、サーバ装置で使用するポート番号と、受信したパケットの動作モード(アプリケーション・セーフモードなど)と、クイックモード(ネットワーク・クイックモードまたはアプリケーション・クイックモード)時の受信済シーケンス番号と、セーフモード(ネットワーク・セーフモードまたはアプリケーション・セーフモード)時の受信済シーケンス番号と、自装置がACTIVE、STANDBYの何れであるかを示す状態情報と、クライアント装置11のIPアドレスと、クライアント装置11のポート番号で構成されている。この制御表(テーブル)41a、41bは、サーバ装置のメモリ等に記憶される。
本実施の形態においては、クイックモード時のシーケンス番号とセーフモード時のシーケンス番号を別々に管理し、同一マルチキャストIPアドレス及びポートに対する通信に対してパケット毎にモードを切り換えられるようになっている。そのため上記の制御表41a、41bには、クイックモード時のシーケンス番号と、セーフモード時のシーケンス番号が別々に記憶されている。
また、シーケンス番号がクライアント単位で一意に設定されているので、同一のマルチキャストIPアドレスでサーバ装置の同一のポート番号に対してパケットの送信者が複数存在する場合を考慮して、サーバ装置側の制御表41a、41bには、クライアント装置11のIPアドレスとクライアント装置11のポート番号を記憶するようにしている。
図6に戻り、ステップS22において、パケットのヘッダに格納されているMODEがno−waitか否かを判別する。no−waitの場合には、ACKを返信する必要が無いのでそこで処理を終了する。
MODEがno−waitでないときには(S22,NO)、ステップS23に進み、受信パケットのシーケンス番号Aが、制御表41に格納されている該当するモードのシーケンス番号Bに「1」を加算した値と等しいか否かを判定する。受信パケットのシーケンス番号Aが、制御表41に格納されているシーケンス番号Bに「1」を加算した値と等しいとき、つまり、シーケンス番号が連続しているときには(S23,YES)、パケットの抜けがないものと判断してそこで処理を終了する。
受信パケットのシーケンス番号Aが制御表41に格納されているシーケンス番号Bと連番でないときには(S23、NO)、次のステップS24に進み、受信パケットのシーケンス番号Aが制御表41のシーケンス番号Bと等しいか、それより小さいかを判別する。
受信パケットのシーケンス番号Aが、制御表41のシーケンス番号Bと等しいか、それより小さいときには(S24,YES)、ステップS28に進み、受信したパケットを破棄する。
ステップS24において、受信パケットのシーケンス番号Aが、制御表41のシーケンス番号Bと一致せず、かつシーケンス番号Bより大きいと判定されたときには(S24、NO)、ステップS25に進み、自装置がSTANDBY装置か否かを判別する。
自装置がSTANDBY装置ではない場合(S25,NO)、またはSTANDBY装置で(S25、YES)、かつステップS26において、受信パケットに設定されている動作モードがセーフ(safe)モードと判定されたときには(S26,YES)、ステップS27の処理を実行する。ステップS27では、パケットの欠落があることを知らせるNACKパケットを作成し、受信パケットの送信元IPアドレス及びポート番号に対してそのNACKパケットを返信する。NACKパケットには、例えば、欠落しているシーケンス番号をACK番号として付加する。そして、次のステップS28で、受信したパケットを破棄する。
自装置がSTANDBY装置で、かつ受信パケットの動作モードがセーフモードでないときには(S26,NO)、応答パケットを返信する必要がないのでそこで処理を終了する。
図6のシーケンス番号チェック処理が終了したなら、次に、図5のステップS15の処理を実行する。
図5のステップS15は、受信パケットのMODEで決まる処理内容を示すものである。動作モードがネットワーク・セーフモードのときには、ACTIVE装置とSTANDBY装置が両方ともACKまたはNACKを返信する。
動作モードがネットワーク・クイックのときには、ACTIVE装置のみがACKまたはNACKを返信する。STAMDBY装置は、ACKを返信する必要が無い。また、アプリケーションモードのときには、この時点ではACKを返信しない。
次に、受信パケットのシーケンス番号が連続しているときには、新たに受信したパケットのシーケンス番号を制御表41の該当する動作モードの欄に格納する(S16)。
次に、受信パケットにユーザデータが付加されているか否かを判定する(S17)。ユーザデータが付加されている場合には(S17,YES)、ステップS18に進み、受信したデータを受信キュー(待ち行列)に入れ、受信データが存在することをアプリケーションに通知する。
次に、図8は、動作モードがアプリケーション・セーフまたはアプリケーション・クイックモードのときに、上位のアプリケーションからの応答指示に従ってサーバ装置12〜14の通信処理部32〜34が、ACKまたはNACKパケットを返信する場合のフローチャートである。
最初に、上位のアプリケーションの指示内容と制御表41との整合性をチェックし(図8、S31)、チェック結果が正常か否かを判定する(S32)。チェック結果が異常と判定された場合には(S32,NO)、ステップS33に進み、上位のアプリケーションにエラーを通知する。この処理は、アプリケーションからの指示が制御表41に格納されている動作モードと整合するか否かを判定することで、アプリケーション側で発生するエラーを検出するためのものである。
ステップS32において、整合性チェックが正常と判定されたときには(S32,YES)、ステップS34に進み、制御表41に格納されているクライアントIPアドレス、ポート番号等を取得して送信パケットを作成する。そして、OSに対して作成したパケットのユニキャストでの送信を依頼する(S35)。
次に、クライアント装置11の通信処理部31の処理動作について、図9,図11〜図13のフローチャートを参照して説明する。
先ず、マルチキャスト用送信パケットを作成し、制御表42のシーケンス番号を更新する(図9,S41)。
ここで、クライアント装置11の通信処理部31により作成される制御表42について図10を参照して説明する。
制御表42は、図10(A)に示すように、マルチキャストIPアドレスと、ポート番号と、パケット再送の初期値(タイマ時間の初期値)、パケットの再送の回数と、パケット再送の最大値(タイマ時間の最大値)と、前回送信したパケットの動作モードと、クイックモード時の送信済シーケンス番号と、セーフモード時の送信済シーケンス番号と、受信者リスト42aとで構成されている。
受信者リスト42aには、各サーバ装置のIPアドレスと、それぞれの装置がACTIVE、STANDBYの何れであるかを示す情報(状態1)と、それぞれの装置が正常に動作しているか否かを示す情報(状態2)と、クイックモード時に各サーバ装置から受信した受信済ACK番号と、セーフモード時に各サーバ装置から受信した受信済ACK番号が格納されている。
図10(A)の制御表42から、クイックモード時の送信済シーケンス番号が「100」で、セーフモード時の送信済シーケンス番号が「200」であることが分かる。また、図10(B)の受信者リスト42bのクイックモード時の受信済ACK番号が100であることから、シーケンス番号「100」の送信パケットに対するACKがACTIVE装置から返信済であることが分かる。また、全受信者(サーバ装置)のセーフモード時の受信済ACK番号が「199」であることから、シーケンス番号「200」のパケットに対するACKは、どの受信者からも返信されていないことが分かる。
クライアント装置11の通信処理部31は、送信済シーケンス番号と、受信者リスト42aの受信済ACK番号から、UDPパケットの送達確認を行うことができる。また、パケット再送の初期値、再送回数等に基づいてタイマの再送時間間隔等を決めることができる。
図9に戻り、ステップS42において、受信パケットの動作モードがno−waitモードか否かを判別する。動作モードがno−waitモードのときには、サーバ装置12〜14からの応答パケットを待つ必要がないので、ステップS43に進み、OSに対してUDPパケットのマルチキャスト送信を依頼する。
他方、動作モードがno−waitではないときには(S42,NO)、パケットを一定時間毎に再送信する必要があるので、再送用パケットを作成し、動作モードに応じた送信キューに入れ、再送タイマを起動させる。その後、上記のステップS43に進み、OSに対してUDPパケットのマルチキャスト送信を依頼する。
次に、クライアント装置11の通信処理部31のACK受信処理及び再送処理について、図11〜図13のフローチャートを参照して説明する。
図11は、サーバ装置12〜14からのACKを受信するACK受信処理(1)のフローチャートである。
クライアント装置11の通信処理部31は、OSに対して受信待ちデータがあるか否かを確認し(図11、S41)、その結果により受信待ちのデータがあるか否かを判断する(S42)。
受信待ちのデータが存在しないときには(S42,NO)、ステップS41に戻り、上記の処理を繰り返す。
受信待ちのデータが存在する場合には(S42、YES)、ステップS43に進み、OSからパケットを受信する。
次に、受信したパケットのACK番号と、制御表42に格納されている該当するモードの送信済シーケンス番号や受信リスト42aの受信者IPアドレスに対応する受信済ACK番号と照合する(S44)。
受信したパケットのヘッダ部のFLAGからACKパケットか否かを判別する(S45)。ACKパケットでなければ(S45,NO)、ステップS46に進み、NACKパケットか否かを判別する。NACKパケットであれば(S46,YES)、ステップ47で、NACKパケットのACK番号で指定されるパケットの再送をOSに依頼する。その後、次のステップS48で受信パケット(NACKパケット)を破棄する。また、ステップ46で、NACKパケットでないと判定されたときには(S46,NO)、ステップS48に進み受信パケットを破棄する。
ステップS45で、受信した応答パケットがACKパケットであると判定された場合には(S45,YES)。ステップS49のACK受信処理(2)を実行する。
図12は、図11のステップS49のACK受信処理(2)の詳細なフローチャートである。
最初に、ACKパケットのMODEがクイックモードか否かを判別する(図12,S51)。動作モードとしてクイックモードが指定されているときには(S51、YES)、ステップS52に進み、そのACKパケットをACTIVE装置から受信したか否かを判別する。ACTIVE装置から受信したパケットか否かは、ACKパケットに付加されているSTATUS情報により判断できる。
ACTIVE装置からのACKパケットを受信した場合には(S52,YES)、ステップS53の処理を実行する。ステップS53では、再送タイマを解除し、送信キューから再送パケットを削除し、さらに制御表42の受信者リストの該当する受信者(ACTIVE装置)の受信済ACK番号を更新する。ACK番号の更新は、その受信者の最新のACKパケットのACK番号を受信者リストに書き込むことで行う。
他方、クイックモードで、かつACTIVE装置以外からのACKパケットを受信した場合には(S52,NO)、ステップS54に進み、受信パケットを破棄する。これは、クイックモードでは、ACTIVE装置に対する送達確認のみを行えば良いからである。
ステップS51において、動作モードがクイックモードではないと判別された場合には(S51,NO)、つまりセーフモードのときには、ステップS55に進み、全サーバ装置からACKパケットを受信したか否かを判別する。
全サーバ装置からのACKパケットを受信していない場合には(S55,NO)、ステップS56に進み、制御表42の受信者リスト42aの今回ACKパケットを受信した受信者(サーバ装置)の受信済ACK番号を更新した後処理を終了する。
ステップ55で、全サーバ装置のACKパケットを受信したと判定された場合には(S55,YES)、ステップS57に進み、再送タイマを解除し、送信キューから再送パケットを削除し、さらに制御表42の受信者リスト42aの該当する受信者の受信済ACK番号を更新する。
次のステップS58において、ACKパケットのMODEがアプリケーション・セーフモードまたはアプリケーション・クイックモードであれば、ACKパケットのヘッダを削除し、データを上位のアプリケーションに渡す。
次に、クライアント装置11の通信処理部31における再送処理について、図13のフローチャートを参照して説明する。
最初に、設定したタイマ時間内にACKパケットを受信したか否かを判別する(図13,S61)。タイマ時間の初期値としては、例えば、図10の制御表42のパケット再送の初期値(例えば、200ms)が設定され、そのタイマ時間内にACKパケットを受信したか否かを判断する。
タイマ時間内にACKパケットを受信しなかった場合には(S61,YES)、ステップS62に進み、タイマ時間が再送のリトライ時間をオーバしたか否かを判別する。リトライ時間としては、図10の制御表42のパケット再送の最大値がリトライ時間の上限値として用いられる。
タイマで計測された時間がリトライ時間をオーバしていないときには(S62,NO)、ステップS63に進み、OSに対してパケットの再送依頼を行う。そして、次のステップS64で、再送のためのタイマの設定時間を更新する。この実施の形態では、パケットの再送時間間隔を徐々に長くするようにしているので、再送タイマ値を毎回更新している。
ステップS62において、リトライ時間をオーバしたと判定された場合には(S62,YES)、ステップS65に進み、状態管理部21にパケットの送信先の装置異常を通知する。さらに、次のステップS66で、上位のアプリケーションにエラー通知を行い、特定のサーバ装置からACKパケットが返信されないことを知らせる。
ステップS61において、タイマの設定時間内にACKパケットが返送されと判定された場合には(S61、NO)、ステップS67に進み、タイマをキャンセルする。これにより再送が中止される。
ここで、クライアント装置11において、サーバ装置12〜14からのACKの返送を監視する処理について、図14を参照して説明する。
クライアント装置11の通信処理部31は、パケットを送信したとき、タイマの上限値として、制御表42のパケット再送の初期値、例えば、200msを設定し、その時間内に応答パケットが返送されるか否かを監視する。
設定したタイマ時間の200msの間に応答パケットが返送されない場合には、タイマの上限値として、例えば、初期値の2倍の400msを設定する。図14の例では、パケットの再送時間として、再送回数が増える毎に、制御表42のパケットの再送の最大値の範囲内で、タイマの上限値が初期値aの2倍、4倍、8倍・・・に増加するように定めている。
400msの間に応答パケットが返送されないときには、制御表42のパケット再送の回数の上限値(例えば、3回)以下で、かつパケット再送の最大値(例えば、500ms)以下の時間をタイマの上限値として設定する。
設定したタイマの上限値が、制御表42のパケット再送の最大値(リトライアウト時間)を過ぎても応答パケットが返送されないときには、通信処理部31は、パケットの送信先のサーバ装置に異常が発生したものと判断して状態管理部21に異常を通知する。
図15は、UDPに基づいてパケットの再送制御を行うときのクライアント装置11の通信処理部31と状態管理部21の動作説明図である。
上位のアプリケーションから再送制御のリトライ時間が設定されると(図15,(1))、通信処理部31は、監視対象リストを参照してタイマ監視を行う。そして、最大リトライ時間を過ぎても応答パケットが返送されないときには、対象となるサーバ装置を特定して状態管理部21に装置の異常を通知する(図15,(2))。
状態管理部21は、各サーバ装置12〜14の状態管理部22〜24に障害の発生を通知し、障害が発生したと思われるサーバ装置に関する情報を収集して故障か否かの診断を行う(図15,(3))。なお、故障の診断は、外部の状態管理装置15が行い、その結果を、クライアント装置11に通知するようにして良い。
状態管理部21は、診断によりサーバ装置の故障と判断した場合には、該当するサーバ装置を監視対象リストから削除するように通信処理部31に指示する(図15,(4))。
上述したクライアント装置11の通信処理部31の処理により、特定の初期値がシーケンス番号として設定されているUDPパケットを複数のサーバ装置12〜14にマルチキャストで送信して、ACTIVE装置とSTANDBY装置の双方と同時にコネクションを確立することができる。また、アプリケーションデータのUDPパケットを複数のサーバ装置12〜14にマルチキャストで送信することで、ACTIVE装置とSTANDBY装置の双方に同一のアプリケーションデータを送信し、そのパケットの送達を確認できる。
次に、実施の形態の通信方法による、クライアント装置11とサーバ装置12〜14との間の通信動作を、図16及び図17を参照して説明する。図16及び図17は、縦軸が時間軸であり、図面の上から下方向に時間が経過することを表している。
サーバ装置12〜14は、それぞれの状態管理部22〜24間で通信を行い、ACTIVE装置とSTANDBY装置を決める。今、サーバ装置12がACTIVE装置、サーバ装置13,14がSTANDBY装置と決められたとする。
クライアント装置11の通信処理部31は、サーバ装置12〜14との間で同時にコネクションを確立するために、コネクション確立用のUDPパケットにシーケンス番号、動作モードを指定するMODE等の情報を付加してマルチキャストで各サーバ装置12〜14に送信する(図16の(1))。
各サーバ装置12〜14の通信処理部32〜34は、クライアント装置11からシーケンス番号として初期値(例えば、「1」)が設定されているUDPパケットを受信すると、それに対するACKパケットをユニキャストでクライアント装置11に送信する。このとき、各サーバ装置12〜14が送信するACKパケットには、シーケンス番号と、ACK番号と、それぞれの装置がACTIVEか、STANDBYかを示すSTAUS情報が付加されている。
クライアント装置11の通信処理部31は、最初に送信したUDPパケットに対するACKパケットを各サーバ装置12〜14から受信すると、制御表42の受信者リスト42aに各サーバ装置12〜14のIPアドレスと、STAUS情報と、受信済ACK番号を格納する。
クライアント装置11の通信処理部31は、アプリケーションの処理データを、ACTIVE装置(サーバ装置12)とSTNDBY装置(サーバ装置13,14)にUDPパケットにシーケンス番号を付加してマルチキャストで送信する。また、ACTIVE装置とSTANDBY装置の双方から、その送信パケットに対するACKを受信したなら、各サーバ装置のACKパケットのACK番号を制御表42の受信者リスト42aに書き込む(図16,(2))。
次に、ACTIVE装置で障害が発生した場合の動作について図17を参照して説明する。
サーバ装置12〜14の状態管理部22〜24間の通信により、サーバ装置(ACTIVE装置)12の障害が検出されると、予め決めてある優先順序に従って特定の装置、例えば、サーバ装置13がACTIVEとなり、サーバ装置14がSTANDBYの状態を維持する。なお、ACTIVE装置の切り換えは、サーバ装置12〜14の状態管理部22〜24ではなく、外部の状態管理装置15が行っても良い。
このとき、それまでSTANDBY状態であったサーバ装置13にも、障害が発生したサーバ装置12と同じアプリケーションのデータがマルチキャストで送信されているので、サーバ装置13は、クライアント装置11から送信されてくるアプリケーションのデータに対する処理を継続して実行することができる。
クライアント装置11の通信処理部31は、マルチキャストでパケットを送信しているため、この時点ではACTIVE装置が切り替わったことを分からないが、ACTIVEに切り替わったサーバ装置13のACKパケットを受信した時点で、ACKパケットのSTATUS情報からサーバ装置13がACTIVE装置になったことを認識できる(図17、(3))。
次に、図18は、実施の形態においてアプリケーションに提供されるAPI関数を、TCP−API関数と対応付けた対応表である。
この実施の形態では、アプリケーションに対して、pc_socket()、pc_setsockopt()、pc_getsockopt()、pc_bind()、pc_sendmsg()、pc_recvmsg()、pc_poll()、pc_close()等のAPI関数を提供している。
pc_socket()は、TCPのsocket()に対応するものであり、高信頼マルチキャスト用のソケットを生成する機能を有する。
pc_setsockopt()は、TCPのsetsokopt()に対応するものであり、指定されたソケットに対するタイムアウト時間の設定、受信先の初期設定及び送達確認方法の設定等の機能を有する。
pc_getsockopt()は、TCPのgetsockopt()に対応するものであり、指定されたソケットに設定されたタイムアウト時間、受信先インスタンスの状態及び送達確認方法等の情報を取得する機能を有する。
pc_bind()は、TCPのbind()に対応するものであり、マルチキャスト用ソケットに対して受信開始を指示する機能を有する。
pc_sendmsg()は、TCPのsendmsg()に対応するものであり、受信先インスタンスに対してデータを送信する機能を有する。
pc_recvmsg()は、TCPのrecvmsg()に対応するものであり、データを受信する機能を有する。
pc_poll()は、TCPのpoll()に対応するものであり、送信、受信またはエラーのイベントが発生するまで待ち、指定したタイムアウト時間が経過するとエラー処理に移行する機能を有する。
pc_close()は、TCPのclose()に対応するものであり、高信頼マルチキャスト用ソケットを回収する機能を有する。この命令により送信中のデータは破棄される。
上記のAPI関数を前提にして、クライアント装置11と複数台のサーバ装置12〜14間で同時にコネクションを確立するとき、データを送信するとき並びにサーバ装置12〜14からACKパケットを送信するときの通信手順を、図19のシーケンス図を参照して説明する。
クライアント装置11のアプリケーションは最初にコネクションを確立するときに、pc_sendmsg()を発行する。この最初のpc_sendmsg()の発行はTCPのconnect()に相当するものであり、アプリケーションからの1回のコネクションの確立要求で、ACTIVE、STANDBYの全サーバ装置と同時にコネクションを確立することができる。
クライアント装置11の通信処理部31は、上位のアプリケーションからpc_sendmsg()を受け取ると、UDPパケットにシーケンス番号、MODE、STATUS等を付加したUDPパケットをマルチキャストで複数のサーバ装置12〜14に送信する。
各サーバ装置12〜14の通信処理部32〜34は、受信したUDPパケットのマルチキャストIPアドレス、シーケンス番号等をそれぞれの制御表42に格納し、ACKをユニキャストでクライアント装置11に返送する。このとき、上位のアプリケーションは、pc_poll()、pc_recmsg()を発行してUDPパケットを受け取る。これらのAPI関数は、TCPのaccept()等に相当する。
クライアント装置11の通信処理部31は、最初に送信したUDPパケット(シーケンス番号が初期値「1」のパケット)に対するACKを受信したとき、コネクションを確立する。上位のアプリケーションは、pc_recvmsg()を発行してUDPパケットのデータを受け取る。
次に、アプリケーションは、pc_sendmsg()を発行してアプリケーションのデータの送信を通信処理部31に指示する。通信処理部31は、アプリケーションのデータをUDPパケットでマルチキャストにより複数のサーバ装置12〜14に同時に送信する。
各サーバ装置12〜14の通信処理部32〜34は、マルチキャストされたデータパケットを受信する。各サーバ装置12〜14のアプリケーションは、pc_recvmsg()を発行してデータパケットを受け取る。さらに、アプリケーションは、pc_sendmsg()を発行してACKの返送を指示する。各通信処理部32〜34は、ACKパケットをクライアント装置11に送信する。
上記の動作が繰り返されて、クライアント装置11のアプリケーションのデータがACTIVEのサーバ装置12とSTANDBYのサーバ装置13〜14に同時に送信される。また、各サーバ装置12〜14は、シーケンス番号によりパケットの未達を検出すると、NACKパケットに欠落しているシーケンス番号をACK番号として付加してパケットの再送を要求する。クライアント装置11は、NACKパケットを受信すると、そのNACKパケットに付加されているACK番号で指定されるパケットを再送する。これにより、ACTIVE、STANDBYの双方のサーバ装置のアプリケーションデータの同一性を保証することができる。
次に、図20は、障害発生時の動作説明図である。クライアント装置11は、ACTIVEなサーバ装置12とSTANDBYのサーバ装置13との間で同時にコネクションを確立した後、各サーバ装置12、13にアプリケーションデータをUDPパケットを用いてマルチキャストで送信する。
クライアント装置11の通信処理部31は、ACTIVEのサーバ装置12からのACKが一定時間以上返送されないことを検出すると、状態管理装置15にサーバ装置12の状態を問い合わせる(図20、(1))。
状態管理装置15は、サーバ装置12の状態を確認し、障害を検出すると(図20、(2))、ACTIVE装置12を切り離し、サーバ装置13にACTIVEに移行するように指示する(図20、(3))。このとき、クライアント装置11に、サーバ装置12を切り離し、サーバ装置13をACTIVEに切り換えたことを通知する(図20、(4))。
ACTIVEに移行したサーバ装置13は、それまでACTIVEであったサーバ装置12に送信されていたアプリケーションデータを全て受信しているので、サーバ装置12が受信していたデータとの同一性が確保されている。従って、STANDBYからACTIVEへの切り換えが行われた直後から、クライアント装置11のアプリケーションとの間の通信を継続し、処理を続けることができる。
従って、現用系の装置に障害が発生してもアプリケーションの処理を中断することなく待機系の装置に切り換えることができる。
次に、各動作モードにおけるパケットの送達確認方法について図21〜図24を参照して説明する。
図21は、アプリケーション・セーフモードにおける送達確認方法の説明図である。アプリケーション・セーフモードは、全てのサーバ装置が、アプリケーションレイヤからACKの返信を行うモードである。図21〜図24において、実線の矢印はマルチキャストでのパケットの送信を示し、破線の矢印はユニキャストでのパケットの送信を示している。
クライアント装置11の通信処理部31は、UDPパケットをマルチキャストにより全サーバ装置12〜14に送信する。
各サーバ装置12〜14の通信処理部32〜34は、受信したパケットのシーケンス番号と、制御表41に格納されている受信済パケットのシーケンス番号を比較して、パケットの抜けがあるか否かをチェックする。パケットの抜けがないと判断したときには、そのパケットのデータをアプリケーションに渡す。アプリケーションは、そのデータが正常か否かを確認し、データの処理が完了した後、ACKの返信を通信処理部32〜34に指示する。各サーバ装置12〜14の通信処理部32〜34は、それぞれユニキャストでACKをクライアント装置11に送信する。
次に、図22は、アプリケーション・クイックモードにおける送達確認方法の説明図である。アプリケーション・クイックモードは、ACTIVE装置のみがアプリケーションレイヤからACKを返信するモードである。
クライアント装置11の通信処理部31は、UDPパケットをマルチキャストにより全サーバ装置12〜14に送信する。
ACTIVEなサーバ装置12の通信処理部32は、受信したパケットのシーケンス番号と、制御表41に格納されている受信済パケットのシーケンス番号を比較して、パケットの抜けがあるか否かをチェックする。パケットの抜けがないと判断したときには、そのパケットのデータをアプリケーションに渡す。アプリケーションは、データが正常か否かを確認した後、ACKの返信を通信処理部32に指示する。通信処理部32は、ユニキャストでACKをクラインと装置11に送信する。サーバ装置13及び14は、ACTIVEではないのでACKは返信しない。
クライアント装置11は、ACTIVE装置12からのACKをアプリケーションに渡した後、他の処理を実行する。
次に、図23は、ネットワーク・セーフモードにおける送達確認方法の説明図である。ネットワーク・セーフモードは、全てのサーバ装置がネットワークレイヤからACKを返信するモードである。
クライアント装置11の通信処理部31は、UDPパケットをマルチキャストにより全サーバ装置12〜14に送信する。
各サーバ装置12〜14の通信処理部32〜34は、受信したパケットのシーケンス番号と、制御表41に格納されている受信済パケットのシーケンス番号を比較して、パケットの抜けがあるか否かをチェックする。パケットの抜けがないと判断したときには、各通信処理部32〜34がACKをクライアント装置11にユニキャストで送信する。また、パケットの抜けがあると判断したときには、欠落しているシーケンス番号のパケットの再送を要求するNACKをクライアント装置11に送信する。
クライアント装置11は、全サーバ12〜14からのACK返信を待ち、一定時間以内にACKが返信されないときにはパケットを再送信する。全サーバ12〜14のACKを受信したなら、次の処理を実行する。
次に、図24は、ネットワーク・クイックモードにおける送達確認方法の説明図である。ネットワーク・クイックモードは、ACTIVEなサーバ装置12のみがネットワークレイヤからACKを返信するモードである。
クライアント装置11の通信処理部31は、UDPパケットをマルチキャストにより全サーバ装置12〜14に送信する。
ACTIVEなサーバ装置12の通信処理部32は、受信したパケットのシーケンス番号と、制御表41に格納されている受信済パケットのシーケンス番号を比較して、パケットの抜けがあるか否かをチェックする。パケットの抜けがないと判断したときには、そのパケットのデータをアプリケーションに渡し、通信処理部32がACKをクライアント装置11に返信する。
クライアント装置11の通信処理部31は、ATIVEなサーバ装置12からのACKを受信したなら、次の処理を実行する。
上述した実施の形態のクライアント装置11と複数のサーバ装置12〜14とからなるシステムの通信方法によれば、以下のような効果が得られる。
(a)クライアント装置11からACTIVEなサーバ装置12とSTANDBYのサーバ装置13〜14に、シーケンス番号として初期値(例えば、「1」)を設定したUDPパケットをマルチキャストすることで、クライアント装置11と複数のサーバ装置12〜14との間で同時にコネクションを確立することができる。
(b)コネクションを確立した後、クライアント装置11のアプリケーションのデータをUDPパケットを用いて複数のサーバ装置12〜14に同時に送信し、複数のサーバ装置からACKパケットが返送されたか否かを確認することで、ACTIVE装置とSTANDBY装置の双方に対してパケットの送達を確認できる。
(c)さらに、サーバ装置がパケットの抜けを検出した場合には、欠落したパケットを特定する情報、例えば、欠落したシーケンス番号を付加したNACKパケットをクライアント装置11に返信し、クライアント装置11がそのシーケンス番号で指定されるUDPパケットを再送信することで、全てのサーバ装置12〜14の受信データの同一性を保証することができる。
実施の形態の通信方法は、UDPをベースにしてネットワークレイヤに実装するプログラム(通信処理部)により通信を行っているので、パケットの送受信を高速化し、かつTCPと同等の信頼性を確保できる。また、ACTIVEなサーバ装置12とSTANDBYのサーバ装置13,14の双方のアプリケーションデータの同一性を保証できるので、ACTIVEなサーバ装置に障害が発生し、STANDBYのサーバ装置13または14に切り換えた場合でも、クライアント装置11のアプリケーションとサーバ装置のアプリケーション間の通信の継続性を確保できる。
従って、速い処理速度と高い信頼性が要求され、かつ障害発生時の業務処理の中断時間を短くする必要のある基幹システムに好適である。
(e)上述した通信方法を実現するプログラム(通信処理部31〜34など)をネットワークレイヤに実装しているので、個々のアプリケーションのプログラムを大幅に変更せずに信頼性の高いデータ通信を実現できる。
本発明は上述した実施の形態に限らず、例えば、以下のように構成しても良い。
(a)UDPパケットのフォーマットは、図3に示した構成に限らない。例えば、動作モードが1種類で良い場合には、UDPパケットにMODE情報を付加する必要が無い。

Claims (21)

  1. クライアント装置と複数のサーバ装置とからなるシステムの通信方法であって、
    シーケンス番号を付加したUDPパケットをマルチキャストで前記複数のサーバ装置に送信して前記クライアント装置と前記複数のサーバ装置との間で同時にコネクションを確立し、
    コネクションを確立した後、アプリケーションプログラムのデータを含むUDPパケットに後続のシーケンス番号を付加してマルチキャストで前記複数のサーバ装置に送信し、
    送信済のUDPパケットのシーケンス番号を記憶手段に記憶し、
    送信した前記UDPパケットに対するACKパケットが前記複数のサーバ装置の内の少なくとも1つ以上から返送されたとき、前記ACKパケットに付加されているシーケンス番号と、前記記憶手段に記憶されている送信済の前記UDPパケットのシーケンス番号を比較してUDPパケットの送達を確認する通信方法。
  2. 請求項1記載の通信方法において、
    前記複数のサーバ装置がそれぞれ受信済のUDPパケットのシーケンス番号を記憶し、
    新たに受信したUDPパケットのシーケンス番号と、記憶してある受信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認し、
    前記UDPパケットの送達を確認したとき、各サーバ装置が受信した前記UDPパケットのシーケンス番号をACK番号として付加した前記ACKパケットを前記クライアント装置に返送する通信方法。
  3. 請求項1記載の通信方法において、
    前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、
    現用系の前記サーバ装置の障害が検出され、待機系の前記サーバが現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置のアプリケーションプログラムと現用系となった前記サーバ装置のアプリケーションプログラムとの間の通信を継続させる通信方法。
  4. 請求項1記載の通信方法において、
    前記UDPパケットは、データ部にデータパケットか、ACKパケットか、NACKパケットかのパケットの種別を示すFLAG情報と、連番で設定されるシーケンス番号と、ACK番号とが付加されて送信される通信方法。
  5. 請求項1記載の通信方法において、
    未送達のUDPパケットのシーケンス番号を付加したNACKパケットを前記クライアント装置に送信して、未送達の前記UDPパケットの再送を要求する通信方法。
  6. 請求項1記載の通信方法において、
    前記UDPパケットのデータ部に、前記UDPパケットを受信したときに、アプリケーションプログラムからの指示に基づいてネットワークレイヤが前記ACKパケットを返送するアプリケーションモードと、前記UDPパケットを受信したとき、前記ネットワークレイヤの判断で前記ACKパケットを返送するネットワークモードの何れであるかを指定する情報を付加する通信方法。
  7. クライアント装置と複数のサーバ装置とからなるシステムの通信プログラムであって、
    シーケンス番号を付加したUDPパケットをマルチキャストで送信して、前記クライアント装置と前記複数のサーバ装置との間で同時にコネクションを確立するステップと、
    アプリケーションプログラムのデータを含むUDPパケットに後続のシーケンス番号を付加してマルチキャストで前記複数のサーバ装置に送信するステップと、
    送信済のUDPパケットのシーケンス番号を記憶手段に記憶するステップと、
    送信したUDPパケットに対するACKパケットが前記複数のサーバ装置の内の少なくとも1つ以上から返送されたとき、前記ACKパケットに付加されているシーケンス番号と、前記記憶手段に記憶されている送信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認するステップとを、コンピュータに実行させる通信プログラム。
  8. 請求項7記載の通信プログラムにおいて、
    前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、
    現用系の前記サーバ装置の障害が検出され、待機系の前記サーバが現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置のアプリケーションプログラムと現用系となった前記サーバ装置のアプリケーションプログラムとの間の通信を継続させる通信プログラム。
  9. 請求項7記載の通信プログラムにおいて、
    前記UDPパケットは、データ部にデータパケットか、ACKパケットか、NACKパケットかのパケット種別を示すFLAG情報と、連番で設定されるシーケンス番号と、ACK番号とが付加されて送信される通信プログラム。
  10. 請求項7記載の通信プログラムにおいて、
    未送達のパケットを示すACK番号が付加されたNACKパケットを受信したときに、前記ACK番号で指定されるUDPパケットを再送する通信プログラム。
  11. クライアント装置と複数のサーバ装置とからなるシステムの通信プログラムであって、
    クライアント装置からマルチキャストで送信され、シーケンス番号が付加されたUDPパケットを受信したとき、ACKパケットを返信してコネクションを確立するステップと、
    受信済のUDPパケットのシーケンス番号を記憶手段に記憶するステップと、
    新たに受信したUDPパケットのシーケンス番号と、前記記憶手段に記憶してある受信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認するステップと、
    前記UDPパケットの送達を確認したとき、受信した前記UDPパケットのシーケンス番号を付加したACKパケットを前記クライアント装置に返送するステップとを、コンピュータに実行させる通信プログラム。
  12. 請求項11記載の通信プログラムにおいて、
    前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、
    現用系の前記サーバ装置の障害が検出され、待機系の前記サーバが現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置のアプリケーションプログラムと現用系となった前記サーバ装置のアプリケーションプログラムとの間の通信を継続させる通信プログラム。
  13. 請求項11記載の通信プログラムにおいて、
    前記UDPパケットは、データ部にデータパケットか、ACKパケットか、NACKパケットかのパケット種別を示すFLAG情報と、連番で設定されるシーケンス番号と、ACK番号とが付加されて送信される通信プログラム。
  14. 請求項11記載の通信プログラムにおいて、
    新たに受信したUDPパケットのシーケンス番号と、前記記憶手段に記憶してある受信済の前記UDPパケットのシーケンス番号が連続していないときには、欠落しているシーケンス番号をACK番号として付加したNACKパケットを前記クライアント装置に返送するステップを有する通信プログラム。
  15. クライアント装置と複数のサーバ装置とからなるシステムに用いられるクライアント装置であって、
    シーケンス番号を付加したUDPパケットを前記複数のサーバ装置にマルチキャストで送信して前記複数のサーバ装置との間で同時にコネクションを確立するコネクション確立手段と、
    アプリケーションプログラムのデータを含むUDPパケットに後続のシーケンス番号を付加して前記複数のサーバ装置にマルチキャストで送信する送信手段と、
    送信した前記UDPパケットに対するACKパケットが前記複数のサーバ装置の内の少なくとも1つ以上から返送されたとき、前記ACKパケットに付加されているシーケンス番号と、前記記憶手段に記憶されている送信済の前記UDPパケットのシーケンス番号を比較して前記UDPパケットの送達を確認する確認手段とを備えるクライアント装置。
  16. 請求項15記載のクライアント装置において、
    前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、
    前記送信手段は、現用系の前記サーバ装置の障害が検出され、待機系の前記サーバが現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置のアプリケーションプログラムと現用系となった前記サーバ装置のアプリケーションプログラムとの間の通信を継続させるクライアント装置。
  17. 請求項15記載のクライアント装置において、
    前記UDPパケットは、データ部にデータパケットか、ACKパケットか、NACKパケットかのパケット種別を示すFLAG情報と、パケットの送信順序を示すシーケンス番号と、ACK番号とが付加されて送信されるクライアント装置。
  18. クライアント装置と複数のサーバ装置とからなるシステムに用いられるサーバ装置であって、
    前記クライアント装置からマルチキャストで送信され、シーケンス番号が付加されたUDPパケットを受信したとき、ACKを返信して前記クライアント装置との間でコネクションを確立するコネクション確立手段と、
    受信済のUDPパケットのシーケンス番号を記憶する記憶手段と、
    新たに受信したUDPパケットのシーケンス番号と、前記記憶手段に記憶されている受信済の前記UDPパケットのシーケンス番号を比較してパケットの送達を確認する確認手段と、
    前記UDPパケットの送達を確認したとき、受信した前記UDPパケットのシーケンス番号を付加したACKパケットを前記クライアント装置に送信するACK送信手段とを備えるサーバ装置。
  19. 請求項18記載のサーバ装置において、
    前記複数のサーバ装置は現用系と待機系のサーバ装置からなり、
    現用系の前記サーバ装置の障害が検出され、待機系の前記サーバが現用系に切り換えられたとき、現用系に切り換えられた前記サーバ装置を含む前記複数のサーバ装置に前記UDPパケットをマルチキャストして、前記クライアント装置のアプリケーションプログラムと現用系となった前記サーバ装置のアプリケーションプログラムとの間の通信を継続させる通信手段を有するサーバ装置。
  20. 請求項18記載のサーバ装置において、
    前記UDPパケットは、データ部にデータパケットか、ACKパケットか、NACKパケットかのパケット種別を示すFLAG情報と、連番で設定されるシーケンス番号と、ACK番号とが付加されて送信されるサーバ装置。
  21. 請求項18記載のサーバ装置において、
    新たに受信したUDPパケットのシーケンス番号と、前記記憶手段に記憶してある受信済の前記UDPパケットのシーケンス番号が連続していないときには、欠落しているシーケンス番号を付加したNACKパケットを前記クライアント装置に送信するNACK送信手段を有するサーバ装置。
JP2009501034A 2007-02-28 2007-02-28 クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置 Active JP4851585B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000148 WO2008105032A1 (ja) 2007-02-28 2007-02-28 クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置

Publications (2)

Publication Number Publication Date
JPWO2008105032A1 true JPWO2008105032A1 (ja) 2010-06-03
JP4851585B2 JP4851585B2 (ja) 2012-01-11

Family

ID=39720883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009501034A Active JP4851585B2 (ja) 2007-02-28 2007-02-28 クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置

Country Status (3)

Country Link
US (1) US8223766B2 (ja)
JP (1) JP4851585B2 (ja)
WO (1) WO2008105032A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI334293B (en) * 2007-03-06 2010-12-01 Xtera Comm Taiwan Co Ltd Method for transmitting network packets
JP5018716B2 (ja) * 2008-09-29 2012-09-05 富士通株式会社 アプリケーション間通信の高信頼化技術
JP5544099B2 (ja) * 2009-02-27 2014-07-09 株式会社日立製作所 コントローラ通信方法およびコントローラ通信装置
JP5338594B2 (ja) * 2009-09-28 2013-11-13 株式会社Jvcケンウッド データ受信方法、データ送受信システム、およびデータ受信機
CN101714916B (zh) * 2009-11-26 2013-06-05 华为数字技术(成都)有限公司 一种备份方法、设备和系统
US9007181B2 (en) * 2010-01-08 2015-04-14 Tyco Fire & Security Gmbh Method and system for discovery and transparent status reporting for sensor networks
CN102158389A (zh) * 2010-06-25 2011-08-17 青岛海信传媒网络技术有限公司 异步的数据传输方法、装置及系统
US20120124431A1 (en) * 2010-11-17 2012-05-17 Alcatel-Lucent Usa Inc. Method and system for client recovery strategy in a redundant server configuration
US20120243622A1 (en) * 2011-03-23 2012-09-27 Broadcom Corporation Method and apparatus for improving the error rate of a serial/de-serial backplane connection
US9456377B2 (en) * 2011-08-19 2016-09-27 Futurewei Technologies, Inc. System and method for transmission control protocol service delivery in wireless communications systems
JP5982842B2 (ja) * 2012-02-03 2016-08-31 富士通株式会社 コンピュータ障害監視プログラム、方法、及び装置
KR101971623B1 (ko) * 2012-05-10 2019-04-23 삼성전자주식회사 컨텐츠 및 사용자 인터랙션 전송방법
EP3726451A1 (en) * 2012-09-12 2020-10-21 IEX Group, Inc. Transmission latency leveling apparatuses, methods and systems
EP2711864A1 (en) * 2012-09-25 2014-03-26 Gemalto SA Method of configuring two wireless devices for mutual communication
JP2016501464A (ja) 2012-11-08 2016-01-18 キュー ファクター コミュニケーションズ コーポレーション プロキシサーバを用いて通信ネットワークにおいてtcp及び他のネットワークプロトコルのパフォーマンスを向上させる方法及び装置
BR112015009944A2 (pt) * 2012-11-08 2017-10-03 Q Factor Communications Corp Aparelhos de transmissão de pacotes, sistema de comunicação para transmitir ou receber pacote, métodos para transferir confiavelmente dados de fonte de dados a receptor de dados, algoritmo e método para transmitir blocos de dados.
JP6132518B2 (ja) * 2012-11-21 2017-05-24 オリンパス株式会社 マルチキャスト送信端末、マルチキャストシステム、プログラムおよびマルチキャスト送信方法
US9774386B2 (en) * 2013-03-15 2017-09-26 E.F. Johnson Company Distributed simulcast architecture
JP5825689B2 (ja) * 2013-03-28 2015-12-02 Necソリューションイノベータ株式会社 要約筆記支援システム、要約筆記支援サーバ、要約筆記支援方法、及びプログラム
JP2015095247A (ja) 2013-11-14 2015-05-18 富士通株式会社 情報処理システム、情報処理装置、端末装置、制御プログラムおよび制御方法
US10411867B2 (en) * 2015-04-30 2019-09-10 Sony Corporation Communication apparatus and communication method
WO2017052393A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Efficient error control techniques for tcp-based multicast networks
CN105245528B (zh) * 2015-10-20 2019-02-12 北京小鸟听听科技有限公司 一种基于用户数据报协议(udp)的控制命令传输方法、发送端和接收端
US10462006B2 (en) * 2015-12-18 2019-10-29 Verizon Patent And Licensing Inc. Hybrid environment to support reliable delivery of multicast traffic using an orchestration device
US10154317B2 (en) * 2016-07-05 2018-12-11 BoxCast, LLC System, method, and protocol for transmission of video and audio data
US11412272B2 (en) 2016-08-31 2022-08-09 Resi Media Llc System and method for converting adaptive stream to downloadable media
US10511864B2 (en) 2016-08-31 2019-12-17 Living As One, Llc System and method for transcoding media stream
JP7022508B2 (ja) * 2017-01-30 2022-02-18 キヤノン株式会社 通信装置、通信方法、及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5260933A (en) * 1992-05-15 1993-11-09 International Business Machines Corporation Acknowledgement protocol for serial data network with out-of-order delivery
AU2001238153A1 (en) * 2000-02-11 2001-08-20 Convergent Networks, Inc. Service level executable environment for integrated pstn and ip networks and call processing language therefor
US7360075B2 (en) * 2001-02-12 2008-04-15 Aventail Corporation, A Wholly Owned Subsidiary Of Sonicwall, Inc. Method and apparatus for providing secure streaming data transmission facilities using unreliable protocols
US7158486B2 (en) * 2001-03-12 2007-01-02 Opcoast Llc Method and system for fast computation of routes under multiple network states with communication continuation
JP2004080070A (ja) 2002-08-09 2004-03-11 Nippon Telegr & Teleph Corp <Ntt> データ転送方法及びデータ転送システム並びにコンテンツ配信システム
JP4015912B2 (ja) 2002-09-24 2007-11-28 東芝ソリューション株式会社 マルチキャスト配信システム、マルチキャスト配信プログラム及び装置
JP4025697B2 (ja) * 2003-07-09 2007-12-26 松下電器産業株式会社 パケット転送装置およびその制御方法
US20060291452A1 (en) * 2005-06-24 2006-12-28 Motorola, Inc. Method and apparatus for providing reliable communications over an unreliable communications channel

Also Published As

Publication number Publication date
US8223766B2 (en) 2012-07-17
WO2008105032A1 (ja) 2008-09-04
JP4851585B2 (ja) 2012-01-11
US20100014520A1 (en) 2010-01-21

Similar Documents

Publication Publication Date Title
JP4851585B2 (ja) クライアント装置と複数のサーバ装置からなるシステムの通信方法、その通信プログラム、クライアント装置及びサーバ装置
US11765082B2 (en) Data packet retransmission processing
US8612617B2 (en) Reliable multicast transport protocol
CA2706579C (en) Method for enabling faster recovery of client applications in the event of server failure
JP4153502B2 (ja) 通信装置及び論理リンク異常検出方法
WO2018149408A1 (en) High availability using multiple network elements
US20070263626A1 (en) A System for Session-Oriented Reliable Multicast Transmission.
US20110078313A1 (en) Method and system for managing a connection in a connection oriented in-order delivery environment
US8060628B2 (en) Technique for realizing high reliability in inter-application communication
JP4767336B2 (ja) メールサーバシステム及び輻輳制御方法
JP2006229399A (ja) 通信システム、中継ノード及びそれらに用いる通信方法並びにそのプログラム
JP2009253949A (ja) 通信システム、送信装置およびプログラム
JP2000022744A (ja) パケット通信システム、パケット通信装置及びパケット通信方法
JP4969421B2 (ja) 受信装置及び通信システム
KR101587332B1 (ko) 컨트롤러와 네트워크 장치 간 연결 상태 확인 방법
WO2021249651A1 (en) Device and method for delivering acknowledgment in network transport protocols
CN114070781B (zh) 一种数据通信方法、装置、系统及计算机设备
JP4015912B2 (ja) マルチキャスト配信システム、マルチキャスト配信プログラム及び装置
US20110078255A1 (en) Method and system for managing a connection in a connection oriented in-order delivery environment
JP2009065617A (ja) Lan通信システム
WO2012043142A1 (ja) マルチキャストルータ及びマルチキャストネットワークシステム
JP4490998B2 (ja) マルチキャスト配信システム
CN116233243A (zh) 一种弱网环境下的通信系统及方法
JP2009266138A (ja) 通信システム、サーバ装置、中継装置及びそれらに用いる通信方法並びにそのプログラム
JP2007264727A (ja) 通信アダプタ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110812

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: 20111018

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111020

R150 Certificate of patent or registration of utility model

Ref document number: 4851585

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3