JP2017022531A - 通信装置、通信プログラム及び通信方法 - Google Patents

通信装置、通信プログラム及び通信方法 Download PDF

Info

Publication number
JP2017022531A
JP2017022531A JP2015138161A JP2015138161A JP2017022531A JP 2017022531 A JP2017022531 A JP 2017022531A JP 2015138161 A JP2015138161 A JP 2015138161A JP 2015138161 A JP2015138161 A JP 2015138161A JP 2017022531 A JP2017022531 A JP 2017022531A
Authority
JP
Japan
Prior art keywords
processing unit
destination information
unit
information
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.)
Pending
Application number
JP2015138161A
Other languages
English (en)
Inventor
亮 登坂
Ryo Tosaka
亮 登坂
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2015138161A priority Critical patent/JP2017022531A/ja
Publication of JP2017022531A publication Critical patent/JP2017022531A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

【課題】回路規模の増大を抑えつつ、周辺機器と通信する際にかかる処理負荷が十分に低減すること。【解決手段】第1処理部と、第2処理部とを有する通信装置であって、第1処理部は、ネットワークを介して機器から該機器の宛先情報を受信する第1受信手段と、受信した宛先情報を第2処理部に送信する送信手段と、所定数まで宛先情報を登録可能な第1記憶手段と、受信した宛先情報を第1記憶手段に記憶させる第1登録手段と、受信した宛先情報が第1記憶手段に記憶されているか否かの情報を、第2処理部に通知する通知手段と、を備え、第2処理部は、送信手段から送信された宛先情報を受信する第2受信手段と、第1記憶手段に宛先情報が記憶されていない情報が通知手段から通知された場合に、第2受信手段が受信した宛先情報を第2記憶手段に記憶させる第2登録手段と、を備える通信装置が提供される。【選択図】図2

Description

本発明は、通信装置、通信プログラム及び通信方法に関する。
近隣の機器に問い合わせて取得したアドレス情報を保存しておき、近隣の機器と通信する際に当該アドレス情報を使用する通信技術がある。例えば、IPv6(Internet Protocol Version 6)を用いる通信機器は、LL(Link Layer)アドレス及びIPv6アドレス等の近隣の機器の情報をNCE(Neighbor Cache Entry)に保存しておく。当該通信機器は、NCEを参照することで事前に近隣の機器に情報を問い合わせることなく、近隣の機器にパケットを送信する。
かかる通信技術は、例えば、6LoWPAN(IPv6 over Low Power Wireless Personal Area Networks)と呼ばれる規格において用いられる。6LoWPANは、低消費電力PAN(Personal Area Network)でIPv6通信を行うための規格である。また、6LoWPANは、処理能力の低いCPU、容量の小さいメモリ等の低性能なデバイス向けに通信を最適化した規格である。
図1は、6LoWPANのレイヤについて説明する図である。図1には、上位レイヤから順に、Application Layer、Upper Layer(ICMP(Internet Control Message Protocol)、UDP(User Datagram Protocol))、IPv6 with 6LoWPAN、PHY(Physical)/MAC(Media Access Control)が示されている。すなわち、6LoWPANは、IP(Internet Protocol)層に位置する。なお、MAC層以下には、802.15.4が存在する。
また、低性能なデバイス向けに通信を最適化した技術としては、例えば、通信頻度の高いネットワークコネクションを、あらかじめ通信装置のフリップフロップ又は内部RAM(Random Access Memory)に登録しておくことで、CAM(Content Addressable Memory)及び外部RAMへのアクセス頻度を減らして消費電力を抑える方法が知られている(例えば、特許文献1)。
しかしながら、従来の技術では、回路の規模の増大を抑えつつ、周辺機器と通信する際の処理負荷を十分に低減できていなかった。
例えば、回路によって管理されるNCEに、近隣の機器に係る全てのエントリを登録した場合、回路の規模が増大する。一方、ソフトウェアが管理するNCEに、近隣の機器に係る全てのエントリを登録した場合、周辺機器と通信する場合に、CPUがNCEのエントリを全て検索することになり、CPUへの処理負荷が大きくなる。
そこで、本発明では、回路の規模の増大を抑えつつ、周辺機器と通信する際の処理負荷を低減することを目的とする。
実施形態では、第1処理部と、第2処理部とを有する通信装置であって、前記第1処理部は、ネットワークを介して機器から該機器の宛先情報を受信する第1受信手段と、受信した前記宛先情報を前記第2処理部に送信する送信手段と、所定数まで宛先情報を登録可能な第1記憶手段と、受信した前記宛先情報を前記第1記憶手段に記憶させる第1登録手段と、受信した前記宛先情報が前記第1記憶手段に記憶されているか否かの情報を、前記第2処理部に通知する通知手段と、を備え、前記第2処理部は、前記送信手段から送信された前記宛先情報を受信する第2受信手段と、前記第1記憶手段に前記宛先情報が記憶されていない情報が前記通知手段から通知された場合に、前記第2受信手段が受信した前記宛先情報を第2記憶手段に記憶させる第2登録手段と、を備える通信装置が開示される。
回路の規模の増大を抑えつつ、周辺機器と通信する際の処理負荷を低減することができる。
6LoWPANのレイヤについて説明する図である。 通信装置の第1のハードウェア構成の例を示す図である。 NCEのデータ構造の例を示す図である。 処理部の構成例を示すブロック図である。 パケット処理装置で受信したパケットに対してなされる処理のフローチャートを示す図である。 処理部でなされる処理のフローチャートを示す図である。 レジスタの動作を説明する図である。 キューとNDパケットの対応関係の例を示す図である。 処理部における処理の例を説明するための図である。 通信装置の第2のハードウェア構成の例を示す図である。
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することによって重複した説明を省く。
[第1実施形態]
(通信装置のハードウェア構成)
図2は、通信装置10の第1のハードウェア構成の例を示す図である。通信装置10は、CPU50と、外部記憶部51と、周辺装置52と、パケット処理装置100とを有する。CPU50、外部記憶部51、周辺装置52及びパケット処理装置100は、バス53によって接続される。
CPU50は、通信装置10のOS(Operating System)に基づいて、周辺装置52、パケット処理装置100等の制御を行う。また、CPU50は、後述する処理部60の処理を実現する。外部記憶部51は、受信したパケット及び通信相手の機器のIPアドレス等の情報を保持する、ソフトウェア側のNCE51Aを記憶する。
周辺装置52は、例えば、画像処理装置、ディスプレイ等の機器を含む。
パケット処理装置100は、パケットの送受信及び近隣の機器の情報を管理する等の処理を行う。
(パケット処理装置の構成)
パケット処理装置100の構成について説明する。パケット処理装置100は、MAC/IP層処理部101と、TCP/UDP層処理部102と、ND処理部103と、レジスタ104と、パケット記憶部110と、近隣キャッシュ記憶部111と、EthernetI/F131と、Wi−FiI/F132と、802.15.4I/F133とを有する回路である。
また、近隣キャッシュ記憶部111は、ハードウェア側のNCE111Aを記憶する。
EthernetI/F131は、有線のLAN(Local Area Network)を介して接続された通信機器との通信インタフェースである。Wi−FiI/F132は、無線LANを介して接続された通信機器と通信インタフェースである。802.15.4I/F133は、PAN又はWPAN等の短距離無線ネットワークを介して接続された通信機器との通信インタフェースである。以下では、EthernetI/F131、Wi−FiI/F132及び802.15.4I/F133をまとめて通信I/F130と呼ぶ。なお、通信I/F130は、EthernetI/F131、Wi−FiI/F132及び802.15.4I/F133以外の通信I/Fを含んでもよい。
MAC/IP層処理部101は、通信I/F130から受信したパケットがND(Neighbor Discovery)パケットであった場合、NDパケットからNDパケット情報を抽出し、NDパケット情報をND処理部103に送信する回路である。NDパケット情報は、例えば、送信元の近隣の機器のIPアドレス及びLLアドレス等の情報を含む。また、MAC/IP層処理部101は、通信I/F130から受信したパケットをパケット記憶部110に記憶し、MAC処理とIP処理等の処理を実行し、処理後のNDパケットをTCP/UDP層処理部102に送信する。
TCP/UDP層処理部102は、NDパケットを外部記憶部51に転送する回路である。また、TCP/UDP層処理部102は、通信I/F130から受信したパケットがNDパケットでなかった場合、当該パケットに対してTCP/UDP処理を行い、外部記憶部51に転送する。
ND処理部103は、MAC/IP層処理部101から受信したNDパケット情報に基づいて近隣の機器に係るIPアドレス、LLアドレス等の情報をNCE111Aに登録する回路である。ND処理部103は、NDパケット情報の処理結果をNCE登録情報としてレジスタ104に記録する。例えば、NCE111Aの空きエントリにIPアドレス、LLアドレス等の情報を登録した場合、NCE登録情報は「新規登録」であり、NCE111Aの空きエントリがなく、IPアドレス、LLアドレス等の情報を新規に登録できなかった場合、NCE登録情報は「エントリFULL」である。
ND処理部103によってレジスタ104にNCE登録情報が記録又は更新されたことでCPU50に対して割り込み処理が発生した際に、CPU50は、レジスタ104をリードしてNCE登録情報を取得する。
CPU50は、処理部60の機能を実現する。処理部60は、外部記憶部51に記憶されているNDパケットの中から、CPU50に対する割り込み処理の際に取得したNCE登録情報に対応するNDパケットを特定する。続いて、処理部60は、特定したNDパケットからNDパケット情報を抽出し、NDパケット情報を用いて、NCE登録情報に応じた処理を行う。例えば、処理部60は、NCE登録情報が「エントリFULL」であった場合、抽出したNDパケット情報に基づいて、NCE51Aの空きエントリに、近隣の機器に係るIPアドレス、LLアドレス等の情報を登録する。なお、NCE登録情報に対する処理部60の処理の詳細に関しては後述する。
近隣キャッシュ記憶部111は、NCE111Aを記憶する。NCE111Aは、各エントリに各近隣の機器のIPアドレス、LLアドレス等の情報を有する。
図3は、NCE111Aのデータ構造の例を示す図である。NCE111Aは、Noと、VALIDと、IPアドレスと、LLアドレスと、INFと、Statusと、Routerと、AGEとを対応付ける。
「No」は、エントリの番号を示す。「VALID」は、エントリの有効又は無効の別を示す。例えば、VALIDが「1」の場合、エントリが登録済であることを示し、VALIDが「0」の場合、エントリが未登録であることを示す。「IPアドレス」は、近隣の機器のIPアドレスを示す。「LLアドレス」は、近隣の機器のLLアドレスを示す。
「INF」は、パケットを送受信する通信インタフェースを示す。例えば、「#0」が格納されている場合、近隣の機器と通信する際にEthernetI/F131を用いることを示す。また、「#1」が格納されている場合、近隣の機器と通信する際にWi−FiI/F132を用いることを示す。また、「#2」が格納されている場合、近隣の機器と通信する際に802.15.4I/F133を用いることを示す。
「Status」は、近隣の機器との通信の状態を示す。例えば、「Status」に「Reachable」が格納されている場合、近隣の機器との通信が有効な状態で通信可能であることを示す。「Status」に「Stale」が格納されている場合、近隣ノードに対して到達可能かどうかが不明な状態であることを示す。例えば、「Reachable」から例えば10秒経過すると、この状態へ遷移する。また、近隣の機器と通信可能であることを確認できた場合、「Status」は、「Stale」から「Reachable」に変更される。なお、上記の「Reachable」及び「Stale」は一例であり、「Status」には、他の通信の状態が格納されてもよい。
「Router」は、近隣の機器がルータであるか否かを示す。例えば、「Router」に「1」が格納されている場合、近隣の機器がルータであることを示す。また、「Router」に「0」が格納されている場合、近隣の機器がルータ以外の機器であることを示す。「AGE」は、所定時間が経過する度に、初期値Xから1ずつデクリメントされる内部カウンタ値である。「AGE」によってエントリの更新順序を判定することができる。例えば、NO.1のエントリに「7」が格納され、NO.2のエントリに「8」が格納されている。したがって、初期値を10とした場合、NO.1のエントリの方がNO.2のエントリよりも先に更新されたことを示す。
また、「AGE」が所定値以下となった場合にエントリを削除するようにしてもよい。例えば、初期値Xから1ずつデクリメントされ、「AGE」の値が「1」となった場合に、エントリを削除してもよい。エントリを削除されないようにする場合、例えば、NCE111Aの各エントリに「Permanent_Flag」というフラグを追加し、フラグの値が1の場合には「Status」を「Reachable」に固定するとともに「AGE」の値がデクリメントされないようにしてもよい。
なお、「AGE」を初期値Xから1ずつデクリメントする方法について説明したが、これに限定されず、例えば、「AGE」を0から1ずつインクリメントするようにしてもよい。
図2に戻る。外部記憶部51は、MAC/IP層処理部101から受信したNDパケットと、NCE51Aとを記憶する。NCE51Aは、各近隣の機器のIPアドレス、LLアドレス等の情報を保持する。NCE51Aは、図3に係るNCE111Aと同様のデータ構造であってもよい。
(処理部の構成)
図4は、処理部60の構成例を示すブロック図である。CPU50は、処理部60の機能を実現する。処理部60は、受信部61と、特定部62と、登録部63とを有する。
受信部61は、TCP/UDP層処理部102から転送されたNDパケットを受信し、外部記憶部51に記憶する。
特定部62は、レジスタ104の更新によってCPU50に対して割り込み処理が発生した際に、レジスタ104をリードし、レジスタ104からND_COUNTとNCE登録情報とを取得する。特定部62は、取得したND_COUNTを用いて、外部記憶部51に記憶されたNDパケットの中から、レジスタ104から取得したNCE登録情報に対応するNDパケットを特定する。
登録部63は、レジスタ104から取得したNCE登録情報に基づいて、特定部62により特定されたNDパケットを処理する。例えば、NCE111Aに空きエントリがないことを示すNCE登録情報「エントリFULL」を取得した場合、登録部63は、特定部62により特定されたNDパケットからIPアドレス、LLアドレス等の情報を抽出し、抽出したIPアドレス、LLアドレス等の情報に一致するエントリがNCE51Aに含まれるか否かを判定する。登録部63は、抽出したIPアドレス、LLアドレス等の情報に一致するエントリがNCE51Aに含まれないと判定した場合、当該情報をNCE51Aの空きエントリに新規に登録する。なお、NCE51AにAGEの項目が含まれる場合、新規に登録されたエントリのAGEを初期値Xとする。
また、登録部63は、NCE111Aのエントリを1つ削除し、削除したエントリに、特定部62により特定されたNDパケットから抽出したIPアドレス、LLアドレス等の情報を登録してもよい。例えば、登録部63は、NCE111Aの「AGE」の値が最も小さいエントリを削除してから、削除したエントリに新規エントリを登録する。以下では、NCE111A又はNCE51Aの空きエントリに、NDパケットから抽出したIPアドレス、LLアドレス等の情報を登録することを、「新規エントリを登録する」ということがある。なお、登録部63に他のNCE登録情報が通知された場合に関しては後述する。
(パケット処理装置でなされる処理のフロー)
図5は、パケット処理装置100で受信したパケットに対してなされる処理のフローチャートを示す図である。パケット処理装置100は、通信I/F130を介してパケットを受信する(ステップS1)。続いて、MAC/IP層処理部101は、パケット記憶部110に受信したパケットを記憶した上で、パケット記憶部110に記憶した受信したパケットに対してMAC処理(ステップS2)及びIP処理(ステップS3)を行う。
続いて、MAC/IP層処理部101は、受信したパケットがNDパケットであるか否かを判定する(ステップS4)。例えば、MAC/IP層処理部101は、受信したパケットのICMPv6のTypeフィールドを参照し、メッセージタイプが134又は136等である場合、受信したパケットがNDパケットであると判定する。
MAC/IP層処理部101は、受信したパケットがNDパケットでなかった場合(ステップS4No)、当該パケットをTCP/UDP層処理部102に送信する。TCP/UDP層処理部102は、当該パケットに対してTCP/UDP処理を行う(ステップS5)。続いて、TCP/UDP層処理部102は、CPU50によって予め設定された不図示のレジスタに従って当該パケットを転送するか否かを判定する(ステップS6)。TCP/UDP層処理部102は、当該パケットをCPU50に転送しない場合(ステップS6No)、処理を終了させる。一方、TCP/UDP層処理部102は、当該パケットをCPU50に転送する場合(ステップS6Yes)、パケット記憶部110を参照し、当該パケットの先頭アドレスとヘッダ長とに基づいて外部記憶部51にDMA転送し(ステップS7)、CPU50に通知して処理を終了する。なお、パケットの転送方法はDMA転送に限定されず、他の転送方法を用いて外部記憶部51にパケットを転送してもよい。
一方、MAC/IP層処理部101は、受信したパケットがNDパケットであった場合(ステップS4Yes)、ND_COUNT値を1つインクリメントする(ステップS8)。ND_COUNT値は、NDパケットを受信した回数を示し、パケット処理装置100がNDパケットを受信する度に1つずつインクリメントされる。なお、MAC/IP層処理部101は、ND_COUNT値がオーバーフローした場合、再度0からインクリメントする。
続いて、MAC/IP層処理部101は、NDパケットの前後の位置にND_COUNT値を付属させる。例えば、MAC/IP層処理部101は、パケット記憶部110においてND_COUNT値のアドレスを、ND_COUNT値のデータがNDパケットに連続する位置に設定する。TCP/UDP層処理部102は、例えば、ND_COUNT値のデータの先頭のアドレスと、ND_COUNT値の先頭アドレスからNDパケットの末尾までのデータ長とを指定し、NDパケット及びND_COUNT値を外部記憶部51にDMA転送する(ステップs6Yes、ステップs7)。すなわち、TCP/UDP層処理部102は、DMA転送時のパケット長を「ND_COUNT値のデータ長+NDパケット長」に設定し、DMA転送時にND_COUNT値及びNDパケットを一つのパケットとして一体として取り扱う。
さらに、MAC/IP層処理部101は、NDパケットから抽出した送信元のIPアドレス、送信元のLLアドレス及びNDオプション情報と、インクリメントされたND_COUNT値とをNDパケット情報に付属させた上で、NDパケット情報をND処理部103に転送する(ステップS9)。
ND処理部103は、MAC/IP層処理部101から受信したNDパケット情報を用いてND処理を行う(ステップS10)。すなわち、NDパケットに対して規格に沿った設定がされているか否かを判定する。例えば、NDパケットのヘッダ部分に破損があった場合、ND処理部103は、NDパケットに規格に沿った設定がされていないと判定する。続いて、ND処理部103は、NDパケット情報に基づいてNCE111Aの空きエントリにIPアドレス及びLLアドレス等の情報を登録するか否かを判定する(ステップS11)。例えば、ND処理部103は、ND処理でNDパケットに対して規格に沿った設定がされていないと判定した場合、NCE111Aに新規エントリを登録しないと判定する。ND処理部103は、NCE111Aに新規エントリを登録しないと判定した場合(ステップS11No)、処理を終了させる。
一方、ND処理部103は、NCE111Aに新規エントリを登録すると判定した場合(ステップS11Yes)、NCE111Aの各エントリに係るIPアドレスと、NDパケットに含まれる送信元のIPアドレスとを比較するNCE検索を実行する(ステップS12)。
ND処理部103は、NDパケットに含まれるIPアドレスと一致するエントリがNCE111Aに含まれるか否かを判定する(ステップS13)。ND処理部103は、当該IPアドレスと一致するエントリがNCE111Aに含まれると判定した場合(ステップS13Yes)、NDパケットに対応するエントリがNCE111Aに登録済であると判定し、ステップS14の処理に移行する。一方、ND処理部103は、当該IPアドレスに一致するエントリがNCE111Aに含まれないと判定した場合(ステップS13No)、NDパケットに対応するエントリがNCE111Aに未登録と判定し、ステップS17の処理に移行する。
ステップS14において、ND処理部103は、NCE111AのIPアドレスが一致するエントリに格納されているLLアドレス(LLA)と、NDパケット情報に係るLLアドレスとが一致するか否かを判定する(ステップS14)。ND処理部103は、LLアドレスが一致すると判定した場合(ステップS14Yes)、NCE登録情報「登録済み」を生成し、レジスタ104にNCE登録情報「登録済み」を記録する処理を行う(ステップS15)。さらに、ND処理部103は、ステップS8において1つインクリメントされたND_COUNT値とステップS12においてIPアドレスが一致したNCE111AのエントリのNoとをレジスタ104に記録する。
なお、CPU50は、レジスタ104に記憶されたNCE111AのエントリのNoを、割り込み発生時にリードすることで、ND処理部によって処理されたNCE111Aの新規エントリ及び登録済みのエントリを特定でき、CPU50側でNCE111Aのエントリの登録情報を管理することができる。
これにより、処理部60は、NCE51AのエントリをNCE111Aに登録する場合に、CPU50側で管理しているNCE111Aのエントリの登録情報を用いることで、NCE111Aの該当エントリを見つけるまで各エントリを検索しなくてもよくなり、処理を高速化することができる。
一方、ND処理部103は、LLアドレスが一致しないと判定した場合(ステップS14No)、NCE登録情報「LLA Miss Hit」を生成し、レジスタ104にNCE登録情報「LLA Miss Hit」を記録する処理を行う(ステップS16)。さらに、ND処理部103は、ステップS8において1つインクリメントされたND_COUNT値とステップS12においてIPアドレスが一致したNCE111AのエントリのNoとをレジスタ104に記録する。
ステップS17において、ND処理部103は、NCE111Aに空きエントリがあるか否かを判定する(ステップS17)。
ND処理部103は、NCE111Aに空きエントリがあると判定した場合(ステップS17Yes)、NCE111Aの空きエントリに、NDパケット情報に基づいて新規エントリとしてIPアドレス、LLアドレス等の情報を登録する(ステップS23)。さらに、ND処理部103は、NCE登録情報「新規登録」を生成し、レジスタ104にNCE登録情報「新規登録」を記録する処理を行う(ステップS24)。また、ND処理部103は、ステップS8において1つインクリメントされたND_COUNT値とNCE111Aの新規登録したエントリのNoとをレジスタ104に記録する。
一方、ND処理部103は、NCE111Aに空きエントリがないと判定した場合(ステップS17No)、一番古いエントリを削除するか否かを判定する(ステップS18)。例えば、一番古いエントリを削除するか否かを判定する際に用いるレジスタを新たに設けてもよい。なお、ND処理部103は、図3に示されるNCE111Aのフィールド(列)「AGE」からNCE111Aの一番古いエントリを特定することができる。
ND処理部103は、一番古いエントリを削除しないと判定した場合(ステップS18No)、NCE登録情報「エントリFULL」を生成し、レジスタ104にNCE登録情報「エントリFULL」を記録する処理を行う(ステップS22)。さらに、ND処理部103は、ステップS8において1つインクリメントされたND_COUNT値をレジスタ104に記録する。
一方、ND処理部103は、一番古いエントリを削除すると判定した場合(ステップS18Yes)、NCE111Aから一番古いエントリを検索して削除する(ステップS19)。続いて、ND処理部103は、NDパケット情報に基づいて、削除したエントリに新規エントリとしてIPアドレス、LLアドレス等の情報を登録する(ステップS20)。続いて、ND処理部103は、NCE登録情報「削除後、新規登録」を生成し、レジスタ104にNCE登録情報「削除後、新規登録」を記録する処理を行う(ステップS21)。さらに、ND処理部103は、ステップS8において1つインクリメントされたND_COUNT値と、ステップS20において新規エントリが登録されたNCE111AのエントリのNoとをレジスタ104に記録する。
(処理部でなされる処理のフロー)
図6は、処理部60でなされる処理のフローチャートを示す図である。図6に示される処理は、図5に示される処理と並行して行われる。
処理部60は、レジスタ104が更新されることによる割り込み処理があるまで待機する(ステップS31、ステップS32No、ステップS40)。なお、例えば、図5のステップS15、S16、S21、S22およびS24においてレジスタ104にND_COUNT値及びNCE登録情報が書き込まれた場合等にS32に係る割り込み処理が発生する。また、図5のステップS15、S16、S21、S22およびS24の処理が連続してなされた場合、各NCE登録情報をFIFO(First In First Out)型のキューに格納しておき、最初にキューに格納されたND_COUNT値及びNCE登録情報がレジスタ104に書き込まれた場合においてもS32に係る割り込み処理が発生する。
処理部60は、割り込み処理が発生した場合(ステップS40No、ステップS32Yes)、ステップS33に移行する。一方、処理部60は、所定時間以内に割り込み処理が発生しなかった場合(ステップS40Yes)、タイムアウトさせて処理を終了させる。
なお、処理部60は、タイムアウトさせて処理を終了させる場合にアラームをディスプレイに表示してもよい。
ステップS33において、処理部60は、レジスタ104をリードしてNCE111AのエントリのNo、ND_COUNT値及びNCE登録情報を取得する(ステップS33)。続いて、処理部60は、レジスタ104をPOPする(ステップS34)。続いて、処理部60は、レジスタ104のND_COUNT値と、外部記憶部51に記憶されているNDパケットに付属するND_COUNT値とが一致するか否かを判定する(ステップS35)。
例えば、処理部60は、ステップS34の時点でキュー内に複数のNCE登録情報が格納されている場合、NDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値より大きくなっているので一致しないと判定し(ステップS35No)、ステップS37の処理に移行する。一方、処理部60は、ステップS34の時点でキュー内にNCE登録情報が1つのみ格納されている場合、NDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値と等しくなっているので一致すると判定し(ステップ35Yes)、ステップS36の処理に移行する。
ステップS37において、処理部60は、NDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値よりも大きいか否かを判定する(ステップS37)。処理部60は、NDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値よりも大きいと判定した場合(ステップS37Yes)、ステップS38の処理に移行する。一方、処理部60は、NDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値以下である場合(ステップS37No)、エラーとして処理を終了させる。
ステップS38において、処理部60は、レジスタ104が更新されることによって割り込み処理が発生するまで待機する(ステップS38No、ステップS39)。ND処理部103によってNCE登録情報がレジスタ104に記録された場合に、CPU50に対して割り込み処理が発生する。処理部60は、割り込みがあった場合(ステップ39No、ステップS38Yes)、ステップS33の処理に移行する。例えば、キューに複数のNCE登録情報が格納されており、キューの1列目に格納されているNCE登録情報がS34でPOPされたことで、キューの2列目に格納されているNCE登録情報がキューの1列目に反映された場合に、ステップS38に係る割り込みが発生する。一方、処理部60は、所定時間以内にレジスタ104から割り込みがなかった場合(ステップS39Yes)、タイムアウトさせて処理を終了させる。
ステップS33において、処理部60は、レジスタ104にND_COUNT値及びNCE登録情報が記録されたことによって割り込み処理が発生した場合に、レジスタ104を再びリードし、ND_COUNT値及びNCE登録情報を取得する(ステップS33)。続いて、処理部60は、レジスタ104をPOPする(ステップS34)。続いて、処理部60は、レジスタ104のND_COUNT値と、NDパケットに付属するND_COUNT値とが一致するか否かを判定する(ステップS35)。処理部60は、受信したNDパケットに対応するND_COUNT値及びNCE登録情報の取得が完了した場合、NDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値と等しくなっているので一致すると判定し(ステップ35Yes)、ステップS36の処理に移行する。例えば、3つのNDパケットが外部記憶部51に記憶された場合、処理部60は、3つ目のNDパケットのCOUNT値及びNCE登録情報の取得が完了した際に、3つ目のNDパケットに付属するND_COUNT値がレジスタ104のND_COUNT値と等しくなっているので、ステップS35において一致すると判定する。
ステップS36において、処理部60は、レジスタ104に記録されているNCE登録情報を基に処理を実施する。例えば、処理部60は、NCE登録情報が「新規登録」、「削除後、新規登録」又は「登録済」の場合、NCE111Aにエントリが登録済みであるものとして、NDパケットを削除する。また、処理部60は、NCE登録情報が「LLA Miss Hit」の場合、NDパケットに格納されているLLアドレスをNCE111Aのエントリに上書きする。
また、処理部60は、NCE登録情報が「エントリFULL」の場合、例えば、NCE51AにIPアドレス、LLアドレス等の情報を登録する。なお、処理部60は、NCE登録情報が「エントリFULL」の場合に、NDパケットに格納されているNDパケット情報に基づいて、NCE111Aのいずれかのエントリの情報を削除してから、IPアドレス、LLアドレス等の情報を当該削除したエントリに登録してもよい。
(レジスタの動作)
図7は、レジスタ104の動作を説明する図である。図7を用いて、ND処理部103によってレジスタ104にNCE登録情報が記録された場合に発生する割り込み処理について説明する。
ND処理部103は、FIFOの構造を有するキューをメモリ等に有する。quene(1)、quene(2)、・・・、quene(x−1)、quene(x)までの全てのキューが初期状態で空であるものとする。
ND処理部103は、最初にNCE登録情報を生成した場合、quene(1)にND_COUNT値及びNCE登録情報を格納する。続いて、ND処理部103は、2番目にNCE登録情報を生成した場合、quene(2)にND_COUNT値及びNCE登録情報を格納する。続いて、ND処理部103は、3番目にNCE登録情報を生成した場合、quene(3)にND_COUNT値及びNCE登録情報を格納する。ND処理部103は、x番目までのND_COUNT値及びNCE登録情報をキューに格納することができる。なお、ND処理部103は、NCE登録情報が「新規登録」及び「削除後、新規登録」の場合、ND_COUNT値及びNCE登録情報に加え、NCE111Aの登録されたエントリのNoをさらに対応するキューに格納する。また、ND処理部103は、NCE登録情報が「LLA Miss Hit」及び「登録済み」の場合、ND_COUNT値及びNCE登録情報に加え、ステップS13においてNCE111AのIPアドレスが一致したエントリのNoを、さらに対応するキューに格納する。
また、複数のND_COUNT値及びNCE登録情報がキューに格納された場合、quene(1)に格納されたND_COUNT値及びNCE登録情報から順にレジスタ104に反映される。quene(1)に格納されているND_COUNT値及びNCE登録情報がレジスタ104に反映された場合、CPU50に割り込み処理が発生する。続いて、CPU50に係る処理部60は、レジスタ104をリードする。レジスタ104のリード後、処理部60は、レジスタ104をPOPすると、quene(2)の値がquene(1)に反映され、quene(3)の値がquene(2)に反映される。すなわち、処理部60がレジスタ104をPOPした場合、各々のquene(n)の値が、キュー番号が1つ小さいquene(n−1)に反映される。
また、レジスタ104をPOPする方法としては、レジスタ104に1ビットのVALIDフィールドを設定し、VALIDフィールドによってquene(1)に値が格納されているか否かを管理するようにしてもよい。例えば、レジスタ104の1ビット目にVALIDフィールドが設定される。レジスタ104の1ビット目が「0」の場合、キューにデータが格納されていないことを示し、レジスタ104の1ビット目が「1」の場合、キューに1以上のデータが格納されていることを示す。また、レジスタ104の後続の2〜32ビット目に、例えば、NCE登録情報の識別番号及びND_COUNT値等の情報が記録されるようにしてもよい。処理部60は、レジスタ104をPOPする場合、レジスタ104の1ビット目に「1」をライトし、レジスタ104の1ビット目を「0」にする。
例えば、キューに1つのみNCE登録情報が格納されている場合、レジスタ104がPOPされた際に、処理部60は、レジスタ104の1ビット目に対して「1」をライトするので、レジスタ104の1ビット目は、「0」となる。
また、キューに複数のNCE登録情報が格納されている場合、レジスタ104がPOPされた際に、処理部60は、quene(2)に格納されているNCE登録情報の識別番号及びND_COUNT値等の情報を、レジスタ104の2〜32ビット目に記録する。また、処理部60は、レジスタ104をPOPした際に、レジスタ104の1ビット目に「1」をライトするが、その後、quene(2)のデータが反映されるので、レジスタ104の1ビット目は、「1」となる。
また、quene(1)に格納された新しいND_COUNT値及びNCE登録情報がレジスタ104に反映される度に、CPU50に割り込み処理が発生する。
また、ND処理部103は、quene(x)までND_COUNT値及びNCE登録情報が格納されている場合、これ以上、キューに値を入れないようにしてもよい。
なお、レジスタ104がPOPされた場合のレジスタ104の動作は上記に限定されない。例えば、レジスタ104は、CPU50によってPOPされた場合に、キュー番号が1つ大きいキューから値を取得するようにしてもよい。例えば、quene(n)の値が記録されているレジスタ104は、処理部60によってPOPされた際に、quene(n)の先頭に位置していたポインタを、キュー番号が1つ大きいquene(n+1)の先頭に移動させる。続いて、レジスタ104は、次回POPされた場合にquene(n+1)の先頭ポインタから値を取得する。なお、quene(x)の先頭にポインタが位置していた場合、レジスタ104は、次回POPされた際には、quene(1)の先頭にポインタを移動させる。
(CPUとレジスタの動作)
図8は、キューとNDパケットの対応関係の例を示す図である。図8には、レジスタ104と、ND処理部103が管理するキューと外部記憶部51が記憶するNDパケットとが示される。ND処理部103が管理するキューには、キュー番号と、ND処理部103によってND_COUNT値と、NCE登録情報と、NCE111AのエントリのNoとが格納される。また、外部記憶部51には、TCP/UDP層処理部102によって転送されたNDパケットが記憶される。ND処理部103が管理するキューは、キュー番号1〜3までのキューを有する。また、外部記憶部51は、パケット1〜3までのパケットを有する。
各々のキューは、ND_COUNT値によって外部記憶部51のNDパケットに対応付けられる。例えば、キュー番号1のキューは、同じND_COUNT値「20」を有するパケット1に対応付けられる。また、キュー番号2のキューは、同じND_COUNT値「21」を有するパケット2に対応付けられる。キュー番号3のキューは、同じND_COUNT値「22」を有するパケット3に対応付けられる。
例えば、キュー番号1に係るND_COUNT値「20」と、エントリNo「44」と、NCE登録情報「新規登録」とがレジスタ104に反映されると、CPU50に割り込み処理が発生する。CPU50に係る処理部60は、レジスタ104を参照し、ND_COUNT値「20」に対応するパケット1に係るNDパケット情報のIPアドレス、LLアドレス等の情報がNCE111Aに新規登録されたと判定する。処理部60は、判定結果に基づいて、例えば、パケット1を破棄する等の処理を実行する。
続いて、レジスタ104がPOPされ、キュー番号2に係るND_COUNT値「21」と、NCE登録情報「エントリFULL」とがレジスタ104に反映されると、CPU50に割り込み処理が発生する。CPU50に係る処理部60は、レジスタ104を参照し、ND_COUNT値「21」に対応するパケット2に係るNDパケット情報のIPアドレス、LLアドレス等の情報が、NCE111AのエントリがFULLであったため、NCE111Aに登録されなかったと判定する。処理部60は、判定結果に基づいて、例えば、パケット2に含まれるIPアドレス、LLアドレス等の情報を、NCE51Aのエントリに登録する処理を行う。なお、処理部60は、NCE111Aの「AGE」の値が最も小さいエントリを一つ削除し、削除したエントリにパケット2のNDパケット情報に含まれるIPアドレス、LLアドレス等の情報を登録してもよい。
続いて、レジスタ104がPOPされ、キュー番号3に係るND_COUNT値「22」と、エントリNo「32」と、NCE登録情報「削除後に新規登録」とがレジスタ104に反映されると、CPU50に割り込み処理が発生する。CPU50に係る処理部60は、レジスタ104を参照し、ND_COUNT値「22」に対応するパケット3に係るNDパケット情報のIPアドレス、LLアドレス等の情報が、NCE111Aのエントリが削除された後に新規登録されたと判定する。処理部60は、判定結果に基づいて、例えば、パケット3を破棄する等の処理を実行する。
なお、処理部60は、各々のパケットに対してNCE登録情報に基づいて上記以外の処理を行ってもよい。
(処理部における処理例)
図9は、処理部における処理の例を説明するための図である。図9には、レジスタ104、ND処理部103が管理するキュー及び外部記憶部51が記憶するNDパケットが示される。キューには、ND処理部103によってND_COUNT値と、NCE登録情報と、NCE111AのエントリのNoとが格納される。また、外部記憶部51には、TCP/UDP層処理部102によって転送されたNDパケットが外部記憶部51に記憶される。
状態(1)〜状態(4)の順番にキュー及び外部記憶部51の状態が遷移していくものとする。状態(1)において、図5のステップ7で転送されたパケット1が外部記憶部51に記憶される。
状態(2)において、ND処理部103は、ステップS24でNCE登録情報「新規登録」を生成し、レジスタ104にNCE登録情報「新規登録」等を記録する処理を行う。続いて、CPU50に対して割り込み処理が発生する。かかる場合に、処理部60は、図6のステップS33〜S34の処理を経て、ステップS35の条件を満たすので、ステップS36の処理に移行する。処理部60は図6のステップS36でND_COUNT値「20」に対応するパケット1に係るNDパケット情報のIPアドレス、LLアドレス等の情報がNCE111AのエントリNo「44」のエントリに新規登録されたという情報に基づいて、例えば、パケット1を破棄する等の処理を実行する。
状態(3)において、図5のステップ7で転送されたパケット2が外部記憶部51に記憶される。
状態(4)において、ND処理部103は、ステップS24でNCE登録情報「エントリFULL」を生成し、レジスタ104にNCE登録情報「エントリFULL」等を記録する処理を行う。続いて、CPU50に対して割り込み処理が発生する。かかる場合に、処理部60は、図6のステップS33〜S34の処理を経て、ステップS35の条件を満たすので、ステップS36の処理に移行する。処理部60は、図6のステップS36でND_COUNT値「21」に対応するパケット2に係るNDパケット情報のIPアドレス、LLアドレス等の情報がNCE111AのエントリがFULLであったという情報に基づいて、例えば、当該情報をNCE51Aに登録する処理を実行する。
図10は、通信装置10の第2のハードウェア構成の例を示す図である。図10に係るパケット処理装置100が802.15.4I/F133を有さない点で図2に係るパケット処理装置100と異なる。また、802.15.4I/F133は、パケット処理装置100の外部のバス53に接続される。
CPU50に係る処理部60は、802.15.4I/F133からパケットを受信した場合、受信したパケットを外部記憶部51に記憶する。続いて、処理部60は、MAC/IP層処理部101に当該パケットを送信する。続いて、MAC/IP層処理部101は、受信したパケットをパケット記憶部110に記憶する。これ以降は、図10に係るパケット処理装置100は、図2に係るパケット処理装置100と同様の処理を行う。
なお、EthernetI/F131及びWi−FiI/F132から受信したパケットに対しては、図2に係るパケット処理装置100と同様に処理がなされる。また、EthernetI/F131及びWi−FiI/F132は、802.15.4I/F133のように、パケット処理装置100の外部のバス53に接続されてもよい。
以上、管理システムを実施形態により説明したが、本発明は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。
なお、本実施形態において、パケット処理装置100は、第1処理部の一例であり、処理部60(CPU50)は、第2処理部の一例である。また、受信部61は、MAC/IP層処理部101は、第1受信手段、送信手段及び第1登録手段の一例であり、レジスタ104は、通知手段の一例であり、パケット記憶部110は、第1記憶手段の一例である。また、受信部61は、第2受信手段の一例であり、外部記憶部51は、第2記憶手段の一例であり、登録部63は、第2登録手段の一例である。また、特定部62は、特定手段の一例である。近隣の機器のIPアドレス、LLアドレス等の情報は、宛先情報の一例である。
10 通信装置
50 CPU
51 外部記憶部
52 周辺装置
53 バス
100 パケット処理装置
101 MAC/IP層処理部
102 TCP/UDP層処理部
103 ND処理部
104 レジスタ
110 パケット記憶部
111 近隣キャッシュ記憶部
130 通信I/F
131 EthernetI/F
132 Wi−FiI/F
133 802.15.4I/F
特開2014−082561号公報 特開2009−053770号公報 特開2009−055133号公報 特開2009−055134号公報

Claims (6)

  1. 第1処理部と、第2処理部とを有する通信装置であって、
    前記第1処理部は、
    ネットワークを介して機器から該機器の宛先情報を受信する第1受信手段と、
    受信した前記宛先情報を前記第2処理部に送信する送信手段と、
    所定数まで宛先情報を登録可能な第1記憶手段と、
    受信した前記宛先情報を前記第1記憶手段に記憶させる第1登録手段と、
    受信した前記宛先情報が前記第1記憶手段に記憶されているか否かを示す情報を、前記第2処理部に通知する通知手段と、を備え、
    前記第2処理部は、
    前記送信手段から送信された前記宛先情報を受信する第2受信手段と、
    前記第1記憶手段に前記宛先情報が記憶されていないことを示す情報が前記通知手段から通知された場合に、前記第2受信手段が受信した前記宛先情報を第2記憶手段に記憶させる第2登録手段と、を備える通信装置。
  2. 前記第1処理部は、
    前記第1記憶手段に記憶された宛先情報の登録数に基づいて、受信した前記宛先情報を前記第1記憶手段に記憶させるか否かの判定をする判定手段をさらに備え、
    前記第1登録手段は、前記第1記憶手段に記憶させる判定がなされた場合に、受信した前記宛先情報を前記第1記憶手段に記憶させる請求項1に記載の通信装置。
  3. 前記第1受信手段は、受信した前記宛先情報に識別情報を付加し、
    前記送信手段は、前記識別情報が付加された宛先情報を前記第2処理部に送信し、
    前記通知手段は、受信した前記宛先情報が前記第1記憶手段に記憶されているか否かを示す情報と、該宛先情報に付加された識別情報とを前記第2処理部に通知し、
    前記第2処理部は、前記通知手段から通知された識別情報を用いて、前記第2受信手段が受信した宛先情報の中から、前記通知手段から通知された情報に対応する宛先情報を特定する特定手段をさらに有する請求項1又は2に記載の通信装置。
  4. 前記第1処理部は、受信した前記宛先情報が前記第1記憶手段に記憶されているか否かを示す情報を、宛先情報が受信された順に、複数記憶する第3記憶手段をさらに有し、
    前記通知手段は、宛先情報が受信された順に、受信した前記宛先情報が前記第1記憶手段に記憶されているか否かを示す情報を、順次、前記第2処理部に通知する請求項3に記載の通信装置。
  5. ネットワークを介して機器から該機器の宛先情報を受信する第1受信手段と、受信した前記宛先情報を第2処理部に送信する送信手段と、所定数まで宛先情報を登録可能な第1記憶手段と、受信した前記宛先情報を前記第1記憶手段に記憶させる第1登録手段と、受信した前記宛先情報が前記第1記憶手段に記憶されているか否かの情報を、前記第2処理部に通知する通知手段と、を有する通信装置に、
    前記送信手段から送信された前記宛先情報を受信する受信ステップと、
    前記第1記憶手段に前記宛先情報が記憶されていない情報が前記通知手段から通知された場合に、第2受信手段が受信した前記宛先情報を第2記憶手段に記憶させる登録ステップと、を実行させる通信プログラム。
  6. ネットワークを介して機器から該機器の宛先情報を受信する第1受信手段と、受信した前記宛先情報を第2処理部に送信する送信手段と、所定数まで宛先情報を登録可能な第1記憶手段と、受信した前記宛先情報を前記第1記憶手段に記憶させる第1登録手段と、受信した前記宛先情報が前記第1記憶手段に記憶されているか否かの情報を、前記第2処理部に通知する通知手段と、を有する通信装置が、
    前記送信手段から送信された前記宛先情報を受信する受信ステップと、
    前記第1記憶手段に前記宛先情報が記憶されていない情報が前記通知手段から通知された場合に、第2受信手段が受信した前記宛先情報を第2記憶手段に記憶させる登録ステップと、を実行する通信方法。
JP2015138161A 2015-07-09 2015-07-09 通信装置、通信プログラム及び通信方法 Pending JP2017022531A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015138161A JP2017022531A (ja) 2015-07-09 2015-07-09 通信装置、通信プログラム及び通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015138161A JP2017022531A (ja) 2015-07-09 2015-07-09 通信装置、通信プログラム及び通信方法

Publications (1)

Publication Number Publication Date
JP2017022531A true JP2017022531A (ja) 2017-01-26

Family

ID=57888405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015138161A Pending JP2017022531A (ja) 2015-07-09 2015-07-09 通信装置、通信プログラム及び通信方法

Country Status (1)

Country Link
JP (1) JP2017022531A (ja)

Similar Documents

Publication Publication Date Title
JP4504977B2 (ja) オフロードユニットを使用したtcp接続のためのデータ処理
US8661205B2 (en) Communication apparatus and information transfer method
JP2005354249A (ja) ネットワーク通信端末
US9118608B2 (en) Communication apparatus, control method therefor, and computer-readable storage medium
CN107360268B (zh) 一种数据包处理方法、装置及设备
US9979643B2 (en) Communication apparatus, communication method, and computer-readable recording medium
US11929913B2 (en) Method for creating data transmission entry and related device
JP5094482B2 (ja) 処理装置及びその処理方法
WO2017157318A1 (zh) 链路发现方法及装置
US11656989B2 (en) Maintaining a cached version of a file at a router device
EP1864525B1 (en) Method, device and system for managing a cache of network caches in a mobile
JP6056857B2 (ja) 通信制御装置及び通信制御方法
JP5383326B2 (ja) 通信装置、通信装置の制御方法、及びコンピュータプログラム
JP2017022531A (ja) 通信装置、通信プログラム及び通信方法
US9030950B2 (en) Communication apparatus, processing method for the same, and computer-readable storage medium
JP6470640B2 (ja) 通信装置及びその制御方法、コンピュータプログラム
US11329947B2 (en) Communication device, control method for communication device, and storage medium, for setting a distribution criterion
WO2020031946A1 (ja) 通知装置および通知方法
CN115086001B (zh) 采样数据缓存方法、装置及存储介质
JP7074826B2 (ja) 通信ネットワークでのシグナリングのための方法およびデバイス
JP6435002B2 (ja) 通信装置及びその制御方法、プログラム
WO2022070348A1 (ja) 転送装置、転送方法および転送プログラム
JP2004048260A (ja) パケット転送方法およびパケット転送システム、コンピュータプログラム
JP2019024161A (ja) 通信装置及びデータ転送方法
WO2018107475A1 (zh) 处理数据包的方法和装置