JP6600241B2 - 演算装置及び演算方法、通信装置 - Google Patents

演算装置及び演算方法、通信装置 Download PDF

Info

Publication number
JP6600241B2
JP6600241B2 JP2015242644A JP2015242644A JP6600241B2 JP 6600241 B2 JP6600241 B2 JP 6600241B2 JP 2015242644 A JP2015242644 A JP 2015242644A JP 2015242644 A JP2015242644 A JP 2015242644A JP 6600241 B2 JP6600241 B2 JP 6600241B2
Authority
JP
Japan
Prior art keywords
target data
transfer
memory
checksum
unit
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
JP2015242644A
Other languages
English (en)
Other versions
JP2017108357A5 (ja
JP2017108357A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2015242644A priority Critical patent/JP6600241B2/ja
Priority to US15/370,925 priority patent/US10701041B2/en
Publication of JP2017108357A publication Critical patent/JP2017108357A/ja
Publication of JP2017108357A5 publication Critical patent/JP2017108357A5/ja
Application granted granted Critical
Publication of JP6600241B2 publication Critical patent/JP6600241B2/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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]

Description

本発明は演算装置及び演算方法、通信装置に関し、特に、チェックサム処理を効率的に行うための技術に関する。
通信分野においてチェックサム処理が必要な場合がある。チェックサムは誤り検出に必要な情報である。今日のインターネットで広く使用されているTCP/IP通信におけるTCPチェックサムの処理には、TCPパケット中のペイロード部分を全て演算する必要がある。このTCPチェックサム処理をコンピュータプログラムに基づきCPUで行うにもH/W(ハードウェア)で行うにも、全ペイロードを演算部に送る必要があり、したがってデータを移動させる転送が必要となる。
特許文献1には、チェックサム演算可能なネットワークアダプタに関する構成が記載されている。この構成では、記憶装置に記憶されたチェックサム未処理パケットと、チェックサム制御情報をネットワークアダプタに転送する。ネットワークアダプタは、制御情報に基づきチェックサム未処理パケットに対してチェックサム処理実行を行い、完成したパケットをインターフェースへ転送してネットワークへ送信する。
特許文献2には、TCP/IPパケットの送受信において、IPチェックサム、TCPチェックサムをハードウェアで実現することについて記載されている。この構成では、TCP/IPパケット送信時において、先のチェックサム処理はDMA処理部からMACブリッジ回路へ転送する途中に実施されている。
特開平6−78024号公報 特開2006−303765号公報
チェックサム未処理パケットをメモリから読み込み、チェックサム処理を施して完成したパケットとしてインターフェースへ転送する処理を行う転送器は、以下の機能を具備する。
(1)メモリからチェックサム未処理パケットの読み込み処理。
(2)未処理パケットのヘッダの解析処理。
(3)解析結果に応じたチェックサム演算処理。
(4)未処理パケットに対するチェックサム演算結果の上書き処理。
(5)上書き処理により完成したパケットをインターフェースへ送信する処理。
上記機能を持つ転送器でチェックサム演算を実施したデータ転送には、以下の2つの課題がある。
第一の課題は、チェックサムを用いた通信の性質に起因する。チェックサムは、ヘッダ部、つまりパケットの先頭部に付与される。よって、チェックサム演算は、パケットの末尾まで計算対象に含む必要がある場合、チェックサムを上書きするデータ位置からパケットの末尾データまで、一時的に転送器内にデータをため込む必要がある。このことは、とりわけMTU(Maximum Transmission Unit)サイズより大きいパケットのチェックサム処理を上記転送器で実現する場合に、転送器内に大きなバッファが必要となることを意味する。したがって、転送器に大きなバッファを設けなければならないというコスト的な課題がある。
第二の課題は、暗号通信時におけるものである。メモリに用意されたパケットが暗号パケットであった場合、解析対象となるヘッダ部や、演算対象となるデータも暗号化されることがある。その場合、チェックサム処理が必要な通信プロトコルであっても、そのメモリとインターフェース間で実施される転送器由来のチェックサム処理では正しくチェックサム処理ができない。仮に実施した場合、本来送るべきパケットを破壊してしまうといったことが起こり得る。
本発明はこれらの課題に鑑みなされたものであり、様々な通信方式に対応して効率的なチェックサム演算を行うことが可能な技術を提供することを目的とする。
上記目的を達成するため、本発明による演算装置は以下の構成を備える。即ち、
通信対象のデータに対してチェックサム演算を行う演算装置であって、
複数のメモリと、
チェックサムが付与されたデータを出力するインターフェースと、
前記複数のメモリの間で対象データを転送すると共に、当該対象データに対してチェックサム演算を行う機能を備えた第1の転送手段と、
前記複数のメモリに含まれるメモリと前記インターフェースとの間で対象データを転送すると共に、当該対象データに対してチェックサム演算を行う機能を備えた第2の転送手段と、
記対象データの通信方式に基づき、前記第1の転送手段及び前記第2の転送手段のうちのいずれかの転送手段にチェックサム演算を行わせるように制御する制御手段と、
を備える
本発明によれば、様々な通信方式に対応して効率的なチェックサム演算を行うことが可能な技術を提供することができる。
通信装置の構成を示すブロック図 TCP/IPパケット(非暗号)の送信処理を示す図 各フェーズにおけるメモリ内データの格納状態を示す図 TCP/IPパケット(暗号)の送信処理を示す図 各フェーズにおけるメモリ内データの格納状態を示す図 MTUサイズを超えたサイズを持つUDP(非暗号)の送信処理を示す図 各フェーズにおけるメモリ内データの格納状態を示す図 通信装置の構成を示すブロック図
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
<実施形態1>
(通信装置)
以下、本発明の一実施形態(実施形態1)を説明する。図1は、本実施形態に係る通信装置001の構成を示すブロック図である。通信装置001のシステムバス100には、CPU101、メモリ1(102)、メモリ2(103)、メモリ3(104)、暗号・認証処理部105、転送器1(110)、転送器2(120)の7つのモジュールが接続されている。
CPU101は、通信装置001で実行される通信処理全般の処理・制御を担う。具体的には、TCP(トランスミッション・コントロール・プロトコル)通信を行うためのプロトコル処理や、各種モジュールの制御が含まれる。メモリ1(102)、メモリ2(103)、メモリ3(104)には、ネットワーク107と通信装置001間で送受信されるパケットデータや、CPU101や各種モジュールが処理を行うために必要な一時データが格納される。暗号・認証処理部105は、パケットの暗号・認証処理を含む暗号処理を担う。本実施形態では、データの暗号化だけでなく暗号化されたデータの復号、認証処理など安全なデータ転送に関するさまざまな処理を総称して暗号処理と呼ぶ。
転送器1(110)は、メモリ1〜3(102〜104)のうち1つ以上のメモリを転送元とし、同じくメモリ1〜3(102〜104)のうち1つ以上のメモリを転送先としたDMA(Direct Memory Access)転送を実行する。転送器1(110)は、それぞれレジスタが設けられた、演算部1(112)、リード部1(111)、及び、ライト部1(113)を備えている。DMA転送されたデータに対するチェックサム演算を演算部1(112)で実行できる構成になっている。リード部1(111)はメモリ1〜3(102〜104)等からデータを読み出すために用いられ、ライト部1(113)はメモリ1〜3(102〜104)等にデータを書き込むために用いられる。このように、転送器1(110)は、複数のメモリの間で対象データを転送する装置であり、当該対象データに対してチェックサム演算を行う機能(チェックサム演算機能)を備えている。
転送器2(120)は、メモリ1(102)、メモリ2(103)、メモリ3(104)うち1つ以上のメモリと、インターフェース106間のDMA転送を実行する。転送器2(120)は、その内部に演算部2(122)とリード部2(121)を具備し、演算部2(122)とリード部2(121)はそれぞれレジスタを備えている。この演算部2(122)では、転送器2(120)が転送するデータがMTUサイズ以下のサイズの所定のパケットであって暗号化されてない場合に、そのデータを演算部2(122)のレジスタに設定することで、チェックサム演算が実施できる。MTUサイズは、Ethernet(登録商標)では1500Bytesである。リード部2(121)はメモリ1〜3(102〜104)等からデータを読み出すために用いられる。このように、転送器2(120)は、複数のメモリに含まれるメモリとインターフェースとの間で対象データを転送する装置であり、当該対象データに対してチェックサム演算を行う機能を備えている。
インターフェース106は、通信装置001におけるネットワーク107とのインターフェースである。通信に必要なMAC(Media Access Contorol)、およびPHY(物理層)の処理を主に担う。後述するように、チェックサムが付与されたデータを出力する。以上がブロック図の説明である。
(平文通信時の処理手順)
次に、通信装置001が、TCP/IPパケットを暗号化せずに送信する場合のフローについて図2を用いて説明する。図2は、平文を通信する際の処理手順を示すシーケンスチャートである。また、各フローにおける各メモリのデータ格納状態に関して図3を補足的に用いて説明する。図3は、メモリ1(102)、メモリ2(103)の使用状態を示す図である。
まず、S201〜S205において、CPU101は、メモリ1(102)上にあるユーザバッファに格納されたデータグラムを、メモリ2(103)に確保してあるワークエリアにコピーする。このコピーには転送器1(110)を使用する。パケットを暗号化せずにインターフェース106に転送する場合、転送器2(120)の具備する演算部2(122)によるチェックサム処理が可能である。すなわち、転送器1(110)ではチェックサム演算を行う必要がない。そこで、演算部1(112)に、チェックサムOFF(スルー設定)を行う(S201)。なお、この判断及び設定はCPU101が行う。そして、リード部1(111)に対して、コピー元情報(ここでは、メモリ1(102)にあるユーザバッファのアドレスと転送サイズ)を設定する(S202)。そして、ライト部1(113)に対して、コピー先情報(ここでは、メモリ2(103)にあるワークエリアのアドレスと転送サイズ)を設定する(S203)。
S201〜S203によるリード部1(111)へのセットに応じて、メモリ1(102)からメモリ2(103)へのデータ転送が開始される(S204)。具体的にはS204では、メモリ1(102)から、リード部1(111)、演算部1(112)、ライト部1(113)、メモリ2(103)へと順次データが転送される。本実施形態では、パケット3つ分のデータを送る場合の例を説明する。ライト部1(113)まで送信されたあと、メモリ2(103)にデータが格納される。ライト部1(113)の機能/設定により、図2のように、パケット1、パケット2、パケット3のデータがそれぞれ分割されて転送(スキャッタリング転送)できるような構成にしてもよい。全ての転送完了後、ライト部1(113)は、CPU101に対し、完了通知を行う(S205)。
この処理においてメモリ1(102)とメモリ2(103)におかれているデータを図3に示す。図3(A)はメモリ1(102)に格納された、転送対象の3つのパケットのペイロードデータを模式的に示している。図3(B)は、メモリ1(102)から転送されてメモリ2(103)に格納された、3つのパケットのペイロードデータを模式的に示している。
完了通知を受け取ったCPU101は、S206〜S214において、TCP/IPのパケットを作成する。具体的には、TCPヘッダ、IPヘッダを作成する(S206)。なお、TCPヘッダのチェックサムフィールドは、完成させずに‘0’データを入れておけばよい。それは、演算部2(122)にチェックサム演算を実施させるためである。また、演算部2がIPヘッダのチェックサムも計算可能であれば、IPヘッダフィールドにも‘0’を入れておけばよい。本実施形態では、IPチェックサムを、S206でCPU101が作成するとして説明を続ける。3つ分のTCP/IPパケットの作成後(TCPチェックサムは除く)のメモリ2(103)におけるデータ格納状態を図3(C)に示す。図3(C)は、メモリ2(103)において、ペイロードデータにIPヘッダ及びTCPヘッダが付加された、転送対象の3つのパケットを模式的に示している。図3(C)では、IPヘッダは(IPチェックサムを除いて)完成しているが、TCPチェックサムはまだ計算されていない状態である。
次に、ライト部1(113)は、転送器2(120)の演算部2(122)にチェックサム演算のための設定を行う(S207)。チェックサム演算のための設定は、演算部2(122)の機能に応じて、各パケットのサイズを指定する方式により行ってもよいし、あるいは、疑似ヘッダのチェックサム演算のための情報をセットして行ってもよい。演算部2(122)がヘッダの解析も含めたチェックサム演算を行うことが可能であれば、S207では、スルーモードで動作させるのか、チェックサム演算モードで動作させるのかの切り替え設定のみを行うようにしてもよい。ここでは、チェックサムモードをOnにした場合について説明する。
次に、ライト部1(113)は、リード部2(121)に対して、コピー元情報を設定する(S208)。具体的には、パケット1〜3それぞれが格納されているアドレスとデータ長をセットする。設定後、リード部2(121)はメモリ2(103)から、3パケット分のデータのリードして演算部2(122)へ受け渡す(S209)。パケットデータを受け取った演算部2(122)は、受信したパケットにおいてまだ完成していないTCPチェックサムを計算し、パケット中の所定の場所に格納を行う(S210)。そして、演算部2(122)は、完成された各パケットをインターフェース106へ送信する(S211、S212、S213)。3つのパケットをインターフェース106への送信が完了後、演算部2(122)はCPU101に対して完了通知を行う(S214)。以降、同一の手順を繰り返すことにより、次パケット以降の送信もできる(S215、S216、S217)。
図2では、図の簡略化のため、完了通知S214後に、次の処理(S215〜)を行う場合を記載しているが、パイプライン処理が可能な構成にすることにより、S214を待たずにS215を開始することができる。具体的には、S208の完了通知後に、S215の処理を開始してよい。これにより、転送器1(110)によるメモリ1(102)からメモリ2(103)への転送と、転送器2(120)によるメモリ2(103)からインターフェース(106)への転送とを並列化することができる。また、S206において、3つのパケットのIPヘッダ/TCPヘッダを一度に作成しているが、1つずつ作成し転送器2(120)による転送を行ってもよい。これにより、パケットごとに、メモリ間の転送とメモリ・インターフェース間の転送とを並列化することができる。
またここでは、S201で転送器1(110)でのチェックサム演算をオフとした例を説明した。しかし、転送器1(110)のチェックサム演算のオフが難しい場合は、演算部1(112)においてチェックサム演算を行いつつ、チェックサム演算結果を無視するようにしてもよい。そのため、S201で必ずしもチェックサム演算をオフする必要はない。例えば、転送器1(110)にチェックサム演算を行うか否かを設定するための機能を設けないようにすることで、そのような機能を設けた構成よりも、転送器1(110)の構成を単純化することができる。以上がTCP/IPパケット(非暗号)を送信するときのフローの説明である。
(暗号通信時の処理手順)
次に、暗号(例えば、IPSec)を用いたTCP/IPパケットの送信時の動作フローについて図4を用いて説明する。図4は、暗号通信を行う際の処理手順を示すシーケンスチャートである。なお、ここではESP(Encapsulating Security Payload)を用いたトランスポートモードを例に説明する。また、各フローにおける各メモリのデータ格納状態に関して図5を補足的に用いて説明する。図5は、メモリ1(102)、メモリ2(103)、メモリ3(104)の使用状態を示す図である。
まず、S401〜S411において、図2を参照して説明した平文通信時と同様に、CPU101は、メモリ1(102)上にあるユーザバッファに格納されたデータグラムを、メモリ2(103)に確保してあるワークエリアにコピーする。ただし、ここでは暗号化により、1パケットに含めることのできるペイロード長が異なるため、コピーサイズは図2の処理とは異なる。また、転送器2(120)による転送前にチェックサム演算を行う必要があるので、転送器1(110)でチェックサム演算を行う。そこで、演算部1(112)に、チェックサムON(演算設定)を設定する(S401)。パケット毎に設定を行う必要があれば、例では3パケット分それぞれの転送長の設定を行う。そして、リード部1(111)に、コピー元情報(ここでは、メモリ1(102)にあるユーザバッファのアドレスと転送サイズ)を設定する(S402)。そして、ライト部(113)に、コピー先情報(ここでは、メモリ2(103)にあるワークエリアのアドレスと転送サイズ)を設定する(S403)。ここで、転送器1(110)からは、チェックサム演算結果も追加出力されるため、その演算結果の出力先も転送器1(110)の仕様に併せて設定する必要があれば設定する。ここでは、データ転送の末尾に演算結果(2Byte)が転送器1(110)から出力される場合について説明する。すなわち、各パケットの転送量に2Bytes追加した転送サイズをセットし、また、転送先のアドレスをそれぞれセットする。これにより、特別にチェックサム出力アドレスを指定する必要はないことになる。
リード部1(111)へのセットに応じて、メモリ1(102)からメモリ2(103)へのデータ転送が開始される(S404)。具体的にはS404では、メモリ1(102)から、リード部1(111)、演算部1(112)、ライト部1(113)、メモリ2(103)へと順次データが転送される。演算部1(112)に到着したデータは演算部でチェックサム演算され、また、ライト部に入力されたデータと演算結果が出力される。メモリ2(103)に各データと演算結果が格納される(S405〜S410)。
全ての転送完了後、ライト部1(113)は、CPU101に対し、完了通知を行う(S411)。この時のメモリ1(102)とメモリ2(103)に格納されているデータをそれぞれ図5(A)、図5(B)に示す。図5(A)は、メモリ1(102)に格納された、転送対象の3つのパケットのペイロードデータを模式的に示している。図5(B)は、演算器1(112)においてチェックサムが計算されて、メモリ2(103)に格納された、3つのパケットのペイロードデータを模式的に示している。図5(B)に示すメモリ2(103)に格納されているチェックサムは、1パケット分の(ヘッダを含まない)ペイロードデータに対してチェックサム処理を行った、一時的なデータである。
完了通知を受け取ったCPU101は、S412〜S418において、TCP/IPパケットを作成する。具体的には、まず、演算結果1〜3を確認し(S412)、TCPヘッダを作成する(S413)。なお、TCPヘッダのチェックサムフィールドは、先にS412にて確認を行ったチェックサム結果を用いてCPU101により完成させる。このときのメモリ2(103)に格納されているデータを図5(C)に示す。
3つ分のTCPパケットの作成後、CPU101は、暗号・認証処理部105に対し、パケットの暗号化に必要となる設定を行う(S414)。S414の設定が行われた暗号・認証処理部105は、メモリ2(103)にある3つのTCPパケットに対して暗号・認証処理を行う(S415、S416)。暗号化されたTCPパケットには、メモリに書き戻される。先の暗号設定時(S414)に書き戻し先アドレスを登録することにより、任意の場所に書き戻すことができる。本例では、メモリ3(104)に書き戻すように設定された場合について説明する。
暗号処理の完了通知を受け取ったCPU101は、パケット1、2、3のIPヘッダを作成する(S418)。この時点で、メモリ3(104)に格納されているデータについて図5(D)に示す。図5(D)のように、それぞれ完成されたTCPヘッダとペイロードデータを含む各TCPパケットは、暗号化されてESPトレーラが付与された暗号化TCPパケットに変換される。暗号化された各TCPパケットにはESPヘッダとESP認証データが付与されて、IPヘッダが付与されている。
その後、S419〜S425では、暗号化されたパケットをインターフェース106へ送信するための処理を行う。まず、CPU101は、転送器2(120)に具備された演算部2(122)にチェックサム演算なしのスルーモード設定をする(S419)。これは、メモリ3(104)に格納されているデータがすべてに完成されているパケット(MACフレーム等を除く)であり、チェックサム演算の必要がないからである。
次に、CPU101は、リード部2(121)に、コピー元情報設定を行う(S420)。具体的には、パケット1〜3それぞれが格納されているアドレスとデータ長をセットする。設定後、リード部2(121)はメモリ3(104)から、3パケット分のデータのリードを実行する(S421)。リード部2(121)から、スルーモードで動作している演算部2(122)を経由して、インターフェース106へ3つのパケットが送信される(S422〜S424)。3つのパケットを送信後、演算部2(122)は、完了通知をCPU101へ送信する(S425)。以上が図4に示した処理フローの大まかな流れである。
もちろん、本実施形態は一例であり、他の処理手順を採用してもよい。例えば、演算部1(112)が、ヘッダ解析、チェックサム演算(疑似ヘッダ処理含む)、チェックサム上書きといった機能を有していれば、以下のような処理手順による通信処理を実現できる。すなわち、まずメモリ1(102)にチェックサムフィールドのみ未完のTCPヘッダを転送器1(110)の動作開始前に配置する。そして、ペイロード(S404で転送されるデータ)とTCPヘッダを同時に転送し、転送器1(110)の処理後には、完成されたTCPパケットを得るといった手法である。また、IPヘッダの作成を暗号処理(S416)後に実施したが、転送器2(120)を動作させる前に作成可能であれば、どのタイミングで作成してもよいし、他の処理と並行して行ってもよい。これによりさらなる処理効率を向上させることも可能である。
上記のように、CPU101は、対象データが暗号通信の対象である場合に、転送器1(110)に、メモリ1(102)から対象データを読み出し、チェックサム演算を行って、メモリ2(103)へ転送させる。また、暗号・認証処理部105に、メモリ2(103)から対象データを読み出し、当該対象データに対して暗号処理を施して、メモリ3(104)へ転送させる。さらに、転送器2(120)に、メモリ3(104)から対象データを読み出してインターフェース106へ転送させる。このように、暗号処理を行う前にチェックサム演算を行う必要がある場合は、転送器1(110)にチェックサム演算を行わせることで、暗号処理に対応することができる。また、メモリの間の転送と、メモリ・インターフェースの間の転送とを並列して行わせるパイプライン処理を実行することで、通信方式にかかわらず効率的な処理を行うことが可能となる。
また、図4では、S425において完了通知をしてから次のパケットについてS401以降の処理を行う例を示しているが、平文通信時と同様に、処理を並列化してもよい。例えば、メモリ1(102)からメモリ2(103)への転送、暗号・認証処理部105での暗号処理、及び、メモリ3(104)からインターフェース106への転送を並列化することで、処理を効率化することが可能となる。以上が暗号パケット送信時の動作フローである。
(UDP通信時の処理手順)
次に、Ethenet(登録商標)のMTU(1500Bytes)より大きなUDP/IPパケットの送信時の動作フローについて図6を用いて説明する。図6は、UDP(ユーザ・データグラム・プロトコル)通信を行う際の処理手順を示すシーケンスチャートである。また、各フローにおける各メモリのデータ格納状態に関して図7を補足的に用いて説明する。図7は、メモリ1(102)、メモリ2(103)の使用状態を示す図である。
まず、S601〜S609において、先の2つの例と同様に、CPU101は、メモリ1(102)上にあるユーザバッファに格納されたデータグラムを、メモリ2(103)に確保してあるワークエリアにコピーする。転送器2(120)による転送前にチェックサム演算を行う必要があるので、コピーの際はS604〜S608において、転送器1(110)でチェックサム演算を行う。
CPU101は、まず、演算部1(112)に対して、チェックサムON(演算設定)を行う(S601)。ここで、チェックサム設定は、メモリ1(102)からの入力データをすべて演算対象とし、1つの結果のみ出力するようにセットしておく。そして、リード部1(111)にコピー元情報を設定し(S602)、ライト部(113)に、コピー先情報(ここでは、メモリ2(103)にあるワークエリアのアドレスと転送サイズ)を設定する(S603)。フラグメントパケットの先頭パケットは、UDPヘッダが必要になるため、S605の転送サイズは、他の2つ(S606、S607)のサイズよりも(UDPパケット20Bytes分)小さくセットしておく。全てのデータが演算部1(112)に入力されると、演算部1(112)より、チェックサムの一時演算結果が出力されメモリ2(103)に書きこまれる(S608)。
なお、チェックサム演算は、演算対象のデータを所定のビット長のブロックに分割し、各ブロックを加算する演算を行うものである。ここで、ブロックの加算による繰り上がりによりブロックのビット長を超えるキャリー(桁あふれ)が生じたときは、ビット1を最下位ビットに加算する。チェックサム演算はこのような手順により行われるため、演算対象のブロックの全てを加算しさえすれば、演算の途中経過を保持して演算を途中で中断・再開することができ、また、ブロックの加算はどのような順序であっても行うことができる。そこで、S604の演算においては、入力されたフラグメントパケットから所定ビット長のブロックを読み出し、演算部1(112)のバッファ(不図示)に保持されたチェックサム演算の途中結果に順次加算する処理を繰り返すことになる。
この時のメモリ1(102)とメモリ2(103)、それぞれのデータ格納状態を図7(A)、図7(B)に示す。図7(A)は、メモリ1(102)に格納された、転送対象の3つのパケットのペイロードデータを模式的に示している。図7(B)は、メモリ1(102)から転送され、チェックサムの一時演算結果が付与された、メモリ2(103)における3つのパケットのペイロードデータを模式的に示している。
暗号化通信を行う際は、各パケット用データにつきチェックサム演算を行ったが、本例では、UDPヘッダのフラグメントパケットの先頭パケットにしかチェックサムは付与されない。このため、チェックサム演算結果は1つのみでよい。この演算結果は、データ1〜3(S605、S606、S607)の全てのデータに対して実行された結果である。
チェックサム演算結果まで転送が完了すると、ライト部1(113)は、CPU101に対して完了通知を行う(S609)。完了通知を受信したCPU101は、演算結果を確認し(S610)、UDPヘッダの作成を行う(S611)。この際、UDPヘッダに含まれるチェックサムフィールドは、先に確認した演算結果を利用して作成する。UDPヘッダまで作成完了した時のメモリ2(103)のデータを図7(C)に示す。続いてCPU101は、各パケットに対してIPヘッダを作成する(S612)。これにより、フラグメントパケットが完成する。図7(D)は、IPヘッダが付与された各フラグメントパケットを示している。その後は、暗号パケット送信時と同手順で送信を行う。
以上のように、転送器1(110)は、メモリ1(102)から対象データを読み出してメモリ2(103)へ転送し、転送器(120)は、メモリ2(103)から対象データを読み出してインターフェース106へ転送する。そして、CPU101は、UDP通信のように対象データのサイズが所定のサイズよりも大きい通信方式の場合は、転送器1(101)にチェックサム演算を行わせる。これに応じて、転送器1(110)は、メモリ1(102)からメモリ2(103)へ各フラグメントパケットを転送する際にチェックサム演算を行い、その演算結果をメモリ2(103)へ転送済みのフラグメントパケットに付与する。具体的には、転送器1(110)は、チェックサム演算の途中結果を保持し、各フラグメントパケットを転送する際にそのフラグメントパケットを構成する所定ビット長のブロックをその途中結果に順に加算していく。そして、一つのUDPパケットを構成する全てのフラグメントパケットの転送が完了した段階で、そのUDPパケットに対応するチェックサム演算結果をメモリ2(103)へ出力する。このように、チェックサムの演算結果が付与されたUDPパケットをまとめて出力するのではなく、フラグメントパケットの転送と並列に加算処理を進めて、ペイロードとチェックサム演算結果とを別々にメモリに出力する。したがって、大容量のバッファを転送器に設けることなく、効率的にMTUを超える大きさのパケットに対してチェックサム演算を行うことができる。
なお、図6では、S619において完了通知をしてから次のパケットについてS601以降の処理を行う例を示しているが、平文通信時、暗号通信時と同様に、処理を並列化してもよい。例えば、メモリ1(102)から演算部1(112)への転送と、メモリ2(103)からインターフェース106への転送とを並列化することで、処理を効率化することが可能となる。以上が、MTUより大きなパケットを送信するときのチェックサム演算の処理手順である。
ここまでで3つの転送ケース、具体的には、
(1)TCP/IP(暗号なし)送信。
(2)TCP/IP(暗号あり)送信。
(3)MTUサイズ以上のUDP(暗号なし)送信。
について説明した。いずれのケースも、演算部1(112)は演算部2(122)よりも機能的に簡易なものにより実現できる。「簡易」とは、例えば、以下のような機能の一部又は全部を備えないことをいう。
(1)疑似ヘッダの演算機能。
(2)チェックサムの上書き機能。
(3)パケットのバッファリング機能。
したがって、演算部1(112)は、演算部2(122)が持つこのような機能を必ずしも備える必要はない。よって、転送器毎に演算部を持たせたいが、ゲートサイズを小さくする必要がある場合は、演算部1(112)の機能を演算部2(122)より落としてもよい。
上記のように、本実施形態の通信装置は、複数のメモリを備え、メモリ間でデータを転送する間にチェックサム演算、暗号・認証処理等の処理を行うことで、パイプライン処理により処理を並列化する。ここで、本実施形態では、TCPかUDPか、あるいは、暗号化を行うか否か等の通信方式の内容に応じて、どの転送器でチェックサム演算を行うかをCPUから設定する。このように、通信方式の内容に応じてチェックサム演算を行う転送器を選択することで、処理の並列化による効率化とさまざまな通信方式への対応とを両立させることが可能となる。
なお、本実施形態では、通信対象のデータに対するチェックサム演算を通信装置001が行う場合について説明したが、上記の構成を専用の論理回路等の演算装置に実装し、その演算装置を通信装置に組み込んで利用するようにしてもよい。その場合は、例えば、演算装置に、複数のメモリ、インターフェース、メモリないしインターフェース間でデータを転送する第1、第2の転送器、及び、第1、第2の転送手段の動作を制御する制御部(CPU等)を設けることができる。そして、制御部は、対象データの通信方式に基づき、第1、第2の転送器のいずれかの転送器にチェックサム演算を行わせるようにしてもよい。これにより、様々な通信方式に対応しつつ、パイプライン処理に基づく処理の並列化により効率的に処理を実行することが可能となる。
<実施形態2>
実施形態1では、各転送器(転送器1、転送器2)が、それぞれ独立に演算部を有する構成例を説明した。本発明の第二の実施形態(実施形態2)では、2つの転送器で1つの演算部を共用する構成をもつ通信装置002について、図8を用いて説明する。
CPU101、メモリ1,2,3(102、103、104)、暗号・認証処理部105、システムバス100、インターフェース106は、実施形態1と同様である。転送器3(830)は、メモリ間データ転送を行うことができる転送器であり、実施形態1における転送器1(110)に相当するモジュールである。メモリ間データ転送を行う際に、チェックサム演算の有無を選択することができる。その選択は、スイッチ3(832)を用いて行われる。チェックサム演算を実施しない場合は、リード部3(831)からの出力データが、そのままライト部3(834)の入力となるようにスイッチを制御する。チェックサム演算が必要であれば以下のようにする。すなわち、リード部3(831)からの出力が一度、共用演算部850に入力され、その後、共用演算部850からの出力がライト部3(834)へ入力されるようにスイッチ3(832)を制御する。
転送器4(842)は、メモリ/インターフェース間データ転送を行うことができる転送器であり、実施形態1における転送器2(120)に相当するモジュールである。メモリ/インターフェース間データ転送を行う際、スイッチ4(842)を操作することにより、チェックサム演算の有無を選択できる点は転送器3(830)と同様である。共用演算部850は、転送器3(830)と転送器4(840)との間で共用してしようされる演算部である。その切り替えは、CSスイッチ851と、リード部3(831)から出力されているBusy信号1(833)とリード部4(841)から出力されているBusy信号2(843)によって調停される。すなわち、どちらかの転送器で使用されている際には、その使用が完了するまで他の転送器の入力を受け付けないようにする。
本実施形態の通信装置002の特徴は演算部を1つにすることができるので、ゲートサイズを通信装置001より削減できる点である。ただし、チェックサム演算をしながらのデータ転送を転送器3(830)と転送器4(840)とで並列して実行することはできない。したがって、そのようなケースが発生しない、または発生時の通信速度劣化が許容できるシステムで使用するとよい。以上が通信装置002の説明である。
なお、実施形態1と同様に、上記の構成を専用の論理回路等の演算装置に実装し、その演算装置を通信装置に組み込んで利用するようにしてもよい。また、上記各実施形態の処理手順を所定のハードウェア設計言語によりコンピュータプログラムとして記述し、当該コンピュータプログラムをコンピュータ(組込み機器、汎用装置(PC)等の情報処理装置)に読み込ませて上記処理を実行させてもよい。
以上のように、本発明の各実施形態によれば、MTUサイズより大きいパケット使用した通信を行う場合に、転送器内に大きなバッファを持つことなく他の処理と並列させた効率的なチェックサム処理を実行した通信を行うことが可能となる。さらに、暗号通信を行う場合にも、他の処理と並列させた効率的なチェックサム処理を実行した通信を可能とする。したがって、様々な通信形態に適応した効率的なチェックサム処理が実現される。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
001:通信装置、101:CPU、110:転送器1、112:演算部1、120:転送器2、122:演算部2、102:メモリ1、103:メモリ2、104:メモリ3、105:暗号・認証処理部、106:インターフェース

Claims (15)

  1. 通信対象のデータに対してチェックサム演算を行う演算装置であって、
    複数のメモリと、
    チェックサムが付与されたデータを出力するインターフェースと、
    前記複数のメモリの間で対象データを転送すると共に、当該対象データに対してチェックサム演算を行う機能を備えた第1の転送手段と、
    前記複数のメモリに含まれるメモリと前記インターフェースとの間で対象データを転送すると共に、当該対象データに対してチェックサム演算を行う機能を備えた第2の転送手段と、
    記対象データの通信方式に基づき、前記第1の転送手段及び前記第2の転送手段のうちのいずれかの転送手段にチェックサム演算を行わせるように制御する制御手段と、
    を備えることを特徴とする演算装置。
  2. 前記第1の転送手段は、前記複数のメモリのうちの第1のメモリから前記対象データを読み出して前記複数のメモリのうちの第2のメモリへ転送し、
    前記第2の転送手段は、前記第2のメモリから前記対象データを読み出して前記インターフェースへ転送し、
    前記制御手段は、前記対象データのサイズが所定のサイズよりも大きい通信方式の場合は、前記第1の転送手段にチェックサム演算を行わせることを特徴とする請求項1に記載の演算装置。
  3. 前記制御手段は、前記対象データのサイズが前記所定のサイズよりも大きくない通信方式の場合は、前記第2の転送手段にチェックサム演算を行わせることを特徴とする請求項2記載の演算装置。
  4. 前記制御手段は、前記対象データがユーザ・データグラム・プロトコルにより通信される場合に、前記第1の転送手段にチェックサム演算を行わせることを特徴とする請求項に記載の演算装置。
  5. 前記制御手段は、前記対象データがトランスミッション・コントロール・プロトコルにより通信される場合に、前記第2の転送手段にチェックサム演算を行わせることを特徴とする請求項1または4に記載の演算装置。
  6. データに対して暗号処理を施す暗号処理手段をさらに備え、
    前記制御手段は、前記対象データが暗号通信の対象であるか否かに基づき、前記対象データの転送先を前記第1の転送手段に設定するとともに前記対象データの転送元を第2の転送手段に設定することを特徴とする請求項1に記載の演算装置。
  7. 前記制御手段は、前記対象データが暗号通信の対象である場合に、
    前記第1の転送手段に、前記複数のメモリのうちの第1のメモリから前記対象データを読み出し、チェックサム演算を行って、前記複数のメモリのうちの第2のメモリへ転送させ、
    前記暗号処理手段に、前記第2のメモリから前記対象データを読み出し、当該対象データに対して暗号処理を施して、前記複数のメモリのうちの第3のメモリへ転送させ、
    前記第2の転送手段に、前記第3のメモリから前記対象データを読み出して前記インターフェースへ転送させることを特徴とする請求項6に記載の演算装置。
  8. 前記制御手段は、前記対象データが暗号通信の対象でない場合に、
    前記第1の転送手段に、前記第1のメモリから前記対象データを読み出して前記第2のメモリへ転送させ、
    前記第2の転送手段に、前記第2のメモリから前記対象データを読み出して前記インターフェースへ転送させ、
    前記対象データのサイズが所定のサイズよりも大きい通信方式の場合は、前記第1の転送手段にチェックサム演算を行わせることを特徴とする請求項7に記載の演算装置。
  9. 前記制御手段は、前記対象データが暗号通信の対象でない場合であって、該対象データのサイズが前記所定のサイズよりも大きくない通信方式の場合は、前記第2の転送手段にチェックサム演算を行わせることを特徴とする請求項8に記載の演算装置。
  10. 前記第1の転送手段及び前記第2の転送手段は、対象データにチェックサム演算を行う演算手段をそれぞれ備えることを特徴とする請求項1から9のいずれか1項に記載の演算装置。
  11. 対象データにチェックサム演算を行う演算手段をさらに備え、
    前記第1の転送手段及び前記第2の転送手段は、前記演算手段を用いて対象データにチェックサム演算を行うことを特徴とする請求項1から9のいずれか1項に記載の演算装置。
  12. 前記制御手段は、前記複数のメモリの間の転送と、前記メモリ及び前記インターフェースの間の転送とを並列して行わせることを特徴とする請求項1から11のいずれか1項に記載の演算装置。
  13. 請求項1から12のいずれか1項に記載の演算装置を備えた通信装置。
  14. 複数のメモリと、チェックサムが付与されたデータを出力するインターフェースと、を備える演算装置における演算方法であって、
    前記複数のメモリの間で対象データを転送する第1の転送工程と、
    前記複数のメモリに含まれるメモリと前記インターフェースとの間で対象データを転送する第2の転送工程と、
    前記対象データの通信方式に基づき、前記第1の転送工程及び前記第2の転送工程のうちのいずれかの転送工程において、前記対象データを転送すると共に、前記対象データに対してチェックサム演算を行うように制御する制御工程と、
    を備えることを特徴とする演算方法。
  15. コンピュータに請求項14に記載の演算方法の各工程を実行させることを特徴とするコンピュータプログラム。
JP2015242644A 2015-12-11 2015-12-11 演算装置及び演算方法、通信装置 Active JP6600241B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015242644A JP6600241B2 (ja) 2015-12-11 2015-12-11 演算装置及び演算方法、通信装置
US15/370,925 US10701041B2 (en) 2015-12-11 2016-12-06 Calculation device, calculation method, communication apparatus, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015242644A JP6600241B2 (ja) 2015-12-11 2015-12-11 演算装置及び演算方法、通信装置

Publications (3)

Publication Number Publication Date
JP2017108357A JP2017108357A (ja) 2017-06-15
JP2017108357A5 JP2017108357A5 (ja) 2019-01-10
JP6600241B2 true JP6600241B2 (ja) 2019-10-30

Family

ID=59020302

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015242644A Active JP6600241B2 (ja) 2015-12-11 2015-12-11 演算装置及び演算方法、通信装置

Country Status (2)

Country Link
US (1) US10701041B2 (ja)
JP (1) JP6600241B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11190462B2 (en) * 2017-02-12 2021-11-30 Mellanox Technologies, Ltd. Direct packet placement
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US10833703B2 (en) 2017-12-13 2020-11-10 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium
JP7145607B2 (ja) * 2017-12-13 2022-10-03 キヤノン株式会社 Dma転送装置、dma転送装置の制御方法、および通信装置
JP7142462B2 (ja) * 2018-05-14 2022-09-27 キヤノン株式会社 通信装置、通信装置の制御方法、およびプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430842A (en) 1992-05-29 1995-07-04 Hewlett-Packard Company Insertion of network data checksums by a network adapter
US6122670A (en) * 1997-10-30 2000-09-19 Tsi Telsys, Inc. Apparatus and method for constructing data for transmission within a reliable communication protocol by performing portions of the protocol suite concurrently
US6907466B2 (en) * 2001-11-08 2005-06-14 Extreme Networks, Inc. Methods and systems for efficiently delivering data to a plurality of destinations in a computer network
US7843968B2 (en) * 2002-09-30 2010-11-30 Sanyo Electric Co., Ltd. Communication apparatus and applications thereof
US7188250B1 (en) * 2002-12-13 2007-03-06 Nvidia Corporation Method and apparatus for performing network processing functions
US6963946B1 (en) * 2003-10-01 2005-11-08 Advanced Micro Devices, Inc. Descriptor management systems and methods for transferring data between a host and a peripheral
US7685434B2 (en) * 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US7502925B2 (en) * 2004-04-19 2009-03-10 Nvidia Corporation Method and apparatus for reducing TCP frame transmit latency
US7502474B2 (en) * 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
JP2006303765A (ja) 2005-04-19 2006-11-02 Seiko Epson Corp Tcp/ip送信処理回路及びそれを具備する半導体集積回路
US7886146B2 (en) * 2006-03-15 2011-02-08 Koolspan, Inc. Network cryptography system and method
JP4845674B2 (ja) * 2006-10-26 2011-12-28 キヤノン株式会社 データ処理装置及び方法、通信装置、並びにプログラム
US7849214B2 (en) * 2006-12-04 2010-12-07 Electronics And Telecommunications Research Institute Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same
JP5094482B2 (ja) * 2008-03-07 2012-12-12 キヤノン株式会社 処理装置及びその処理方法
JP2010057033A (ja) * 2008-08-29 2010-03-11 Nec Electronics Corp 通信装置及び方法
JP5060572B2 (ja) * 2010-03-09 2012-10-31 株式会社東芝 データ通信装置及び方法
JP6024318B2 (ja) * 2012-09-10 2016-11-16 富士通株式会社 無線lan基地局、無線lan端末、及びパケット転送方法
JP2015170955A (ja) * 2014-03-06 2015-09-28 富士通株式会社 通信方法、通信制御プログラム、及び、通信装置
JP6433146B2 (ja) * 2014-04-22 2018-12-05 キヤノン株式会社 情報処理装置、システム、情報処理方法、コンピュータプログラム

Also Published As

Publication number Publication date
JP2017108357A (ja) 2017-06-15
US10701041B2 (en) 2020-06-30
US20170171167A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
JP6600241B2 (ja) 演算装置及び演算方法、通信装置
US10404674B1 (en) Efficient memory management in multi-tenant virtualized environment
CN105279439B (zh) 用于就地执行的存储器的加密方法
EP2803012B1 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
US8413153B2 (en) Methods and systems for sharing common job information
US20070041383A1 (en) Third party node initiated remote direct memory access
EP1435717A2 (en) Encapsulation mechanism for packet processing
JP6433146B2 (ja) 情報処理装置、システム、情報処理方法、コンピュータプログラム
US20050060538A1 (en) Method, system, and program for processing of fragmented datagrams
JP4845674B2 (ja) データ処理装置及び方法、通信装置、並びにプログラム
EP2932690B1 (en) Copy offload for disparate offload providers
US9419972B2 (en) Two dimensional direct memory access scheme for enhanced network protocol processing performance
US11722467B2 (en) Secured communication from within non-volatile memory device
CN113055269B (zh) 虚拟专用网络数据的传输方法及装置
US20090240925A1 (en) Device, method, and computer program product that process message
US8316431B2 (en) Concurrent IPsec processing system and method
US20230185745A1 (en) Data flow control module for autonomous flow control of multiple dma engines
US20060013397A1 (en) Channel adapter managed trusted queue pairs
CN110958216A (zh) 安全的在线网络分组传输
EP1049292A2 (en) System and method for network monitoring
CN111052100A (zh) 可位操作的直接存储器访问
JP7049140B2 (ja) 通信装置およびその制御方法
US8380137B2 (en) Circuit, process, and use of a memory for transmitting and/or receiving in a radio network
Kvelstad et al. VPN on Nexys2
JP6614948B2 (ja) 演算装置、演算方法、通信装置、及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190822

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191004

R151 Written notification of patent or utility model registration

Ref document number: 6600241

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151