CoAP|省電力・軽量なIoT向け通信規格

CoAP

CoAPは組込み機器やセンサなど資源制約の大きいノードが低帯域・高損失ネットワーク上でREST型のリソース操作を行うためのアプリケーション層プロトコルである。トランスポートにUDPを用い、メッセージIDとトークン、確認応答の仕組みにより信頼性を補う。URIで資源を識別し、GET/POST/PUT/DELETEで表現を操作する点はHTTPに整合するが、ヘッダを圧縮しオプション化してオーバーヘッドを最小化する設計である。省電力・小メモリ・間欠接続を前提に、キャッシュ、コンテンツネゴシエーション、観測配信などを備え、6LoWPANやIEEE 802.15.4などの低レイヤと親和性が高い。

プロトコル構成と階層

CoAPは「メッセージ層」と「リクエスト/レスポンス層」から成り、前者が再送・重複検出・型管理を担い、後者がメソッドと応答コード、オプション解釈を担う。ペイロードは任意の表現(例: JSON/CBOR/プレーンテキスト)を運び、Content-Formatオプションで型を示す。IPv6/6LoWPAN上での断片化やヘッダ圧縮と協調し、リンク層MTUが小さい環境でも効率的に動作する。

メッセージ型と信頼性制御

CoAPにはCON(要確認)、NON(非確認)、ACK、RSTの4種のメッセージ型がある。CONは受信側がACKで肯定応答し、送信側は指数バックオフで再送して到達を担保する。Message IDは重複抑止と再送識別、Tokenは応答を非同期に要求へ対応付けるために用いる。重複検出ウィンドウや初期タイムアウト値は実装で調整し、輻輳回避のため乱数ジッタを導入する。

メソッド・応答コード・キャッシュ

メソッドはGET/POST/PUT/DELETEを備える。応答コードは「2.xx 成功」「4.xx クライアントエラー」「5.xx サーバエラー」の階層で、例えば2.05 Content、2.04 Changed、4.04 Not Foundなどが定義される。Max-Ageによりキャッシュ鮮度を示し、ETagで表現の同一性を管理する。Location-Path/Queryは生成資源の参照やリダイレクト的利用に有用である。

分割転送(Block-Wise)とObserve

小さなMTUやRAM制約に対し、Block1/Block2オプションで要求・応答の分割転送を行う。これにより大きな表現でも逐次的に安全搬送できる。Observe拡張はクライアントが資源の状態更新を継続受信する仕組みで、サーバは登録クライアントへ変更時に通知を送る。順序制御には通知番号を用い、欠損時は再取得で整合を回復する。

発見(Discovery)とリンク記述

資源発見は/.well-known/coreに対するGETで行い、CoRE Link Format(RFC 6690)によりリンク集合と属性(rt型、ifインタフェース、コンテンツ型など)を取得する。これによりクライアントは自己記述的にAPI面を探索でき、ゲートウェイは列挙結果を基に中継・集約を最適化できる。

セキュリティ(DTLS/OSCORE)

トランスポート保護にはDTLSを用いる(coaps://)。一方でプロキシ中継やマルチホップを考慮する場合、オブジェクト単位で暗号化・認証を付すOSCOREが有効である。鍵合意や認可は運用要件に応じて事前共有鍵、公開鍵、外部認可フレームワークを選択し、消費電力と遅延を抑える。

プロキシと相互運用

CoAPは前方/逆方向プロキシ、キャッシュ、名前解決などの中継要素を想定する。URIスキームやオプションを保ちながら、表現と意味を損なわずに他ドメインへ橋渡しする設計である。観測配信やブロック転送を扱えるプロキシは、フィールド側の通信回数削減とバックエンド負荷平準化に寄与する。

実装指針と運用上の注意

  • タイムアウト/再送上限は無線特性に合わせて調整し、輻輳回避アルゴリズムを有効化する。
  • NVRAM節約のためトークン長や受信ウィンドウを業務要件に応じ最小化する。
  • 表現はCBOR等の軽量型を選び、Content-Formatを厳密に管理する。
  • ゲートウェイではDNS-SDや資源発見キャッシュを活用し、スキャンを抑制する。

主な利用領域

環境センサ、照明・空調制御、産業設備監視、メータリング、ビルオートメーション、スマートアグリ、ウェアラブルなどでCoAPは省電力な資源操作を実現する。間欠的なスリープ運用、低デューティ比、メッシュ型リンクに適合し、観測配信とキャッシュを組み合わせることでポーリング負荷を削減できる。

コメント(β版)