JP6387605B2 - 通信システム及び通信方法 - Google Patents

通信システム及び通信方法 Download PDF

Info

Publication number
JP6387605B2
JP6387605B2 JP2013239405A JP2013239405A JP6387605B2 JP 6387605 B2 JP6387605 B2 JP 6387605B2 JP 2013239405 A JP2013239405 A JP 2013239405A JP 2013239405 A JP2013239405 A JP 2013239405A JP 6387605 B2 JP6387605 B2 JP 6387605B2
Authority
JP
Japan
Prior art keywords
port number
terminal
nat
server
source
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
JP2013239405A
Other languages
English (en)
Other versions
JP2014131261A (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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2013239405A priority Critical patent/JP6387605B2/ja
Priority to EP13194425.8A priority patent/EP2739016A1/en
Priority to US14/092,316 priority patent/US9413653B2/en
Priority to CN201310637324.1A priority patent/CN103856576B/zh
Publication of JP2014131261A publication Critical patent/JP2014131261A/ja
Application granted granted Critical
Publication of JP6387605B2 publication Critical patent/JP6387605B2/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2557Translation policies or rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2589NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

この発明は、インターネットのような広域通信ネットワークに接続された別々のNATルータの配下にある端末の間で直接通信を行う通信システム及び通信方法に関する。
従来より、インターネットなどの広域通信ネットワークを介した楽器の演奏(合奏)やデュエット等の合唱などの音楽的なセッションを可能としたネットワークセッションシステムが知られている。このセッションシステムは、自端末での演奏に基づく演奏情報を広域通信ネットワークを介して他端末に送信し合って各端末で両端末の演奏楽音を発音させようというものであるが、各端末が夫々のNAT( Network Address Translation)ルータの配下(ローカル側)にある場合に、複数の端末間で、サーバを介することなく、直接、演奏情報を交信するには、NATを越えなければならないという問題がある。
NAT技術については非特許文献1の「RFC4787」に記載されている。RFC4787は、IETF( Internet Engineering Task Force)が公表する技術仕様であり、ユニキャストUDPでのNAT越えに関連するNAT特性について解説されている。NATルータの振舞いとしては、エンドポイント非依存マッピング、アドレス依存マッピング及びアドレス&ポート依存マツピングという3つのパターンが、一般的によく知られている。そこで、これら3つのNATルータの振舞いのパターンについて触れる。図1及び図2は、NATルータの振舞いパターン及び問題点を説明するための図であり、上述した3つのNATルータの内部では、このNATルータの配下にあるPC(パーソナルコンピュータ)などの送信元端末から、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使って送信した場合、図1(1),(2)及び図2(1)のように、送信元アドレスと送信元ポートが変換される。
htt://www.ietf.org/rfc/rfc4787.txt
図1(1)の「パターン<1>」は、NATの配下から同じ送信元アドレスと送信元ポート番号の組を使って送信する場合には、どの宛て先アドレス、宛て先ポート番号に送っても同じポート変換をするタイプのNATルータの振舞いを示しており、RFC4787では「エンドポイント非依存マッピング」と定義されている。このパターン<1>では、送信元が、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使うと共に、上段の場合は「宛て先アドレス:2.2.2.2、宛て先ポート 20000」を送信し、下段の場合は「宛て先アドレス 3.3.3.3、宛て先ポート 40000」を送信し、2つの場合とも、宛て先は違うが、同じ送信元アドレス・ポートなので、同じポート変換を行い、例えば「送信元アドレス 1.1.1.1、送信元ポート 10000」に変換する。
図1(2)の「パターン<2>」は、NATの配下から同じ送信元アドレスと送信元ポート番号の組を使って送信する場合にも、宛て先アドレスが変わると別の変換を行い、変換された送信元ポートは、シーケンシャル(一つ前の変換結果から「+1」される)に変化するタイプのNATルータの振舞いを示しており、RFC4787では、「アドレス依存マッピング」と定義されている。このパターン<2>では、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使うと共に、上段の場合は「宛て先アドレス:2.2.2.2、宛て先ポート:20000」を送信し、下段の場合は「宛て先アドレス:3.3.3.3、宛て先ポート:40000」を送信し、2つ場合とも、宛て先は違うので、同じ送信元アドレス・ポートでも、別のポート変換を行い、例えば、上段の場合は「送信元アドレス:1.1.1.1、送信元ポート:10000」に変換し、下段の場合は「送信元アドレス:1.1.1.1、送信元ポート:10001」に変換するというように、一つ前の変換結果から「+1」する。
図2(1)の「パターン<3>」は、NATの配下から同じ送信元アドレスと送信元ポート番号の組を使って同じ宛て先に送信されていても、宛て先ポート番号が変わるだけで別の変換を行い、変換された送信元ポートは、シーケンシャル(一つ前の変換結果から「+1」される)に変化するタイプのNATルータの振舞いを示しており、RFC4787では、「アドレス&ポート依存マッピング」と定義されている。このパターン<3>では、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使うと共に、上段の場合は「宛て先アドレス:2.2.2.2、宛て先ポート:20000」を、下段の場合は「宛て先アドレス:2.2.2.2、宛て先ポート:30000」を送信し、2つの場合とも、宛て先アドレスは同じだが、宛て先ポートが違うので別の変換を行い、例えば、上段の場合は「送信元アドレス:1.1.1.1、送信元ポート:10000」に変換し、下段の場合は「送信元アドレス:1.1.1.1、送信元ポート:10001」に変換するというように、一つ前の変換結果から「+1」する。
ところで、このようにNATルータ配下にいる2つの端末同士で直接の通信を行おうとすると、上述した夫々のNATルータによる送信元アドレス及び送信元ポート番号の変換の影響を受けて、変換後のポート番号、アドレスを何らかの方法で知らなければ両端末の接続を行うことができない。
例えば、NATルータ1の配下にある端末PC1及びNATルータ2の配下にある端末PC2が、お互いの外部(グローバル)のIPアドレス:3.3.3.3;1.1.1.1を知っており、5000番ポートでの通信を行おうとして、図2(2)のように、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使うと共に、PC1からは「宛て先アドレス:3.3.3.3、宛て先ポート:5000」を送信し、PC2からは「宛て先アドレス:1.1.1.1、宛て先ポート:5000」を送信して通信しようとしても、NATルータ1,2で変換された送信元ポート番号:20000,30000は、それぞれ、NATルータ2,1の宛て先ポート番号:5000と一致しないので、NATルータ2,1を通過することができない。
このような場合、一般的に「UDPホールパンチング」として知られる手法を使うことで、パターン<1>、パターン<2>での通信を行うことができるようになる。例えば、NAT配下ではないところに設置されたサーバを用意し、各PC1,2は、NATルータ1,2を通じてこのサーバへ通信を行うと、サーバは、それぞれのNATルータ1,2で変換された後のアドレス及びポート番号を知ることができるので、PC1には「PC2のアドレスと変換後のポート番号は3.3.3.3の30000番です」と、PC2には「PC1のアドレスと変換後のポート番号は、1.1.1.1の20000番です」というように、お互いに通知する。NATルータ1,2がパターン<1>のルータであれば、PC1,2は、サーバから通知された相手PC2,1側のアドレス及びポート番号を宛て先にして送信すると、NATルータを通過することができる。
また、NATルータ1,2がパターン<2>のルータの場合は、サーバからの通知で教えてもらったポート番号を使用しても通過できないが、NATによる変換後の送信元ポート番号は、多くの場合、「30000」→「30001」のようなシーケンシャルな変化なので、ポートスキャンのように前後のポートを連続的に試すことで通過することができる。前述の例では、PC1は、30000がだめだと30001を試し、PC2は、20000がだめだと20001を試すことで通過することができる。つまり、パターン<2>のルータでは、同じ宛て先アドレスに対してであれば、次のように、宛て先ボート番号を変化させても送信元ポート番号は変わらないので、前後のポート番号を試すことでそのうち通過する組み合わせが現れることが期待できる:
(PC1側)NAT変換後送信元ポート あて先ポート
20001 → 30000
20001 → 30001 ◎
20001 → 30002
… …
(PC2側)NAT変換後送信元ポート あて先ポート
30001 → 20000
30001 → 20001 ◎
30001 → 20002
… …
このように、UDPホールパンチング手法を使うことによって、図2のようなパターン<1>及びパターン<2>のタイプのNATルータでの通信を行うことができるようになる。しかしながら、図2(1)のように、パターン<3>、即ち、同じ送信元アドレス及び送信元ポート番号の組から同じ宛て先アドレスに送信されていても、宛て先ポート番号が変わるだけで別の変換をするタイプのNATルータへの対応はできない。つまり、パターン<2>のように前後のポートを連続的に試しても、今度は試すたびにNATによる変換後の送信元ポート番号が変化してしまうため、次のように、いつまでたっても追いつけず、通過することができない:
(PC1側)NAT変換後送信元ポート あて先ポート
20001 → 30000
20002 → 30001
20003 → 30002
20004 → 30003
… …
(PC2側)NAT変換後送信元ポート あて先ポート
30001 → 20000
30002 → 20001
30003 → 20002
30004 → 20003
… …
この発明は、このような事情に鑑み、別々のNATルータ配下にある2つの端末の間で、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用して通信を行う際に、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行うNATルータが介在しても、両端末間で直接通信を行うことができる通信システム及び通信方法を提供することを目的とする。
この発明の主たる特徴に従うと、それぞれ第1及び第2のNATルータ(NRa,NRb)の配下にある第1及び第2の端末(TMa,TMb)と、NAT配下にないサーバ(SV)とから成り、第1及び第2の端末(TMa,TMb)が、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用し、第1及び第2のNATルータ(NRa,NRb)を介して互いに通信を行う通信システムであって、サーバ(SV)は、第1の端末(TMa)から第1のNATルータ(NRa)を介して順次送られてくる第1及び第2のデータの受信態様〔図4(a)(1),(2)〕に基づいて、第1のNATルータ(NRa)が、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う所定タイプ(パターン<3>)のNATルータであることを認識するNATタイプ認識手段〔図4(a)(3),S4〕と、NATタイプ認識手段〔図4(a)(3)、S4〕により所定タイプ(パターン<3>)であると認識された第1のNATルータ(NRa)を介して第1の端末(TMa)から送られてくるデータを受信したときに、このデータを送るのに使用された送信元ポート番号をもとに算出(例えば、「+1」だけ加算)したポート番号を推測ポート番号に決定するポート番号推測手段〔図4(b)、S4〕と、ポート番号推測手段〔図4(b)、S4〕により決定された推測ポート番号を第2の端末(TMb)に通知する推測ポート通知手段〔図5(a),S6〕とを具備し、第1の端末(TMa)は、同じ送信元アドレス及び送信元ポート番号を使用し、第1のNATルータ(NRa)を介してサーバ(SV)の異なるポート番号(P1,P2)宛てに第1及び第2のデータを順次送るデータ送信手段〔図4(a)(1),(2)、S2〜S3〕を具備し、第2の端末(TMb)は、サーバ(SV)から通知された推測ポート番号を宛て先ポート番号として使用し、第2及び第1のNATルータ(NRb,NRa)を介して第1の端末(TMa)と直接通信を行う直接通信手段〔図5(b)〕を具備する通信システム〔請求項1〕、並びに、それぞれ第1及び第2のNATルータ(NRa,NRb)の配下にある第1及び第2の端末(TMa,TMb)と、NAT配下にないサーバ(SV)とから成る通信システムにおいて、第1及び第2の端末(TMa,TMb)が、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用し、第1及び第2のNATルータ(NRa,NRb)を介して互いに通信を行う通信方法であって、第1の端末(TMa)から、同じ送信元アドレス及び送信元ポート番号を使用し、第1のNATルータ(NRa)を介してサーバ(SV)の異なるポート番号(P1,P2)宛てに第1及び第2のデータを順次送るデータ送信ステップ〔図4(a)(1),(2)、C2〜C3〕と、サーバ(SV)において、第1の端末(TMa)から第1のNATルータ(NRa)を介して順次送られてくる第1及び第2のデータの受信態様〔図4(a)(1),(2)〕に基づいて、第1のNATルータ(NRa)が、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う所定タイプ(パターン<3>)のNATルータであることを認識するNATタイプ認識ステップ〔図4(a)(3)、S4〕と、サーバ(SV)において、NATタイプ認識ステップ〔図4(a)(3)、S4〕で所定タイプ(パターン<3>)であると認識された第1のNATルータ(NRa)を介して第1の端末(TMa)から送られてくるデータを受信したときに、このデータを送るのに使用された送信元ポート番号をもとに算出(例えば、「+1」だけ加算)したポート番号を推測ポート番号に決定するポート番号推測ステップ〔図4(b)、S4〕と、サーバ(SV)から、ポート番号推測ステップ(S4)で決定された推測ポート番号を第2の端末(TMb)に通知する推測ポート通知ステップ〔図5(a)、S6〕と、第2の端末(TMb)から、サーバ(SV)から通知された推測ポート番号を宛て先ポート番号として使用し、第2及び第1のNATルータ(NRb,NRa)を介して第1の端末(TMa)と直接通信を行う直接通信ステップ〔図5(b)〕とから成る通信方法〔請求項2〕が提供される。なお、括弧書きは、第1の端末(TMa)及び第1のNATルータ(NRa)を夫々実施例の「セッション端末A」及び「NATルータA」とし、第2のセッション端末及び第2のNATルータを夫々実施例の「セッション端末B」及び「NATルータB」とした場合における実施例の参照記号や箇所等を表わし、以下においても同様である。
この発明による主たる特徴による通信システムは(請求項1,2)、それぞれ第1及び第2のNATルータ(NRa,NRb)の配下にある第1及び第2の端末(TMa,TMb)と、NAT配下にないサーバ(SV)とから成り、第1及び第2の端末(TMa,TMb)が、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用し、第1及び第2のNATルータ(NRa,NRb)を介して互いに通信を行う。両端末(TMa,TMb)の直接通信に先立って、先ず、第1の端末(TMa)から、同じ送信元アドレス及び送信元ポート番号を使用し、第1のNATルータ(NRa)を介してサーバ(SV)の異なるポート番号(P1,P2)宛てに第1及び第2のデータを順次送ると〔図4(a)(1),(2)、C2,C3〕と、サーバ(SV)では、順次送られてくる第1及び第2のデータの受信態様〔図4(a)(1),(2)〕に基づいて、第1のNATルータ(NRa)が、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う所定タイプ(パターン<3>)のNATルータであることを認識する〔図4(a)(3)、S4〕。サーバ(SV)では、所定タイプ(パターン<3>)であると認識された第1のNATルータ(NRa)を介して第1の端末(TMa)から送られてくるデータを受信したときに、このデータを送るのに使用された送信元ポート番号をもとに算出(例えば、「+1」だけ加算)したポート番号を推測ポート番号に決定し〔図4(b)、S4〕、決定した推測ポート番号をサーバ(SV)から第2の端末(TMb)に通知する〔図5(a)、S6〕。そして、通知された推測ポート番号を宛て先ポート番号として使用し、第2の端末(TMb)から第2及び第1のNATルータ(NRb,NRa)を介して第1の端末(TMa)と直接通信を行う〔図5(b)〕。
従って、この発明によれば、別々のNATルータ配下にある2つの端末の間で、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用して通信を行う際に、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行うNATルータが介在しても、両端末間で直接通信を行うことができる。
NATルータの振舞いパターンの一例を説明するための図である。 NATルータの振舞いパターンの他の例及びNATルータの問題点を説明するための図である。 この発明の一実施例によるネットワークセッションシステムの構成例を示す。 この発明の一実施例によるNATタイプの確認手順及びサーバとの通信態様の一部を示す。 この発明の一実施例によるサーバとの通信態様の他部及び2クライアント端末間の交信態様を示す。 この発明の一実施例によるクライアント端末の接続動作例を示す。 この発明の一実施例によるサーバの接続援助動作例を示す。
〔システム構成の概要〕
図3は、この発明の一実施例によるネットワークセッションシステムの構成を示す。このネットワークセッションシステムは、インターネットのような広域通信ネットワークCNを介して通信可能に接続されるセッション管理サーバ(単にサーバともいう)SV及び複数のNATルータNR:NRa〜NRd(記号“NR”はNATルータを代表的に表わす)と、各NATルータNRの配下にある各セッション端末TM:TMa〜TMd(記号“TM”はセッション端末を代表的に表わす)で構成される通信システムである。
セッション管理サーバSVは、NAT配下にはなく、メンバーとなるセッション端末TM間の接続支援、例えば、セッションの開始に先立って行われる各セッション端末TM同士の接続手続きなどを行う。各セッション端末TM間、例えば、セッション端末TMa〜TMd間で接続が成立した後は、セッション管理サーバSVを介することなく、NAT配下のこれらセッション端末TMa〜TMd間において、直接、オーディオデータなどの演奏情報が送受信される。
NATルータNRは、図示されたセッション端末TMの外に、複数のホスト機器を配下に備え、これらの機器で構成されるローカルネットワークと広域通信ネットワークCNとの間でデータを中継し、両ネットワーク間でアドレス及びポート番号を変換するNAT機能を備える。つまり、適当に割り振られ各ローカルネットワークでのみ通用するローカルアドレス及びポート番号を広域通信ネットワークCN上のグローバルアドレス及びポート番号を自動的に相互変換する。このNAT機能のタイプは、図1〜図2で説明したように、パターン<1>〜<3>の3つが知られている。
ネットワーク音楽セッションのメンバーとなる複数のセッション端末TMa〜TMdは、クライアント端末或いは単にクライアントとも呼ばれ、それぞれ、楽器演奏及び/又はカラオケが可能な電子音楽装置である。つまり、各セッション端末TMは、電子的な音楽情報処理機能を有する一種のコンピュータであり、電子楽器や音楽情報処理アプリケーションがインストールされたパーソナルコンピュータ(PC)のような電子音楽装置を用いることができる。また、セッション端末TMとして電子楽器を使用しカラオケを行わない場合があり、セッション端末TMとして音楽情報処理アプリケーション付きPCを使用しカラオケのみを行う場合もある。なお、セッション端末TMの数(メンバー数)は、図3には4つ例示されているが、これに限らない(多くても少なくてもよい)。
〔タイプの確認から変換後アドレス・ポートの取得までの手順〕
この発明の一実施例による通信システムは、別々のNATルータNRa〜NRdの配下にある複数のセッション端末(以下、「クライアント端末」或いは単に「クライアント」又は「端末」という)TMa〜TMdと、NAT配下にないセッション管理サーバ(以下、単に「サーバ」という)SVとから成り、各クライアント端末TMa〜TMdは、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用して、それぞれのNATルータNRa〜NRdを介して直接通信が行われる。しかしながら、図2(2)に関して説明したように、或るクライアント端末TMが属するNATルータNRが、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う「パターン<3>」(アドレス&ポート依存マッピング)のタイプ〔図2(1)参照〕であっても、端末TMa〜TMd間では、通信(接続)を確立させる必要がある。図4及び図5は、この発明の一実施例によるNATタイプの確認から2クライアント端末間の交信に到るまでの手順を示す。なお、以下においては、クライアント端末(A)TMaとクライアント端末(B)TMbとの間で接続を確立する場合を例にして説明する。
クライアントA,B間の直接通信に先立って、先ず、図4(a)のNATタイプの確認を行う。この場合、サーバSVでは、予め2つのポート番号P1,P2を開いておき、クライアントAは、NATルータBを介してサーバSVに接続するときに、両方のポート番号P1,P2にパケットを順次送出する。サーバSVは、これらのパケットの受信態様(受信結果)を見て、パターン<3>に当てはまるかどうかを判定する。
具体的には、まず、図4(a)(1)に示すように、図2(1)と同様に、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使うと共に、サーバSVのアドレスと第1のポート番号P1=「7272」を示す「宛て先アドレス:2.2.2.2、宛て先ポート:7272」を持つパケットをクライアントAからNATルータAを介してサーバSVに送信する。次いで、図4(a)(2)に示すように、宛て先ポート番号のみを第2のポート番号P2=「7273」に変更したパケットをサーバSVに送信する。その結果、サーバSVで始めに第1ポートP1=7272で受信した送信元ポート番号= 19998と、後で第2ポート番号P2=7273で受信した送信元ポート番号= 19999とを比較すると、ポート番号が進んでいる。従って、サーバSVは、図4(a)(3)に示すように、宛て先ポート番号を変えただけで、ポート変換結果が変わっていることが分り、「NATルータAはパターン<3>である」と認識することができる。
また、これと同様のパケットをクライアントBからサーバSVに送ることにより、NATルータBについても、パターン<3>であるかどうか調べる。その後は、次に説明するように、通常のUDPホールパンチングと同じであり、NATルータAがこのパターン<3>であることが分った場合には、相手クライアントBには、クライアントAが使用したポート番号に「+1」した番号を通知する。
さて、このようにして、クライアントA,Bが属するNATルータA,Bのタイプがパターン<3>であるかどうかを調べ終えると(以下においては、NATルータAはパターン<3>のタイプであり、NATルータBはパターン<3>以外のタイプであるとする)図4(b)のように、両クライアントA,BからNATルータA,Bを介してデータがサーバSVに送られる。サーバSVは、このデータを送ってくるのに使用されたNAT変換後の送信元アドレス及びポート番号を知ることができるので、お互いに通知する。
すなわち、所定タイプのパターン<3>であると認識したNATルータAを介してクライアントAから送られてくるデータを受信したときは、このデータを送るのに使用された送信元ポート番号に「+1」だけ加算したポート番号を推測ポート番号に決定し、図5(a)のように、「クライアントAのアドレスと変換後のポート番号は、(パターン<3>に当てはまるので) 1.1.1.1の 20001番と推測される」旨を相手クライアントBに通知する。また、パターン<3>でないと判定したNATルータBを介してクライアントBから送られてくるデータを受信したときは、このデータを送るのに使用された送信元ポート番号を推測ポート番号に決定し、[クライアントBのアドレスと変換後のポート番号は、3.3.3.3の30000番と推測される」旨を相手クライアントAに通知する。
そして、両クライアントA,Bは、サーバSVから通知された推測ポート番号を宛て先ポート番号に使用すると、クライアントA,Bは、NATルータA,Bを介して直接通信を行うことができる。つまり、図5(b)に示すように、クライアントA,Bは、同じ「送信元アドレス:192.168.0.1と送信元ポート番号:5000」の組を使うと共に、サーバSVから通知された「3.3.3.3の30000番」或いは「 1.1.1.1の 20001番」を宛て先としてパケットを送信するので、パターン<3>のNATルータAが送信元ポートを「+1」変化させても、クライアントBからの宛て先ポート番号は、サーバSVからの通知に従って既に「+1」させてあるので、ポート番号が一致しパケットが通過でき接続できる。
以上説明したように、この発明の一実施例による通信システムでは、NATルータA,Bの配下にある端末A,Bと、NAT配下にないサーバSVとから成り、端末A,Bが、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用し、NATルータA,Bを介して互いに通信を行う。両端末A,Bの直接通信に先立って、端末Aは、同じ送信元アドレス及び送信元ポート番号を使用し、NATルータAを介してサーバSVの異なるポート番号P1,P2宛てに第1及び第2のデータを順次送ると〔図4(a)(1),(2)〕、サーバSVは、順次送られてくる第1及び第2データの受信態様に基づいて、NATルータAが、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う所定タイプ(パターン<3>)のNATルータであるかどうかを調べる〔図4(a)(3)〕。ここで、NATルータAが所定タイプ(パターン<3>)であると認識された場合、当該NATルータAを介して端末Aから送られてくるデータを受信したときに、このデータを送るのに使用された送信元ポート番号をもとに算出(例えば、「+1」だけ加算)したものを端末Aへの最適なポート番号と推定し、これを端末Aへの推測ポート番号に決定し、所定タイプでないと認識された場合は、当該NATルータAからデータを送るのに使用された送信元ポート番号を推測ポート番号に決定し〔図4(b)〕、決定した推測ポート番号を端末Bに通知する〔図5(a)〕。また、端末Bについても、同様の手順で、NATルータBが所定タイプ(パターン<3>)であるかどうかが調べられ〔図4(a)(1),(2)→(3)〕、所定タイプ(パターン<3>)であるか否かの認識に応じて端末Bへの推測ポート番号が決定され、サーバSVから端末Aに通知される〔図4(b)→図5(a)〕。そして、端末B;Aは、それぞれ、通知された推測ポート番号を宛て先ポート番号として使用し、NATルータB,A;A,Bを介して端末A;Bと直接通信を行う〔図5(b)〕。なお、用語「推測」は「推定」と表現してもよい。
〔動作例〕
図6は、この発明の一実施例によるクライアント端末の接続動作例を示し、図7は、この発明の一実施例によるサーバの接続援助動作例を示す。まず、図6に従って、クライアント端末TMの接続動作を説明する。クライアント端末TMは、ユーザ操作による接続開始の指示があると、クライアント端末TMの制御部(CPU)は、サーバSVに対して接続を行うことを通知し、次のステップC2では、サーバSVに対して、ポート番号P1宛てにパケットを送出し、さらに、ステップC3で、サーバSVに対して、同じ送信元アドレス・ポート番号から、ポート番号P2宛てにパケットを送出する。
次のステップC4では、サーバSVから接続通知が届いたか否か、すなわち、他の参加者が現れたかどうかを判定し、サーバSVから接続通知が届いていない場合には(C4=NO)、接続通知の到着を待機し、サーバSVから接続通知が到着すると(C4=YES)、ステップC5に進む。ステップC5では、サーバSVから通知されたポート番号とアドレスをセットしてパケットの送出を試行する。この場合、通知されたポート番号の前後のポート番号値に対しての送出を行っても良い。
続くステップC6では、接続しようとする相手クライアントTMからの試行パケットが届いたか否かを判定し、試行パケットが届いたときは(C6=YES)、ステップC7に進んで、サーバSVに接続完了したことを通知し、これにより、相手クライアントTMとの直接的な接続が確立し、この接続動作を終了し、以後は、相手クライアントTMとの音楽セッション動作(合奏)に移行する。
一方、ステップC6で、相手クライアントTMからの試行パケットが届いていないと判定したときは(C6=NO)、ステップC8に進み、相手クライアントTMからのパケットを待つ最大時間が経過したか否かを判定する。ここで、この最大時間が経過していない間は(C8=NO)、ステップC6に戻って、相手クライアントTMからの試行パケットが届くまで(C6=YES)或いは最大時間が経過するまで(C8=YES)、ステップC6,C8の試行パケット到着及び最大時間経過を待機し、試行パケットが届くと(C6=YES)、上述したステップC7の接続確立処理を行ってこの接続動作を終了し、最大時間が経過すると、ステップC9に進む。
ステップC9では、ステップC5でのパケット送出の試行を最大試行回数行ったか否かを判定し、最大試行回数行っていないときは(C9=NO)、ステップC10で、サーバSVに接続のリトライを通知すると共に、再度、接続の試行を行った後、ステップC4に戻り、ステップC4〜C6,C8〜C10の動作を繰り返す。そして、パケット送出の試行を最大試行回数行ったときは(C9=YES)、ステップC11で、サーバSVに接続失敗したことを通知して接続を断念し、この接続動作を終了する。
次に、図7に従って、サーバSVの接続援助動作を説明する。サーバSVの制御部(CPU)は、ステップS1で、クライアントTMから接続開始の通知が来たか否かを判定し、接続開始の通知が来ない間は(S1=NO)接続開始の通知を待ち、接続開始の通知が来ると(S1=YES)、ステップS2に進んで、クライアントTMからポート番号P1へのパケットを受信したか否かを判定し、ポート番号P1へのパケットを受信しない間は(S2=NO)当該パケットの受信を待つ。
ポート番号P1へのパケットを受信すると(S2=YES)クライアントTMからポート番号P2へのパケットを受信したか否かを判定し、ポート番号P2へのパケットを受信しない間は(S3=NO)当該パケットの受信を待つ。そして、ポート番号P2へのパケットを受信すると(S3=YES)、ステップS4に進んで、ポート番号P1、P2のパケットの送信元ポート番号より、接続時に通知する推測ポート番号を決定し、ステップS5に進む。ステップS5では、接続待ちのクライアントTMが2つ以上存在するか否かを判定し、2つ未満のときは(S5=NO)、ステップS1に戻り、接続待ちのクライアントTMが2つ未満の間は(S5=NO),ステップS1〜S5の処理を繰り返す。
接続待ちのクライアントTMが2つ以上存在すると、(S5=YES)、ステップS6に進み、それぞれのクライアントTMに、相手の接続先アドレスと、推測されたポート番号を含め、接続通知のパケットを送出し、さらに、ステップS7に進む。ステップS7では、クライアントTMから、「接続完了」、「接続のリトライ通知」、「接続失敗」の何れかのパケットが届いたか否かを判定し、届いていなければ(S7=NO)、届くまで待つ。何れかのパケットが届くと(S7=YES)、ステップS8において、届いたパケットの内容により処理を分岐する。
つまり、「接続のリトライ通知」のパケットを受信したときは(S8=リトライ)、ステップS6に戻って、ステップS6〜S8の処理を繰り返す。「接続完了」のパケットを受信したときは(S8=接続完了)、ステップS9に進み、接続完了とし、接続待ちのクライアントTMから削除する。また、「接続失敗」のパケットを受信したときは(S8=接続失敗)、ステップS10に進み、接続失敗とし、接続待ちのクライアントTMから削除する。そして、ステップS8,S9の処理後は、元の待機状態に戻る。
〔変形例〕
図6及び図7の動作例では、推測ポート番号を決定した後、接続待ちのクライアントが自分を含めて2つ以上存在するか(他の参加者が現れた)かを待って、接続通知のパケットを送出するようにしているが、実際には、サーバヘポート番号を通知したときから他の参加者が現れて、2つのクライアント間の接続試行を始めるまでの間に時間が空いてしまうことがある。このような場合には、NATルータの変換後のポート番号が大きくずれている可能性がある。
そこで、図6のクライアント側の接続動作において、ステップC4:「サーパから接続通知が届いたか(=他の参加者が現れたかどうか)」(YES)の後に、「もう一度新しいポート番号からサーバにパケットを送出する」処理を加えると共に、図7のサーバ側の動作ステップS5:「接続待ちのクライアントが2つ以上存在するか?」(YES)の後に、「クライアントから送出されたバケットの送信元ボート番号を見て、相手に通知する推測ポート番号を決める」プロセスをはさんでも良い。このように、他の参加者が現れた直後に推測ポート番号を決めるようにすれば、変換後のポート番号がずれることはない。最新の状況を通信接続に反映させることができるようになる。
〔種々の実施態様〕
以上、この発明の好適な一実施例について説明したが、これは単なる一例であって、この発明は、発明の精神を逸脱しない範囲で種々の変更が可能であり、種々の態様で実施することができる。例えば、NATルータが所定タイプ(パターン<3>)であると認識された場合における推測ポート番号の決定、即ち、相手クライアントで使用すべき最適な宛て先ポート番号の推測については、実施例では、サーバ(SV)がNATルータタイプをパターン<3>であると認識した場合、送信元ポート番号に対して「+1」の演算で算出したポート番号を推測ポート番号として相手クライアントに通知するようにしたが、送信元ポート番号をもとにした推測ポート番号の算出方法はこれに限らない。
例えば、NATルータポート変換の振舞い(送信元ポート番号をどのように変換するか)に応じて、相手クライアントに通知する推測ポート番号を得るため送信元ポート番号に対する増減量(送信元ポート番号に対して「+2」、「+3」、…、または、「−1」、「−2」、…の演算を行う、など)を決定するようにしてもよい。また、送信元ポート番号に対する演算は、加減算に限らない。
例えば、サーバがNATルータタイプを認識するNATタイプ確認手順〔図4(a)〕において、ポート変換結果の差異を検出し、検出した差分だけ送信元ポート番号を増減させたものを推測ポート番号として相手クライアントに通知するようにしてもよい。つまり、検出した差分がNATルータポート変換の振舞いとして推測することができるので、相手クライアントに通知する推測ポート番号も、その差分だけ送信元ポート番号を増減させたものにすることで、接続を行うことができる。
NR:NRa〜NRd NATルータ、
TM:TMa〜TMd セッション端末又はクライアント端末、
SV:[セッション管理]サーバ、
P1,P2 ポート番号。

Claims (8)

  1. それぞれ第1及び第2のNATルータの配下にある第1及び第2の端末と、NAT配下にないサーバとから成り、第1及び第2の端末が、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用し、第1及び第2のNATルータを介して互いに通信を行う通信システムであって、
    第1の端末が第2の端末と通信を開始する際に、通信の接続援助動作を行うサーバは、
    第1の端末から第1のNATルータを介して順次送られてくる第1及び第2のデータの受信態様に基づいて、第1のNATルータが、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う所定タイプのNATルータであることを認識するNATタイプ認識手段と、
    NATタイプ認識手段により所定タイプであると認識された第1のNATルータを介して第1の端末から送出されたデータを受信したときに、このデータを送るのに使用された送信元ポート番号をもとに算出したポート番号を推測ポート番号に決定するポート番号推測手段と、
    ポート番号推測手段により決定された推測ポート番号を第2の端末に通知する推測ポート通知手段と
    を具備し、
    第1の端末は、サーバが接続援助動作を行うことによりサーバから接続通知が届いた際に、第1の端末からサーバに前記データを送出し、このデータを受信したサーバは、第1の端末から送出されたデータの送信元ポート番号を見て第2の端末に通知する推測ポート番号を決定し、
    第1の端末は、同じ送信元アドレス及び送信元ポート番号を使用し、第1のNATルータを介してサーバの異なるポート番号宛てに第1及び第2のデータを順次送るデータ送信手段を具備し、
    第2の端末は、サーバから通知された推測ポート番号を宛て先ポート番号として使用し、第2及び第1のNATルータを介して第1の端末と直接通信を行う直接通信手段を具備する
    ことを特徴とする通信システム。
  2. ポート番号推測手段は、第1のNATルータが所定タイプであると認識した場合、第1端末から第1のNATルータを介して送られた送信元ポート番号に、ある値を加算したポート番号、又はある値を減算したポート番号を、推測ポート番号として決定し、
    NATタイプ認識手段は、第1のNATルータが、宛先ポート番号が変わると、送信元ポート番号を異なる送信元ポート番号に変化する所定タイプであることを認識すると共に、第1端末から宛先ポート番号を異ならせて送られた第1及び第2のデータを受信したとき、送信元ポート番号が異なることを条件に第1のNATルータは所定タイプであることを認識することを特徴とする請求項1に記載の通信システム。
  3. 所定タイプは、宛先ポート番号が変わると、送信元ポート番号をシーケンシャルに変更するタイプであることを特徴とする請求項2に記載の通信システム。
  4. ポート番号推測手段は、送信元ポート番号に「+1」を加算したポート番号を推測ポート番号として決定することを特徴とする請求項3に記載の通信システム。
  5. さらに、NATタイプ認識手段は、前記第1及び第2のデータを受信したとき、送信元ポート番号が同じであることを条件に第1のNATルータは所定タイプ以外のタイプであることを認識し、
    さらに、ポート番号推測手段は所定タイプ以外のタイプであると認識された場合、第1の端末から受信したデータを第2の端末へ送る際に使用された送信元ポート番号を前記推測ポート番号として決定することを特徴とする請求項1に記載の通信システム。
  6. 所定タイプ以外のタイプは、宛て先アドレス及び宛て先ポートが変わっても送信元ポート番号を変更しないNATルータのタイプ、又は宛て先アドレスが変わると送信元ポート番号をシーケンシャルに変更するNATルータのタイプであることを特徴とする請求項5に記載の通信システム。
  7. 第1のNATルータの所定タイプとして、宛先ポート番号が変わると、送信元ポート番号を異なる送信元ポート番号に変化する所定タイプを認識するために、第1端末から宛先ポート番号を異ならせてサーバに送る第1及び第2のデータが、サーバの同一アドレスに送られることを特徴とする請求項1に記載の通信システム。
  8. それぞれ第1及び第2のNATルータの配下にある第1及び第2の端末と、NAT配下にないサーバとから成る通信システムにおいて、第1及び第2の端末が、送信元アドレス、送信元ポート番号、宛て先アドレス及び宛て先ポート番号を使用し、第1及び第2のNATルータを介して互いに通信を行う通信方法であって、
    第1の端末から、同じ送信元アドレス及び送信元ポート番号を使用し、第1のNATルータを介してサーバの異なるポート番号宛てに第1及び第2のデータを順次送るデータ送信ステップと、
    サーバにおいて、第1の端末から第1のNATルータを介して順次送られてくる第1及び第2のデータの受信態様に基づいて、第1のNATルータが、宛て先ポート番号が変わっただけで異なる送信元ポート番号変換を行う所定タイプのNATルータであることを認識するNATタイプ認識ステップと、
    サーバにおいて、NATタイプ認識ステップで所定タイプであると認識された第1のNATルータを介して第1の端末から送出されたデータを受信したときに、このデータを送るのに使用された送信元ポート番号をもとに算出したポート番号を推測ポート番号に決定するポート番号推測ステップと、
    サーバから、ポート番号推測ステップで決定された推測ポート番号を第2の端末に通知する推測ポート通知ステップと、
    第2の端末から、サーバから通知された推測ポート番号を宛て先ポート番号として使用し、第2及び第1のNATルータを介して第1の端末と直接通信を行う直接通信ステップと
    から成り、
    サーバは、第1の端末が第2の端末と通信を開始する際に、通信の接続援助動作を行い、第1の端末は、サーバが接続援助動作を行うことによりサーバから接続通知が届いた際に、第1の端末からサーバに前記データを送出し、このデータを受信したサーバは、第1の端末から送出されたデータの送信元ポート番号を見て第2の端末に通知する推測ポート番号を決定することを特徴とする通信方法。
JP2013239405A 2012-11-30 2013-11-19 通信システム及び通信方法 Active JP6387605B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2013239405A JP6387605B2 (ja) 2012-11-30 2013-11-19 通信システム及び通信方法
EP13194425.8A EP2739016A1 (en) 2012-11-30 2013-11-26 Communication system and server
US14/092,316 US9413653B2 (en) 2012-11-30 2013-11-27 Communication system and server
CN201310637324.1A CN103856576B (zh) 2012-11-30 2013-12-02 通信系统和服务器

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012263882 2012-11-30
JP2012263882 2012-11-30
JP2013239405A JP6387605B2 (ja) 2012-11-30 2013-11-19 通信システム及び通信方法

Publications (2)

Publication Number Publication Date
JP2014131261A JP2014131261A (ja) 2014-07-10
JP6387605B2 true JP6387605B2 (ja) 2018-09-12

Family

ID=49680837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013239405A Active JP6387605B2 (ja) 2012-11-30 2013-11-19 通信システム及び通信方法

Country Status (4)

Country Link
US (1) US9413653B2 (ja)
EP (1) EP2739016A1 (ja)
JP (1) JP6387605B2 (ja)
CN (1) CN103856576B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140280989A1 (en) * 2013-03-14 2014-09-18 Thomas J. Borkowski System and method for establishing peer to peer connections through symmetric nats
CN107580082B (zh) * 2017-09-18 2021-03-26 北京奇艺世纪科技有限公司 一种对称型nat的穿透方法及装置
CN107360275B (zh) * 2017-09-18 2021-01-22 北京奇艺世纪科技有限公司 一种对称型nat端口的预测方法及装置
CN109617749B (zh) * 2019-01-31 2021-08-06 郑州物海网络科技有限公司 基于互联网实现柔性配置终端设备和路由规则的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3849711B2 (ja) * 2003-11-07 2006-11-22 松下電器産業株式会社 通信システム、情報処理装置、サーバ、および通信方法
JP2007528677A (ja) * 2004-03-09 2007-10-11 クリーク コミュニケーションズ エルエルシー シンメトリック・ファイアウォールの背後のクライアントのピアツーピア接続のためのシステムおよび方法
US7558862B1 (en) * 2004-12-09 2009-07-07 LogMeln, Inc. Method and apparatus for remotely controlling a computer with peer-to-peer command and data transfer
US8296437B2 (en) * 2005-12-29 2012-10-23 Logmein, Inc. Server-mediated setup and maintenance of peer-to-peer client computer communications
US8825822B2 (en) * 2009-02-06 2014-09-02 Sagem-Interstar, Inc. Scalable NAT traversal
US20100241710A1 (en) * 2009-02-14 2010-09-23 Bvisual S.A. Method and system for videoconferencing or data transfer between clients behind different network address translators
US8713664B2 (en) * 2009-02-23 2014-04-29 Xcast Labs, Inc. Detecting the type of NAT firewall using messages
JP5321396B2 (ja) * 2009-09-30 2013-10-23 ブラザー工業株式会社 通信システム
JP5273001B2 (ja) * 2009-09-30 2013-08-28 ブラザー工業株式会社 通信システム、端末装置、通信方法、及び通信プログラム
US8799485B2 (en) * 2009-12-18 2014-08-05 Sling Media, Inc. Methods and apparatus for establishing network connections using an inter-mediating device

Also Published As

Publication number Publication date
CN103856576A (zh) 2014-06-11
JP2014131261A (ja) 2014-07-10
EP2739016A1 (en) 2014-06-04
US20140156870A1 (en) 2014-06-05
US9413653B2 (en) 2016-08-09
CN103856576B (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
KR101139675B1 (ko) 동시 다중 연결을 위한 대칭형 네트워크 주소 변환기 통과 방법
EP2220852B1 (en) Communicating a selection of a potential configuration
KR20100019420A (ko) 에지 라우팅을 갖는 피어-투-피어 협업 시스템
KR20050046632A (ko) 정보 통신 시스템 및 방법, 정보 처리 장치 및 방법,프로그램 및 기록 매체
WO2005109785A1 (ja) 情報処理装置、バブルパケット送信方法およびプログラム
JP6387605B2 (ja) 通信システム及び通信方法
CN108702394A (zh) 网络端点间的媒体会话
JP3999785B2 (ja) 通信方法
US8406242B2 (en) Communication system, terminal device, and communication method for performing communication based on the real-time transport protocol/RTP control protocol
JP2008118599A (ja) 通信装置、通信制御方法、及び通信制御プログラム
JP2005117587A (ja) 通信方法
JP2008205676A (ja) 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
JP6331421B2 (ja) 通信システム及びサーバ
WO2015093158A1 (ja) 通信システム、端末装置及びサーバ
JP5084716B2 (ja) Vpn接続装置、dnsパケット制御方法、及びプログラム
WO2022201980A1 (ja) 通信方法、ルータ、サーバ、通信システム、及び通信のためのプログラム
JP2015119217A (ja) 通信システム及び端末装置
JP2005045678A (ja) ネットワークを介したホスト間の通信方法
JP5171608B2 (ja) Vpn接続装置、パケット制御方法、及びプログラム
JP4345751B2 (ja) 情報処理装置、及びバブルパケット送信方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20141218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160921

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20161011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180406

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180730

R151 Written notification of patent or utility model registration

Ref document number: 6387605

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151