原文

[要約] RFC 9028は、ホスト識別プロトコル(HIP)において、ICE方法論に基づきNATを通過するための新しい「ネイティブNATトラバーサルモード」を規定した実験的仕様です。STUNの代わりにHIPメッセージ自体を用いて接続性チェックやデータ中継を行うことで、カーネル実装の効率を高め、レガシーモード(RFC 5770)の課題を解決しています。制御・データリレーの仕組み、HIPv2への対応、およびNAT環境下でのモビリティ管理手順を定義し、複雑なネットワーク環境での安全なデバイス間通信を支援します。

Internet Engineering Task Force (IETF)                        A. Keränen
Request for Comments: 9028                                      J. Melén
Category: Experimental                                      M. Komu, Ed.
ISSN: 2070-1721                                                 Ericsson
                                                               July 2021
        

Native NAT Traversal Mode for the Host Identity Protocol

ホストIDプロトコルのネイティブNATトラバーサルモード

Abstract

概要

This document specifies a new Network Address Translator (NAT) traversal mode for the Host Identity Protocol (HIP). The new mode is based on the Interactive Connectivity Establishment (ICE) methodology and UDP encapsulation of data and signaling traffic. The main difference from the previously specified modes is the use of HIP messages instead of ICE for all NAT traversal procedures due to the kernel-space dependencies of HIP.

この文書は、ホスト識別プロトコル(HIP)向けの新しいネットワークアドレス変換(NAT)越えモードを規定します。このモードは、Interactive Connectivity Establishment(ICE)の方法論と、データおよびシグナリングトラフィックのUDPカプセル化に基づいています。従来の方式との主な違いは、HIPがカーネル空間に依存するため、NAT越え手順のすべてでICEメッセージの代わりにHIPメッセージを使用することです。

Status of This Memo

本文書の状態

This document is not an Internet Standards Track specification; it is published for examination, experimental implementation, and evaluation.

この文書はインターネット標準化過程の仕様ではなく、検討、実験的な実装および評価のために公開されています。

This document defines an Experimental Protocol for the Internet community. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Not all documents approved by the IESG are candidates for any level of Internet Standard; see Section 2 of RFC 7841.

この文書は、インターネットコミュニティ向けの実験的プロトコルを定義します。これはInternet Engineering Task Force(IETF)の文書であり、IETFコミュニティの合意を表しています。公開レビューを受け、Internet Engineering Steering Group(IESG)によって公開が承認されました。IESGが承認した文書のすべてが、何らかの段階のインターネット標準の候補になるわけではありません。RFC 7841のセクション2を参照してください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9028.

この文書の現在のステータス、任意のエラータ、およびフィードバックを提供する方法は、https://www.rfc-editor.org/info/rfc9028で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(C)2021 IETF信頼と文書著者として識別された人。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書には、公開日に有効なBCP 78およびIETF文書に関するIETF Trustの法的規定(https://trustee.ietf.org/license-info)が適用されます。これらの文書には、本書に関する権利と制限が記載されているため、注意深く確認してください。本書から抽出したコードコンポーネントには、Trustの法的規定のセクション4.eに記載されたSimplified BSD Licenseの文面を含める必要があります。また、同ライセンスに記載されているとおり、保証なしで提供されます。

Table of Contents

目次

   1.  Introduction
   1.  はじめに
   2.  Terminology
   2.  用語
   3.  Overview of Operation
   3.  動作の概要
   4.  Protocol Description
   4.  プロトコルの説明
     4.1.  Relay Registration
     4.1.  リレー登録
     4.2.  Transport Address Candidate Gathering at the Relay Client
     4.2.  リレークライアントでの輸送アドレス候補集会
     4.3.  NAT Traversal Mode Negotiation
     4.3.  NATトラバーサルモードネゴシエーション
     4.4.  Connectivity Check Pacing Negotiation
     4.4.  接続性チェックの送信間隔のネゴシエーション
     4.5.  Base Exchange via Control Relay Server
     4.5.  Control Relay Serverを介した基本交換
     4.6.  Connectivity Checks
     4.6.  接続チェック
       4.6.1.  Connectivity Check Procedure
       4.6.1.  接続性チェック手順
       4.6.2.  Rules for Connectivity Checks
       4.6.2.  接続チェックの規則
       4.6.3.  Rules for Concluding Connectivity Checks
       4.6.3.  接続チェックを終了するための規則
     4.7.  NAT Traversal Optimizations
     4.7.  NATトラバーサル最適化
       4.7.1.  Minimal NAT Traversal Support
       4.7.1.  最小NATトラバーサルサポート
       4.7.2.  Base Exchange without Connectivity Checks
       4.7.2.  接続チェックのない基本交換
       4.7.3.  Initiating a Base Exchange Both with and without UDP
               Encapsulation
       4.7.3.  Initiating a Base Exchange Both with and without UDP
               Encapsulation
     4.8.  Sending Control Packets after the Base Exchange
     4.8.  ベース交換後に制御パケットの送信
     4.9.  Mobility Handover Procedure
     4.9.  モビリティハンドオーバ手順
     4.10. NAT Keepalives
     4.10. NATキープアライブ
     4.11. Closing Procedure
     4.11. 閉鎖手順
     4.12. Relaying Considerations
     4.12. 中継に関する考慮事項
       4.12.1.  Forwarding Rules and Permissions
       4.12.1.  転送規則と権限
       4.12.2.  HIP Data Relay and Relaying of Control Packets
       4.12.2.  HIPデータリレーと制御パケットの中継
       4.12.3.  Handling Conflicting SPI Values
       4.12.3.  競合するSPI値の処理
   5.  Packet Formats
   5.  パケットフォーマット
     5.1.  HIP Control Packets
     5.1.  ヒップコントロールパケット
     5.2.  Connectivity Checks
     5.2.  接続チェック
     5.3.  Keepalives
     5.3.  キープアライブ
     5.4.  NAT Traversal Mode Parameter
     5.4.  NATトラバーサルモードパラメータ
     5.5.  Connectivity Check Transaction Pacing Parameter
     5.5.  接続性のチェックトランザクションペーシングパラメータ
     5.6.  Relay and Registration Parameters
     5.6.  リレーと登録パラメータ
     5.7.  LOCATOR_SET Parameter
     5.7.  LOCATOR_SETパラメータ
     5.8.  RELAY_HMAC Parameter
     5.8.  RELAY_HMACパラメータ
     5.9.  Registration Types
     5.9.  登録タイプ
     5.10. Notify Packet Types
     5.10. パケットの種類の通知
     5.11. ESP Data Packets
     5.11. ESPデータパケット
     5.12. RELAYED_ADDRESS and MAPPED_ADDRESS Parameters
     5.12. RELAYED_ADDRESSとMAPPED_ADDRESSパラメータ
     5.13. PEER_PERMISSION Parameter
     5.13. PEER_PERMISSIONパラメータ
     5.14. HIP Connectivity Check Packets
     5.14. HIP接続性チェックパケット
     5.15. NOMINATE Parameter
     5.15. ノミネートパラメータ
   6.  IAB Considerations
   6.  IABの考慮事項
   7.  Security Considerations
   7.  セキュリティに関する考慮事項
     7.1.  Privacy Considerations
     7.1.  プライバシーに関する考慮事項
     7.2.  Opportunistic Mode
     7.2.  日和見的モード
     7.3.  Base Exchange Replay Protection for Control Relay Server
     7.3.  Control Relay Serverのベース交換再生保護
     7.4.  Demultiplexing Different HIP Associations
     7.4.  異なるHIPアソシエーションの逆多重化
     7.5.  Reuse of Ports at the Data Relay Server
     7.5.  データリレーサーバーのポートの再利用
     7.6.  Amplification Attacks
     7.6.  増幅攻撃
     7.7.  Attacks against Connectivity Checks and Candidate Gathering
     7.7.  接続性チェックと候補収集に対する攻撃
     7.8.  Cross-Protocol Attacks
     7.8.  クロスプロトコル攻撃
   8.  IANA Considerations
   8.  IANAの考慮事項
   9.  References
   9.  参考文献
     9.1.  Normative References
     9.1.  引用文献
     9.2.  Informative References
     9.2.  Informative References
   Appendix A.  Selecting a Value for Check Pacing
   Appendix A.  チェックペーシングの値の選択
   Appendix B.  Differences with Respect to ICE
   Appendix B.  ICEとの相違点
   Appendix C.  Differences to Base Exchange and UPDATE Procedures
   Appendix C.  ベース交換と更新手順との違い
   Appendix D.  Multihoming Considerations
   Appendix D.  マルチホームに関する考慮事項
   Appendix E.  DNS Considerations
   Appendix E.  DNSの考慮事項
   Acknowledgments
   謝辞
   Contributors
   貢献者
   Authors' Addresses
   著者の住所
1. Introduction
1. はじめに

The Host Identity Protocol (HIP) [RFC7401] is specified to run directly on top of IPv4 or IPv6. However, many middleboxes found in the Internet, such as NATs and firewalls, often allow only UDP or TCP traffic to pass [RFC5207]. Also, NATs usually require the host behind a NAT to create a forwarding state in the NAT before other hosts outside of the NAT can contact the host behind the NAT. To overcome this problem, different methods, commonly referred to as NAT traversal techniques, have been developed.

ホスト識別プロトコル(HIP)[RFC7401]は、IPv4またはIPv6の上で直接動作するよう規定されています。しかし、NATやファイアウォールなど、インターネット上の多くのミドルボックスは、UDPまたはTCPのトラフィックしか通過させないことがよくあります [RFC5207]。また通常、NATの外部にいるホストがNAT配下のホストに接続するには、NAT配下のホストがあらかじめNATに転送状態を作成しておく必要があります。この問題を解決するため、一般にNAT越え技術と呼ばれるさまざまな方法が開発されてきました。

As one solution, the HIP experiment report [RFC6538] mentions Teredo-based NAT traversal for HIP and related Encapsulating Security Payload (ESP) traffic (with double tunneling overhead). Another solution is specified in [RFC5770], which will be referred to as "Legacy ICE-HIP" in this document. The experimental Legacy ICE-HIP specification combines the Interactive Connectivity Establishment (ICE) protocol (originally [RFC5245]) with HIP so that basically, ICE is responsible for NAT traversal and connectivity testing, while HIP is responsible for end-host authentication and IPsec key management. The resulting protocol uses HIP, Session Traversal Utilities for NAT (STUN), and ESP messages tunneled over a single UDP flow. The benefit of using ICE and its STUN / Traversal Using Relays around NAT (TURN) messaging formats is that one can reuse the NAT traversal infrastructure already available in the Internet, such as STUN and TURN servers. Also, some middleboxes may be STUN aware and may be able to do something "smart" when they see STUN being used for NAT traversal.

解決策の1つとして、HIP実験報告書[RFC6538]は、HIPおよび関連するカプセル化セキュリティペイロード(ESP)トラフィックに対するTeredoベースのNAT越え方式に言及しています(トンネルが二重になるため、オーバーヘッドが生じます)。もう1つの解決策は[RFC5770]で規定されており、本書では「Legacy ICE-HIP」と呼びます。この実験仕様はInteractive Connectivity Establishment(ICE)プロトコル(当初は[RFC5245])とHIPを組み合わせ、基本的にNAT越えと接続性テストをICEが、エンドホストの認証とIPsec鍵管理をHIPが担います。このプロトコルでは、HIP、Session Traversal Utilities for NAT(STUN)、およびESPのメッセージを1つのUDPフローでトンネルします。ICEおよびSTUN/Traversal Using Relays around NAT(TURN)のメッセージ形式を使う利点は、STUNサーバやTURNサーバなど、インターネット上にすでにあるNAT越えインフラストラクチャを再利用できることです。また、STUNに対応したミドルボックスの中には、NAT越えにSTUNが使われていることを検知し、適切な処理を行えるものもあります。

HIP poses a unique challenge to using standard ICE, not only due to kernel-space dependencies of HIP, but also due to its close integration with kernel-space IPsec; and, while [RFC5770] provides a technically workable path, HIP incurs unacceptable performance drawbacks for kernel-space implementations. Also, implementing and integrating a full ICE/STUN/TURN protocol stack as specified in Legacy ICE-HIP results in a considerable amount of effort and code, which could be avoided by reusing and extending HIP messages and state machines for the same purpose. Thus, this document specifies an alternative NAT traversal mode referred to as "Native ICE-HIP" that employs the HIP messaging format instead of STUN or TURN for the connectivity checks, keepalives, and data relaying. Native ICE-HIP also specifies how mobility management works in the context of NAT traversal, which is missing from the Legacy ICE-HIP specification. The native specification is also based on HIPv2, whereas the legacy specification is based on HIPv1. The differences to Legacy ICE-HIP are further elaborated in Appendix B.

標準ICEをHIPで使うことには、HIPがカーネル空間に依存することに加え、カーネル空間のIPsecと密接に統合されているという固有の課題があります。[RFC5770]は技術的には実現可能な方法を示していますが、カーネル空間で実装するHIPには許容できない性能上の不利益があります。また、Legacy ICE-HIPで規定されている完全なICE/STUN/TURNプロトコルスタックを実装・統合すると、多大な作業とコードが必要になります。同じ目的のためにHIPメッセージと状態機械を再利用・拡張すれば、この作業を避けられます。そこで本書は、接続性チェック、キープアライブ、データ中継にSTUNやTURNの代わりにHIPメッセージ形式を使う「Native ICE-HIP」という代替NAT越えモードを規定します。Native ICE-HIPは、Legacy ICE-HIPの仕様にはない、NAT越えにおけるモビリティ管理の動作も規定します。また、Native ICE-HIPはHIPv2に基づきますが、Legacy ICE-HIPはHIPv1に基づきます。Legacy ICE-HIPとの違いは付録Bで詳述します。

Similar to Legacy ICE-HIP, this specification builds on the HIP registration extensions [RFC8003] and the base exchange procedure [RFC7401] and its closing procedures; therefore, the reader is recommended to get familiar with the relevant specifications. In a nutshell, the registration extensions allow a HIP Initiator (usually a "client" host) to ask for specific services from a HIP Responder (usually a "server" host). The registration parameters are included in a base exchange, which is essentially a four-way Diffie-Hellman key exchange authenticated using the public keys of the end hosts. When the hosts negotiate support for ESP [RFC7402] during the base exchange, they can deliver ESP-protected application payload to each other. When either of the hosts moves and changes its IP address, the two hosts re-establish connectivity using the mobility extensions [RFC8046]. The reader is also recommended to get familiar with the mobility extensions; basically, the process is a three-way procedure where the mobile host first announces its new location to the peer; then, the peer tests for connectivity (the so-called return routability check); and then, the mobile host must respond to the announcement in order to activate its new location. This specification builds on the mobility procedures, but modifies them to be compatible with ICE. The differences in the mobility extensions are specified in Appendix C. It is worth noting that multihoming support as specified in [RFC8047] is left for further study.

Legacy ICE-HIPと同様に、本仕様はHIP登録拡張[RFC8003]、基本交換手順[RFC7401]および終了手順に基づいています。そのため、読者は関連仕様に慣れておくことが推奨されます。要約すると、登録拡張により、HIP Initiator(通常はクライアントホスト)がHIP Responder(通常はサーバホスト)に特定のサービスを要求できます。登録パラメータは基本交換に含まれます。基本交換は、エンドホストの公開鍵で認証される4ウェイのDiffie-Hellman鍵交換です。基本交換中にホスト同士がESP [RFC7402]のサポートをネゴシエートすると、ESPで保護されたアプリケーションペイロードを相互に送信できます。いずれかのホストが移動してIPアドレスを変更した場合、2つのホストはモビリティ拡張[RFC8046]を使って接続を再確立します。読者はモビリティ拡張にも慣れておくことが推奨されます。基本的には3段階の手順で、まずモバイルホストがピアに新しい位置を通知し、次にピアが接続性をテストし(いわゆるリターンルータビリティチェック)、最後にモバイルホストが通知に応答して新しい位置を有効にします。本仕様はこのモビリティ手順に基づきますが、ICEと互換性を持つよう変更しています。モビリティ拡張の相違点は付録Cに記載しています。なお、[RFC8047]で規定されているマルチホーミングのサポートは今後の検討課題です。

This specification builds heavily on the ICE methodology, so it is recommended that the reader is familiar with the ICE specification [RFC8445] (especially the overview). However, Native ICE-HIP does not implement all the features in ICE; hence, the different features of ICE are cross referenced using [RFC2119] terminology for clarity. Appendix B explains the differences to ICE, and it is recommended that the reader read this section in addition to the ICE specification.

本仕様はICEの方法論に大きく依存するため、読者はICE仕様[RFC8445]、特にその概要を理解しておくことが推奨されます。ただし、Native ICE-HIPはICEの全機能を実装するわけではありません。そのため、ICEの各機能をどのように扱うかを明確にするため、[RFC2119]の用語を用いて相互参照しています。ICEとの相違点は付録Bで説明します。ICE仕様に加えて、この付録も読むことが推奨されます。

2. Terminology
2. 用語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

このドキュメントのキーワード "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"NOT RECOMMENDED"、"MAY"、および "OPTIONAL" は、BCP 14 [RFC2119] [RFC8174] で説明されているように、すべて大文字で表示される場合にのみ解釈されるものとします。

This document borrows terminology from [RFC5770], [RFC7401], [RFC8046], [RFC9063], [RFC8445], and [RFC8489]. The following terms recur in the text:

本書では[RFC5770]、[RFC7401]、[RFC8046]、[RFC9063]、[RFC8445]および[RFC8489]の用語を使用します。本文では次の用語が繰り返し登場します。

ICE: Interactive Connectivity Establishment (ICE) protocol as specified in [RFC8445].

ICE:[RFC8445]で規定されているInteractive Connectivity Establishment(ICE)プロトコル。

Legacy ICE-HIP: Refers to the "Basic Host Identity Protocol (HIP) Extensions for Traversal of Network Address Translators" as specified in [RFC5770]. The protocol specified in this document offers an alternative to Legacy ICE-HIP.

Legacy ICE-HIP:[RFC5770]で規定されている「Basic Host Identity Protocol (HIP) Extensions for Traversal of Network Address Translators」を指します。本書で規定するプロトコルは、Legacy ICE-HIPに代わる方式です。

Native ICE-HIP: The protocol specified in this document (Native NAT Traversal Mode for HIP).

Native ICE-HIP:本書で規定するプロトコル(HIP向けNative NAT Traversal Mode)です。

Initiator: The host that initiates the base exchange using I1 message [RFC7401].

イニシエータ:I1メッセージ[RFC7401]を使用して基本交換を開始するホスト。

Responder: The host that receives the I1 packet from the Initiator [RFC7401].

Responder:イニシエータ[RFC7401]からI1パケットを受信したホスト。

Control Relay Server A registrar host that forwards any kind of HIP control plane packets between the Initiator and the Responder. This host is critical because it relays the locators between the Initiator and the Responder so that they can try to establish a direct communication path with each other. This host is used to replace HIP Rendezvous Servers [RFC8004] for hosts operating in private address realms. In the Legacy ICE-HIP specification [RFC5770], this host is denoted as "HIP Relay Server".

Control Relay Server:InitiatorとResponderの間で、あらゆる種類のHIP制御プレーンパケットを転送する登録サーバホストです。InitiatorとResponderの間でロケータを中継し、両者が直接通信経路を確立できるようにする重要なホストです。プライベートアドレス領域で動作するホストでは、HIP Rendezvous Server [RFC8004]の代わりに使います。Legacy ICE-HIP [RFC5770]では「HIP Relay Server」と呼ばれます。

Control Relay Client: A requester host that registers to a Control Relay Server requesting it to forward control plane traffic (i.e., HIP control messages). In the Legacy ICE-HIP specification [RFC5770], this is denoted as "HIP Relay Client".

Control Relay Client:制御プレーントラフィック(HIP制御メッセージ)を転送するようControl Relay Serverに要求し、そこに登録するホストです。Legacy ICE-HIP [RFC5770]では「HIP Relay Client」と呼ばれます。

Data Relay Server: A new entity introduced in this document; a registrar host that forwards HIP related data plane packets, such as Encapsulating Security Payload (ESP) [RFC7402], between two hosts. This host implements similar functionality as TURN servers.

Data Relay Server:本書で導入する新しいエンティティです。カプセル化セキュリティペイロード(ESP)[RFC7402]など、HIP関連のデータプレーンパケットを2つのホスト間で転送する登録サーバホストです。TURNサーバと同様の機能を実装します。

Data Relay Client: A requester host that registers to a Data Relay Server requesting it to forward data plane traffic (e.g. ESP traffic). This functionality is a new and introduced in this document.

Data Relay Client:データプレーントラフィック(例:ESPトラフィック)を転送するようData Relay Serverに要求し、そこに登録するホストです。この機能は本書で新たに導入します。

Locator: As defined in [RFC8046]: "A name that controls how the packet is routed through the network and demultiplexed by the end host. It may include a concatenation of traditional network addresses such as an IPv6 address and end-to-end identifiers such as an ESP SPI. It may also include transport port numbers or IPv6 Flow Labels as demultiplexing context, or it may simply be a network address."

Locator:[RFC8046]で定義されている「パケットがネットワークを通過する経路と、エンドホストでの逆多重化方法を制御する名前」です。IPv6アドレスなど従来のネットワークアドレスと、ESP SPIなどエンドツーエンド識別子の連結を含む場合があります。逆多重化の文脈としてトランスポートポート番号やIPv6フローラベルを含む場合もあれば、単なるネットワークアドレスの場合もあります。

LOCATOR_SET (written in capital letters): Denotes a HIP control packet parameter that bundles multiple locators together [RFC8046].

LOCATOR_SET(大文字表記):複数のロケータをまとめるHIP制御パケットパラメータを指します [RFC8046]。

HIP offer: Before two end hosts can establish a communication channel using the NAT traversal procedures defined in this document, they need to exchange their locators (i.e., candidates) with each other. In ICE, this procedure is called Candidate Exchange; it does not specify how the candidates are exchanged, but Session Description Protocol (SDP) "offer/answer" is mentioned as an example. In contrast, the Candidate Exchange in HIP is the base exchange itself or a subsequent UPDATE procedure occurring after a handover. Following [RFC5770] and SDP-related naming conventions [RFC3264], "HIP offer" is the Initiator's LOCATOR_SET parameter in a HIP I2 or in an UPDATE control packet.

HIP offer:本書で定義するNAT越え手順を使って通信チャネルを確立する前に、2つのエンドホストは互いのロケータ(候補)を交換する必要があります。ICEではこの手順をCandidate Exchange(候補交換)と呼びます。ICEは候補の交換方法を規定していませんが、Session Description Protocol(SDP)の「offer/answer」を例に挙げています。一方、HIPでの候補交換は基本交換そのもの、またはハンドオーバ後に行う後続のUPDATE手順です。[RFC5770]およびSDP関連の命名規則[RFC3264]に従い、HIP I2またはUPDATE制御パケットに含まれるInitiatorのLOCATOR_SETパラメータを「HIP offer」と呼びます。

HIP answer: The Responder's LOCATOR_SET parameter in a HIP R2 or UPDATE control packet. The HIP answer corresponds to the SDP answer parameter [RFC3264] but is HIP specific. Please refer also to the longer description of the "HIP offer" term above.

HIP answer:HIP R2またはUPDATE制御パケットに含まれるResponderのLOCATOR_SETパラメータです。HIP answerはSDP answerパラメータ[RFC3264]に対応しますが、HIP固有のものです。上記の「HIP offer」の詳しい説明も参照してください。

HIP connectivity checks: In order to obtain a direct end-to-end communication path (without employing a Data Relay Server), two communicating HIP hosts try to "punch holes" through their NAT boxes using this mechanism. It is similar to the ICE connectivity checks but implemented using HIP return routability checks.

HIP connectivity checks:Data Relay Serverを使わずに直接エンドツーエンドの通信経路を確立するため、通信する2つのHIPホストがこの仕組みを使ってNATに穴を開けようとします。ICE connectivity checksと同様の機能ですが、HIPのreturn routability checkを使って実装します。

Controlling host: The controlling host [RFC8445] is always the Initiator in the context of this specification. It nominates the candidate pair to be used with the controlled host.

Controlling host:本仕様では、[RFC8445]でいうcontrolling hostは常にInitiatorです。controlled hostと使用する候補ペアを指名します。

Controlled host: The controlled host [RFC8445] is always the Responder in the context of this specification. It waits for the controlling host to nominate an address candidate pair.

Controlled host:本仕様では、[RFC8445]でいうcontrolled hostは常にResponderです。controlling hostがアドレス候補ペアを指名するのを待ちます。

Checklist: A list of address candidate pairs that need to be tested for connectivity (same as in [RFC8445]).

チェックリスト:接続性をテストする必要があるアドレス候補ペアのリスト([RFC8445]と同じ)。

Transport address: Transport-layer port and the corresponding IPv4/v6 address (same as in [RFC8445]).

トランスポートアドレス:トランスポート層ポートと対応するIPv4/v6アドレス([RFC8445]と同じ)。

Candidate: A transport address that is a potential point of contact for receiving data (same as in [RFC8445]).

候補:データを受信するための潜在的な接点であるトランスポートアドレス([RFC8445]と同じ)。

Host candidate: A candidate obtained by binding to a specific port from an IP address on the host (same as in [RFC8445]).

ホスト候補:ホスト上のIPアドレスから特定のポートにバインドすることによって得られた候補([RFC8445]と同じ)。

Server-reflexive candidate: A translated transport address of a host as observed by a Control or Data Relay Server (same as in [RFC8445]).

Server-reflexive candidate:Control Relay ServerまたはData Relay Serverから見た、ホストの変換後のトランスポートアドレスです([RFC8445]と同じ)。

Peer-reflexive candidate: A translated transport address of a host as observed by its peer (same as in [RFC8445]).

Peer-reflexive candidate:ピアから見た、ホストの変換後のトランスポートアドレスです([RFC8445]と同じ)。

Relayed candidate: A transport address that exists on a Data Relay Server. Packets that arrive at this address are relayed towards the Data Relay Client. The concept is the same as in [RFC8445], but a Data Relay Server is used instead of a TURN server.

中継候補:データ中継サーバに存在するトランスポートアドレス。このアドレスに到着するパケットは、データリレークライアントに向かって中継されています。概念は[RFC8445]と同じですが、TURNサーバーの代わりにデータ中継サーバーが使用されます。

Permission: In the context of Data Relay Server, permission refers to a concept similar to TURN's [RFC8656] channels. Before a host can use a relayed candidate to forward traffic through a Data Relay Server, the host must activate the relayed candidate with a specific peer host.

権限:データ中継サーバーのコンテキストでは、許可は、TURNの[RFC8656]チャネルと同様の概念を指します。ホストが中継候補を使用する前に、データリレーサーバーを介してトラフィックを転送することができる前に、ホストは特定のピアホストを使用して中継候補をアクティブにする必要があります。

Base: Similar to that described in [RFC8445], the base of a candidate is the local source address a host uses to send packets for the associated candidate. For example, the base of a server-reflexive address is the local address the host used for registering itself to the associated Control or Data Relay Server. The base of a host candidate is equal to the host candidate itself.

Base:[RFC8445]と同様に、候補のbaseは、関連する候補のパケット送信にホストが使うローカル送信元アドレスです。たとえば、server-reflexiveアドレスのbaseは、ホストが該当するControl Relay ServerまたはData Relay Serverへの登録に使ったローカルアドレスです。host candidateのbaseは、そのhost candidate自体です。

3. Overview of Operation
3. 動作の概要
                             +--------------+
                             |    Control   |
              +--------+     | Relay Server |      +--------+
              | Data   |     +----+-----+---+      | Data   |
              | Relay  |         /       \         | Relay  |
              | Server |        /         \        | Server |
              +--------+       /           \       +--------+
                              /             \
                             /               \
                            /                 \
                           /  <- Signaling ->  \
                          /                     \
                    +-------+                +-------+
                    |  NAT  |                |  NAT  |
                    +-------+                +-------+
                     /                              \
                    /                                \
               +-------+                           +-------+
               | Init- |                           | Resp- |
               | iator |                           | onder |
               +-------+                           +-------+
        

Figure 1: Example Network Configuration

図1:ネットワーク構成例

In the example configuration depicted in Figure 1, both Initiator and Responder are behind one or more NATs, and both private networks are connected to the public Internet. To be contacted from behind a NAT, at least the Responder must be registered with a Control Relay Server reachable on the public Internet. The Responder may have also registered to a Data Relay Server that can forward the data plane in case NAT traversal fails. While, strictly speaking, the Initiator does not need a Data Relay Server, it may act in the other role with other hosts; connectivity with the Data Relay Server of the Responder may fail, so the Initiator may also need to register to a Control and/or Data Relay Server. It is worth noting that a Control and Data Relay does not forge the source address of a passing packet but always translates the source address and source port of a packet to be forwarded (to its own).

図1に示す構成例では、InitiatorとResponderはいずれも1つ以上のNAT配下にあり、それぞれのプライベートネットワークはパブリックインターネットに接続しています。NAT配下のホストに接続するには、少なくともResponderがパブリックインターネットから到達可能なControl Relay Serverに登録している必要があります。NAT越えに失敗した場合にデータプレーンを中継できるよう、ResponderはData Relay Serverにも登録している場合があります。厳密にはInitiatorにData Relay Serverは不要ですが、他のホストとの通信では反対側の役割を担う場合があります。また、Responder側のData Relay Serverに接続できない可能性もあるため、InitiatorもControl Relay ServerまたはData Relay Serverに登録する必要がある場合があります。Control Relay ServerとData Relay Serverは通過するパケットの送信元アドレスを偽装せず、転送するパケットの送信元アドレスとポートを、それぞれ自身のアドレスとポートに変換します。

We assume, as a starting point, that the Initiator knows both the Responder's Host Identity Tag (HIT) and the address(es) of the Responder's Control Relay Server(s) (how the Initiator learns of the Responder's Control Relay Server is outside of the scope of this document, but it may be learned through DNS or another name service). The first steps are for both the Initiator and Responder to register with a Control Relay Server (need not be the same one) and gather a set of address candidates. The hosts use either Control Relay Servers or Data Relay Servers for gathering the candidates. Next, the HIP base exchange is carried out by encapsulating the HIP control packets in UDP datagrams and sending them through the Responder's Control Relay Server. As part of the base exchange, each HIP host learns of the peer's candidate addresses through the HIP offer/answer procedure embedded in the base exchange.

ここでは、開始時点でInitiatorがResponderのHost Identity Tag(HIT)とResponderのControl Relay Serverのアドレスを把握していると仮定します(Initiatorがそのアドレスを知る方法は本書の範囲外ですが、DNSなどのネームサービスから取得できます)。最初に、InitiatorとResponderの両方がControl Relay Server(同じサーバである必要はありません)に登録し、アドレス候補を収集します。候補の収集にはControl Relay ServerまたはData Relay Serverを使います。次に、HIP制御パケットをUDPデータグラムにカプセル化してResponderのControl Relay Server経由で送信し、HIP基本交換を行います。基本交換に含まれるHIP offer/answer手順を通じて、各ホストはピアの候補アドレスを取得します。

Once the base exchange is completed, two HIP hosts have established a working communication session (for signaling) via a Control Relay Server, but the hosts still have to find a better path, preferably without a Data Relay Server, for the ESP data flow. For this, connectivity checks are carried out until a working pair of addresses is discovered. At the end of the procedure, if successful, the hosts will have established a UDP-based tunnel that traverses both NATs with the data flowing directly from NAT to NAT or via a Data Relay Server. At this point, the HIP signaling can also be sent over the same address/port pair, and is demultiplexed (or, in other words, separated) from IPsec as described in the UDP encapsulation standard for IPsec [RFC3948]. Finally, the two hosts send NAT keepalives as needed in order keep their UDP-tunnel state active in the associated NAT boxes.

基本交換が完了すると、2つのHIPホストはControl Relay Server経由でシグナリング用の通信セッションを確立しています。しかし、ESPデータフローには、Data Relay Serverを経由しない、より適切な経路を見つける必要があります。そのため、動作するアドレスペアが見つかるまで接続性チェックを行います。成功すれば、NATからNATへ直接、またはData Relay Server経由でデータを流すUDPトンネルが両方のNATを通過して確立されます。この時点から、HIPシグナリングも同じアドレス/ポートペアで送信でき、IPsecのUDPカプセル化規格[RFC3948]の説明に従ってIPsecトラフィックと逆多重化できます。最後に、2つのホストは必要に応じてNATキープアライブを送信し、各NATのUDPトンネル状態を維持します。

If either one of the hosts knows that it is not behind a NAT, hosts can negotiate during the base exchange a different mode of NAT traversal that does not use HIP connectivity checks, but only UDP encapsulation of HIP and ESP. Also, it is possible for the Initiator to simultaneously try a base exchange with and without UDP encapsulation. If a base exchange without UDP encapsulation succeeds, no HIP connectivity checks or UDP encapsulation of ESP are needed.

いずれかのホストが自分はNAT配下ではないと把握している場合、基本交換中に、HIP connectivity checksを行わず、HIPとESPをUDPカプセル化するだけの別のNAT越えモードをネゴシエートできます。またInitiatorは、UDPカプセル化ありとなしの基本交換を同時に試すこともできます。UDPカプセル化なしの基本交換が成功すれば、HIP connectivity checksもESPのUDPカプセル化も不要です。

4. Protocol Description
4. プロトコルの説明

This section describes the normative behavior of the "Native ICE-HIP" protocol extension. Most of the procedures are similar to what is defined in [RFC5770] but with different, or additional, parameter types and values. In addition, a new type of relaying server, Data Relay Server, is specified. Also, it should be noted that HIP version 2 [RFC7401] MUST be used instead of HIPv1 with this NAT traversal mode.

このセクションでは、"Native ICE-HIP" プロトコル拡張の規範的な動作を説明します。手順の大部分は [RFC5770] で定義されているものと同様ですが、パラメーターの種類や値が異なるか、追加されています。さらに、新しい種類の中継サーバーであるData Relay Serverを規定します。また、このNAT越え方式では、HIPv1ではなくHIPバージョン2 [RFC7401] を使用しなければならない (MUST) ことに注意してください。

4.1. Relay Registration
4.1. リレー登録

In order for two hosts to communicate over NATed environments, they need a reliable way to exchange information. To achieve this, "HIP Relay Server" is defined in [RFC5770]. It supports the relaying of HIP control plane traffic over UDP in NATed environments and forwards HIP control packets between the Initiator and the Responder. In this document, the HIP Relay Server is denoted as "Control Relay Server" for better alignment with the rest of the terminology. The registration to the Control Relay Server can be achieved using the RELAY_UDP_HIP parameter as explained later in this section.

NAT環境にある2つのホストが通信するには、情報を確実に交換する方法が必要です。このため[RFC5770]は「HIP Relay Server」を定義しています。これはNAT環境でUDP上のHIP制御プレーントラフィックを中継し、InitiatorとResponderの間でHIP制御パケットを転送します。本書では他の用語との整合性を高めるため、これを「Control Relay Server」と呼びます。本セクション後半で説明するとおり、RELAY_UDP_HIPパラメータを使ってControl Relay Serverに登録できます。

To also guarantee data plane delivery over varying types of NAT devices, a host MAY also register for UDP-encapsulated ESP relaying using Registration Type RELAY_UDP_ESP (value 3). This service may be coupled with the Control Relay Server or offered separately on another server. If the server supports relaying of UDP-encapsulated ESP, the host is allowed to register for a data-relaying service using the registration extensions in Section 3.3 of [RFC8003]. If the server has sufficient relaying resources (free port numbers, bandwidth, etc.) available, it opens a UDP port on one of its addresses and signals the address and port to the registering host using the RELAYED_ADDRESS parameter (as defined in Section 5.12 in this document). If the Data Relay Server would accept the data-relaying request but does not currently have enough resources to provide data-relaying service, it MUST reject the request with Failure Type "Insufficient resources" [RFC8003].

さまざまな種類のNATデバイスを介したデータプレーンの配送も保証するため、ホストは登録タイプRELAY_UDP_ESP(値3)を使ってUDPカプセル化ESPの中継にも登録してもよい (MAY)。このサービスはControl Relay Serverと一体で提供することも、別のサーバで提供することもできます。サーバがUDPカプセル化ESPの中継をサポートしていれば、ホストは[RFC8003]のセクション3.3にある登録拡張を使ってデータ中継サービスに登録できます。中継に十分なリソース(空きポート番号、帯域幅など)があれば、サーバは自身のアドレスの1つにUDPポートを開き、RELAYED_ADDRESSパラメータを使ってそのアドレスとポートを登録ホストに通知します(本書のセクション5.12で定義)。Data Relay Serverがデータ中継要求を受け付ける一方で、中継サービスを提供するリソースが不足している場合は、Failure Type「Insufficient resources」[RFC8003]で要求を拒否しなければなりません (MUST)。

The registration process follows the generic registration extensions defined in [RFC8003]. The HIP control plane relaying registration follows [RFC5770], but the data plane registration is different. It is worth noting that if the HIP control and data plane relay services reside on different hosts, the client has to register separately to each of them. In the example shown in Figure 2, the two services are coupled on a single host. The text uses "Relay Client" and "Relay Server" as a shorthand when the procedures apply both to control and data cases.

登録手順は[RFC8003]で定義されている一般的な登録拡張に従います。HIP制御プレーンの中継登録は[RFC5770]に従いますが、データプレーンの登録手順は異なります。HIP制御プレーンとデータプレーンの中継サービスが別々のホストにある場合、クライアントはそれぞれに登録する必要があります。図2の例では、2つのサービスを1台のホストで提供しています。制御とデータの両方に当てはまる手順を指す場合、本書では「Relay Client」と「Relay Server」を略称として使います。

     Control/Data                                           Control/Data
     Relay Client (Initiator)                   Relay Server (Responder)
     |   1. UDP(I1)                                                    |
     +---------------------------------------------------------------->|
     |                                                                 |
     |   2. UDP(R1(REG_INFO(RELAY_UDP_HIP,[RELAY_UDP_ESP])))           |
     |<----------------------------------------------------------------+
     |                                                                 |
     |   3. UDP(I2(REG_REQ(RELAY_UDP_HIP),[RELAY_UDP_ESP]))            |
     +---------------------------------------------------------------->|
     |                                                                 |
     |   4. UDP(R2(REG_RES(RELAY_UDP_HIP,[RELAY_UDP_ESP]), REG_FROM,   |
     |          [RELAYED_ADDRESS]))                                    |
     |<----------------------------------------------------------------+
     |                                                                 |
        

Figure 2: Example Registration with a HIP Relay

図2:HIP Relayによる登録例

In step 1, the Relay Client (Initiator) starts the registration procedure by sending an I1 packet over UDP to the Relay Server. It is RECOMMENDED that the Relay Client select a random source port number from the ephemeral port range 49152-65535 for initiating a base exchange. Alternatively, a host MAY also use a single fixed port for initiating all outgoing connections. However, the allocated port MUST be maintained until all of the corresponding HIP associations are closed. It is RECOMMENDED that the Relay Server listen to incoming connections at UDP port 10500. If some other port number is used, it needs to be known by potential Relay Clients.

ステップ1では、Relay Client(Initiator)がUDPでI1パケットをRelay Serverに送信し、登録手順を開始します。基本交換の開始には、Relay Clientが49152~65535の動的ポート範囲からランダムな送信元ポート番号を選ぶことが推奨されます (SHOULD)。代わりに、ホストはすべての発信接続に単一の固定ポートを使ってもよい (MAY)。ただし、対応するHIPアソシエーションがすべて終了するまで、そのポートを維持しなければなりません (MUST)。Relay ServerはUDPポート10500で着信接続を待ち受けることが推奨されます (SHOULD)。別のポート番号を使う場合、Relay Clientがその番号を把握できるようにする必要があります。

In step 2, the Relay Server (Responder) lists the services that it supports in the R1 packet. The support for HIP control plane over UDP relaying is denoted by the Registration Type value RELAY_UDP_HIP (see Section 5.9). If the server also supports the relaying of ESP traffic over UDP, it also includes the Registration Type value RELAY_UDP_ESP.

ステップ2では、リレーサーバ(レスポンダ)は、R1パケット内でサポートするサービスをリストしています。UDP中継の上のHIP制御プレーンのサポートは、登録タイプ値RELAY_UDP_HIP(セクション5.9を参照)で表されます。サーバーがUDPを介してESPトラフィックの中継をサポートしている場合は、登録タイプ値RELAY_UDP_ESPも含まれます。

In step 3, the Relay Client selects the services for which it registers and lists them in the REG_REQ parameter. The Relay Client registers for the Control Relay service by listing the RELAY_UDP_HIP value in the request parameter. If the Relay Client also requires ESP relaying over UDP, it lists also RELAY_UDP_ESP.

ステップ3では、Relay Clientが登録するサービスを選び、REG_REQパラメータに列挙します。Control Relayサービスに登録するには、要求パラメータにRELAY_UDP_HIPの値を指定します。ESPをUDP経由で中継する必要がある場合は、RELAY_UDP_ESPも指定します。

In step 4, the Relay Server concludes the registration procedure with an R2 packet and acknowledges the registered services in the REG_RES parameter. The Relay Server denotes unsuccessful registrations (if any) in the REG_FAILED parameter of R2. The Relay Server also includes a REG_FROM parameter that contains the transport address of the Relay Client as observed by the Relay Server (server-reflexive candidate). If the Relay Client registered to ESP-relaying service, the Relay Server includes a RELAYED_ADDRESS parameter that describes the UDP port allocated to the Relay Client for ESP relaying. It is worth noting that the Data Relay Client must first activate this UDP port by sending an UPDATE message to the Data Relay Server that includes a PEER_PERMISSION parameter as described in Section 4.12.1 both after base exchange and handover procedures. Also, the Data Relay Server should follow the port allocation recommendations in Section 7.5.

ステップ4では、Relay ServerがR2パケットを送信して登録手順を完了し、REG_RESパラメータで登録されたサービスを確認します。登録に失敗したサービスがあれば、R2のREG_FAILEDパラメータに示します。また、Relay ServerはREG_FROMパラメータを含め、Relay Clientのトランスポートアドレス(server-reflexive candidate)を通知します。Relay ClientがESP中継サービスに登録した場合、Relay ServerはRELAYED_ADDRESSパラメータでESP中継用に割り当てたUDPポートを通知します。Data Relay Clientは基本交換後およびハンドオーバ後に、セクション4.12.1で説明するPEER_PERMISSIONパラメータを含むUPDATEメッセージをData Relay Serverに送信し、このUDPポートを有効化する必要があります。また、Data Relay Serverはセクション7.5のポート割り当てに関する推奨事項に従うべきです。

After the registration, the Relay Client periodically sends NAT keepalives to the Relay Server in order to keep the NAT bindings between the Relay Client and the relay alive. The keepalive extensions are described in Section 4.10.

登録後、Relay ClientはRelay ClientとRelay Serverの間のNATバインディングを維持するため、NATキープアライブをRelay Serverに定期的に送信します。キープアライブ拡張についてはセクション4.10で説明します。

The Data Relay Client MUST maintain an active HIP association with the Data Relay Server as long as it requires the data-relaying service. When the HIP association is closed (or times out), or the registration lifetime passes without the Data Relay Client refreshing the registration, the Data Relay Server MUST stop relaying packets for that host and close the corresponding UDP port (unless other Data Relay Clients are still using it).

Data Relay Clientは、データ中継サービスが必要な間、Data Relay ServerとのHIPアソシエーションを有効な状態に保たなければなりません (MUST)。HIPアソシエーションが終了またはタイムアウトした場合、あるいはData Relay Clientが登録を更新しないまま登録期間が過ぎた場合、Data Relay Serverは他のData Relay Clientが使用中でない限り、そのホスト宛てのパケット中継を停止し、対応するUDPポートを閉じなければなりません (MUST)。

The Data Relay Server SHOULD offer a different relayed address and port for each Data Relay Client because not doing so can cause problems with stateful firewalls (see Section 7.5).

データリレーサーバーは、ステートフルファイアウォールで問題を引き起こす可能性があるため、データリレークライアントごとに異なる中継アドレスとポートを提供すべきです (SHOULD)(セクション7.5を参照)。

When a Control Relay Client sends an UPDATE (e.g., due to host movement or to renew service registration), the Control Relay Server MUST follow the general guidelines defined in [RFC8003], with the difference that all UPDATE messages are delivered on top of UDP. In addition to this, the Control Relay Server MUST include the REG_FROM parameter in all UPDATE responses sent to the Control Relay Client. This applies to both renewals of service registration and to host movement. It is especially important for the case of host movement, as this is the mechanism that allows the Control Relay Client to learn its new server-reflexive address candidate.

Control Relay ClientからUPDATE(例:ホストの移動やサービス登録の更新に伴うもの)を受信した場合、Control Relay Serverは、すべてのUPDATEメッセージがUDP上で配送される点を除き、[RFC8003]で定義されている一般的な指針に従わなければなりません (MUST)。さらに、Control Relay ServerはControl Relay Clientに送信するすべてのUPDATE応答にREG_FROMパラメータを含めなければなりません (MUST)。これはサービス登録の更新とホストの移動の両方に適用されます。特にホストが移動した場合、このパラメータによってControl Relay Clientが新しいserver-reflexive address candidateを知ることができます。

A Data Relay Client can request multiple relayed candidates from the Data Relay Server (e.g., for the reasons described in Section 4.12.3). After the base exchange with registration, the Data Relay Client can request additional relayed candidates similarly as during the base exchange. The Data Relay Client sends an UPDATE message REG_REQ parameter requesting for the RELAY_UDP_ESP service. The UPDATE message MUST also include a SEQ and an ECHO_REQUEST_SIGNED parameter. The Data Relay Server MUST respond with an UPDATE message that includes the corresponding response parameters: REG_RES, ACK and ECHO_REQUEST_SIGNED. In case the Data Relay Server allocated a new relayed UDP port for the Data Relay Client, the REG_RES parameter MUST list RELAY_UDP_ESP as a service and the UPDATE message MUST also include a RELAYED_ADDRESS parameter describing the relayed UDP port. The Data Relay Server MUST also include the server-reflexive candidate in a REG_FROM parameter. It is worth mentioning that the Data Relay Client MUST activate the UDP port as described in Section 4.12.1 before it can be used for any ESP relaying.

Data Relay ClientはData Relay Serverに複数の中継候補を要求できます(例:セクション4.12.3で説明する理由によります)。登録を伴う基本交換の後も、基本交換時と同様の手順で中継候補を追加要求できます。Data Relay ClientはRELAY_UDP_ESPサービスを要求するREG_REQパラメータを含むUPDATEメッセージを送信します。このUPDATEにはSEQパラメータとECHO_REQUEST_SIGNEDパラメータも含めなければなりません (MUST)。Data Relay Serverは、対応するREG_RES、ACKおよびECHO_REQUEST_SIGNEDパラメータを含むUPDATEメッセージで応答しなければなりません (MUST)。Data Relay ServerがData Relay Clientに新しい中継UDPポートを割り当てた場合、REG_RESパラメータではサービスとしてRELAY_UDP_ESPを示さなければなりません (MUST)。また、中継UDPポートを記述するRELAYED_ADDRESSパラメータをUPDATEに含めなければなりません (MUST)。さらに、REG_FROMパラメータにserver-reflexive candidateを含めなければなりません (MUST)。Data Relay Clientは、ESP中継にこのポートを使う前に、セクション4.12.1の説明に従って有効化しなければなりません (MUST)。

A Data Relay Client may unregister a relayed candidate in two ways. It can wait for its lifetime to expire or it can explicitly request it with zero lifetime using the UPDATE mechanism. The Data Relay Client can send a REG_REQ parameter with zero lifetime to the Data Relay Server in order to expire all relayed candidates. To expire a specific relayed candidate, the Data Relay Client MUST also include a RELAYED_ADDRESS parameter as sent by the server in the UPDATE message. Upon closing the HIP association (CLOSE-CLOSE-ACK procedure initiated by either party), the Data Relay Server MUST also expire all relayed candidates.

データリレークライアントは、2つの方法で中継候補を登録解除することができる。その生涯が期限切れになるのを待つか、更新メカニズムを使用してゼロ寿命で明示的に要求することができます。データリレークライアントは、すべての中継候補を期限切れにするために、存在する存続期間をゼロ寿命でREG_REQパラメータを送信することができます。特定の中継候補を期限切れにするには、データリレークライアントには、更新メッセージ内のサーバーによって送信されたRELAYED_ADDRESSパラメータも含まなければなりません (MUST)。HIPアソシエーション(どちらの当事者によって開始された閉鎖ackプロシージャ)を閉じると、データリレーサーバーもすべての中継候補を期限切れにしなければなりません (MUST)。

Please also refer to Section 7.8 for protection against cross-protocol attacks for both Control Relay Client and Server.

Control Relayクライアントとサーバーの両方のクロスプロトコル攻撃に対する保護については、セクション7.8も参照してください。

4.2. Transport Address Candidate Gathering at the Relay Client
4.2. リレークライアントでの輸送アドレス候補集会

An Initiator needs to gather a set of address candidates before contacting a (non-relay) Responder. The candidates are needed for connectivity checks that allow two hosts to discover a direct, non-relayed path for communicating with each other. One server-reflexive candidate can be discovered during the registration with the Control Relay Server from the REG_FROM parameter (and another from Data Relay Server if one is employed).

(中継を使わない)Responderに接続する前に、Initiatorはアドレス候補を収集する必要があります。2つのホストが互いに通信するための直接経路を見つける接続性チェックに、これらの候補を使います。Control Relay Serverへの登録時にREG_FROMパラメータから1つのserver-reflexive candidateを検出できます。Data Relay Serverを使う場合は、そこから別の候補も検出できます。

The candidate gathering can be done at any time, but it needs to be done before sending an I2 or R2 in the base exchange if ICE-HIP-UDP mode is to be used for the connectivity checks. It is RECOMMENDED that all three types of candidates (host, server reflexive, and relayed) are gathered to maximize the probability of successful NAT traversal. However, if no Data Relay Server is used, and the host has only a single local IP address to use, the host MAY use the local address as the only host candidate and the address from the REG_FROM parameter discovered during the Control Relay Server registration as a server-reflexive candidate. In this case, no further candidate gathering is needed.

候補はいつ収集してもかまいませんが、ICE-HIP-UDPモードで接続性チェックを行う場合は、基本交換でI2またはR2を送信する前に収集する必要があります。NAT越えの成功率を最大化するため、host、server-reflexive、relayedの3種類すべての候補を収集することが推奨されます (SHOULD)。ただし、Data Relay Serverを使わず、ホストが使用できるローカルIPアドレスが1つだけの場合、ローカルアドレスを唯一のhost candidateとして使い、Control Relay Serverへの登録時に得たREG_FROMパラメータのアドレスをserver-reflexive candidateとして使ってもよい (MAY)。この場合、追加の候補収集は不要です。

A Data Relay Client MAY register only a single relayed candidate that it uses with multiple other peers. However, it is RECOMMENDED that a Data Relay Client registers a new server relayed candidate for each of its peers for the reasons described in Section 4.12.3. The procedures for registering multiple relayed candidates are described in Section 4.1.

Data Relay Clientは、複数のピアに共用する中継候補を1つだけ登録してもかまいません (MAY)。ただし、セクション4.12.3で説明する理由から、ピアごとに新しいserver-reflexive candidateを登録することが推奨されます (SHOULD)。複数の中継候補を登録する手順はセクション4.1で説明します。

If a Relay Client has more than one network interface, it can discover additional server-reflexive candidates by sending UPDATE messages from each of its interfaces to the Relay Server. Each such UPDATE message MUST include the following parameters: the registration request (REG_REQ) parameter with Registration Type CANDIDATE_DISCOVERY (value 4) and the ECHO_REQUEST_SIGNED parameter. When a Control Relay Server receives an UPDATE message with registration request containing a CANDIDATE_DISCOVERY type, it MUST include a REG_FROM parameter, containing the same information as if this were a Control Relay Server registration, to the response (in addition to the mandatory ECHO_RESPONSE_SIGNED parameter). This request type SHOULD NOT create any state at the Control Relay Server.

Relay Clientに複数のネットワークインターフェイスがある場合、各インターフェイスからRelay ServerへUPDATEメッセージを送信することで、追加のserver-reflexive candidateを検出できます。各UPDATEには、登録タイプCANDIDATE_DISCOVERY(値4)のREG_REQパラメータとECHO_REQUEST_SIGNEDパラメータを含めなければなりません (MUST)。CANDIDATE_DISCOVERYタイプを含むREG_REQを受信したControl Relay Serverは、通常の登録時と同じ情報を持つREG_FROMパラメータを応答に含めなければなりません (MUST)。必須のECHO_RESPONSE_SIGNEDパラメータも含めます。この要求タイプによってControl Relay Serverに状態を作らないことが推奨されます (SHOULD NOT)。

The rules in Section 5.1.1 of [RFC8445] for candidate gathering are followed here. A number of host candidates (loopback, anycast and others) should be excluded as described in the ICE specification (Section 5.1.1.1 of [RFC8445]). Relayed candidates SHOULD be gathered in order to guarantee successful NAT traversal, and implementations SHOULD support this functionality even if it will not be used in deployments in order to enable it by software configuration update if needed at some point. Similarly, as explained in the ICE specification (Section 5.1.1.2 of [RFC8445]), if an IPv6-only host is in a network that utilizes NAT64 [RFC6146] and DNS64 [RFC6147] technologies, it may also gather IPv4 server-reflexive and/or relayed candidates from IPv4-only Control or Data Relay Servers. IPv6-only hosts SHOULD also utilize IPv6 prefix discovery [RFC7050] to discover the IPv6 prefix used by NAT64 (if any) and generate server-reflexive candidates for each IPv6-only interface, accordingly. The NAT64 server-reflexive candidates are prioritized like IPv4 server-reflexive candidates.

[RFC8445]のセクション5.1.1にある候補収集の規則に従います。ICE仕様([RFC8445]のセクション5.1.1.1)で説明されているように、ループバックやエニーキャストなどの一部のhost candidateは除外すべきです。NAT越えを確実に成功させるため、中継候補を収集すべきです (SHOULD)。また、必要になったときにソフトウェア設定の更新で有効にできるよう、導入時に使わない場合でも実装はこの機能をサポートすべきです (SHOULD)。同様に、ICE仕様([RFC8445]のセクション5.1.1.2)で説明されているように、NAT64 [RFC6146]およびDNS64 [RFC6147]を使うネットワークにあるIPv6専用ホストは、IPv4専用のControl Relay ServerまたはData Relay ServerからIPv4のserver-reflexive candidateやrelayed candidateを収集することもできます。IPv6専用ホストはIPv6 Prefix Discovery [RFC7050]も利用して、NAT64が使用するIPv6プレフィックス(存在する場合)を検出し、各IPv6専用インターフェイスについて対応するserver-reflexive candidateを生成すべきです (SHOULD)。NAT64のserver-reflexive candidateは、IPv4のserver-reflexive candidateと同様に優先順位を付けます。

HIP-based connectivity can be utilized by IPv4 applications using Local Scope Identifiers (LSIs) and by IPv6-based applications using HITs. The LSIs and HITs of the local virtual interfaces MUST be excluded in the candidate gathering phase as well to avoid creating unnecessary loopback connectivity tests.

HIPベースの接続性は、Local Scope Identifier(LSI)を使うIPv4アプリケーションや、HITを使うIPv6アプリケーションから利用できます。不要なループバック接続性テストを避けるため、候補収集時にはローカル仮想インターフェイスのLSIとHITも除外しなければなりません (MUST)。

Gathering of candidates MAY also be performed by other means than described in this section. For example, the candidates could be gathered as specified in Section 4.2 of [RFC5770] if STUN servers are available, or if the host has just a single interface and no STUN or Data Relay Server are available.

このセクションで説明した方法以外の手段で候補を収集してもよい (MAY)。たとえば、STUNサーバを利用できる場合や、ホストにインターフェイスが1つしかなくSTUNサーバもData Relay Serverも利用できない場合は、[RFC5770]のセクション4.2で規定する方法で候補を収集できます。

Each local address candidate MUST be assigned a priority. The following recommended formula (as described in [RFC8445]) SHOULD be used:

各ローカルアドレス候補には優先度を割り当てなければなりません (MUST)。次の推奨式([RFC8445]で説明)を使うべきです (SHOULD)。

      priority = (2^24)*(type preference) + (2^8)*(local preference) +
      (2^0)*(256 - component ID)
        

In the formula, the type preference follows the ICE specification (as defined in Section 5.1.2.1 of [RFC8445]): the RECOMMENDED values are 126 for host candidates, 100 for server-reflexive candidates, 110 for peer-reflexive candidates, and 0 for relayed candidates. The highest value is 126 (the most preferred) and lowest is 0 (last resort). For all candidates of the same type, the preference type value MUST be identical, and, correspondingly, the value MUST be different for different types. For peer-reflexive values, the type preference value MUST be higher than for server-reflexive types. It should be noted that peer-reflexive values are learned later during connectivity checks.

この式において、タイプの優先度はICE仕様([RFC8445] のセクション5.1.2.1で定義)に従います。推奨される (RECOMMENDED) 値は、ホスト候補が126、サーバリフレクシブ候補が100、ピアリフレクシブ候補が110、リレー候補が0です。最も高い値は126(最も優先される)、最も低い値は0(最後の手段)です。同じタイプのすべての候補について、優先度タイプの値は同一でなければならず (MUST)、それに対応して、異なるタイプでは値が異ならなければなりません (MUST)。ピアリフレクシブの値については、タイプの優先度の値はサーバリフレクシブのタイプよりも高くなければなりません (MUST)。ピアリフレクシブの値は、接続性チェックの間に後から学習されることに注意してください。

Following the ICE specification, the local preference MUST be an integer from 0 (lowest preference) to 65535 (highest preference) inclusive. In the case the host has only a single address candidate, the value SHOULD be 65535. In the case of multiple candidates, each local preference value MUST be unique. Dual-stack considerations for IPv6 also apply here as defined in Section 5.1.2.2 of [RFC8445].

ICE仕様に従い、local preferenceは0(最低)から65535(最高)までの整数でなければなりません (MUST)。ホストのアドレス候補が1つだけの場合、その値は65535にすべきです (SHOULD)。候補が複数ある場合、各local preferenceの値は一意でなければなりません (MUST)。IPv6のデュアルスタックに関する考慮事項も、[RFC8445]のセクション5.1.2.2に従って適用されます。

Unlike with SDP used in conjunction with ICE, this protocol only creates a single UDP flow between the two communicating hosts, so only a single component exists. Hence, the component ID value MUST always be set to 1.

SDPとは異なり、ICEと組み合わせて使用されるこのプロトコルは、2つの通信ホスト間の単一のUDPフローのみを作成するため、単一のコンポーネントのみが存在します。したがって、コンポーネントID値は常に1に設定されていなければなりません (MUST)。

As defined in Section 14.3 of [RFC8445], the retransmission timeout (RTO) for address gathering from a Control/Data Relay Server SHOULD be calculated as follows:

[RFC8445]のセクション14.3で定義されているように、コントロール/データリレーサーバーからのアドレス収集のための再送信タイムアウト(RTO)は次のように計算されるべきです (SHOULD)。

RTO = MAX (1000 ms, Ta * (Num-Of-Cands))

RTO = MAX(1000ミリ秒、*※カード数))

where Ta is the value used for the connectivity check pacing and Num-Of-Cands is the number of server-reflexive and relay candidates. A smaller value than 1000 ms for the RTO MUST NOT be used.

ここでTaは接続性チェックの送信間隔に使う値、Num-Of-Candsはserver-reflexive candidateと中継候補の数です。RTOに1000 ms未満の値を使ってはなりません (MUST NOT)。

4.3. NAT Traversal Mode Negotiation
4.3. NATトラバーサルモードネゴシエーション

This section describes the usage of a non-critical parameter type called NAT_TRAVERSAL_MODE with a new mode called ICE-HIP-UDP. The presence of the new mode in the NAT_TRAVERSAL_MODE parameter in a HIP base exchange means that the end host supports NAT traversal extensions described in this document. As the parameter is non-critical (as defined in Section 5.2.1 of [RFC7401]), it can be ignored by an end host, which means that the host is not required to support it or may decline to use it.

このセクションでは、ICE-HIP-UDPという新しいモードを持つ、NAT_TRAVERSAL_MODEという非クリティカルなパラメータ型の使い方を説明します。HIP基本交換のNAT_TRAVERSAL_MODEパラメータに新しいモードが含まれていることは、エンドホストが本書のNAT越え拡張をサポートしていることを示します。このパラメータは非クリティカル([RFC7401]のセクション5.2.1で定義)なので、エンドホストは無視できます。つまり、ホストはこのパラメータをサポートする必要はなく、使用を拒否してもかまいません。

With registration with a Control/Data Relay Server, it is usually sufficient to use the UDP-ENCAPSULATION mode of NAT traversal since the Relay Server is assumed to be in public address space. Thus, the Relay Server SHOULD propose the UDP-ENCAPSULATION mode as the preferred or only mode. The NAT traversal mode negotiation in a HIP base exchange is illustrated in Figure 3. It is worth noting that the Relay Server could be located between the hosts, but is omitted here for simplicity.

Control/Data Relay Serverに登録する場合、Relay Serverはパブリックアドレス空間にあると想定されるため、通常はNAT越えモードとしてUDP-ENCAPSULATIONを使えば十分です。そのため、Relay ServerはUDP-ENCAPSULATIONを優先モードまたは唯一のモードとして提示すべきです (SHOULD)。HIP基本交換でのNAT越えモードのネゴシエーションを図3に示します。簡略化のため図では省略していますが、Relay Serverはホスト間に位置する場合があります。

   Initiator                                                  Responder
   | 1. UDP(I1)                                                       |
   +----------------------------------------------------------------->|
   |                                                                  |
   | 2. UDP(R1(.., NAT_TRAVERSAL_MODE(ICE-HIP-UDP), ..))              |
   |<-----------------------------------------------------------------+
   |                                                                  |
   | 3. UDP(I2(.., NAT_TRAVERSAL_MODE(ICE-HIP-UDP), ENC(LOC_SET), ..))|
   +----------------------------------------------------------------->|
   |                                                                  |
   | 4. UDP(R2(.., ENC(LOC_SET), ..))                                 |
   |<-----------------------------------------------------------------+
   |                                                                  |
        

Figure 3: Negotiation of NAT Traversal Mode

図3:NATトラバーサルモードの交渉

In step 1, the Initiator sends an I1 to the Responder.

ステップ1において、イニシエータはI1をレスポンダに送信する。

In step 2, the Responder responds with an R1. As specified in [RFC5770], the NAT_TRAVERSAL_MODE parameter in R1 contains a list of NAT traversal modes the Responder supports. The mode specified in this document is ICE-HIP-UDP (value 3).

ステップ2ではResponderがR1で応答します。[RFC5770]の規定に従い、R1のNAT_TRAVERSAL_MODEパラメータにはResponderがサポートするNAT越えモードの一覧が含まれます。本書が規定するモードはICE-HIP-UDP(値3)です。

In step 3, the Initiator sends an I2 that includes a NAT_TRAVERSAL_MODE parameter. It contains the mode selected by the Initiator from the list of modes offered by the Responder. If ICE-HIP-UDP mode was selected, the I2 also includes the "Transport address" locators (as defined in Section 5.7) of the Initiator in a LOCATOR_SET parameter (denoted here with LOC_SET). With ICE-HIP-UDP mode, the LOCATOR_SET parameter MUST be encapsulated within an ENCRYPTED parameter (denoted here with ENC) according to the procedures in Sections 5.2.18 and 6.5 in [RFC7401]. The locators in I2 are the "HIP offer".

ステップ3では、InitiatorがNAT_TRAVERSAL_MODEパラメータを含むI2を送信します。このパラメータには、Responderが提示したモード一覧からInitiatorが選んだモードが含まれます。ICE-HIP-UDPモードを選んだ場合、I2にはInitiatorの「Transport address」ロケータ(セクション5.7で定義)を列挙するLOCATOR_SETパラメータ(図ではLOC_SETと表記)も含まれます。ICE-HIP-UDPモードでは、[RFC7401]のセクション5.2.18および6.5の手順に従い、LOCATOR_SETパラメータをENCRYPTEDパラメータ(図ではENCと表記)の中にカプセル化しなければなりません (MUST)。I2に含まれるロケータが「HIP offer」です。

In step 4, the Responder concludes the base exchange with an R2 packet. If the Initiator chose ICE-HIP-UDP traversal mode, the Responder includes a LOCATOR_SET parameter in the R2 packet. With ICE-HIP-UDP mode, the LOCATOR_SET parameter MUST be encapsulated within an ENCRYPTED parameter according to the procedures in Sections 5.2.18 and 6.5 in [RFC7401]. The locators in R2, encoded like the locators in I2, are the "ICE answer". If the NAT traversal mode selected by the Initiator is not supported by the Responder, the Responder SHOULD reply with a NOTIFY packet with type NO_VALID_NAT_TRAVERSAL_MODE_PARAMETER and abort the base exchange.

ステップ4では、ResponderがR2パケットで基本交換を完了します。InitiatorがICE-HIP-UDPモードを選んだ場合、ResponderはR2にLOCATOR_SETパラメータを含めます。ICE-HIP-UDPモードでは、[RFC7401]のセクション5.2.18および6.5の手順に従ってLOCATOR_SETをENCRYPTEDパラメータ内にカプセル化しなければなりません (MUST)。I2内のロケータと同様に符号化したR2内のロケータが「ICE answer」です。Initiatorが選んだNAT越えモードにResponderが対応していない場合、ResponderはNO_VALID_NAT_TRAVERSAL_MODE_PARAMETERタイプのNOTIFYパケットで応答し、基本交換を中止すべきです (SHOULD)。

4.4. Connectivity Check Pacing Negotiation
4.4. 接続性チェックの送信間隔のネゴシエーション

As explained in Legacy ICE-HIP [RFC5770], when a NAT traversal mode with connectivity checks is used, new transactions should not be started too fast to avoid congestion and overwhelming the NATs. For this purpose, during the base exchange, hosts can negotiate a transaction pacing value, Ta, using a TRANSACTION_PACING parameter in R1 and I2 packets. The parameter contains the minimum time (expressed in milliseconds) the host would wait between two NAT traversal transactions, such as starting a new connectivity check or retrying a previous check. The value that is used by both of the hosts is the higher of the two offered values.

Legacy ICE-HIP [RFC5770]で説明されているように、接続性チェックを使うNAT越えモードでは、輻輳やNATへの過負荷を避けるため、新しいトランザクションを開始する間隔を十分に空ける必要があります。このため、基本交換中にホストはR1およびI2パケットのTRANSACTION_PACINGパラメータを使って、トランザクション送信間隔Taをネゴシエートできます。このパラメータには、新しい接続性チェックの開始や前回のチェックの再試行など、NAT越えトランザクション間でホストが待つ最小時間をミリ秒単位で指定します。両ホストが使う値には、提示された2つの値のうち大きい方を使います。

The minimum Ta value SHOULD be configurable, and if no value is configured, a value of 50 ms MUST be used. Guidelines for selecting a Ta value are given in Appendix A. Hosts MUST NOT use values smaller than 5 ms for the minimum Ta, since such values may not work well with some NATs (as explained in [RFC8445]). The Initiator MUST NOT propose a smaller value than what the Responder offered. If a host does not include the TRANSACTION_PACING parameter in the base exchange, a Ta value of 50 ms MUST be used as that host's minimum value.

最小Ta値は設定可能にすべきです (SHOULD)。値が設定されていない場合は50 msを使わなければなりません (MUST)。Ta値の選び方は付録Aに示します。値が一部のNATで適切に機能しない可能性があるため、ホストは最小Ta値に5 ms未満を使ってはなりません (MUST NOT) [RFC8445]。InitiatorはResponderが提示した値より小さい値を提示してはなりません (MUST NOT)。ホストが基本交換でTRANSACTION_PACINGパラメータを送らなかった場合、そのホストの最小値としてTaに50 msを使わなければなりません (MUST)。

4.5. Base Exchange via Control Relay Server
4.5. Control Relay Serverを介した基本交換

This section describes how the Initiator and Responder perform a base exchange through a Control Relay Server. Connectivity pacing (denoted as TA_P here) was described in Section 4.4 and is not repeated here. Similarly, the NAT traversal mode negotiation process (denoted as NAT_TM in the example) was described in Section 4.3 and is also not repeated here. If a Control Relay Server receives an R1 or I2 packet without the NAT traversal mode parameter, it MUST drop it and SHOULD send a NOTIFY error packet with type NO_VALID_NAT_TRAVERSAL_MODE_PARAMETER to the sender of the R1 or I2.

このセクションでは、InitiatorとResponderがControl Relay Server経由で基本交換を行う方法を説明します。接続性チェックの送信間隔(ここではTA_Pと表記)はセクション4.4で説明したため、ここでは繰り返しません。同様に、NAT越えモードのネゴシエーション(例ではNAT_TMと表記)はセクション4.3で説明したため、ここでは繰り返しません。Control Relay ServerがNAT_TRAVERSAL_MODEパラメータのないR1またはI2を受信した場合、そのパケットを破棄しなければならず (MUST)、R1またはI2の送信者にタイプNO_VALID_NAT_TRAVERSAL_MODE_PARAMETERのNOTIFYエラーパケットを送るべきです (SHOULD)。

It is RECOMMENDED that the Initiator send an I1 packet encapsulated in UDP when it is destined to an IP address of the Responder. Respectively, the Responder MUST respond to such an I1 packet with a UDP-encapsulated R1 packet, and also the rest of the communication related to the HIP association MUST also use UDP encapsulation.

ResponderのIPアドレス宛てのI1は、UDPにカプセル化して送信することが推奨されます (SHOULD)。Responderは、そのようなI1にUDPカプセル化されたR1で応答しなければならず (MUST)、その後のHIPアソシエーションに関連する通信もすべてUDPカプセル化を使わなければなりません (MUST)。

Figure 4 illustrates a base exchange via a Control Relay Server. We assume that the Responder (i.e., a Control Relay Client) has already registered to the Control Relay Server. The Initiator may have also registered to another (or the same Control Relay Server), but the base exchange will traverse always through the Control Relay Server of the Responder.

図4は、制御中継サーバを介した基本交換を示している。レスポンダ(すなわち、制御リレークライアント)がすでに制御リレーサーバに登録されていると仮定する。イニシエータは他の(または同じ制御中継サーバ)にも登録されている可能性がありますが、ベース交換はレスポンダのControl Relayサーバーを常にトラバースします。

   Initiator                  Control Relay Server             Responder
   | 1. UDP(I1)                       |                                |
   +--------------------------------->| 2. UDP(I1(RELAY_FROM))         |
   |                                  +------------------------------->|
   |                                  |                                |
   |                                  | 3. UDP(R1(RELAY_TO, NAT_TM,    |
   |                                  |        TA_P))                  |
   | 4. UDP(R1(RELAY_TO, NAT_TM,      |<-------------------------------+
   |        TA_P))                    |                                |
   |<---------------------------------+                                |
   |                                  |                                |
   | 5. UDP(I2(ENC(LOC_SET)),         |                                |
   |        NAT_TM, TA_P))            |                                |
   +--------------------------------->| 6. UDP(I2(ENC(LOC_SET),        |
   |                                  |      RELAY_FROM, NAT_TM, TA_P))|
   |                                  +------------------------------->|
   |                                  |                                |
   |                                  | 7. UDP(R2(ENC(LOC_SET),        |
   | 8. UDP(R2(ENC(LOC_SET),          |        RELAY_TO))              |
   |        RELAY_TO))                |<-------------------------------+
   |<---------------------------------+                                |
   |                                  |                                |
        

Figure 4: Base Exchange via a HIP Relay Server

図4:HIPリレーサーバーを介した基本交換

In step 1 of Figure 4, the Initiator sends an I1 packet over UDP via the Control Relay Server to the Responder. In the HIP header, the source HIT belongs to the Initiator and the destination HIT to the Responder. The Initiator sends the I1 packet from its IP address to the IP address of the Control Relay Server over UDP.

図4のステップ1では、InitiatorがUDPでI1パケットをControl Relay Server経由でResponderに送信します。HIPヘッダーの送信元HITはInitiatorのもので、宛先HITはResponderのものです。Initiatorは、自身のIPアドレスからControl Relay ServerのIPアドレス宛てに、UDPでI1パケットを送信します。

In step 2, the Control Relay Server receives the I1 packet. If the destination HIT belongs to a successfully registered Control Relay Client (i.e., the host marked "Responder" in Figure 4), the Control Relay Server processes the packet. Otherwise, the Control Relay Server MUST drop the packet silently. The Control Relay Server appends a RELAY_FROM parameter to the I1 packet, which contains the transport source address and port of the I1 as observed by the Control Relay Server. The Control Relay Server protects the I1 packet with RELAY_HMAC, except that the parameter type is different as described in Section 5.8. The Control Relay Server changes the source and destination ports and IP addresses of the packet to match the values the Responder used when registering to the Control Relay Server, i.e., the reverse of the R2 used in the registration. The Control Relay Server MUST recalculate the transport checksum and forward the packet to the Responder.

ステップ2では、Control Relay ServerがI1パケットを受信します。宛先HITが登録に成功したControl Relay Client(図4で「Responder」と示すホスト)のものであれば、パケットを処理します。それ以外の場合、パケットを通知せずに破棄しなければなりません (MUST)。Control Relay ServerはRELAY_FROMパラメータをI1に追加します。このパラメータには、Control Relay Serverから見たI1の送信元トランスポートアドレスとポートが含まれます。次に、セクション5.8で説明する別のパラメータ型を使ってRELAY_HMACでI1を保護します。Control Relay Serverは、Responderが登録に使ったアドレスとポート(登録時のR2の逆方向)に一致するよう、パケットの送信元・宛先IPアドレスとポートを変更します。最後に、トランスポートチェックサムを再計算してパケットをResponderに転送しなければなりません (MUST)。

In step 3, the Responder receives the I1 packet. The Responder processes it according to the rules in [RFC7401]. In addition, the Responder validates the RELAY_HMAC according to Section 5.8 and silently drops the packet if the validation fails. The Responder replies with an R1 packet to which it includes RELAY_TO and NAT traversal mode parameters. The Responder MUST include ICE-HIP-UDP in the NAT traversal modes. The RELAY_TO parameter MUST contain the same information as the RELAY_FROM parameter, i.e., the Initiator's transport address, but the type of the parameter is different. The RELAY_TO parameter is not integrity protected by the signature of the R1 to allow pre-created R1 packets at the Responder.

ステップ3では、ResponderがI1を受信し、[RFC7401]の規則に従って処理します。さらに、セクション5.8に従ってRELAY_HMACを検証し、検証に失敗した場合はパケットを通知せずに破棄します。ResponderはRELAY_TOおよびNAT越えモードのパラメータを含むR1で応答します。NAT越えモードにはICE-HIP-UDPを含めなければなりません (MUST)。RELAY_TOパラメータにはRELAY_FROMと同じ情報、すなわちInitiatorのトランスポートアドレスを含めなければなりません (MUST)。ただし、パラメータ型は異なります。ResponderがR1を事前作成できるようにするため、RELAY_TOパラメータはR1の署名による完全性保護の対象外です。

In step 4, the Control Relay Server receives the R1 packet. The Control Relay Server drops the packet silently if the source HIT belongs to a Control Relay Client that has not successfully registered. The Control Relay Server MAY verify the signature of the R1 packet and drop it if the signature is invalid. Otherwise, the Control Relay Server rewrites the source address and port, and changes the destination address and port to match RELAY_TO information. Finally, the Control Relay Server recalculates the transport checksum and forwards the packet.

ステップ4では、Control Relay ServerがR1を受信します。送信元HITが登録に成功していないControl Relay Clientのものである場合、パケットを通知せずに破棄します。Control Relay ServerはR1の署名を検証してもよく (MAY)、署名が無効ならパケットを破棄できます。それ以外の場合、送信元アドレスとポートを書き換え、宛先アドレスとポートをRELAY_TOの情報に合わせます。最後に、トランスポートチェックサムを再計算してパケットを転送します。

In step 5, the Initiator receives the R1 packet and processes it according to [RFC7401]. The Initiator MAY use the address in the RELAY_TO parameter as a local peer-reflexive candidate for this HIP association if it is different from all known local candidates. The Initiator replies with an I2 packet that uses the destination transport address of R1 as the source address and port. The I2 packet contains a LOCATOR_SET parameter inside an ENCRYPTED parameter that lists all the HIP candidates (HIP offer) of the Initiator. The candidates are encoded using the format defined in Section 5.7. The I2 packet MUST also contain a NAT traversal mode parameter that includes ICE-HIP-UDP mode. The ENCRYPTED parameter along with its key material generation is described in detail in Sections 5.2.18 and 6.5 in [RFC7401].

ステップ5では、InitiatorがR1を受信し、[RFC7401]に従って処理します。既知のローカル候補と異なる場合、InitiatorはRELAY_TOパラメータ内のアドレスを、このHIPアソシエーションのローカルpeer-reflexive candidateとして使ってもかまいません (MAY)。Initiatorは、R1の宛先トランスポートアドレスを送信元アドレスおよびポートとして使ってI2で応答します。I2には、InitiatorのHIP候補(HIP offer)をすべて列挙したLOCATOR_SETパラメータをENCRYPTEDパラメータ内に含めます。候補はセクション5.7で定義する形式で符号化します。I2にはICE-HIP-UDPモードを含むNAT_TRAVERSAL_MODEパラメータも含めなければなりません (MUST)。ENCRYPTEDパラメータとその鍵素材の生成については、[RFC7401]のセクション5.2.18および6.5で詳しく説明しています。

In step 6, the Control Relay Server receives the I2 packet. The Control Relay Server appends a RELAY_FROM and a RELAY_HMAC to the I2 packet similar to that explained in step 2, and forwards the packet to the Responder.

ステップ6において、制御リレーサーバはI2パケットを受信する。制御リレーサーバは、ステップ2で説明したものと同様に、RELAY_FROMとRELAY_HMACをI2パケットに追加し、パケットをレスポンダに転送する。

In step 7, the Responder receives the I2 packet and processes it according to [RFC7401]. The Responder validates the RELAY_HMAC according to Section 5.8 and silently drops the packet if the validation fails. It replies with an R2 packet and includes a RELAY_TO parameter as explained in step 3. The R2 packet includes a LOCATOR_SET parameter inside an ENCRYPTED parameter that lists all the HIP candidates (ICE answer) of the Responder. The RELAY_TO parameter is protected by the Hashed Message Authentication Code (HMAC). The ENCRYPTED parameter along with its key material generation is described in detail in Sections 5.2.18 and 6.5 in [RFC7401].

ステップ7では、ResponderがI2を受信し、[RFC7401]に従って処理します。セクション5.8に従ってRELAY_HMACを検証し、検証に失敗した場合はパケットを通知せずに破棄します。ステップ3で説明したRELAY_TOパラメータを含めてR2で応答します。R2には、ResponderのすべてのHIP候補(ICE answer)を列挙するLOCATOR_SETパラメータをENCRYPTEDパラメータ内に含めます。RELAY_TOパラメータはHashed Message Authentication Code(HMAC)で保護します。ENCRYPTEDパラメータとその鍵素材の生成については、[RFC7401]のセクション5.2.18および6.5で詳しく説明しています。

In step 8, the Control Relay Server processes the R2 as described in step 4. The Control Relay Server forwards the packet to the Initiator. After the Initiator has received the R2 and processed it successfully, the base exchange is completed.

ステップ8では、Control Relay Serverがステップ4の説明と同じ方法でR2を処理し、Initiatorに転送します。InitiatorがR2を受信して正常に処理すると、基本交換は完了します。

Hosts MUST include the address of one or more Control Relay Servers (including the one that is being used for the initial signaling) in the LOCATOR_SET parameter in I2 and R2 messages if they intend to use such servers for relaying HIP signaling immediately after the base exchange completes. The traffic type of these addresses MUST be "HIP signaling" (see Section 5.7) and they MUST NOT be used for the connectivity tests described in Section 4.6. If the Control Relay Server locator used for relaying the base exchange is not included in I2 or R2 LOCATOR_SET parameters, it SHOULD NOT be used after the base exchange. Instead, further HIP signaling SHOULD use the same path as the data traffic. It is RECOMMENDED to use the same Control Relay Server throughout the lifetime of the host association that was used for forwarding the base exchange if the Responder includes it in the locator parameter of the R2 message.

基本交換の直後からHIPシグナリングの中継に使う場合、ホストはI2およびR2のLOCATOR_SETパラメータに、1つ以上のControl Relay Serverのアドレス(初期シグナリングに使用したサーバを含む)を指定しなければなりません (MUST)。これらのアドレスのトラフィックタイプは「HIP signaling」でなければならず (MUST)(セクション5.7参照)、セクション4.6で説明する接続性テストには使用してはなりません (MUST NOT)。基本交換の中継に使ったControl Relay ServerのロケータがI2またはR2のLOCATOR_SETに含まれていない場合、基本交換後にそのサーバを使うべきではありません (SHOULD NOT)。代わりに、後続のHIPシグナリングにはデータトラフィックと同じ経路を使うべきです (SHOULD)。ResponderがR2のロケータパラメータにそのサーバを含めている場合、基本交換を転送したものと同じControl Relay Serverをホストアソシエーションの存続期間中に使うことが推奨されます (SHOULD)。

4.6. Connectivity Checks
4.6. 接続チェック

When the Initiator and Responder complete the base exchange through the Control Relay Server, both of them employ the IP address of the Control Relay Server as the destination address for the packets. The address of the Control Relay Server MUST NOT be used as a destination for data plane traffic unless the server also supports Data Relay Server functionality, and the Client has successfully registered to use it. When NAT traversal mode with ICE-HIP-UDP was successfully negotiated and selected, the Initiator and Responder MUST start the connectivity checks in order to attempt to obtain direct end-to-end connectivity through NAT devices. It is worth noting that the connectivity checks MUST be completed even though no ESP_TRANSFORM would be negotiated and selected.

InitiatorとResponderがControl Relay Server経由で基本交換を完了すると、両者はパケットの宛先アドレスとしてそのControl Relay ServerのIPアドレスを使います。サーバがData Relay Serverの機能も備え、クライアントがその利用登録を済ませている場合を除き、Control Relay Serverのアドレスをデータプレーントラフィックの宛先に使ってはなりません (MUST NOT)。ICE-HIP-UDPを使うNAT越えモードのネゴシエーションと選択に成功した場合、NATデバイスを越えた直接のエンドツーエンド接続を試みるため、InitiatorとResponderは接続性チェックを開始しなければなりません (MUST)。ESP_TRANSFORMがネゴシエート・選択されない場合でも、接続性チェックを完了しなければなりません (MUST)。

The connectivity checks follow the ICE methodology [ICE-NONSIP], but UDP-encapsulated HIP control messages are used instead of ICE messages. As stated in the ICE specification, the basic procedure for connectivity checks has three phases: sorting the candidate pairs according to their priority, sending checks in the prioritized order, and acknowledging the checks from the peer host.

接続性チェックはICEの方法論[ICE-NONSIP]に従いますが、ICEメッセージの代わりにUDPカプセル化したHIP制御メッセージを使います。ICE仕様によると、接続性チェックの基本手順は3段階です。候補ペアを優先度順に並べ、優先順にチェックを送信し、ピアホストからのチェックへの応答を確認します。

The Initiator MUST take the role of controlling host, and the Responder acts as the controlled host. The roles MUST persist throughout the HIP associate lifetime (to be reused even during mobility UPDATE procedures). In the case in which both communicating nodes are initiating communication to each other using an I1 packet, the conflict is resolved as defined in Section 6.7 of [RFC7401]; the host with the "larger" HIT changes its role to Responder. In such a case, the host changing its role to Responder MUST also switch to the controlled role.

Initiatorはcontrolling hostの役割を担わなければならず (MUST)、Responderはcontrolled hostとして動作します。これらの役割はHIPアソシエーションの存続期間中維持しなければなりません (MUST)。モビリティに伴うUPDATE手順でも同じ役割を使います。両方の通信ノードがI1で互いに通信を開始した場合、[RFC7401]のセクション6.7に従って競合を解決し、「大きい」HITを持つホストがResponderの役割に移ります。その場合、Responderに役割を変えるホストはcontrolledの役割にも切り替わらなければなりません (MUST)。

The protocol follows standard HIP UPDATE sending and processing rules as defined in Sections 6.11 and 6.12 in [RFC7401], but some new parameters are introduced (CANDIDATE_PRIORITY, MAPPED_ADDRESS, NOMINATE, PEER_PERMISSION, and RELAYED_ADDRESS).

このプロトコルは、[RFC7401]のセクション6.11および6.12で定義される標準的なHIP UPDATEの送信・処理規則に従いますが、新たにCANDIDATE_PRIORITY、MAPPED_ADDRESS、NOMINATE、PEER_PERMISSIONおよびRELAYED_ADDRESSパラメータを導入します。

4.6.1. Connectivity Check Procedure
4.6.1. 接続性チェック手順

Figure 5 illustrates connectivity checks in a simplified scenario where the Initiator and Responder have only a single candidate pair to check. Typically, NATs drop messages until both sides have sent messages using the same port pair. In this scenario, the Responder sends a connectivity check first but the NAT of the Initiator drops it. However, the connectivity check from the Initiator reaches the Responder because it uses the same port pair as the first message. It is worth noting that the message flow in this section is idealistic, and, in practice, more messages would be dropped, especially in the beginning. For instance, connectivity tests always start with the candidates with the highest priority, which would be host candidates (which would not reach the recipient in this scenario).

図5は、InitiatorとResponderがチェック対象の候補ペアを1組だけ持つ単純化したシナリオで、接続性チェックの動作を示します。通常、両側が同じポートペアを使ってメッセージを送信するまで、NATはメッセージを破棄します。この例では、Responderが先に接続性チェックを送信しますが、Initiator側のNATが破棄します。一方、Initiatorからのチェックは最初のメッセージと同じポートペアを使うためResponderに届きます。この節のメッセージフローは理想化した例です。実際には、特に開始直後に、より多くのメッセージが破棄されるでしょう。たとえば、接続性テストは最も優先度の高い候補、つまりこの例では相手に届かないhost candidateから常に開始します。

   Initiator  NAT1                                 NAT2        Responder
   |             | 1. UDP(UPDATE(SEQ, CAND_PRIO,      |                |
   |             |        ECHO_REQ_SIGN))             |                |
   |             X<-----------------------------------+----------------+
   |             |                                    |                |
   | 2. UDP(UPDATE(SEQ, ECHO_REQ_SIGN, CAND_PRIO))    |                |
   +-------------+------------------------------------+--------------->|
   |             |                                    |                |
   | 3. UDP(UPDATE(ACK, ECHO_RESP_SIGN, MAPPED_ADDR)) |                |
   |<------------+------------------------------------+----------------+
   |             |                                    |                |
   | 4. UDP(UPDATE(SEQ, ECHO_REQ_SIGN, CAND_PRIO))    |                |
   |<------------+------------------------------------+----------------+
   |             |                                    |                |
   | 5. UDP(UPDATE(ACK, ECHO_RESP_SIGN, MAPPED_ADDR)) |                |
   +-------------+------------------------------------+--------------->|
   |             |                                    |                |
   | 6. Other connectivity checks using UPDATE over UDP                |
   |<------------+------------------------------------+---------------->
   |             |                                    |                |
   | 7. UDP(UPDATE(SEQ, ECHO_REQ_SIGN, CAND_PRIO, NOMINATE))           |
   +-------------+------------------------------------+--------------->|
   |             |                                    |                |
   | 8. UDP(UPDATE(SEQ, ACK, ECHO_REQ_SIGN, ECHO_RESP_SIGN,            |
   |           NOMINATE))                             |                |
   |<------------+------------------------------------+----------------+
   |             |                                    |                |
   | 9. UDP(UPDATE(ACK, ECHO_RESP_SIGN))              |                |
   +-------------+------------------------------------+--------------->+
   |             |                                    |                |
   | 10. ESP data traffic over UDP                     |               |
   +<------------+------------------------------------+--------------->+
   |             |                                    |                |
        

Figure 5: Connectivity Checks

図5:接続チェック

In step 1, the Responder sends a connectivity check to the Initiator that the NAT of the Initiator drops. The message includes a number of parameters. As specified in [RFC7401], the SEQ parameter includes a running sequence identifier for the connectivity check. The candidate priority (denoted CAND_PRIO in the figure) describes the priority of the address candidate being tested. The ECHO_REQUEST_SIGNED (denoted ECHO_REQ_SIGN in the figure) includes a nonce that the recipient must sign and echo back as it is.

ステップ1では、ResponderがInitiatorに接続性チェックを送信しますが、Initiator側のNATがこれを破棄します。このメッセージには複数のパラメータが含まれます。[RFC7401]で規定されているとおり、SEQパラメータは接続性チェックの連番を示します。図でCAND_PRIOと表記する候補優先度は、テスト対象のアドレス候補の優先度を示します。ECHO_REQUEST_SIGNED(図ではECHO_REQ_SIGN)はnonceを含み、受信側はこれに署名して変更せずにエコーバックします。

In step 2, the Initiator sends a connectivity check, using the same address pair candidate as in the previous step, and the message successfully traverses the NAT boxes. The message includes the same parameters as in the previous step. It should be noted that the sequence identifier is locally assigned by the Initiator, so it can be different than in the previous step.

ステップ2において、イニシエータは前のステップと同じアドレスペア候補を使用して接続性チェックを送信し、メッセージはNATボックスを正常に通過する。メッセージは前のステップと同じパラメータを含む。シーケンス識別子は開始者によってローカルに割り当てられているので、前のステップとは異なる可能性があることに留意されたい。

In step 3, the Responder has successfully received the previous connectivity check from the Initiator and starts to build a response message. Since the message from the Initiator included a SEQ, the Responder must acknowledge it using an ACK parameter. Also, the nonce contained in the echo request must be echoed back in an ECHO_RESPONSE_SIGNED (denoted ECHO_RESP_SIGN) parameter. The Responder also includes a MAPPED_ADDRESS parameter (denoted MAPPED_ADDR in the figure) that contains the transport address of the Initiator as observed by the Responder (i.e., peer-reflexive candidate). This message is successfully delivered to the Initiator; upon reception, the Initiator marks the candidate pair as valid.

ステップ3では、ResponderがInitiatorからの接続性チェックを受信し、応答メッセージを作成します。InitiatorのメッセージにSEQが含まれているため、ResponderはACKパラメータで確認応答します。また、エコー要求内のnonceをECHO_RESPONSE_SIGNEDパラメータ(図ではECHO_RESP_SIGN)に入れて返します。さらに、Responderから見たInitiatorのトランスポートアドレス、すなわちpeer-reflexive candidateを含むMAPPED_ADDRESSパラメータ(図ではMAPPED_ADDR)も含めます。このメッセージがInitiatorに届くと、Initiatorは候補ペアを有効とします。

In step 4, the Responder retransmits the connectivity check sent in the first step, since it was not acknowledged yet.

ステップ4では、最初のステップで送った接続性チェックへの確認応答をまだ受け取っていないため、Responderはそのチェックを再送します。

In step 5, the Initiator responds to the previous connectivity check message from the Responder. The Initiator acknowledges the SEQ parameter from the previous message using an ACK parameter and the ECHO_REQUEST_SIGNED parameter with ECHO_RESPONSE_SIGNED. In addition, it includes the MAPPED_ADDR parameter that includes the peer-reflexive candidate. This response message is successfully delivered to the Responder; upon reception, the Initiator marks the candidate pair as valid.

ステップ5では、InitiatorがResponderからの接続性チェックに応答します。ACKパラメータで先のメッセージのSEQを確認し、ECHO_RESPONSE_SIGNEDでそのメッセージのECHO_REQUEST_SIGNEDに応答します。さらに、peer-reflexive candidateを含むMAPPED_ADDRパラメータを加えます。この応答がResponderに届くと、Responderは候補ペアを有効とします。

In step 6, despite the two hosts now having valid address candidates, the hosts still test the remaining address candidates in a similar way as in the previous steps. It should be noted that each connectivity check has a unique sequence number in the SEQ parameter.

ステップ6では、両ホストがすでに有効なアドレス候補を得ていても、前のステップと同様に残りの候補を引き続きテストします。各接続性チェックのSEQパラメータには一意のシーケンス番号が入ります。

In step 7, the Initiator has completed testing all address candidates and nominates one address candidate to be used. It sends an UPDATE message using the selected address candidates that includes a number of parameters: SEQ, ECHO_REQUEST_SIGNED, CANDIDATE_PRIORITY, and the NOMINATE parameter.

ステップ7では、Initiatorがすべてのアドレス候補のテストを終え、使用する候補を1つ指名します。選択した候補ペアを使ってUPDATEメッセージを送り、SEQ、ECHO_REQUEST_SIGNED、CANDIDATE_PRIORITYおよびNOMINATEパラメータを含めます。

In step 8, the Responder receives the message with the NOMINATE parameter from the Initiator. It sends a response that includes the NOMINATE parameter in addition to a number of other parameters. The ACK and ECHO_RESPONSE_SIGNED parameters acknowledge the SEQ and ECHO_REQUEST_SIGNED parameters from the previous message from the Initiator. The Responder includes SEQ and ECHO_REQUEST_SIGNED parameters in order to receive an acknowledgment from the Responder.

ステップ8では、ResponderがInitiatorからNOMINATEパラメータを含むメッセージを受信し、他のパラメータとともにNOMINATEを含む応答を返します。ACKとECHO_RESPONSE_SIGNEDは、Initiatorからの前のメッセージにあるSEQとECHO_REQUEST_SIGNEDを確認します。Responderは、Initiatorから確認応答を受け取るため、SEQとECHO_REQUEST_SIGNEDも含めます。

In step 9, the Initiator completes the candidate nomination process by confirming the message reception to the Responder. In the confirmation message, the ACK and ECHO_RESPONSE_SIGNED parameters correspond to the SEQ and ECHO_REQUEST_SIGNED parameters in the message sent by the Responder in the previous step.

ステップ9では、InitiatorがResponderにメッセージの受信を確認し、候補の指名手順を完了します。確認メッセージのACKとECHO_RESPONSE_SIGNEDは、前のステップでResponderが送信したメッセージのSEQとECHO_REQUEST_SIGNEDに対応します。

In step 10, the Initiator and Responder can start sending application payload over the successfully nominated address candidates.

ステップ10では、InitiatorとResponderは、指名に成功したアドレス候補を使ってアプリケーションペイロードを送信し始めることができます。

It is worth noting that if either host has registered a relayed address candidate from a Data Relay Server, the host MUST activate the address before connectivity checks by sending an UPDATE message containing the PEER_PERMISSION parameter as described in Section 4.12.1. Otherwise, the Data Relay Server drops ESP packets using the relayed address.

いずれかのホストがData Relay Serverから中継アドレス候補を登録している場合、セクション4.12.1で説明するPEER_PERMISSIONパラメータを含むUPDATEを送信し、接続性チェックの前にそのアドレスを有効化しなければなりません (MUST)。そうしない場合、Data Relay Serverは中継アドレス宛てのESPパケットを破棄します。

It should be noted that in the case in which both the Initiator and Responder are advertising their own relayed address candidates, it is possible that the two hosts choose the two relayed addresses as a result of the ICE nomination algorithm. While this is possible (and even could be desirable for privacy reasons), it can be unlikely due to low priority assigned for the relayed address candidates. In such an event, the nominated address pair is always symmetric; the nomination algorithm prevents asymmetric address pairs (i.e., each side choosing different pair) such as a Data Relay Client using its own Data Relay Server to send data directly to its peer while receiving data from the Data Relay Server of its peer.

InitiatorとResponderの両方がそれぞれの中継アドレス候補を広告すると、ICEの指名アルゴリズムによって両ホストが中継アドレスを選ぶ場合があります。中継アドレス候補の優先度は低いため起こりにくいものの、プライバシー上の理由から望ましい場合もあります。この場合、指名されたアドレスペアは必ず対称になります。つまり、片方が自身のData Relay Serverからデータを送り、相手側のData Relay Serverからデータを受信するような非対称ペアを、指名アルゴリズムが防ぎます。

4.6.2. Rules for Connectivity Checks
4.6.2. 接続チェックの規則

The HITs of the two communicating hosts MUST be used as credentials in this protocol (in contrast to ICE, which employs username-password fragments). A HIT pair uniquely identifies the corresponding HIT association, and a SEQ number in an UPDATE message identifies a particular connectivity check.

このプロトコルでは、通信する2つのホストのHITを認証情報として使わなければなりません (MUST)。ユーザー名・パスワードのフラグメントを使うICEとは異なります。HITのペアは該当するHITアソシエーションを一意に識別し、UPDATEメッセージのSEQ番号は個々の接続性チェックを識別します。

All of the connectivity check messages MUST be protected with HIP_HMAC and signatures (even though the illustrations in this specification omit them for simplicity) according to [RFC7401]. Each connectivity check sent by a host MUST include a SEQ parameter and ECHO_REQUEST_SIGNED parameter; correspondingly, the peer MUST respond to these using ACK and ECHO_RESPONSE_SIGNED according to the rules specified in [RFC7401].

[RFC7401]に従い、すべての接続性チェックメッセージをHIP_HMACと署名で保護しなければなりません (MUST)。図では簡略化のため省略しています。ホストが送信する各接続性チェックには、SEQパラメータとECHO_REQUEST_SIGNEDパラメータを含めなければなりません (MUST)。ピアは[RFC7401]の規則に従ってACKとECHO_RESPONSE_SIGNEDで応答しなければなりません (MUST)。

The host sending a connectivity check MUST validate that the response uses the same pair of UDP ports, and drop the packet if this is not the case.

接続性チェックを送るホストは、応答が同じUDPポートペアを使っていることを検証しなければなりません (MUST)。一致しない場合はパケットを破棄します。

A host may receive a connectivity check before it has received the candidates from its peer. In such a case, the host MUST immediately queue a response by placing it in the triggered-check queue and then continue waiting for the candidates. A host MUST NOT select a candidate pair until it has verified the pair using a connectivity check as defined in Section 4.6.1.

ホストは、ピアから候補を受け取る前に接続性チェックを受信する場合があります。その場合、ホストは受信したチェックをtriggered-checkキューに入れて応答を直ちに待ち行列に加え、その後候補を待たなければなりません (MUST)。セクション4.6.1で定義する接続性チェックで検証するまでは、候補ペアを選択してはなりません (MUST NOT)。

Section 5.3.5 of [RFC7401] states that UPDATE packets have to include either a SEQ or ACK parameter (but can include both). In the connectivity check procedure specified in Section 4.6.1, each SEQ parameter should be acknowledged separately. In the context of NATs, this means that some of the SEQ parameters sent in connectivity checks will be lost or arrive out of order. From the viewpoint of the recipient, this is not a problem since the recipient will just "blindly" acknowledge the SEQ. However, the sender needs to be prepared for lost sequence identifiers and ACK parameters that arrive out of order.

[RFC7401]のセクション5.3.5によると、UPDATEパケットにはSEQまたはACKパラメータ(または両方)を含める必要があります。セクション4.6.1の接続性チェックでは、それぞれのSEQパラメータに個別に確認応答することになっています。NAT環境では、接続性チェックで送ったSEQパラメータの一部が失われたり、順序を入れ替えて到着したりします。受信側はSEQをそのまま確認応答するため、このことは受信側には問題になりません。一方、送信側はシーケンス識別子の欠落や、順不同で届くACKパラメータに備える必要があります。

As specified in [RFC7401], an ACK parameter may acknowledge multiple sequence identifiers. While the examples in the previous sections do not illustrate such functionality, it is also permitted when employing ICE-HIP-UDP mode.

[RFC7401]で規定されているとおり、1つのACKパラメータで複数のシーケンス識別子を確認応答できます。前節の例には示していませんが、ICE-HIP-UDPモードでもこの機能を使用できます。

In ICE-HIP-UDP mode, a retransmission of a connectivity check SHOULD be sent with the same sequence identifier in the SEQ parameter. Some tested address candidates will never produce a working address pair and may thus cause retransmissions. Upon successful nomination of an address pair, a host SHOULD immediately stop sending such retransmissions.

ICE-HIP-UDPモードでは、接続性チェックを再送する際、SEQパラメータに同じシーケンス識別子を入れるべきです (SHOULD)。テストしたアドレス候補によっては動作するアドレスペアが得られず、再送が必要になる場合があります。アドレスペアの指名に成功したら、そのような再送を直ちに停止すべきです (SHOULD)。

Full ICE procedures for prioritizing candidates, eliminating redundant candidates, forming checklists (including pruning), and triggered-check queues MUST be followed as specified in Section 6.1 of [RFC8445], with the exception being that the foundation, frozen candidates, and default candidates are not used. From the viewpoint of the ICE specification [RFC8445], the protocol specified in this document operates using a component ID of 1 on all candidates, and the foundation of all candidates is unique. This specification defines only "full ICE" mode, and the "lite ICE" is not supported. The reasoning behind the missing features is described in Appendix B.

候補の優先順位付け、冗長候補の排除、(枝刈りを含む)チェックリストの作成、およびtriggered-checkキューについては、[RFC8445]のセクション6.1で規定されるfull ICEの手順に従わなければなりません (MUST)。ただし、foundation、frozen candidateおよびdefault candidateは使用しません。[RFC8445]の観点では、本書のプロトコルはすべての候補でcomponent ID 1を使い、候補ごとに異なるfoundationを持ちます。本仕様が定義するのはfull ICEモードだけであり、lite ICEはサポートしません。機能を省いた理由は付録Bで説明します。

The connectivity check messages MUST be paced by the Ta value negotiated during the base exchange as described in Section 4.4. If neither one of the hosts announced a minimum pacing value, a value of 50 ms MUST be used.

接続性チェックメッセージの送信間隔は、セクション4.4の説明に従い、基本交換でネゴシエートしたTa値で制御しなければなりません (MUST)。どちらのホストも最小送信間隔を通知しなかった場合、50 msを使わなければなりません (MUST)。

Both hosts MUST form a priority ordered checklist and begin to check transactions every Ta milliseconds as long as the checks are running and there are candidate pairs whose tests have not started. The retransmission timeout (RTO) for the connectivity check UPDATE packets SHOULD be calculated as follows:

チェックを実行中で、まだテストを開始していない候補ペアが残っている間、両ホストは優先度順のチェックリストを作り、Taミリ秒ごとにチェックトランザクションを開始しなければなりません (MUST)。接続性チェックUPDATEパケットの再送タイムアウト(RTO)は、次の式で計算すべきです (SHOULD)。

      RTO = MAX (1000 ms, Ta * (Num-Waiting + Num-In-Progress))
        

In the RTO formula, Ta is the value used for the connectivity check pacing, Num-Waiting is the number of pairs in the checklist in the "Waiting" state, and Num-In-Progress is the number of pairs in the "In-Progress" state. This is identical to the formula in [RFC8445] when there is only one checklist. A smaller value than 1000 ms for the RTO MUST NOT be used.

RTOの式で、Taは接続性チェックの送信間隔に使う値、Num-Waitingはチェックリストで「Waiting」状態にあるペアの数、Num-In-Progressは「In-Progress」状態にあるペアの数です。チェックリストが1つだけの場合、この式は[RFC8445]の式と同じです。RTOに1000 ms未満の値を使ってはなりません (MUST NOT)。

Each connectivity check request packet MUST contain a CANDIDATE_PRIORITY parameter (see Section 5.14) with the priority value that would be assigned to a peer-reflexive candidate if one was learned from the corresponding check. An UPDATE packet that acknowledges a connectivity check request MUST be sent from the same address that received the check and delivered to the same address where the check was received from. Each acknowledgment UPDATE packet MUST contain a MAPPED_ADDRESS parameter with the port, protocol, and IP address of the address where the connectivity check request was received from.

各接続性チェック要求パケットには、対応するチェックで学習する場合にpeer-reflexive candidateへ割り当てる優先度を持つCANDIDATE_PRIORITYパラメータ(セクション5.14参照)を含めなければなりません (MUST)。接続性チェック要求を確認するUPDATEは、そのチェックを受信したアドレスから送信し、チェックの送信元と同じアドレスへ届けなければなりません (MUST)。各確認応答UPDATEには、接続性チェック要求を受信したアドレスのポート、プロトコルおよびIPアドレスを含むMAPPED_ADDRESSパラメータを含めなければなりません (MUST)。

Following the ICE guidelines [RFC8445], it is RECOMMENDED to restrict the total number of connectivity checks to 100 for each host association. This can be achieved by limiting the connectivity checks to the 100 candidate pairs with the highest priority.

ICEガイドライン[RFC8445]に従い、ホストアソシエーションごとの接続性チェック総数を100に制限することが推奨されます (SHOULD)。最も優先度の高い候補ペア100組にチェック対象を制限すれば実現できます。

4.6.3. Rules for Concluding Connectivity Checks
4.6.3. 接続チェックを終了するための規則

The controlling agent may find multiple working candidate pairs. To conclude the connectivity checks, it SHOULD nominate the pair with the highest priority. The controlling agent MUST nominate a candidate pair essentially by repeating a connectivity check using an UPDATE message that contains a SEQ parameter (with a new sequence number), an ECHO_REQUEST_SIGNED parameter, the priority of the candidate in a CANDIDATE_PRIORITY parameter, and a NOMINATE parameter to signify conclusion of the connectivity checks. Since the nominated address pair has already been tested for reachability, the controlled host should be able to receive the message. Upon reception, the controlled host SHOULD select the nominated address pair. The response message MUST include a SEQ parameter with a new sequence identifier, acknowledgment of the sequence from the controlling host in an ACK parameter, a new ECHO_REQUEST_SIGNED parameter, an ECHO_RESPONSE_SIGNED parameter corresponding to the ECHO_REQUEST_SIGNED parameter from the controlling host, and the NOMINATE parameter. After sending this packet, the controlled host can create IPsec security associations using the nominated address candidate for delivering application payload to the controlling host. Since the message from the controlled host included a new sequence identifier echo request for the signature, the controlling host MUST acknowledge this with a new UPDATE message that includes an ACK and ECHO_RESPONSE_SIGNED parameters. After this final concluding message, the controlling host also can create IPsec security associations for delivering application payload to the controlled host.

controlling agentは、動作する候補ペアを複数見つける場合があります。接続性チェックを終えるには、最も優先度の高いペアを指名すべきです (SHOULD)。controlling agentは、SEQ(新しいシーケンス番号)、ECHO_REQUEST_SIGNED、候補の優先度を示すCANDIDATE_PRIORITY、および接続性チェックの完了を示すNOMINATEを含むUPDATEで接続性チェックを繰り返し、候補ペアを指名しなければなりません (MUST)。指名するアドレスペアは到達性をすでにテスト済みなので、controlled hostはこのメッセージを受信できるはずです。受信したcontrolled hostは、指名されたアドレスペアを選択すべきです (SHOULD)。応答には、新しいシーケンス識別子を持つSEQ、controlling hostからのシーケンスを確認するACK、新しいECHO_REQUEST_SIGNED、controlling hostのECHO_REQUEST_SIGNEDに対応するECHO_RESPONSE_SIGNED、およびNOMINATEを含めなければなりません (MUST)。このパケットを送信した後、controlled hostは指名されたアドレス候補を使ってIPsecセキュリティアソシエーションを作成し、controlling hostへアプリケーションペイロードを送信できます。controlled hostからのメッセージには署名対象の新しいシーケンス識別子とエコー要求が含まれるため、controlling hostはACKおよびECHO_RESPONSE_SIGNEDパラメータを含む新しいUPDATEで確認応答しなければなりません (MUST)。この最後の確認メッセージの後、controlling hostも指名されたアドレス候補を使ってIPsecセキュリティアソシエーションを作成し、controlled hostへアプリケーションペイロードを送信できます。

It is possible that packets are delayed by the network. Both hosts MUST continue to respond to any connectivity checks despite an address pair having been nominated.

ネットワークでパケットが遅延する場合があります。アドレスペアが指名された後も、両ホストはすべての接続性チェックに応答し続けなければなりません (MUST)。

If all the connectivity checks have failed, the hosts MUST NOT send ESP traffic to each other but MAY continue communicating using HIP packets and the locators used for the base exchange. Also, the hosts SHOULD notify each other about the failure with a CONNECTIVITY_CHECKS_FAILED NOTIFY packet (see Section 5.10).

すべての接続性チェックが失敗した場合、ホストは互いにESPトラフィックを送信してはなりません (MUST NOT)。ただし、HIPパケットと基本交換で使ったロケータを使った通信は続けてもかまいません (MAY)。また、CONNECTIVITY_CHECKS_FAILEDタイプのNOTIFYパケット(セクション5.10参照)で失敗を相手に通知すべきです (SHOULD)。

4.7. NAT Traversal Optimizations
4.7. NATトラバーサル最適化
4.7.1. Minimal NAT Traversal Support
4.7.1. 最小NATトラバーサルサポート

If the Responder has a fixed and publicly reachable IPv4 address and does not employ a Control Relay Server, the explicit NAT traversal mode negotiation MAY be omitted; thus, even the UDP-ENCAPSULATION mode does not have to be negotiated. In such a scenario, the Initiator sends an I1 message over UDP and the Responder responds with an R1 message over UDP without including any NAT traversal mode parameter. The rest of the base exchange follows the procedures defined in [RFC7401], except that the control and data plane use UDP encapsulation. Here, the use of UDP for NAT traversal is agreed upon implicitly. This way of operation is still subject to NAT timeouts, and the hosts MUST employ NAT keepalives as defined in Section 4.10.

Responderが固定されたパブリック到達可能なIPv4アドレスを持ち、Control Relay Serverを使わない場合、明示的なNAT越えモードのネゴシエーションを省略してもかまいません (MAY)。したがって、UDP-ENCAPSULATIONモードもネゴシエートする必要はありません。この場合、InitiatorはUDPでI1を送信し、ResponderはNAT越えモードパラメータを含めずにUDPでR1に応答します。以降の基本交換は[RFC7401]の手順に従いますが、制御プレーンとデータプレーンの両方をUDPカプセル化します。つまり、NAT越えにUDPを使うことについて暗黙に合意します。この動作もNATのタイムアウトの影響を受けるため、ホストはセクション4.10で定義するNATキープアライブを使わなければなりません (MUST)。

When UDP-ENCAPSULATION mode is chosen either explicitly or implicitly, the connectivity checks as defined in this document MUST NOT be used. When hosts lose connectivity, they MUST instead utilize [RFC8046] or [RFC8047] procedures, but with the difference being that UDP-based tunneling MUST be employed for the entire lifetime of the corresponding HIP association.

UDPカプセル化モードが明示的または暗黙的に選択されると、この文書で定義されている接続チェックは使用してはいけません (MUST NOT)。ホストが接続を失うと、代わりに[RFC8046]または[RFC8047]の手順を使用しなければなりません (MUST)が、違いは、対応するHIPアソシエーションの寿命全体にUDPベースのトンネリングを使用しなければなりません (MUST)。

4.7.2. Base Exchange without Connectivity Checks
4.7.2. 接続チェックのない基本交換

It is possible to run a base exchange without any connectivity checks as defined in Legacy ICE-HIP (Section 4.8 of [RFC5770]). The procedure is also applicable in the context of this specification, so it is repeated here for completeness.

Legacy ICE-HIP([RFC5770]のセクション4.8)で規定されるように、接続性チェックを行わずに基本交換を実行できます。この手順は本仕様にも適用できるため、説明を完全にする目的でここに再掲します。

In certain network environments, the connectivity checks can be omitted to reduce initial connection setup latency because a base exchange acts as an implicit connectivity test itself. For this to work, the Initiator MUST be able to reach the Responder by simply UDP encapsulating HIP and ESP packets sent to the Responder's address. Detecting and configuring this particular scenario is prone to failure unless carefully planned.

特定のネットワーク環境では、ベース交換が暗黙的な接続テスト自体として機能するため、接続セットアップ待ち時間を減らすために接続性チェックを省略できます。これが機能するために、イニシエータは、HIPおよびESPパケットをレスポンダのアドレスに送信された単にUDPカプセル化するだけでレスポンダに到達できなければなりません (MUST)。この特定のシナリオの検出と設定は、慎重に計画されていない限り失敗しやすいです。

In such a scenario, the Responder MAY include UDP-ENCAPSULATION NAT traversal mode as one of the supported modes in the R1 packet. If the Responder has registered to a Control Relay Server in order to discover its address candidates, it MUST also include a LOCATOR_SET parameter encapsulated inside an ENCRYPTED parameter in an R1 message that contains a preferred address where the Responder is able to receive UDP-encapsulated ESP and HIP packets. This locator MUST be of type "Transport address", its Traffic type MUST be "both", and it MUST have the "Preferred bit" set (see Table 2). If there is no such locator in R1, the Initiator MUST use the source address of the R1 as the Responder's preferred address.

このような場合、Responderはサポートするモードの1つとして、UDP-ENCAPSULATIONのNAT越えモードをR1に含めてもかまいません (MAY)。アドレス候補を検出するためControl Relay Serverに登録している場合、Responderは、UDPカプセル化されたESPおよびHIPパケットを受信できる優先アドレスを含むLOCATOR_SETパラメータを、ENCRYPTEDパラメータ内にカプセル化してR1に含めなければなりません (MUST)。このロケータの型は「Transport address」でなければならず (MUST)、Traffic typeは「both」でなければならず (MUST)、Preferred bitを設定しなければなりません (MUST)(表2参照)。R1にそのようなロケータがない場合、InitiatorはR1の送信元アドレスをResponderの優先アドレスとして使わなければなりません (MUST)。

The Initiator MAY choose the UDP-ENCAPSULATION mode if the Responder listed it in the supported modes and the Initiator does not wish to use the connectivity checks defined in this document for searching for a more optimal path. In this case, the Initiator sends the I2 with UDP-ENCAPSULATION mode in the NAT traversal mode parameter directly to the Responder's preferred address (i.e., to the preferred locator in R1 or to the address where R1 was received from if there was no preferred locator in R1). The Initiator MAY include locators in I2 but they MUST NOT be taken as address candidates, since connectivity checks defined in this document will not be used for connections with UDP-ENCAPSULATION NAT traversal mode. Instead, if R2 and I2 are received and processed successfully, a security association can be created and UDP-encapsulated ESP can be exchanged between the hosts after the base exchange completes according to the rules in Section 4.4 of [RFC7401].

ResponderがUDP-ENCAPSULATIONをサポートモードとして提示し、Initiatorがより適切な経路を探すための本書の接続性チェックを使わない場合、InitiatorはUDP-ENCAPSULATIONモードを選択してもかまいません (MAY)。この場合、InitiatorはNAT_TRAVERSAL_MODEでUDP-ENCAPSULATIONを選択したI2を、Responderの優先アドレス(R1内の優先ロケータ、またはR1に優先ロケータがなければR1の送信元アドレス)へ直接送ります。InitiatorはI2にロケータを含めてもかまいません (MAY)が、このNAT越えモードでは本書の接続性チェックを使わないため、それらをアドレス候補として扱ってはなりません (MUST NOT)。I2とR2が正常に受信・処理された場合、セキュリティアソシエーションを作成でき、[RFC7401]のセクション4.4の規則に従って基本交換完了後にホスト間でUDPカプセル化ESPを交換できます。

The Control Relay Server can be used for discovering address candidates but it is not intended to be used for relaying end-host packets using the UDP-ENCAPSULATION NAT mode. Since an I2 packet with UDP-ENCAPSULATION NAT traversal mode selected MUST NOT be sent via a Control Relay Server, the Responder SHOULD reject such I2 packets and reply with a NO_VALID_NAT_TRAVERSAL_MODE_PARAMETER NOTIFY packet (see Section 5.10).

Control Relay Serverはアドレス候補の検出には使えますが、UDP-ENCAPSULATION NATモードでエンドホストのパケットを中継する用途には使いません。UDP-ENCAPSULATIONを選択したI2をControl Relay Server経由で送信してはなりません (MUST NOT)。そのようなI2をResponderは拒否し、NO_VALID_NAT_TRAVERSAL_MODE_PARAMETERタイプのNOTIFYパケット(セクション5.10参照)で応答すべきです (SHOULD)。

If there is no answer for the I2 packet sent directly to the Responder's preferred address, the Initiator MAY send another I2 via the Control Relay Server, but it MUST NOT choose UDP-ENCAPSULATION NAT traversal mode for that I2.

Responderの優先アドレスへ直接送ったI2に応答がない場合、InitiatorはControl Relay Server経由で別のI2を送信してもかまいません (MAY)。ただし、そのI2でUDP-ENCAPSULATIONのNAT越えモードを選択してはなりません (MUST NOT)。

4.7.3. Initiating a Base Exchange Both with and without UDP Encapsulation

4.7.3. UDPカプセル化の有無にかかわらず基本交換を開始する

It is possible to run a base exchange in parallel both with and without UDP encapsulation as defined in Legacy ICE-HIP (Section 4.9 of [RFC5770]). The procedure is also applicable in the context of this specification, so it is repeated here for completeness.

Legacy ICE-HIP([RFC5770]のセクション4.9)で規定されているように、UDPカプセル化ありとなしの基本交換を並行して実行できます。この手順は本仕様にも適用できるため、説明を完全にする目的でここに再掲します。

The Initiator MAY also try to simultaneously perform a base exchange with the Responder without UDP encapsulation. In such a case, the Initiator sends two I1 packets, one without and one with UDP encapsulation, to the Responder. The Initiator MAY wait for a while before sending the other I1. How long to wait and in which order to send the I1 packets can be decided based on local policy. For retransmissions, the procedure is repeated.

Initiatorは、UDPカプセル化なしの基本交換もResponderに対して同時に試みてもかまいません (MAY)。この場合、InitiatorはUDPカプセル化ありとなしのI1を1つずつResponderに送ります。Initiatorは、もう一方のI1を送る前にしばらく待ってもかまいません (MAY)。待ち時間とI1の送信順序はローカルポリシーに基づいて決められます。再送時はこの手順を繰り返します。

The I1 packet without UDP encapsulation may arrive directly, without passing a Control Relay Server, at the Responder. When this happens, the procedures in [RFC7401] are followed for the rest of the base exchange. The Initiator may receive multiple R1 packets, with and without UDP encapsulation, from the Responder. However, after receiving a valid R1 and answering it with an I2, further R1 packets that are not retransmissions of the R1 message received first MUST be ignored.

UDPカプセル化されていないI1は、Control Relay Serverを経由せずResponderに直接届く場合があります。その場合、残りの基本交換には[RFC7401]の手順を適用します。InitiatorはResponderからUDPカプセル化ありとなしの複数のR1を受信する場合があります。ただし、有効なR1を受信してI2で応答した後は、最初に受信したR1の再送ではないR1を無視しなければなりません (MUST)。

The I1 packet without UDP encapsulation may also arrive at a HIP-capable middlebox. When the middlebox is a HIP Rendezvous Server and the Responder has successfully registered with the rendezvous service, the middlebox follows rendezvous procedures in [RFC8004].

UDPカプセル化なしのI1パケットは、ヒップ対応のミドルボックスにも到着する可能性があります。ミドルボックスがHIP Rendezvous Serverで、レスポンダがRendezvous Serviceに正常に登録されている場合、ミドルボックスは[RFC8004]のRendezvousプロシージャーに従います。

If the Initiator receives a NAT traversal mode parameter in R1 without UDP encapsulation, the Initiator MAY ignore this parameter and send an I2 without UDP encapsulation and without any selected NAT traversal mode. When the Responder receives the I2 without UDP encapsulation and without NAT traversal mode, it will assume that no NAT traversal mechanism is needed. The packet processing will be done as described in [RFC7401]. The Initiator MAY store the NAT traversal modes for future use, e.g., in case of a mobility or multihoming event that causes NAT traversal to be used during the lifetime of the HIP association.

InitiatorがUDPカプセル化されていないR1からNAT_TRAVERSAL_MODEパラメータを受信した場合、そのパラメータを無視し、UDPカプセル化なしで、NAT越えモードを選択しないI2を送ってもかまいません (MAY)。UDPカプセル化なしで、NAT越えモードも指定されていないI2を受信したResponderは、NAT越え機構が不要だと判断します。パケットは[RFC7401]の説明に従って処理します。Initiatorは、HIPアソシエーションの存続期間中にNAT越えが必要になるモビリティやマルチホーミングに備えて、将来利用するNAT越えモードを保存してもかまいません (MAY)。

4.8. Sending Control Packets after the Base Exchange
4.8. ベース交換後に制御パケットの送信

The same considerations with regard to sending control packets after the base exchange as described in Legacy ICE-HIP (Section 5.10 of [RFC5770]) also apply here, so they are repeated here for completeness.

基本交換後に制御パケットを送信する際の考慮事項は、Legacy ICE-HIP([RFC5770]のセクション5.10)で説明されているものと同じであり、本仕様にも適用されます。説明を完全にするため、ここに再掲します。

After the base exchange, the two end hosts MAY send HIP control packets directly to each other using the transport address pair established for a data channel without sending the control packets through any Control Relay Servers. When a host does not receive acknowledgments, e.g., to an UPDATE or CLOSE packet after a timeout based on local policies, a host SHOULD resend the packet through the associated Data Relay Server of the peer (if the peer listed it in its LOCATOR_SET parameter in the base exchange according to the rules specified in Section 4.4.2 of [RFC7401]).

基本交換の後、2つのエンドホストは、Control Relay Server経由で制御パケットを送らずに、データチャネル用に確立したトランスポートアドレスペアを使ってHIP制御パケットを直接送り合ってもかまいません (MAY)。ローカルポリシーに基づくタイムアウトの後も、UPDATEやCLOSEへの確認応答を受信できない場合、ピアが基本交換で自身のLOCATOR_SETにData Relay Serverを列挙していれば、そのピアに関連付けられたData Relay Server経由でパケットを再送すべきです (SHOULD)。[RFC7401]のセクション4.4.2の規則に従います。

If a Control Relay Client sends a packet through a Control Relay Server, the Control Relay Client MUST always utilize the RELAY_TO parameter. The Control Relay Server SHOULD forward HIP control packets originating from a Control Relay Client to the address denoted in the RELAY_TO parameter. In the other direction, the Control Relay Server SHOULD forward HIP control packets to the Control Relay Clients and MUST add a RELAY_FROM parameter to the control packets it relays to the Control Relay Clients.

Control RelayクライアントがControl Relay Serverを介してパケットを送信する場合、Control Relayクライアントは常にRELAY_TOパラメータを使用しなければなりません (MUST)。制御リレーサーバは、制御リレークライアントから発信されたHIP制御パケットをRELAY_TOパラメータで示されているアドレスに転送すべきです (SHOULD)。他の方向に、制御リレーサーバは、HIP制御パケットを制御リレークライアントに転送すべきであり (SHOULD)、制御リレークライアントにリレーをリレーする制御パケットにRELAY_FROMパラメータを追加しなければなりません (MUST)。

If the Control Relay Server is not willing or able to relay a HIP packet, it MAY notify the sender of the packet with a MESSAGE_NOT_RELAYED error notification (see Section 5.10).

コントロールリレーサーバーが喜んでいないか、HIPパケットを中継することができない場合、それはメッセージの送信者にMESSAGE_NOT_RELAYEDエラー通知を使用して通知されます(セクション5.10を参照)してもよい (MAY)。

4.9. Mobility Handover Procedure
4.9. モビリティハンドオーバ手順

A host may move after base exchange and connectivity checks. Mobility extensions for HIP [RFC8046] define handover procedures without NATs. In this section, we define how two hosts interact with handover procedures in scenarios involving NATs. The specified extensions define only simple mobility using a pair of security associations, and multihoming extensions are left to be defined in later specifications. The procedures in this section offer the same functionality as "ICE restart" specified in [RFC8445]. The example described in this section shows only a Control Relay Server for the peer host for the sake of simplicity, but the mobile host may also have a Control Relay Server.

ホストは、基本交換と接続性チェックの後に移動することがあります。HIP [RFC8046]のMobility Extensions NATのないハンドオーバ手順を定義します。このセクションでは、2つのホストがNATを含むシナリオのハンドオーバ手順とどのように対話するかを定義します。指定された拡張機能は、一対のセキュリティアソシエーションを使用して単純なモビリティのみを定義し、マルチホーム拡張は後の仕様で定義されています。このセクションの手順では、[RFC8445]に指定されている「ICE RESTART」と同じ機能があります。このセクションに記載されている例では、簡単にするためにピアホスト用のコントロール中継サーバのみを示していますが、モバイルホストには制御リレーサーバーもあります。

The assumption here is that the two hosts have successfully negotiated and chosen the ICE-HIP-UDP mode during the base exchange as defined in Section 4.3. The Initiator of the base exchange MUST store information that it was the controlling host during the base exchange. Similarly, the Responder MUST store information that it was the controlled host during the base exchange.

ここでの仮定は、セクション4.3で定義されている基本交換中に、2つのホストがICE-HIP-UDPモードを正常にネゴシエートして選択したことです。基本交換のイニシエータは、基本交換中に制御ホストである情報を格納しなければなりません (MUST)。同様に、レスポンダは、基本交換中に制御ホストである情報を保存しなければなりません (MUST)。

Prior to starting the handover procedures with all peer hosts, the mobile host SHOULD first send its locators in UPDATE messages to its Control and Data Relay Servers if it has registered to such. It SHOULD wait for all of them to respond for a configurable time, by default two minutes, and then continue with the handover procedure without information from the Relay Server that did not respond. As defined in Section 4.1, a response message from a Control Relay Server includes a REG_FROM parameter that describes the server-reflexive candidate of the mobile host to be used in the candidate exchange during the handover. Similarly, an UPDATE to a Data Relay Server is necessary to make sure the Data Relay Server can forward data to the correct IP address after a handover.

すべてのピアとのハンドオーバ手順を開始する前に、モバイルホストはControl Relay ServerまたはData Relay Serverに登録している場合、まずUPDATEメッセージでロケータを各サーバに送信すべきです (SHOULD)。設定可能な時間(既定値は2分間)、各サーバからの応答を待つべきです (SHOULD)。応答しなかったRelay Serverの情報は使わずに、その後ハンドオーバ手順を続けます。セクション4.1の説明に従い、Control Relay Serverの応答にはREG_FROMパラメータが含まれ、ハンドオーバ時の候補交換で使うモバイルホストのserver-reflexive candidateを示します。同様に、Data Relay ServerにUPDATEを送ることで、ハンドオーバ後に正しいIPアドレスへデータを転送できるようにします。

The mobility extensions for NAT traversal are illustrated in Figure 6. The mobile host is the host that has changed its locators, and the peer host is the host it has a host association with. The mobile host may have multiple peers, and it repeats the process with all of its peers. In the figure, the Control Relay Server belongs to the peer host, i.e., the peer host is a Control Relay Client for the Control Relay Server. Note that the figure corresponds to figure 3 in [RFC8046], but the difference is that the main UPDATE procedure is carried over the relay and the connectivity is tested separately. Next, we describe the procedure of that figure in detail.

NATトラバーサルのモビリティ拡張機能を図6に示します。モバイルホストはロケータを変更したホストであり、ピアホストはホストアソシエーションがあるホストです。モバイルホストには複数のピアがある可能性があり、そのピア全体でプロセスを繰り返すことができます。図中、制御中継サーバはピアホスト、すなわちピアホストは制御リレーサーバ用の制御リレークライアントです。図は[RFC8046]の図3に対応していますが、その違いは、メインアップデート手順がリレーを介して運ばれ、接続性が別々にテストされることです。次に、その図の詳細について説明します。

   Mobile Host               Control Relay Server              Peer Host
   | 1. UDP(UPDATE(ESP_INFO,          |                                |
   |          ENC(LOC_SET), SEQ))     |                                |
   +--------------------------------->| 2. UDP(UPDATE(ESP_INFO,        |
   |                                  |          ENC(LOC_SET), SEQ,    |
   |                                  |          RELAY_FROM))          |
   |                                  +------------------------------->|
   |                                  |                                |
   |                                  | 3. UDP(UPDATE(ESP_INFO, SEQ,   |
   |                                  |          ACK, ECHO_REQ_SIGN,   |
   |                                  |          RELAY_TO))            |
   | 4. UDP(UPDATE(ESP_INFO, SEQ,     |<-------------------------------+
   |          ACK, ECHO_REQ_SIGN,     |                                |
   |          RELAY_TO))              |                                |
   |<---------------------------------+                                |
   |                                  |                                |
   | 5. UDP(UPDATE(ACK,               |                                |
   |          ECHO_RESP_SIGNED))      |                                |
   +--------------------------------->| 6. UDP(UPDATE(ACK,             |
   |                                  |          ECHO_RESP_SIGNED,     |
   |                                  |          RELAY_FROM))          |
   |                                  +------------------------------->|
   |                                  |                                |
   |                   7. connectivity checks over UDP                 |
   +<----------------------------------------------------------------->+
   |                                  |                                |
   |                      8. ESP data over UDP                         |
   +<----------------------------------------------------------------->+
   |                                  |                                |
        

Figure 6: HIP UPDATE Procedure

図6:HIP更新手順

In step 1, the mobile host has changed location and sends a location update to its peer through the Control Relay Server of the peer. It sends an UPDATE packet with the source HIT belonging to itself and destination HIT belonging to the peer host. In the packet, the source IP address belongs to the mobile host and the destination to the Control Relay Server. The packet contains an ESP_INFO parameter where, in this case, the OLD SPI and NEW SPI parameters both contain the pre-existing incoming SPI. The packet also contains the locators of the mobile host in a LOCATOR_SET parameter, encapsulated inside an ENCRYPTED parameter (see Sections 5.2.18 and 6.5 in [RFC7401] for details on the ENCRYPTED parameter). The packet also contains a SEQ number to be acknowledged by the peer. As specified in [RFC8046], the packet may also include a HOST_ID (for middlebox inspection) and DIFFIE_HELLMAN parameter for rekeying.

ステップ1では、位置を変更したモバイルホストが、ピア側のControl Relay Server経由でピアへ位置更新を送ります。UPDATEパケットの送信元HITはモバイルホストのもので、宛先HITはピアホストのものです。送信元IPアドレスはモバイルホストのもので、宛先IPアドレスはControl Relay Serverのものです。パケットにはESP_INFOパラメータが含まれ、この場合OLD SPIとNEW SPIの両方に既存の受信SPIを設定します。また、モバイルホストのロケータを含むLOCATOR_SETパラメータをENCRYPTEDパラメータ内にカプセル化します(ENCRYPTEDパラメータの詳細は[RFC7401]のセクション5.2.18および6.5参照)。ピアから確認応答を受けるためのSEQ番号も含めます。[RFC8046]に従い、ミドルボックスによる検査のためのHOST_IDや鍵更新のためのDIFFIE_HELLMANパラメータを含める場合もあります。

In step 2, the Control Relay Server receives the UPDATE packet and forwards it to the peer host (i.e., Control Relay Client). The Control Relay Server rewrites the destination IP address and appends a RELAY_FROM parameter to the message.

ステップ2において、制御リレーサーバは更新パケットを受信し、それをピアホスト(すなわち制御リレークライアント)に転送する。制御中継サーバは、宛先IPアドレスを書き換えて、RELAY_FROMパラメータをメッセージに追加する。

In step 3, the peer host receives the UPDATE packet, processes it, and responds with another UPDATE message. The message is destined to the HIT of the mobile host and to the IP address of the Control Relay Server. The message includes an ESP_INFO parameter where, in this case, the OLD SPI and NEW SPI parameters both contain the pre-existing incoming SPI. The peer includes a new SEQ and ECHO_REQUEST_SIGNED parameter to be acknowledged by the mobile host. The message acknowledges the SEQ parameter of the earlier message with an ACK parameter. The RELAY_TO parameter specifies the address of the mobile host where the Control Relay Server should forward the message.

ステップ3では、ピアホストがUPDATEを受信して処理し、別のUPDATEメッセージで応答します。メッセージはモバイルホストのHIT宛てで、IPアドレスはControl Relay Server宛てです。ESP_INFOパラメータが含まれ、この場合OLD SPIとNEW SPIの両方に既存の受信SPIを設定します。ピアは、モバイルホストから確認応答を受けるため、新しいSEQとECHO_REQUEST_SIGNEDパラメータを含めます。また、先のメッセージのSEQをACKパラメータで確認します。RELAY_TOパラメータは、Control Relay Serverがメッセージを転送するモバイルホストのアドレスを示します。

In step 4, the Control Relay Server receives the message, rewrites the destination IP address and UDP port according to the RELAY_TO parameter, and then forwards the modified message to the mobile host.

ステップ4において、制御中継サーバはメッセージを受信し、RELAY_TOパラメータに従って宛先IPアドレスおよびUDPポートを書き換えてから、変更したメッセージをモバイルホストに転送する。

In step 5, the mobile host receives the UPDATE packet and processes it. The mobile host concludes the handover procedure by acknowledging the received SEQ parameter with an ACK parameter and the ECHO_REQUEST_SIGNED parameter with an ECHO_RESPONSE_SIGNED parameter. The mobile host sends the packet to the HIT of the peer and to the address of the HIP relay. The mobile host can start connectivity checks after this packet.

ステップ5では、モバイルホストがUPDATEを受信して処理します。受信したSEQをACKで確認し、ECHO_REQUEST_SIGNEDにはECHO_RESPONSE_SIGNEDで応答して、ハンドオーバ手順を完了します。モバイルホストはピアのHIT宛てに、HIP Relayのアドレスへパケットを送信します。このパケットを送信した後、接続性チェックを開始できます。

In step 6, the HIP relay receives the UPDATE packet and forwards it to the peer host (i.e., Relay Client). The HIP relay rewrites the destination IP address and port, and then appends a RELAY_FROM parameter to the message. When the peer host receives this concluding UPDATE packet, it can initiate the connectivity checks.

ステップ6において、HIPリレーは更新パケットを受信し、それをピアホスト(すなわち中継クライアント)に転送する。HIPリレーは宛先IPアドレスとポートを書き換えてから、メッセージにRELAY_FROMパラメータを追加します。ピアホストがこの終了更新パケットを受信すると、接続チェックを開始できます。

In step 7, the two hosts test for connectivity across NATs according to procedures described in Section 4.6. The original Initiator of the communications is the controlling host and the original Responder is the controlled host.

ステップ7では、2つのホストがセクション4.6の手順に従い、NATを越えた接続性をテストします。通信を最初に開始したInitiatorがcontrolling host、最初のResponderがcontrolled hostです。

In step 8, the connectivity checks are successfully completed and the controlling host has nominated one address pair to be used. The hosts set up security associations to deliver the application payload.

ステップ8では接続性チェックが正常に完了し、controlling hostが使用するアドレスペアを1組指名しています。ホストはアプリケーションペイロードを届けるためのセキュリティアソシエーションを設定します。

It is worth noting that the Control and Data Relay Client do not have to reregister for the related services after a handover. However, if a Data Relay Client has registered a relayed address candidate from a Data Relay Server, the Data Relay Client MUST reactivate the address before the connectivity checks by sending an UPDATE message containing the PEER_PERMISSION parameter as described in Section 4.12.1. Otherwise, the Data Relay Server drops ESP packets sent to the relayed address.

コントロールとデータリレークライアントがハンドオーバ後に関連サービスの再登録を受ける必要がないことは注目に値します。ただし、データリレークライアントがデータリレーサーバーから中継アドレス候補を登録している場合、データリレークライアントは、セクション4.12.1で説明されているようにPEER_PERMISSIONパラメータを含む更新メッセージを送信することによって、接続がチェックされる前にアドレスを再アクティブにしなければなりません (MUST)。それ以外の場合、データリレーサーバーは、中継アドレスに送信されたESPパケットをドロップします。

In the so-called "double jump" or simultaneous mobility scenario, both peers change their location simultaneously. In such a case, both peers trigger the procedure described earlier in this section at the same time. In other words, both of the communicating hosts send an UPDATE packet carrying locators at the same time or with some delay. When the locators are exchanged almost simultaneously (reliably via Control Relay Servers), the two hosts can continue with connectivity checks after both have completed separately the steps in Figure 6. The problematic case occurs when one of the hosts (referred to here as host "M") moves later during the connectivity checks. In such a case, host M sends a locator to the peer, which is in the middle of connectivity checks. Upon receiving the UPDATE message, the peer responds with an UPDATE with ECHO_REQ_SIGN as described in step 3 in Figure 6. Upon receiving the valid response from host M as described in step 6, the peer host MUST restart the connectivity checks with host M. This way, both hosts start the connectivity checks roughly in a synchronized way. It is also important that the peer host does not restart the connectivity checks until step 6 is successfully completed, because the UPDATE message carrying locators in step 1 could be replayed by an attacker.

いわゆる「ダブルジャンプ」、すなわち同時移動のシナリオでは、両方のピアが同時に位置を変えます。この場合、両方のピアが本セクションで前述した手順を同時に起動します。言い換えれば、通信する両方のホストが、ロケーターを運ぶUPDATEパケットを同時に、またはある程度の遅れをもって送信します。ロケーターが (Control Relay Serverを介して確実に) ほぼ同時に交換された場合、2つのホストは、それぞれが図6の手順を個別に完了した後、接続性チェックを続行できます。問題となるのは、一方のホスト (ここではホスト "M" と呼びます) が接続性チェックの途中で後から移動する場合です。この場合、ホストMは、接続性チェックの最中であるピアにロケーターを送信します。UPDATEメッセージを受信すると、ピアは図6のステップ3で説明されているとおりECHO_REQ_SIGNを含むUPDATEで応答します。ステップ6で説明されているとおりホストMから有効な応答を受信したら、ピアホストはホストMとの接続性チェックを再開しなければなりません (MUST)。こうすることで、両方のホストがおおむね同期して接続性チェックを開始します。ステップ1のロケーターを運ぶUPDATEメッセージは攻撃者によって再送され得るため、ピアホストがステップ6を正常に完了するまで接続性チェックを再開しないことも重要です。

4.10. NAT Keepalives
4.10. NATキープアライブ

To prevent NAT states from expiring, communicating hosts MUST send periodic keepalives to other hosts with which they have established a HIP association every 15 seconds (the so-called Tr value in ICE). Other values MAY be used, but a Tr value smaller than 15 seconds MUST NOT be used. Both a Control/Data Relay Client and Control/Data Relay Server, as well as two peers employing UDP-ENCAPSULATION or ICE-HIP-UDP mode, SHOULD send HIP NOTIFY packets unless they have exchanged some other traffic over the used UDP ports. However, the Data Relay Client and Data Relay Server MUST employ only HIP NOTIFY packets in order to keep the server-reflexive candidates alive. The keepalive message encoding format is defined in Section 5.3. If the base exchange or mobility handover procedure occurs during an extremely slow path, a host (with a HIP association with the peer) MAY also send HIP NOTIFY packets every 15 seconds to keep the path active with the recipient.

NAT状態の期限切れを防ぐため、通信ホストはHIPアソシエーションを確立した相手に15秒ごとに定期的なキープアライブを送信しなければなりません (MUST)(ICEでいうTr値)。別の値を使ってもかまいません (MAY)が、15秒未満のTr値を使ってはなりません (MUST NOT)。使用中のUDPポートで他のトラフィックを交換していない限り、Control/Data Relay ClientとControl/Data Relay Server、およびUDP-ENCAPSULATIONまたはICE-HIP-UDPモードを使う2つのピアはHIP NOTIFYパケットを送信すべきです (SHOULD)。ただし、server-reflexive candidateを維持するため、Data Relay ClientとData Relay ServerはHIP NOTIFYパケットだけを使わなければなりません (MUST)。キープアライブの符号化形式はセクション5.3で定義します。基本交換またはモビリティのハンドオーバが極端に遅い経路で行われる場合、ホストは相手との経路を維持するために15秒ごとにHIP NOTIFYを送信してもかまいません (MAY)。

4.11. Closing Procedure
4.11. 閉鎖手順

The two-way procedure for closing a HIP association and the related security associations is defined in [RFC7401]. One host initiates the procedure by sending a CLOSE message and the recipient confirms it with CLOSE_ACK. All packets are protected using HMACs and signatures, and the CLOSE messages include an ECHO_REQUEST_SIGNED parameter to protect against replay attacks.

HIPアソシエーションを閉じるための双方向手順と関連セキュリティアソシエーションは[RFC7401]で定義されています。1つのホストがクローズメッセージを送信することによってプロシージャを開始し、受信者はCLOSE_ACKでそれを確認します。すべてのパケットはHMACとシグネチャを使用して保護されており、クローズメッセージには再生攻撃から保護するためのECHO_REQUEST_SIGNEDパラメータが含まれています。

The same procedure for closing HIP associations also applies here, but the messaging occurs using the UDP-encapsulated tunnel that the two hosts employ. A host sending the CLOSE message SHOULD first send the message over a direct link. After a number of retransmissions, it MUST send over a Control Relay Server of the recipient if one exists. The host receiving the CLOSE message directly without a Control Relay Server SHOULD respond directly. If the CLOSE message came via a Control Relay Server, the host SHOULD respond using the same Control Relay Server.

HIPアソシエーションを閉じるのと同じ手順もここにも適用されますが、メッセージングは2つのホストが採用したUDPカプセル化トンネルを使用して行われます。クローズメッセージを送信するホストは、最初に直接リンクを介してメッセージを送信すべきです (SHOULD)。多数の再送信の後、それは存在する場合、受信者の制御中継サーバを介して送信しなければなりません (MUST)。コントロールリレーサーバーなしで直接クローズメッセージを受信したホストは直接応答すべきです (SHOULD)。CLOSEメッセージがControl Relay Serverを介して来た場合、ホストは同じコントロールリレーサーバーを使用して応答すべきです (SHOULD)。

4.12. Relaying Considerations
4.12. 中継に関する考慮事項
4.12.1. Forwarding Rules and Permissions
4.12.1. 転送規則と権限

The Data Relay Server uses a similar permission model as a TURN server: before the Data Relay Server forwards any ESP data packets from a peer to a Data Relay Client (or the other direction), the client MUST set a permission for the peer's address. The permissions also install a forwarding rule for each direction, similar to TURN's channels, based on the Security Parameter Index (SPI) values in the ESP packets.

データリレーサーバーは、TURNサーバーと同様の権限モデルを使用します。データリレーサーバがピアからデータリレークライアント(または他の方向)に任意のESPデータパケットを転送する前に、クライアントはピアのアドレスの許可を設定しなければなりません (MUST)。権限はまた、ESPパケットのセキュリティパラメータインデックス(SPI)値に基づいて、TURNのチャネルと同様に、各方向の転送規則をインストールします。

Permissions are not required for HIP control packets. However, if a relayed address (as conveyed in the RELAYED_ADDRESS parameter from the Data Relay Server) is selected to be used for data, the Control Relay Client MUST send an UPDATE message to the Data Relay Server containing a PEER_PERMISSION parameter (see Section 5.13) with the following information: the UDP port and address for the server-reflexive address, the UDP port and address of the peer, and the inbound and outbound SPIs used for ESP. The packet MUST be sent to the same UDP tunnel the Client employed in the base exchange to contact the Server (i.e., not to the port occupied by the server-reflexive candidate). To avoid packet dropping of ESP packets, the Control Relay Client SHOULD send the PEER_PERMISSION parameter before connectivity checks both in the case of base exchange and a mobility handover. It is worth noting that the UPDATE message includes a SEQ parameter (as specified in [RFC7401]) that the Data Relay Server must acknowledge, so that the Control Relay Client can resend the message with the PEER_PERMISSION parameter if it gets lost.

HIP制御パケットに権限設定は不要です。ただし、Data Relay ServerからRELAYED_ADDRESSパラメータで通知された中継アドレスをデータ通信に使う場合、Control Relay ClientはPEER_PERMISSIONパラメータ(セクション5.13参照)を含むUPDATEをData Relay Serverへ送信しなければなりません (MUST)。パラメータにはserver-reflexive addressのUDPポートとアドレス、ピアのUDPポートとアドレス、ESPに使う受信側と送信側のSPIを指定します。このパケットは、Clientが基本交換でServerへの接続に使ったものと同じUDPトンネルへ送信しなければなりません (MUST)。server-reflexive candidateが占有するポート宛てには送信しません。ESPパケットが破棄されるのを防ぐため、基本交換の場合もモビリティのハンドオーバの場合も、接続性チェックの前にPEER_PERMISSIONを送信することが推奨されます (SHOULD)。UPDATEにはData Relay Serverが確認応答するSEQパラメータ[RFC7401]が含まれるため、紛失時にはControl Relay ClientがPEER_PERMISSION付きメッセージを再送できます。

When a Data Relay Server receives an UPDATE with a PEER_PERMISSION parameter, it MUST check if the sender of the UPDATE is registered for data-relaying service, and drop the UPDATE if the host was not registered. If the host was registered, the Data Relay Server checks if there is a permission with matching information (protocol, addresses, ports, and SPI values). If there is no such permission, a new permission MUST be created and its lifetime MUST be set to 5 minutes. If an identical permission already existed, it MUST be refreshed by setting the lifetime to 5 minutes. A Data Relay Client SHOULD refresh permissions 1 minute before the expiration when the permission is still needed.

Data Relay ServerがPEER_PERMISSIONパラメータ付きUPDATEを受信した場合、送信者がデータ中継サービスに登録済みか確認しなければなりません (MUST)。登録されていなければUPDATEを破棄します。登録済みであれば、プロトコル、アドレス、ポートおよびSPI値が一致する権限があるか確認します。そのような権限がなければ、新しい権限を作成しなければなりません (MUST)。その有効期間を5分に設定しなければなりません (MUST)。同一の権限がすでにある場合は、有効期間を5分に設定して更新しなければなりません (MUST)。権限が引き続き必要なData Relay Clientは、有効期限の1分前に権限を更新すべきです (SHOULD)。

When a Data Relay Server receives an UPDATE from a registered client but without a PEER_PERMISSION parameter and with a new locator set, the Data Relay Server can assume that the mobile host has changed its location and is thus not reachable in its previous location. In such an event, the Data Relay Server SHOULD deactivate the permission and stop relaying data plane traffic to the client.

登録済みClientから、PEER_PERMISSIONパラメータを含まず、新しいロケータセットを含むUPDATEをData Relay Serverが受信した場合、モバイルホストが移動し、以前の位置では到達不能になったと判断できます。その場合、Data Relay Serverは権限を無効化し、そのClient宛てのデータプレーントラフィックの中継を停止すべきです (SHOULD)。

The relayed address MUST be activated with the PEER_PERMISSION parameter both after a base exchange and after a handover procedure with another ICE-HIP-UDP-capable host. Unless activated, the Data Relay Server MUST drop all ESP packets. It is worth noting that a Data Relay Client does not have to renew its registration upon a change of location UPDATE, but only when the lifetime of the registration is close to end.

中継アドレスは、基本交換の後、および別のICE-HIP-UDP対応ホストとのハンドオーバ手順の後に、PEER_PERMISSIONパラメータで有効化しなければなりません (MUST)。有効化されていない場合、Data Relay ServerはすべてのESPパケットを破棄しなければなりません (MUST)。Data Relay Clientは、位置変更を通知するUPDATEの際には登録を更新する必要はなく、登録期間が終了に近づいたときにだけ更新すればよい点に注意してください。

4.12.2. HIP Data Relay and Relaying of Control Packets
4.12.2. HIPデータリレーと制御パケットの中継

When a Data Relay Server accepts to relay UDP-encapsulated ESP between a Data Relay Client and its peer, the Data Relay Server opens a UDP port (relayed address) for this purpose as described in Section 4.1. This port can be used for also delivering control packets because connectivity checks also cover the path through the Data Relay Server. If the Data Relay Server receives a UDP-encapsulated HIP control packet on that port, it MUST forward the packet to the Data Relay Client and add a RELAY_FROM parameter to the packet as if the Data Relay Server were acting as a Control Relay Server. When the Data Relay Client replies to a control packet with a RELAY_FROM parameter via its Data Relay Server, the Data Relay Client MUST add a RELAY_TO parameter containing the peer's address and use the address of its Data Relay Server as the destination address. Further, the Data Relay Server MUST send this packet to the peer's address from the relayed address.

データリレーサーバーがデータリレークライアントとそのピア間でUDPカプセル化されたESPを中継するように受け入れると、データリレーサーバーはセクション4.1で説明されているように、この目的のためにUDPポート(中継アドレス)を開きます。このポートは、コネクティビティチェックもデータリレーサーバーを介したパスを覆うため、制御パケットを配信するために使用できます。データ中継サーバがそのポート上のUDPカプセル化されたHIP制御パケットを受信した場合、パケットをデータリレークライアントに転送し、データ中継サーバが制御リレーサーバとして機能していたかのように、パケットにRELAY_FROMパラメータを追加しなければなりません (MUST)。データ中継クライアントがそのデータ中継サーバを介してRELAY_FROMパラメータを含む制御パケットに応答すると、データリレークライアントはピアのアドレスを含むRELAY_TOパラメータを追加し、そのデータ中継サーバのアドレスを宛先アドレスとして使用しなければなりません (MUST)。さらに、データリレーサーバは、このパケットを中継アドレスからピアのアドレスに送信しなければなりません (MUST)。

If the Data Relay Server receives a UDP packet that is not a HIP control packet to the relayed address, it MUST check if it has a permission set for the peer the packet is arriving from (i.e., the sender's address and SPI value matches to an installed permission). If permissions are set, the Data Relay Server MUST forward the packet to the Data Relay Client that created the permission. The Data Relay Server MUST also implement the similar checks for the reverse direction (i.e., ESP packets from the Data Relay Client to the peer). Packets without a permission MUST be dropped silently.

データ中継サーバが中継アドレスにHIP制御パケットではないUDPパケットを受信した場合は、パケットが到着しているピアの許可セットがあるかどうかを確認しなければなりません (MUST)(つまり、送信者のアドレスとSPIの値は、インストール許可)。権限が設定されている場合、データリレーサーバーはパケットを許可を作成したデータリレークライアントに転送しなければなりません (MUST)。データ中継サーバはまた、逆方向(すなわち、データ中継クライアントからのESPパケットへの同様のチェック)についても同様のチェックを実施しなければなりません (MUST)。許可なしのパケットは静かにドロップされなければなりません (MUST)。

4.12.3. Handling Conflicting SPI Values
4.12.3. 競合するSPI値の処理

From the viewpoint of a host, its remote peers can have overlapping inbound SPI numbers because the IPsec also uses the destination IP address to index the remote peer host. However, a Data Relay Server can represent multiple remote peers, thus masquerading the actual destination. Since a Data Relay Server may have to deal with a multitude of Relay Clients and their peers, a Data Relay Server may experience collisions in the SPI namespace, thus being unable to forward datagrams to the correct destination. Since the SPI space is 32 bits and the SPI values should be random, the probability for a conflicting SPI value is fairly small but could occur on a busy Data Relay Server. The two problematic cases are described in this section.

ホストから見ると、IPsecはリモートピアを識別する際に宛先IPアドレスも使うため、異なるリモートピアが同じ受信SPI番号を持つ場合があります。しかしData Relay Serverは複数のリモートピアを代表し、実際の宛先を隠します。多数のRelay Clientとそのピアを扱うため、Data Relay ServerではSPI空間の衝突が起き、データグラムを正しい宛先へ転送できなくなる場合があります。SPIは32ビットで、値はランダムに選ぶべきものなので衝突の可能性はかなり低いものの、負荷の高いData Relay Serverでは起きる可能性があります。この節では問題となる2つのケースを説明します。

In the first scenario, the SPI collision problem occurs if two hosts have registered to the same Data Relay Server and a third host initiates base exchange with both of them. Here, the two Responders (i.e., Data Relay Clients) claim the same inbound SPI number with the same Initiator (peer). However, in this case, the Data Relay Server has allocated separate UDP ports for the two Data Relay Clients acting now as Responders (as recommended in Section 7.5). When the third host sends an ESP packet, the Data Relay Server is able to forward the packet to the correct Data Relay Client because the destination UDP port is different for each of the clients.

最初のケースでは、2つのホストが同じData Relay Serverに登録しており、3つ目のホストがその両方と基本交換を開始すると、SPI衝突の問題が起きます。2つのResponder(Data Relay Client)は、同じInitiator(ピア)に対して同じ受信SPI番号を提示します。ただしこの場合、Data Relay ServerはResponderとして動作する2つのData Relay Clientに別々のUDPポートを割り当てています(セクション7.5の推奨に従ったものです)。3つ目のホストからESPパケットが届いても、クライアントごとに宛先UDPポートが異なるため、Data Relay Serverは正しいData Relay Clientに転送できます。

In the second scenario, an SPI collision may occur when two Initiators run a base exchange to the same Responder (i.e., Data Relay Client), and both of the Initiators claim the same inbound SPI at the Data Relay Server using the PEER_PERMISSION parameter. In this case, the Data Relay Server cannot disambiguate the correct destination of an ESP packet originating from the Data Relay Client because the SPI could belong to either of the peers (and the destination IP and UDP port belonging to the Data Relay Server are not unique either). The recommended way and a contingency plan to solve this issue are described below.

2つ目のケースでは、2つのInitiatorが同じResponder(Data Relay Client)と基本交換を行い、両方がPEER_PERMISSIONパラメータで同じ受信SPIをData Relay Serverに登録すると、SPI衝突が起きる可能性があります。この場合、SPIがどちらのピアに属するか判別できません。また、Data Relay Server宛てのIPアドレスとUDPポートも一意ではないため、Data Relay ServerはData Relay Clientから届いたESPパケットの宛先を特定できません。この問題への推奨策と、推奨策が使えない場合の対処を以下に説明します。

The recommend way to mitigate the problem is as follows. For each new HIP association, a Data Relay Client acting as a Responder SHOULD register a new server-reflexive candidate as described in Section 4.2. Similarly, the Data Relay Server SHOULD NOT reuse the port numbers as described in Section 7.5. This way, each server-reflexive candidate for the Data Relay Client has a separate UDP port that the Data Relay Server can use to disambiguate packet destinations in case of SPI collisions.

問題を軽減する推奨方法は次のとおりです。新しいHIPアソシエーションごとに、Responderとして動作するData Relay Clientはセクション4.2で説明する新しいserver-reflexive candidateを登録すべきです (SHOULD)。同様に、Data Relay Serverはセクション7.5で説明するようにポート番号を再利用すべきではありません (SHOULD NOT)。こうすれば、Data Relay Clientのserver-reflexive candidateごとに異なるUDPポートが割り当てられ、SPIが衝突してもData Relay Serverがパケットの宛先を識別できます。

When the Data Relay Client is not registering or failed to register a new relay candidate for a new peer, the Data Relay Client MUST follow a contingency plan as follows. Upon receiving an I2 with a colliding SPI, the Data Relay Client acting as the Responder MUST NOT include the relayed address candidate in the R2 message because the Data Relay Server would not be able to demultiplex the related ESP packet to the correct Initiator. The same also applies to the handover procedures; the Data Relay Client MUST NOT include the relayed address candidate when sending its new locator set in an UPDATE to its peer if it would cause an SPI conflict with another peer.

新しいピア用の中継候補を登録していない、または登録に失敗したData Relay Clientは、次の代替手順に従わなければなりません (MUST)。SPIが衝突するI2を受信した場合、Responderとして動作するData Relay Clientは、R2に中継アドレス候補を含めてはなりません (MUST NOT)。Data Relay Serverが関連するESPパケットを正しいInitiatorへ逆多重化できないためです。ハンドオーバにも同じ規則が適用されます。他のピアとのSPI衝突を引き起こす場合、Data Relay ClientはピアへUPDATEで新しいロケータセットを送信するときに中継アドレス候補を含めてはなりません (MUST NOT)。

5. Packet Formats
5. パケットフォーマット

The following subsections define the parameter and packet encodings for the HIP and ESP packets. All values MUST be in network byte order.

次のサブセクションでは、HIPパケットとESPパケットのパラメータエンコードとパケットエンコードを定義します。すべての値はネットワークバイト順になければなりません (MUST)。

It is worth noting that all of the parameters are shown for the sake of completeness even though they are specified already in Legacy ICE-HIP [RFC5770]. New parameters are explicitly described as new.

Legacy ICE-HIP [RFC5770]ですでに規定されているパラメータも、説明を完全にするため本書にすべて示しています。新しいパラメータは、新規であることを明記します。

5.1. HIP Control Packets
5.1. ヒップコントロールパケット

Figure 7 illustrates the packet format for UDP-encapsulated HIP. The format is identical to Legacy ICE-HIP [RFC5770].

図7にUDPカプセル化したHIPのパケット形式を示します。この形式はLegacy ICE-HIP [RFC5770]と同一です。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |        Source Port            |       Destination Port        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Length              |           Checksum            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       32 bits of zeroes                       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     ~                    HIP Header and Parameters                  ~
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 7: Format of UDP-Encapsulated HIP Control Packets

図7:UDPカプセル化HIP制御パケットの形式

HIP control packets are encapsulated in UDP packets as defined in Section 2.2 of [RFC3948], "IKE Header Format for Port 4500", except that a different port number is used. Figure 7 illustrates the encapsulation. The UDP header is followed by 32 zero bits that can be used to differentiate HIP control packets from ESP packets. The HIP header and parameters follow the conventions of [RFC7401] with the exception that the HIP header checksum MUST be zero. The HIP header checksum is zero for two reasons. First, the UDP header already contains a checksum. Second, the checksum definition in [RFC7401] includes the IP addresses in the checksum calculation. The NATs that are unaware of HIP cannot recompute the HIP checksum after changing IP addresses.

HIP制御パケットは、ポート番号が異なる点を除き、[RFC3948]のセクション2.2「IKE Header Format for Port 4500」で定義された形式でUDPパケットにカプセル化します。図7にカプセル化形式を示します。UDPヘッダーの後には32ビットのゼロが続き、HIP制御パケットとESPパケットの識別に使えます。HIPヘッダーとパラメータは[RFC7401]の規則に従いますが、HIPヘッダーのチェックサムはゼロでなければなりません (MUST)。理由は2つあります。第1にUDPヘッダーにすでにチェックサムが含まれています。第2に、[RFC7401]のチェックサム計算にはIPアドレスが含まれますが、HIPを認識しないNATはIPアドレス変更後にHIPチェックサムを再計算できません。

A Control/Data Relay Server or a non-relay Responder SHOULD listen at UDP port 10500 for incoming UDP-encapsulated HIP control packets. If some other port number is used, it needs to be known by potential Initiators.

Control/Data Relay Server、または中継を行わないResponderは、UDPカプセル化された着信HIP制御パケットのためにUDPポート10500で待ち受けるべきです (SHOULD)。それ以外のポート番号を使用する場合、そのポート番号は潜在的なInitiatorに知られている必要があります。

UDP encapsulation of HIP packets reduces the Maximum Transmission Unit (MTU) size of the control plane by 12 bytes (8-byte UDP header plus 4-byte zero SPI marker), and the data plane by 8 bytes. Additional HIP relay parameters, such as RELAY_HMAC, RELAY_UDP_HIP, RELAY_UDP_ESP, etc., further increase the size of certain HIP packets. In regard to MTU, the following aspects need to be considered in an implementation:

HIPパケットをUDPカプセル化すると、制御プレーンの最大伝送単位(MTU)は12バイト(UDPヘッダー8バイトとゼロSPIマーカー4バイト)、データプレーンのMTUは8バイト小さくなります。RELAY_HMAC、RELAY_UDP_HIP、RELAY_UDP_ESPなどのHIPリレーパラメータを追加すると、一部のHIPパケットはさらに大きくなります。実装ではMTUに関して次の点を考慮する必要があります。

* A HIP host SHOULD implement ICMP message handling to support Path MTU Discovery (PMTUD) as described in [RFC1191] and [RFC8201].

* HIPホストは、[RFC1191]と[RFC8201]で説明されているように、パスMTU検出(PMTUD)をサポートするためのICMPメッセージ処理を実装すべきです (SHOULD)。

* Reliance on IP fragmentation is unlikely to be a viable strategy through NATs. If ICMP MTU discovery is not working, MTU-related path black holes may occur.

* IPフラグメンテーションへの依存は、NATSを介した実行可能な戦略である可能性は低いです。ICMP MTUディスカバリーが機能していない場合、MTU関連のパスブラックホールが発生する可能性があります。

* A mitigation strategy is to constrain the MTU, especially for virtual interfaces, to expected safe MTU values, e.g., 1400 bytes for the underlying interfaces that support 1500 bytes MTU.

* MTUを制限する方法もあります。特に仮想インターフェイスでは、安全と見込まれるMTU値を設定します。たとえば、MTU 1500バイトをサポートする基盤インターフェイスに対して、MTUを1400バイトに設定します。

* Further extensions to this specification may define a HIP-based mechanism to find a working path MTU without unnecessary constraining that size using Packetization Layer Path MTU Discovery for Datagram Transports [RFC8899]. For instance, such a mechanism could be implemented between a HIP Relay Client and HIP Relay Server.

* 今後の拡張では、Datagram Transport向けPacketization Layer Path MTU Discovery [RFC8899]を使い、MTUを不必要に制限せずに利用可能な経路MTUを見つけるHIPベースの機構を規定する場合があります。たとえば、HIP Relay ClientとHIP Relay Serverの間にこの機構を実装できます。

* It is worth noting that further HIP extensions can trim off 8 bytes in the ESP header by negotiating implicit initialization vector (IV) support in the ESP_TRANSFORM parameter as described in [RFC8750].

* [RFC8750]で説明されているとおり、ESP_TRANSFORMパラメータで暗黙の初期化ベクトル(IV)をサポートするようネゴシエートすれば、今後のHIP拡張でESPヘッダーをさらに8バイト削減できる点にも注意してください。

5.2. Connectivity Checks
5.2. 接続チェック

HIP connectivity checks are HIP UPDATE packets. The format is specified in [RFC7401].

HIP接続性チェックはHIP更新パケットです。フォーマットは[RFC7401]で指定されています。

5.3. Keepalives
5.3. キープアライブ

The RECOMMENDED encoding format for keepalives is HIP NOTIFY packets as specified in [RFC7401] with the Notify message type field set to NAT_KEEPALIVE (16385) and with an empty Notification data field. It is worth noting that the sending of such a HIP NOTIFY message SHOULD be omitted if the host is sending some other traffic (HIP or ESP) to the peer host over the related UDP tunnel during the Tr period. For instance, the host MAY actively send ICMPv6 requests (or respond with an ICMPv6 response) inside the ESP tunnel to test the health of the associated IPsec security association. Alternatively, the host MAY use UPDATE packets as a substitute. A minimal UPDATE packet would consist of a SEQ and a single ECHO_REQ_SIGN parameter, and a more complex one would involve rekeying procedures as specified in Section 6.8 of [RFC7402]. It is worth noting that a host actively sending periodic UPDATE packets to a busy server may increase the computational load of the server since it has to verify HMACs and signatures in UPDATE messages.

キープアライブには、[RFC7401]で規定されているHIP NOTIFYパケットを使うことが推奨されます (SHOULD)。Notify message typeフィールドをNAT_KEEPALIVE(16385)に設定し、Notification dataフィールドを空にします。Tr期間中に、ホストが関連するUDPトンネル経由でピアへ別のトラフィック(HIPまたはESP)を送信している場合、このHIP NOTIFYメッセージの送信は省略すべきです (SHOULD)。たとえば、ホストは関連するIPsecセキュリティアソシエーションの状態を確認するため、ESPトンネル内でICMPv6要求を能動的に送信してもかまいません (MAY)(またはICMPv6応答で応答してもかまいません)。代わりにUPDATEパケットを使ってもかまいません (MAY)。最小のUPDATEパケットはSEQと1つのECHO_REQ_SIGNパラメータで構成します。より複雑なUPDATEには、[RFC7402]のセクション6.8で規定する鍵更新手順を含めることができます。混雑したサーバにホストがUPDATEを定期的に送信すると、UPDATE内のHMACと署名の検証が必要になるため、サーバの計算負荷が増える可能性があります。

5.4. NAT Traversal Mode Parameter
5.4. NATトラバーサルモードパラメータ

The format of the NAT traversal mode parameter is defined in Legacy ICE-HIP [RFC5770] but repeated here for completeness. The format of the NAT_TRAVERSAL_MODE parameter is similar to the format of the ESP_TRANSFORM parameter in [RFC7402] and is shown in Figure 8. The Native ICE-HIP extension specified in this document defines the new NAT traversal mode identifier for ICE-HIP-UDP and reuses the UDP-ENCAPSULATION mode from Legacy ICE-HIP [RFC5770]. The identifier named RESERVED is reserved for future use. Future specifications may define more traversal modes.

NAT越えモードパラメータの形式はLegacy ICE-HIP [RFC5770]で規定されていますが、説明を完全にするためここに再掲します。NAT_TRAVERSAL_MODEパラメータは[RFC7402]のESP_TRANSFORMパラメータと同様の形式であり、図8に示します。本書が規定するNative ICE-HIP拡張では、ICE-HIP-UDP用の新しいNAT越えモード識別子を定義し、Legacy ICE-HIP [RFC5770]のUDP-ENCAPSULATIONモードを再利用します。RESERVEDという識別子は将来の使用のために予約されています。今後の仕様で、さらにNAT越えモードを定義する場合があります。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Reserved            |            Mode ID #1         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Mode ID #2          |            Mode ID #3         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Mode ID #n          |             Padding           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 8: Format of the NAT_TRAVERSAL_MODE Parameter

図8:NAT_TRAVERSAL_MODEパラメータの形式

Type: 608

タイプ:608

Length: Length in octets, excluding Type, Length, and Padding

長さ:オクテットの長さ、タイプ、長さ、およびパディングを除く

Reserved: Zero when sent, ignored when received

予約済み:送信時にゼロ、受信時に無視されます

Mode ID: Defines the proposed or selected NAT traversal mode(s)

モードID:提案または選択されたNATトラバーサルモードを定義します(S)

The following NAT traversal mode IDs are defined:

次のNATトラバーサルモードIDが定義されています。

                       +===================+=======+
                       | ID name           | Value |
                       +===================+=======+
                       | RESERVED          | 0     |
                       +-------------------+-------+
                       | UDP-ENCAPSULATION | 1     |
                       +-------------------+-------+
                       | ICE-STUN-UDP      | 2     |
                       +-------------------+-------+
                       | ICE-HIP-UDP       | 3     |
                       +-------------------+-------+
        

Table 1: NAT Traversal Mode IDs

表1:NATトラバーサルモードIDS

The sender of a NAT_TRAVERSAL_MODE parameter MUST make sure that there are no more than six (6) Mode IDs in one NAT_TRAVERSAL_MODE parameter. Conversely, a recipient MUST be prepared to handle received NAT traversal mode parameters that contain more than six Mode IDs by accepting the first six Mode IDs and dropping the rest. The limited number of Mode IDs sets the maximum size of the NAT_TRAVERSAL_MODE parameter. The modes MUST be in preference order, most preferred mode(s) first.

NAT_TRAVERSAL_MODEパラメータの送信者は、1つのパラメータに含めるMode IDが6個を超えないようにしなければなりません (MUST)。受信者は、6個を超えるMode IDを含むパラメータを受信する場合に備え、最初の6個を受け入れて残りを破棄できるようにしておかなければなりません (MUST)。Mode IDの数を制限することで、NAT_TRAVERSAL_MODEパラメータの最大サイズが決まります。モードは優先順に並べ、最も優先度の高いものを先頭にしなければなりません (MUST)。

Implementations conforming to this specification MUST implement UDP-ENCAPSULATION and SHOULD implement ICE-HIP-UDP modes.

本仕様に準拠する実装はUDP-ENCAPSULATIONを実装しなければならず (MUST)、ICE-HIP-UDPモードも実装すべきです (SHOULD)。

5.5. Connectivity Check Transaction Pacing Parameter
5.5. 接続性のチェックトランザクションペーシングパラメータ

The TRANSACTION_PACING parameter is defined in [RFC5770] but repeated in Figure 9 for completeness. It contains only the connectivity check pacing value, expressed in milliseconds, as a 32-bit unsigned integer.

TRANSACTION_PACINGパラメータは[RFC5770]で定義されていますが、完全性については図9で繰り返されます。32ビットの符号なし整数として、ミリ秒単位で表される接続性チェックペーシング値のみが含まれています。

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Type              |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            Min Ta                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 9: Format of the TRANSACTION_PACING Parameter

図9:TRANSACTION_PACINGパラメータの形式

Type: 610

タイプ:610

Length: 4

長さ:4

Min Ta: The minimum connectivity check transaction pacing value the host would use (in milliseconds)

Min Ta:最小接続性チェックトランザクションペーシング値ホストが使用する(ミリ秒)

5.6. Relay and Registration Parameters
5.6. リレーと登録パラメータ

The format of the REG_FROM, RELAY_FROM, and RELAY_TO parameters is shown in Figure 10. All parameters are identical except for the type. Of the three, only REG_FROM is covered by the signature.

図10には、REG_FROM、RELAY_FROM、およびRELAY_TOパラメータの形式を示します。すべてのパラメーターはタイプを除いて同じです。3つのうち、REG_FROMのみが署名によってカバーされています。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Port              |    Protocol   |     Reserved  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                            Address                            |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 10: Format of the REG_FROM, RELAY_FROM, and RELAY_TO Parameters

図10:REG_FROM、RELAY_FROM、およびRELAY_TOパラメータの形式

Type: REG_FROM: 950 RELAY_FROM: 63998 RELAY_TO: 64002

タイプ:REG_FROM:950 RELAY_FROM:63998 RELAY_TO:64002

Length: 20

長さ:20

Port: Transport port number; zero when plain IP is used

ポート:トランスポートポート番号。普通IPが使用されているときにゼロ

Protocol: IANA-assigned, Internet Protocol number. 17 for UDP; 0 for plain IP

プロトコル:IANAが割り当てられたインターネットプロトコル番号。UDPの場合17。普通のIPのための0

Reserved: Reserved for future use; zero when sent, ignored when received

予約済み:将来の使用のために予約されています。送信されたときにはゼロを受信したときに無視されます

Address: An IPv6 address or an IPv4 address in "IPv4-mapped IPv6 address" format

アドレス:「IPv4マップIPv6アドレス」フォーマットのIPv6アドレスまたはIPv4アドレス

REG_FROM contains the transport address and protocol from which the Control Relay Server sees the registration coming. RELAY_FROM contains the address from which the relayed packet was received by the Control Relay Server and the protocol that was used. RELAY_TO contains the same information about the address to which a packet should be forwarded.

REG_FROMには、Control Relay Serverから見た登録元のトランスポートアドレスとプロトコルが含まれます。RELAY_FROMには、Control Relay Serverが中継パケットを受信したアドレスと使用プロトコルが含まれます。RELAY_TOには、パケットの転送先アドレスに関する同じ情報が含まれます。

5.7. LOCATOR_SET Parameter
5.7. LOCATOR_SETパラメータ

This specification reuses the format for UDP-based locators as specified in Legacy ICE-HIP [RFC5770] to be used for communicating the address candidates between two hosts. The generic and NAT-traversal-specific locator parameters are illustrated in Figure 11.

この仕様では、2つのホスト間でアドレス候補を交換するため、Legacy ICE-HIP [RFC5770]で規定されたUDPベースのロケータ形式を再利用します。一般的なロケータパラメータとNAT越え固有のロケータパラメータを図11に示します。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |            Length             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Traffic Type  |  Locator Type | Locator Length|  Reserved   |P|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       Locator Lifetime                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            Locator                            |
     |                                                               |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     .                                                               .
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Traffic Type  |  Loc Type = 2 | Locator Length|  Reserved   |P|
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       Locator Lifetime                        |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Transport Port            |  Transp. Proto|     Kind      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                           Priority                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                              SPI                              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            Address                            |
     |                                                               |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 11: LOCATOR_SET Parameter

図11:LOCATOR_SETパラメータ

The individual fields in the LOCATOR_SET parameter are described in Table 2.

LOCATOR_SETパラメータの個々のフィールドは表2に説明されています。

    +===========+==========+=========================================+
    | Field     | Value(s) | Purpose                                 |
    +===========+==========+=========================================+
    | Type      | 193      | Parameter type                          |
    +-----------+----------+-----------------------------------------+
    | Length    | Variable | Length in octets, excluding Type and    |
    |           |          | Length fields and padding               |
    +-----------+----------+-----------------------------------------+
    | Traffic   | 0-2      | The locator for either HIP signaling    |
    | Type      |          | (1) or ESP (2), or for both (0)         |
    +-----------+----------+-----------------------------------------+
    | Locator   | 2        | "Transport address" locator type        |
    | Type      |          |                                         |
    +-----------+----------+-----------------------------------------+
    | Locator   | 7        | Length of the fields after Locator      |
    | Length    |          | Lifetime in 4-octet units               |
    +-----------+----------+-----------------------------------------+
    | Reserved  | 0        | Reserved for future extensions          |
    +-----------+----------+-----------------------------------------+
    | Preferred | 0 or 1   | Set to 1 for a Locator in R1 if the     |
    | (P) bit   |          | Responder can use it for the rest of    |
    |           |          | the base exchange, otherwise set to     |
    |           |          | zero                                    |
    +-----------+----------+-----------------------------------------+
    | Locator   | Variable | Locator lifetime in seconds, see        |
    | Lifetime  |          | Section 4 of [RFC8046]                  |
    +-----------+----------+-----------------------------------------+
    | Transport | Variable | Transport-layer port number             |
    | Port      |          |                                         |
    +-----------+----------+-----------------------------------------+
    | Transport | Variable | IANA-assigned, transport-layer Internet |
    | Protocol  |          | Protocol number.  Currently, only UDP   |
    |           |          | (17) is supported.                      |
    +-----------+----------+-----------------------------------------+
    | Kind      | Variable | 0 for host, 1 for server reflexive, 2   |
    |           |          | for peer reflexive (currently unused),  |
    |           |          | or 3 for relayed address                |
    +-----------+----------+-----------------------------------------+
    | Priority  | Variable | Locator's priority as described in      |
    |           |          | [RFC8445].  It is worth noting that     |
    |           |          | while the priority of a single locator  |
    |           |          | candidate is 32 bits, an implementation |
    |           |          | should a 64-bit integer to calculate    |
    |           |          | the priority of a candidate pair for    |
    |           |          | the ICE priority algorithm.             |
    +-----------+----------+-----------------------------------------+
    | SPI       | Variable | Security Parameter Index (SPI) value    |
    |           |          | that the host expects to see in         |
    |           |          | incoming ESP packets that use this      |
    |           |          | locator                                 |
    +-----------+----------+-----------------------------------------+
    | Address   | Variable | IPv6 address or an "IPv4-mapped IPv6    |
    |           |          | address" format IPv4 address [RFC4291]  |
    +-----------+----------+-----------------------------------------+
        

Table 2: Fields of the LOCATOR_SET Parameter

表2:LOCATOR_SETパラメータのフィールド

The LOCATOR parameter MUST be encapsulated inside an ENCRYPTED parameter.

LOCATORパラメーターは暗号化されたパラメーター内でカプセル化されていなければなりません (MUST)。

5.8. RELAY_HMAC Parameter
5.8. RELAY_HMACパラメータ

As specified in Legacy ICE-HIP [RFC5770], the RELAY_HMAC parameter value has the TLV type 65520. It has the same semantics as RVS_HMAC as specified in Section 4.2.1 of [RFC8004]. Similar to RVS_HMAC, RELAY_HMAC is also keyed with the HIP integrity key (HIP-lg or HIP-gl as specified in Section 6.5 of [RFC7401]), established during the relay registration procedure as described in Section 4.1.

Legacy ICE-HIP [RFC5770]で規定されているとおり、RELAY_HMACパラメータの値のTLV型は65520です。これは[RFC8004]のセクション4.2.1で規定されているRVS_HMACと同じ意味を持ちます。RVS_HMACと同様に、RELAY_HMACもHIP完全性鍵([RFC7401]のセクション6.5で規定されるHIP-lgまたはHIP-gl)を鍵として使います。この鍵はセクション4.1で説明するRelay登録手順で確立します。

5.9. Registration Types
5.9. 登録タイプ

The REG_INFO, REG_REQ, REG_RESP, and REG_FAILED parameters contain Registration Type [RFC8003] values for Control Relay Server registration. The value for RELAY_UDP_HIP is 2 as specified in Legacy ICE-HIP [RFC5770]. The value for RELAY_UDP_ESP is 3.

REG_INFO、REG_REQ、REG_RESPおよびREG_FAILEDパラメータには、Control Relay Serverへの登録に用いるRegistration Type [RFC8003]の値が含まれます。RELAY_UDP_HIPの値はLegacy ICE-HIP [RFC5770]で規定されている2です。RELAY_UDP_ESPの値は3です。

5.10. Notify Packet Types
5.10. パケットの種類の通知

A Control/Data Relay Server and end hosts can use NOTIFY packets to signal different error conditions. The NOTIFY packet types are the same as in Legacy ICE-HIP [RFC5770] except for the two last ones, which are new.

Control/Data Relay Serverとエンドホストは、異なるエラー状態を通知するためにNOTIFYパケットを使えます。最後の2種類が新規である点を除き、NOTIFYパケットタイプはLegacy ICE-HIP [RFC5770]と同じです。

The Notify Packet Types [RFC7401] are shown below. The Notification Data field for the error notifications SHOULD contain the HIP header of the rejected packet and SHOULD be empty for the CONNECTIVITY_CHECKS_FAILED type.

以下に[RFC7401]のNOTIFYパケットタイプを示します。エラー通知のNotification Dataフィールドには、拒否したパケットのHIPヘッダーを含めるべきです (SHOULD)。CONNECTIVITY_CHECKS_FAILEDタイプでは、このフィールドを空にすべきです (SHOULD)。

      +=====================================================+=======+
      | NOTIFICATION PARAMETER - ERROR TYPES                | Value |
      +=====================================================+=======+
      | NO_VALID_NAT_TRAVERSAL_MODE_PARAMETER               | 60    |
      |                                                     |       |
      | If a Control Relay Server does not forward a base   |       |
      | exchange packet due to a missing NAT traversal mode |       |
      | parameter, or the Initiator selects a NAT traversal |       |
      | mode that the (non-relay) Responder did not expect, |       |
      | the Control Relay Server or the Responder may send  |       |
      | back a NOTIFY error packet with this type.          |       |
      +-----------------------------------------------------+-------+
      | CONNECTIVITY_CHECKS_FAILED                          | 61    |
      |                                                     |       |
      | Used by the end hosts to signal that NAT traversal  |       |
      | connectivity checks failed and did not produce a    |       |
      | working path.                                       |       |
      +-----------------------------------------------------+-------+
      | MESSAGE_NOT_RELAYED                                 | 62    |
      |                                                     |       |
      | Used by a Control Relay Server to signal that it    |       |
      | was not able or willing to relay a HIP packet.      |       |
      +-----------------------------------------------------+-------+
      | SERVER_REFLEXIVE_CANDIDATE_ALLOCATION_FAILED        | 63    |
      |                                                     |       |
      | Used by a Data Relay Server to signal that it was   |       |
      | not able or willing to allocate a new server-       |       |
      | reflexive candidate for the Data Relay Client.      |       |
      +-----------------------------------------------------+-------+
      | RVS_HMAC_PROHIBITED_WITH_RELAY                      | 64    |
      |                                                     |       |
      | In the unintended event that a Control Relay Server |       |
      | sends any HIP message with an RVS_HMAC parameter,   |       |
      | the Control Relay Client drops the received HIP     |       |
      | message and sends a notify message back to the      |       |
      | Control Relay Server using this notify type.        |       |
      +-----------------------------------------------------+-------+
        

Table 3: Notify Packet Types

表3:パケットの種類を通知します

5.11. ESP Data Packets
5.11. ESPデータパケット

The format for ESP data packets is identical to Legacy ICE-HIP [RFC5770].

ESPデータパケットの形式はLegacy ICE-HIP [RFC5770]と同一です。

[RFC3948] describes the UDP encapsulation of the IPsec ESP transport and tunnel mode. On the wire, the HIP ESP packets do not differ from the transport mode ESP; thus, the encapsulation of the HIP ESP packets is same as the UDP encapsulation transport mode ESP. However, the (semantic) difference to Bound End-to-End Tunnel (BEET) mode ESP packets used by HIP is that the IP header is not used in BEET integrity protection calculation.

[RFC3948]はIPsec ESPのトランスポートモードおよびトンネルモードにおけるUDPカプセル化を規定しています。通信路上では、HIP ESPパケットはトランスポートモードESPと同じに見えるため、HIP ESPパケットのカプセル化はUDPカプセル化したトランスポートモードESPと同じです。ただし、HIPで使うBound End-to-End Tunnel(BEET)モードのESPパケットとは意味上の違いがあります。BEETでは、完全性保護の計算にIPヘッダーを使いません。

During the HIP base exchange, the two peers exchange parameters that enable them to define a pair of IPsec ESP security associations (SAs) as described in [RFC7402]. When two peers perform a UDP-encapsulated base exchange, they MUST define a pair of IPsec SAs that produces UDP-encapsulated ESP data traffic.

HIP基本交換では、2つのピアが[RFC7402]の説明に従い、IPsec ESPセキュリティアソシエーション(SA)のペアを定義するパラメータを交換します。UDPカプセル化で基本交換を行う場合、両ピアはUDPカプセル化ESPデータトラフィックを生成するIPsec SAのペアを定義しなければなりません (MUST)。

The management of encryption/authentication protocols and SPIs is defined in [RFC7402]. The UDP encapsulation format and processing of HIP ESP traffic is described in Section 6.1 of [RFC7402].

暗号化/認証プロトコルとSPIの管理は[RFC7402]で定義されています。[RFC7402]の6.1項で、UDPカプセル化フォーマットとHIP ESPトラフィックの処理について説明します。

5.12. RELAYED_ADDRESS and MAPPED_ADDRESS Parameters
5.12. RELAYED_ADDRESSとMAPPED_ADDRESSパラメータ

While the type values are new, the format of the RELAYED_ADDRESS and MAPPED_ADDRESS parameters (Figure 12) is identical to REG_FROM, RELAY_FROM, and RELAY_TO parameters. This document specifies only the use of UDP relaying; thus, only protocol 17 is allowed. However, future documents may specify support for other protocols.

型の値は新規ですが、RELAYED_ADDRESSおよびMAPPED_ADDRESSパラメータの形式(図12)はREG_FROM、RELAY_FROMおよびRELAY_TOと同じです。本書が規定するのはUDP中継だけなので、使用できるプロトコルは17のみです。ただし、今後の文書で他のプロトコルのサポートが規定される場合があります。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Port              |    Protocol   |    Reserved   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                            Address                            |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 12: Format of the RELAYED_ADDRESS and MAPPED_ADDRESS Parameters

図12:RELAYED_ADDRESSとMAPPED_ADDRESSパラメータの形式

Type: RELAYED_ADDRESS: 4650 MAPPED_ADDRESS: 4660

タイプ:RELAYED_ADDRESS:4650 MAPPED_ADDRESS:4660

Length: 20

長さ:20

Port: The UDP port number

ポート:UDPポート番号

Protocol: IANA-assigned, Internet Protocol number (17 for UDP)

プロトコル:IANAが割り当てられたインターネットプロトコル番号(UDPの17)

Reserved: Reserved for future use; zero when sent, ignored when received

予約済み:将来の使用のために予約されています。送信されたときにはゼロを受信したときに無視されます

Address: An IPv6 address or an IPv4 address in "IPv4-mapped IPv6 address" format

アドレス:「IPv4マップIPv6アドレス」フォーマットのIPv6アドレスまたはIPv4アドレス

5.13. PEER_PERMISSION Parameter
5.13. PEER_PERMISSIONパラメータ

The format of the new PEER_PERMISSION parameter is shown in Figure 13. The parameter is used for setting up and refreshing forwarding rules and the permissions for data packets at the Data Relay Server. The parameter contains one or more sets of Port, Protocol, Address, Outbound SPI (OSPI), and Inbound SPI (ISPI) values. One set defines a rule for one peer address.

新しいPEER_PERMISSIONパラメータの形式を図13に示します。このパラメータは、Data Relay Server上の転送規則とデータパケットに対する権限の設定および更新に使います。パラメータには、Port、Protocol、Address、Outbound SPI(OSPI)およびInbound SPI(ISPI)の値の組を1つ以上含みます。各組は1つのピアアドレスに対する規則を定義します。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |            RPort              |             PPort             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   Protocol    |          Reserved                             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                            RAddress                           |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                            PAddress                           |
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                              OSPI                             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                              ISPI                             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 13: Format of the PEER_PERMISSION Parameter

図13:PEER_PERMISSIONパラメータの形式

Type: 4680

タイプ:4680

Length: 48

長さ:48

RPort: The transport-layer (UDP) port at the Data Relay Server (i.e., the port of the server-reflexive candidate)

RPort:Data Relay Server上のトランスポート層(UDP)ポート、つまりserver-reflexive candidateのポートです。

PPort: The transport-layer (UDP) port number of the peer

PPort:ピアのトランスポート層(UDP)ポート番号です。

Protocol: IANA-assigned, Internet Protocol number (17 for UDP)

Protocol:IANAが割り当てたInternet Protocol番号です(UDPは17)。

Reserved: Reserved for future use; zero when sent, ignored when received

Reserved:将来の使用のために予約されています。送信時はゼロとし、受信時は無視します。

RAddress: An IPv6 address, or an IPv4 address in "IPv4-mapped IPv6 address" format, of the server-reflexive candidate

RAddress:server-reflexive candidateのIPv6アドレス、または「IPv4-mapped IPv6 address」形式のIPv4アドレスです。

PAddress: An IPv6 address, or an IPv4 address in "IPv4-mapped IPv6 address" format, of the peer

PAddress:ピアのIPv6アドレス、または「IPv4-mapped IPv6 address」形式のIPv4アドレスです。

OSPI: The outbound SPI value the Data Relay Client is using for the peer

OSPI:データリレークライアントがピアに使用しているアウトバウンドSPI値

ISPI: The inbound SPI value the Data Relay Client is using for the peer

ISPI:Inbound SPI値データリレークライアントがピアに使用している

5.14. HIP Connectivity Check Packets
5.14. HIP接続性チェックパケット

The connectivity request messages are HIP UPDATE packets containing a new CANDIDATE_PRIORITY parameter (Figure 14). Response UPDATE packets contain a MAPPED_ADDRESS parameter (Figure 12).

接続性チェック要求メッセージは、新しいCANDIDATE_PRIORITYパラメータ(図14)を含むHIP UPDATEパケットです。応答のUPDATEパケットにはMAPPED_ADDRESSパラメータ(図12)が含まれます。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                            Priority                           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 14: Format of the CANDIDATE_PRIORITY Parameter

図14:CANDIDATE_PRIORITYパラメータの形式

Type: 4700

タイプ:4700

Length: 4

長さ:4

Priority: The priority of a (potential) peer-reflexive candidate

Priority:peer-reflexive candidate(候補となる候補)の優先度です。

5.15. NOMINATE Parameter
5.15. ノミネートパラメータ

Figure 15 shows the NOMINATE parameter that is used to conclude the candidate nomination process.

図15に、候補の指名手順を完了するために使うNOMINATEパラメータを示します。

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |             Type              |             Length            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                           Reserved                            |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Figure 15: Format of the NOMINATE Parameter

図15:ノミネートパラメータの形式

Type: 4710

タイプ:4710

Length: 4

長さ:4

Reserved: Reserved for future extension purposes

予約済み:将来の拡張目的のために予約されています

6. IAB Considerations
6. IABの考慮事項

The ICE specification [RFC8445] discusses "Unilateral Self-Address Fixing" in Section 18. This protocol is based on ICE; thus, the same considerations also apply here.

ICE仕様[RFC8445]は、セクション18の「一方的な自己アドレス固定」について説明します。このプロトコルはICEに基づいています。したがって、ここでも同じ考察も適用されます。

7. Security Considerations
7. セキュリティに関する考慮事項

Since the control plane protocol and Control Relay Server are essentially the same (with some minor differences) in this document as in Legacy ICE-HIP [RFC5770], the same security considerations (in Sections 7.1, 7.2, 7.3, and 7.4) are still valid, but are repeated here for the sake of completeness. New security considerations related to the new Data Relay Server are discussed in Section 7.5, and considerations related to the new connectivity check protocol are discussed in Sections 7.6 and 7.7.

本書の制御プレーンプロトコルとControl Relay Serverは、若干の違いを除きLegacy ICE-HIP [RFC5770]と基本的に同じです。そのため、同じセキュリティ上の考慮事項(セクション7.1、7.2、7.3および7.4)も引き続き有効であり、ここに再掲します。新しいData Relay Serverに関する考慮事項はセクション7.5で、新しい接続性チェックプロトコルに関する考慮事項はセクション7.6および7.7で説明します。

7.1. Privacy Considerations
7.1. プライバシーに関する考慮事項

It is also possible that end users may not want to reveal all locators to each other. For example, tracking the physical location of a multihoming end host may become easier if it reveals all locators to its peer during a base exchange. Also, revealing host addresses exposes information about the local topology that may not be allowed in all corporate environments. For these two local policy reasons, it might be tempting to exclude certain host addresses from the LOCATOR_SET parameter of an end host, but this is NOT RECOMMENDED. For instance, such behavior creates non-optimal paths when the hosts are located behind the same NAT. Especially, this could be problematic with a legacy NAT that does not support routing from the private address realm back to itself through the outer address of the NAT. This scenario is referred to as the hairpin problem [RFC5128]. With such a legacy NAT, the only option left would be to use a relayed transport address from a Data Relay Server.

エンドユーザーがロケータをすべて互いに公開したくない場合もあります。たとえば、マルチホーミングするエンドホストが基本交換時にすべてのロケータをピアに公開すると、物理的位置を追跡されやすくなる可能性があります。また、ホストアドレスを公開すると、企業によっては許可されないローカルトポロジ情報も明らかになります。こうした2つのローカルポリシー上の理由から、エンドホストのLOCATOR_SETパラメータから一部のホストアドレスを除外したくなるかもしれませんが、これは推奨されません (SHOULD NOT)。たとえば、両ホストが同じNAT配下にある場合、そのような動作によって最適でない経路が生じます。特に、NATの外部アドレスを経由してプライベートアドレス領域内へ戻る経路をサポートしない古いNATでは問題になります。この状況をヘアピン問題と呼びます [RFC5128]。このような古いNATでは、Data Relay Serverから中継トランスポートアドレスを使うことが唯一の選択肢になります。

The use of Control and Data Relay Servers can also be useful for privacy purposes. For example, a privacy-concerned Responder may reveal only its Control Relay Server and Relayed candidates to Initiators. This partially protects the Responder against Denial-of-Service (DoS) attacks by allowing the Responder to initiate new connections even if its relays would be unavailable due to a DoS attack.

プライバシー上の理由で、Control Relay ServerやData Relay Serverを利用することもできます。たとえば、プライバシーを重視するResponderは、自身のControl Relay Serverとrelayed candidateだけをInitiatorに知らせる場合があります。これにより、DoS攻撃で中継サーバが利用できなくなってもResponderが新しい接続を開始できるため、ResponderをDoS攻撃から部分的に保護できます。

7.2. Opportunistic Mode
7.2. 日和見的モード

In opportunistic HIP mode (cf. Section 4.1.8 of [RFC7401]), an Initiator sends an I1 without setting the destination HIT of the Responder (i.e., the Control Relay Client). A Control Relay Server SHOULD have a unique IP address per the Control Relay Client when the Control Relay Server is serving more than one Control Relay Client and supports opportunistic mode. Otherwise, the Control Relay Server cannot guarantee to deliver the I1 packet to the intended recipient. Future extensions of this document may allow opportunistic mode to be used with non-unique IP addresses to be utilized either as a HIP-level anycast or multicast mechanism. Both of the mentioned cases would require separate registration parameters that the Control Relay Server proposes and the Control Client Server accepts during registration.

日和見的HIPモード([RFC7401]のセクション4.1.8参照)では、InitiatorはResponder(Control Relay Client)の宛先HITを設定せずにI1を送信します。複数のControl Relay Clientを扱い、日和見的モードをサポートするControl Relay Serverは、Control Relay Clientごとに一意のIPアドレスを持つべきです (SHOULD)。そうしないと、I1を意図した相手に届けられる保証がありません。今後の拡張で、一意でないIPアドレスをHIPレベルのエニーキャストまたはマルチキャスト機構として使う日和見的モードを定義する場合があります。そのどちらの場合も、Control Relay Serverが提示し、Control Relay Clientが登録時に受け入れる別個の登録パラメータが必要です。

7.3. Base Exchange Replay Protection for Control Relay Server
7.3. Control Relay Serverのベース交換再生保護

In certain scenarios, it is possible that an attacker, or two attackers, can replay an earlier base exchange through a Control Relay Server by masquerading as the original Initiator and Responder. The attack does not require the attacker(s) to compromise the private key(s) of the attacked host(s). However, for this attack to succeed, the legitimate Responder has to be disconnected from the Control Relay Server.

特定の状況では、攻撃者1人または2人が元のInitiatorとResponderになりすまし、Control Relay Server経由で以前の基本交換を再送することがあります。この攻撃に、攻撃対象ホストの秘密鍵を侵害する必要はありません。ただし、攻撃を成功させるには正規のResponderがControl Relay Serverから切断されている必要があります。

The Control Relay Server can protect itself against replay attacks by becoming involved in the base exchange by introducing nonces that the end hosts (Initiator and Responder) are required to sign. One way to do this is to add ECHO_REQUEST_M parameters to the R1 and I2 packets as described in [HIP-MIDDLEBOXES] and drop the I2 or R2 packets if the corresponding ECHO_RESPONSE_M parameters are not present.

Control Relay Serverは、エンドホスト(InitiatorとResponder)が署名するnonceを導入し、基本交換に関与することでリプレイ攻撃から自身を守れます。方法の1つは、[HIP-MIDDLEBOXES]で説明されているようにR1とI2にECHO_REQUEST_Mパラメータを追加し、対応するECHO_RESPONSE_MがないI2またはR2を破棄することです。

7.4. Demultiplexing Different HIP Associations
7.4. 異なるHIPアソシエーションの逆多重化

Section 5.1 of [RFC3948] describes a security issue for the UDP encapsulation in the standard IP tunnel mode when two hosts behind different NATs have the same private IP address and initiate communication to the same Responder in the public Internet. The Responder cannot distinguish between two hosts because security associations are based on the same inner IP addresses.

[RFC3948]のセクション5.1では、異なるNAT配下にある2つのホストが同じプライベートIPアドレスを使い、パブリックインターネット上の同じResponderと通信を開始した場合に、標準のIPトンネルモードでUDPカプセル化を使う際のセキュリティ問題を説明しています。セキュリティアソシエーションが同じ内部IPアドレスに基づくため、Responderは2つのホストを区別できません。

This issue does not exist with the UDP encapsulation of HIP ESP transport format because the Responder uses HITs to distinguish between different Initiators.

HIP ESPトランスポート形式のUDPカプセル化では、ResponderはHITを使って異なるInitiatorを識別するため、この問題は発生しません。

7.5. Reuse of Ports at the Data Relay Server
7.5. データリレーサーバーのポートの再利用

If the Data Relay Server uses the same relayed address and port (as conveyed in the RELAYED_ADDRESS parameter) for multiple Data Relay Clients, it appears to all the peers, and their firewalls, that all the Data Relay Clients are at the same address. Thus, a stateful firewall may allow packets to pass from hosts that would not normally be able to send packets to a peer behind the firewall. Therefore, a Data Relay Server SHOULD NOT reuse the port numbers. If port numbers need to be reused, the Data Relay Server SHOULD have a sufficiently large pool of port numbers and randomly select ports from the pool to decrease the chances of a Data Relay Client obtaining the same address that another host behind the same firewall is using.

Data Relay Serverが複数のData Relay Clientに同じ中継アドレスとポート(RELAYED_ADDRESSパラメータで通知)を使うと、ピアやそのファイアウォールからは、すべてのData Relay Clientが同じアドレスにいるように見えます。その結果、ステートフルファイアウォールが、本来ならファイアウォールの背後のピアにパケットを送れないホストからのパケットを通す可能性があります。したがって、Data Relay Serverはポート番号を再利用すべきではありません (SHOULD NOT)。ポートを再利用する必要がある場合は、十分な数のポートをプールに用意し、その中からランダムに選択すべきです (SHOULD)。そうすれば、同じファイアウォールの背後にある別のホストが使うものと同じアドレスをData Relay Clientが得る可能性を下げられます。

7.6. Amplification Attacks
7.6. 増幅攻撃

A malicious host may send an invalid list of candidates to its peer that are used for targeting a victim host by flooding it with connectivity checks. To mitigate the attack, this protocol adopts the ICE mechanism to cap the total amount of connectivity checks as defined in Section 4.7.

悪意のあるホストは、接続性チェックを大量に送り付けて被害ホストを攻撃するために、無効な候補リストをピアへ送ることがあります。この攻撃を軽減するため、本プロトコルはICEの仕組みを採用し、セクション4.7の規定に従って接続性チェックの合計数を制限します。

7.7. Attacks against Connectivity Checks and Candidate Gathering
7.7. 接続性チェックと候補収集に対する攻撃

Section 19.2 of [RFC8445] describes attacks against ICE connectivity checks. HIP bases its control plane security on Diffie-Hellman key exchange, public keys, and Hashed Message Authentication codes, meaning that the mentioned security concerns do not apply to HIP either. The mentioned section also discusses man-in-the-middle replay attacks that are difficult to prevent. The connectivity checks in this protocol are effectively immune against replay attacks because a connectivity request includes a random nonce that the recipient must sign and send back as a response.

[RFC8445]のセクション19.2では、ICE接続性チェックに対する攻撃を説明しています。HIPではDiffie-Hellman鍵交換、公開鍵およびHashed Message Authentication Codeを使って制御プレーンを保護するため、そこで述べられている懸念はHIPには当てはまりません。同節で扱う中間者によるリプレイ攻撃は防止が困難です。本プロトコルの接続性チェックは、要求にランダムなnonceが含まれ、受信側が署名して応答で返す必要があるため、リプレイ攻撃に対して実質的に耐性があります。

Section 19.3 of [RFC8445] describes attacks on server-reflexive address gathering. Similarly here, if the DNS, a Control Relay Server, or a Data Relay Server has been compromised, not much can be done. However, the case where attackers can inject fake messages (located on a shared network segment like Wi-Fi) does not apply here. HIP messages are integrity and replay protected, so it is not possible to inject fake server-reflexive address candidates.

[RFC8445]のセクション19.3では、server-reflexive addressの収集に対する攻撃を説明しています。ここでも、DNS、Control Relay ServerまたはData Relay Serverが侵害された場合にできることはあまりありません。一方、Wi-Fiなどの共有ネットワーク上にいる攻撃者が偽メッセージを注入するケースは当てはまりません。HIPメッセージは完全性が保護され、リプレイも防止されるため、偽のserver-reflexive address candidateを注入することはできません。

Section 19.4 of [RFC8445] describes attacks on relayed candidate gathering. Similarly to ICE TURN servers, a Data Relay Server requires an authenticated base exchange that protects relayed address gathering against fake requests and responses. Further, replay attacks are not possible because the HIP base exchange (and also UPDATE procedure) is protected against replay attacks.

[RFC8445]のセクション19.4では、中継候補の収集に対する攻撃を説明しています。ICEのTURNサーバと同様に、Data Relay Serverでは認証済みの基本交換を要求し、偽の要求や応答から中継アドレスの収集を保護します。また、HIP基本交換とUPDATE手順はリプレイ攻撃から保護されるため、リプレイ攻撃はできません。

7.8. Cross-Protocol Attacks
7.8. クロスプロトコル攻撃

Section 4.1 explains how a Control Relay Client registers for the RELAY_UDP_HIP service from a Control Relay Server. However, the same server may also offer Rendezvous functionality; thus, a client can register both to a RELAY_UDP_HIP and a RENDEZVOUS (see [RFC8004]) service from the same server. Potentially, this introduces a cross-protocol attack (or actually a "cross-message" attack) because the key material is the same for the Control Relay Service and Rendezvous HMACs. While the problem could be avoided by deriving different keys for the Control Relay Service, a more simple measure was chosen because the exact attack scenario was unclear. Consequently, this section defines a mandatory mitigation mechanism against the cross-protocol attack that works by preventing the simultaneous use of Rendezvous and Control Relay Service in the context of a single HIP Association.

セクション4.1では、Control Relay ClientがControl Relay ServerにRELAY_UDP_HIPサービスを登録する方法を説明します。ただし、同じサーバがRendezvous機能も提供する場合、クライアントはそのサーバのRELAY_UDP_HIPサービスとRENDEZVOUSサービス([RFC8004]参照)の両方に登録できます。この場合、Control Relay ServiceとRendezvousで使う鍵素材が同じなので、クロスプロトコル攻撃(または「クロスメッセージ」攻撃)が起こる可能性があります。Control Relay Service用に別の鍵を導出すれば回避できますが、具体的な攻撃シナリオが明確でなかったため、より簡単な対策を選びました。そこで本節は、単一のHIPアソシエーション内でRendezvousとControl Relay Serviceを同時に使用できないようにする、クロスプロトコル攻撃への必須の緩和策を定めます。

The registration involves three parameters typically delivered sequentially in R1 (REG_INFO parameter), I2 (REG_REQUEST), and R2 (REG_RESPONSE) messages but can also be delivered in UPDATE messages as described in [RFC8003]. The parameters and the modifications to their processing are described below:

登録では通常、R1(REG_INFO)、I2(REG_REQUEST)、R2(REG_RESPONSE)の順に3つのパラメータを送信します。[RFC8003]の説明に従って、UPDATEメッセージで送ることもできます。各パラメータと処理方法の変更点を以下に示します。

REG_INFO: The Control Relay Server advertises its available services using this parameter. RELAY_UDP_HIP and RENDEZVOUS services MAY be included in the first advertisement for the HIP association, but subsequent ones MUST include only one of them as agreed in earlier registrations (see steps 2 and 3).

REG_INFO:Control Relay Serverは、このパラメータで利用可能なサービスを通知します。HIPアソシエーションで最初に通知する際はRELAY_UDP_HIPとRENDEZVOUSの両方を含めてもかまいません (MAY)。ただし、2回目以降は、以前の登録手順(ステップ2と3)で合意したどちらか1つだけを含めなければなりません (MUST)。

REG_REQUEST: The Control Relay Client chooses the services it requires using this parameter. If the Control Relay Server offered both RENDEZVOUS or RELAY_UDP_HIP, the Control Relay Client MUST choose only one of them in the REG_REQUEST parameter. Upon choosing one of the two, it persists throughout the lifetime of the HIP association, and the Control Relay Client MUST NOT register the other remaining one in a subsequent UPDATE message.

REG_REQUEST:Control Relay Clientは、このパラメータで必要なサービスを選びます。Control Relay ServerがRENDEZVOUSとRELAY_UDP_HIPの両方を提示した場合、Control Relay ClientはREG_REQUESTでどちらか一方だけを選ばなければなりません (MUST)。選択したサービスはHIPアソシエーションの存続期間中維持され、Control Relay Clientは後続のUPDATEで残るもう一方のサービスに登録してはなりません (MUST NOT)。

REG_RESPONSE: The Control Relay Server verifies the services requested by the Control Relay Client using this parameter. If the Control Relay Server offered both RENDEZVOUS and RELAY_UDP_HIP service, and the Control Relay Client requested for both of them, the Control Relay Client MUST offer only RELAY_UDP_HIP service in the REG_RESPONSE parameter and include a REG_FAILED parameter in the same message, with RENDEZVOUS as the Registration Type and 9 as the Failure Type.

REG_RESPONSE:Control Relay Serverは、このパラメータでControl Relay Clientが要求したサービスを検証します。Control Relay ServerがRENDEZVOUSとRELAY_UDP_HIPの両方を提示し、Control Relay Clientが両方を要求した場合、Control Relay ServerはREG_RESPONSEにRELAY_UDP_HIPだけを含めなければなりません (MUST)。また同じメッセージにREG_FAILEDを含め、Registration TypeをRENDEZVOUS、Failure Typeを9にします。

As a further measure against cross-protocol attacks, the Control Relay Client MUST drop any HIP message that includes an RVS_HMAC parameter when it originates from a successfully registered Control Relay Server. Upon such an (unintended) event, the Control Relay Client MUST send a NOTIFY message with RVS_HMAC_PROHIBITED_WITH_RELAY as the Notify Message Type to the Control Relay Server.

クロスプロトコル攻撃への追加対策として、Control Relay Clientは、登録に成功したControl Relay Serverから届き、RVS_HMACパラメータを含むHIPメッセージを破棄しなければなりません (MUST)。この想定外の事象が起きた場合、Control Relay ClientはNotify Message TypeをRVS_HMAC_PROHIBITED_WITH_RELAYとしたNOTIFYをControl Relay Serverへ送信しなければなりません (MUST)。

8. IANA Considerations
8. IANAの考慮事項

This section is to be interpreted according to [RFC8126].

このセクションは[RFC8126]に従って解釈されます。

This document reuses the same default UDP port number 10500 as specified by Legacy ICE-HIP [RFC5770] for tunneling both HIP control and data plane traffic. The port was registered separately for [RFC5770] to coauthor Ari Keränen originally, but it has been reassigned for IESG control. With the permission of Ari Keränen, the new assignee is the IESG and the contact is <chair@ietf.org>. In addition, IANA has added a reference to this document in the entry for UDP port 10500 in the "Service Name and Transport Protocol Port Number Registry". The selection between Legacy ICE-HIP and Native ICE-HIP mode is negotiated using the NAT_TRAVERSAL_MODE parameter during the base exchange. By default, hosts listen to this port for incoming UDP datagrams and can also use it for sending UDP datagrams. Other ephemeral port numbers are negotiated and utilized dynamically.

本書では、HIP制御プレーンとデータプレーンの両方をトンネリングするため、Legacy ICE-HIP [RFC5770]と同じ既定UDPポート番号10500を再利用します。このポートは当初、[RFC5770]のために共著者Ari Keränenを連絡先として別途登録されていましたが、IESGを連絡先とする形に再割り当てされました。Ari Keränenの許可を得て、新しい割り当て先はIESG、連絡先は<chair@ietf.org>です。さらにIANAは、「Service Name and Transport Protocol Port Number Registry」のUDPポート10500の登録項目に本書への参照を追加しました。Legacy ICE-HIPとNative ICE-HIPの選択は、基本交換中にNAT_TRAVERSAL_MODEパラメータでネゴシエートします。既定では、ホストはこのポートでUDPデータグラムを待ち受け、UDPデータグラムの送信にも使えます。他の動的ポート番号はネゴシエートして動的に使用します。

IANA has assigned the following values in the HIP "Parameter Types" registry [RFC7401]: 4650 for RELAYED_ADDRESS (length 20), 4660 for MAPPED_ADDRESS (length 20; defined in Section 5.12), 4680 for PEER_PERMISSION (length 48; defined in Section 5.13), 4700 for CANDIDATE_PRIORITY (length 4; defined in Section 5.14), and 4710 for NOMINATE (length 4; defined in Section 5.15).

IANAはHIP「Parameter Types」レジストリ[RFC7401]に次の値を割り当てました。RELAYED_ADDRESSは4650(長さ20)、MAPPED_ADDRESSは4660(長さ20、セクション5.12で定義)、PEER_PERMISSIONは4680(長さ48、セクション5.13で定義)、CANDIDATE_PRIORITYは4700(長さ4、セクション5.14で定義)、NOMINATEは4710(長さ4、セクション5.15で定義)です。

IANA has assigned the following value in the "HIP NAT Traversal Modes" registry specified in Legacy ICE-HIP [RFC5770]: 3 for ICE-HIP-UDP (defined in Section 5.4).

IANAはLegacy ICE-HIP [RFC5770]で規定された「HIP NAT Traversal Modes」レジストリに、ICE-HIP-UDP(セクション5.4で定義)の値3を割り当てました。

IANA has assigned the following values in the HIP "Notify Message Types" registry: 16385 for NAT_KEEPALIVE in Section 5.3, 63 for SERVER_REFLEXIVE_CANDIDATE_ALLOCATION_FAILED in Section 5.10, and 64 for RVS_HMAC_PROHIBITED_WITH_RELAY in Section 5.10.

IANAはHIP「Notify Message Types」レジストリに次の値を割り当てました。NAT_KEEPALIVE(セクション5.3)は16385、SERVER_REFLEXIVE_CANDIDATE_ALLOCATION_FAILED(セクション5.10)は63、RVS_HMAC_PROHIBITED_WITH_RELAY(セクション5.10)は64です。

IANA has assigned the following values in the "Registration Types" registry for the HIP Registration Extension [RFC8003]: 3 for RELAY_UDP_ESP (defined in Section 5.9) for allowing registration with a Data Relay Server for ESP-relaying service, and 4 for CANDIDATE_DISCOVERY (defined in Section 4.2) for performing server-reflexive candidate discovery.

IANAはHIP Registration Extension [RFC8003]の「Registration Types」レジストリに次の値を割り当てました。Data Relay Serverへの登録によるESP中継サービスを可能にするRELAY_UDP_ESP(セクション5.9)は3、server-reflexive candidateの検出に使うCANDIDATE_DISCOVERY(セクション4.2)は4です。

IANA has assigned one value in the "Registration Failure Types" registry as defined in Section 7.8. The value is 9, and the Registration Failure Type is "Simultaneous Rendezvous and Control Relay Service usage prohibited".

IANAはセクション7.8で定義する「Registration Failure Types」レジストリに値を1つ割り当てました。値は9で、Registration Failure Typeは「Simultaneous Rendezvous and Control Relay Service usage prohibited」です。

9. References
9. 参考文献
9.1. Normative References
9.1. 引用文献

[RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, DOI 10.17487/RFC1191, November 1990, <https://www.rfc-editor.org/info/rfc1191>.

[RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, DOI 10.17487/RFC1191, November 1990, <https://www.rfc-editor.org/info/rfc1191>.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, DOI 10.17487/RFC4291, February 2006, <https://www.rfc-editor.org/info/rfc4291>.

[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing Architecture", RFC 4291, DOI 10.17487/RFC4291, February 2006, <https://www.rfc-editor.org/info/rfc4291>.

[RFC5770] Komu, M., Henderson, T., Tschofenig, H., Melen, J., and A. Keranen, Ed., "Basic Host Identity Protocol (HIP) Extensions for Traversal of Network Address Translators", RFC 5770, DOI 10.17487/RFC5770, April 2010, <https://www.rfc-editor.org/info/rfc5770>.

[RFC5770] Komu, M., Henderson, T., Tschofenig, H., Melen, J., and A. Keranen, Ed., "Basic Host Identity Protocol (HIP) Extensions for Traversal of Network Address Translators", RFC 5770, DOI 10.17487/RFC5770, April 2010, <https://www.rfc-editor.org/info/rfc5770>.

[RFC7050] Savolainen, T., Korhonen, J., and D. Wing, "Discovery of the IPv6 Prefix Used for IPv6 Address Synthesis", RFC 7050, DOI 10.17487/RFC7050, November 2013, <https://www.rfc-editor.org/info/rfc7050>.

[RFC7050] Savolainen, T., Korhonen, J., and D. Wing, "Discovery of the IPv6 Prefix Used for IPv6 Address Synthesis", RFC 7050, DOI 10.17487/RFC7050, November 2013, <https://www.rfc-editor.org/info/rfc7050>.

[RFC7401] Moskowitz, R., Ed., Heer, T., Jokela, P., and T. Henderson, "Host Identity Protocol Version 2 (HIPv2)", RFC 7401, DOI 10.17487/RFC7401, April 2015, <https://www.rfc-editor.org/info/rfc7401>.

[RFC7401] Moskowitz, R., Ed., Heer, T., Jokela, P., and T. Henderson, "Host Identity Protocol Version 2 (HIPv2)", RFC 7401, DOI 10.17487/RFC7401, April 2015, <https://www.rfc-editor.org/info/rfc7401>.

[RFC7402] Jokela, P., Moskowitz, R., and J. Melen, "Using the Encapsulating Security Payload (ESP) Transport Format with the Host Identity Protocol (HIP)", RFC 7402, DOI 10.17487/RFC7402, April 2015, <https://www.rfc-editor.org/info/rfc7402>.

[RFC7402] Jokela, P., Moskowitz, R., and J. Melen, "Using the Encapsulating Security Payload (ESP) Transport Format with the Host Identity Protocol (HIP)", RFC 7402, DOI 10.17487/RFC7402, April 2015, <https://www.rfc-editor.org/info/rfc7402>.

[RFC8003] Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) Registration Extension", RFC 8003, DOI 10.17487/RFC8003, October 2016, <https://www.rfc-editor.org/info/rfc8003>.

[RFC8003] Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) Registration Extension", RFC 8003, DOI 10.17487/RFC8003, October 2016, <https://www.rfc-editor.org/info/rfc8003>.

[RFC8004] Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) Rendezvous Extension", RFC 8004, DOI 10.17487/RFC8004, October 2016, <https://www.rfc-editor.org/info/rfc8004>.

[RFC8004] Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) Rendezvous Extension", RFC 8004, DOI 10.17487/RFC8004, October 2016, <https://www.rfc-editor.org/info/rfc8004>.

[RFC8005] Laganier, J., "Host Identity Protocol (HIP) Domain Name System (DNS) Extension", RFC 8005, DOI 10.17487/RFC8005, October 2016, <https://www.rfc-editor.org/info/rfc8005>.

[RFC8005] Laganier, J., "Host Identity Protocol (HIP) Domain Name System (DNS) Extension", RFC 8005, DOI 10.17487/RFC8005, October 2016, <https://www.rfc-editor.org/info/rfc8005>.

[RFC8046] Henderson, T., Ed., Vogt, C., and J. Arkko, "Host Mobility with the Host Identity Protocol", RFC 8046, DOI 10.17487/RFC8046, February 2017, <https://www.rfc-editor.org/info/rfc8046>.

[RFC8046] Henderson, T., Ed., Vogt, C., and J. Arkko, "Host Mobility with the Host Identity Protocol", RFC 8046, DOI 10.17487/RFC8046, February 2017, <https://www.rfc-editor.org/info/rfc8046>.

[RFC8047] Henderson, T., Ed., Vogt, C., and J. Arkko, "Host Multihoming with the Host Identity Protocol", RFC 8047, DOI 10.17487/RFC8047, February 2017, <https://www.rfc-editor.org/info/rfc8047>.

[RFC8047] Henderson, T., Ed., Vogt, C., and J. Arkko, "Host Multihoming with the Host Identity Protocol", RFC 8047, DOI 10.17487/RFC8047, February 2017, <https://www.rfc-editor.org/info/rfc8047>.

[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.

[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8201] McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed., "Path MTU Discovery for IP version 6", STD 87, RFC 8201, DOI 10.17487/RFC8201, July 2017, <https://www.rfc-editor.org/info/rfc8201>.

[RFC8201] McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed., "Path MTU Discovery for IP version 6", STD 87, RFC 8201, DOI 10.17487/RFC8201, July 2017, <https://www.rfc-editor.org/info/rfc8201>.

[RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal", RFC 8445, DOI 10.17487/RFC8445, July 2018, <https://www.rfc-editor.org/info/rfc8445>.

[RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal", RFC 8445, DOI 10.17487/RFC8445, July 2018, <https://www.rfc-editor.org/info/rfc8445>.

[RFC8489] Petit-Huguenin, M., Salgueiro, G., Rosenberg, J., Wing, D., Mahy, R., and P. Matthews, "Session Traversal Utilities for NAT (STUN)", RFC 8489, DOI 10.17487/RFC8489, February 2020, <https://www.rfc-editor.org/info/rfc8489>.

[RFC8489] Petit-Huguenin, M., Salgueiro, G., Rosenberg, J., Wing, D., Mahy, R., and P. Matthews, "Session Traversal Utilities for NAT (STUN)", RFC 8489, DOI 10.17487/RFC8489, February 2020, <https://www.rfc-editor.org/info/rfc8489>.

[RFC8961] Allman, M., "Requirements for Time-Based Loss Detection", BCP 233, RFC 8961, DOI 10.17487/RFC8961, November 2020, <https://www.rfc-editor.org/info/rfc8961>.

[RFC8961] Allman, M., "Requirements for Time-Based Loss Detection", BCP 233, RFC 8961, DOI 10.17487/RFC8961, November 2020, <https://www.rfc-editor.org/info/rfc8961>.

9.2. Informative References
9.2. Informative References

[HIP-MIDDLEBOXES] Heer, T., Hummen, R., Wehrle, K., and M. Komu, "End-Host Authentication for HIP Middleboxes", Work in Progress, Internet-Draft, draft-heer-hip-middle-auth-04, 31 October 2011, <https://datatracker.ietf.org/doc/html/draft-heer-hip-middle-auth-04>.

[HIP-MIDDLEBOXES] Heer, T., Hummen, R., Wehrle, K., and M. Komu, "End-Host Authentication for HIP Middleboxes", Work in Progress, Internet-Draft, draft-heer-hip-middle-auth-04, 31 October 2011, <https://datatracker.ietf.org/doc/html/draft-heer-hip-middle-auth-04>.

[ICE-NONSIP] Rosenberg, J., "Guidelines for Usage of Interactive Connectivity Establishment (ICE) by non Session Initiation Protocol (SIP) Protocols", Work in Progress, Internet-Draft, draft-rosenberg-mmusic-ice-nonsip-01, 14 July 2008, <https://datatracker.ietf.org/doc/html/draft-rosenberg-mmusic-ice-nonsip-01>.

[ICE-NONSIP] Rosenberg, J., "Guidelines for Usage of Interactive Connectivity Establishment (ICE) by non Session Initiation Protocol (SIP) Protocols", Work in Progress, Internet-Draft, draft-rosenberg-mmusic-ice-nonsip-01, 14 July 2008, <https://datatracker.ietf.org/doc/html/draft-rosenberg-mmusic-ice-nonsip-01>.

[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., and W. Weiss, "An Architecture for Differentiated Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, <https://www.rfc-editor.org/info/rfc2475>.

[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., and W. Weiss, "An Architecture for Differentiated Services", RFC 2475, DOI 10.17487/RFC2475, December 1998, <https://www.rfc-editor.org/info/rfc2475>.

[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, June 2002, <https://www.rfc-editor.org/info/rfc3264>.

[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, June 2002, <https://www.rfc-editor.org/info/rfc3264>.

[RFC3948] Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M. Stenberg, "UDP Encapsulation of IPsec ESP Packets", RFC 3948, DOI 10.17487/RFC3948, January 2005, <https://www.rfc-editor.org/info/rfc3948>.

[RFC3948] Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M. Stenberg, "UDP Encapsulation of IPsec ESP Packets", RFC 3948, DOI 10.17487/RFC3948, January 2005, <https://www.rfc-editor.org/info/rfc3948>.

[RFC5128] Srisuresh, P., Ford, B., and D. Kegel, "State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)", RFC 5128, DOI 10.17487/RFC5128, March 2008, <https://www.rfc-editor.org/info/rfc5128>.

[RFC5128] Srisuresh, P., Ford, B., and D. Kegel, "State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)", RFC 5128, DOI 10.17487/RFC5128, March 2008, <https://www.rfc-editor.org/info/rfc5128>.

[RFC5207] Stiemerling, M., Quittek, J., and L. Eggert, "NAT and Firewall Traversal Issues of Host Identity Protocol (HIP) Communication", RFC 5207, DOI 10.17487/RFC5207, April 2008, <https://www.rfc-editor.org/info/rfc5207>.

[RFC5207] Stiemerling, M., Quittek, J., and L. Eggert, "NAT and Firewall Traversal Issues of Host Identity Protocol (HIP) Communication", RFC 5207, DOI 10.17487/RFC5207, April 2008, <https://www.rfc-editor.org/info/rfc5207>.

[RFC5245] Rosenberg, J., "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols", RFC 5245, DOI 10.17487/RFC5245, April 2010, <https://www.rfc-editor.org/info/rfc5245>.

[RFC5245] Rosenberg, J., "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols", RFC 5245, DOI 10.17487/RFC5245, April 2010, <https://www.rfc-editor.org/info/rfc5245>.

[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146, April 2011, <https://www.rfc-editor.org/info/rfc6146>.

[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146, April 2011, <https://www.rfc-editor.org/info/rfc6146>.

[RFC6147] Bagnulo, M., Sullivan, A., Matthews, P., and I. van Beijnum, "DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers", RFC 6147, DOI 10.17487/RFC6147, April 2011, <https://www.rfc-editor.org/info/rfc6147>.

[RFC6147] Bagnulo, M., Sullivan, A., Matthews, P., and I. van Beijnum, "DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers", RFC 6147, DOI 10.17487/RFC6147, April 2011, <https://www.rfc-editor.org/info/rfc6147>.

[RFC6538] Henderson, T. and A. Gurtov, "The Host Identity Protocol (HIP) Experiment Report", RFC 6538, DOI 10.17487/RFC6538, March 2012, <https://www.rfc-editor.org/info/rfc6538>.

[RFC6538] Henderson, T. and A. Gurtov, "The Host Identity Protocol (HIP) Experiment Report", RFC 6538, DOI 10.17487/RFC6538, March 2012, <https://www.rfc-editor.org/info/rfc6538>.

[RFC8656] Reddy, T., Ed., Johnston, A., Ed., Matthews, P., and J. Rosenberg, "Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)", RFC 8656, DOI 10.17487/RFC8656, February 2020, <https://www.rfc-editor.org/info/rfc8656>.

[RFC8656] Reddy, T., Ed., Johnston, A., Ed., Matthews, P., and J. Rosenberg, "Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)", RFC 8656, DOI 10.17487/RFC8656, February 2020, <https://www.rfc-editor.org/info/rfc8656>.

[RFC8750] Migault, D., Guggemos, T., and Y. Nir, "Implicit Initialization Vector (IV) for Counter-Based Ciphers in Encapsulating Security Payload (ESP)", RFC 8750, DOI 10.17487/RFC8750, March 2020, <https://www.rfc-editor.org/info/rfc8750>.

[RFC8750] Migault, D., Guggemos, T., and Y. Nir, "Implicit Initialization Vector (IV) for Counter-Based Ciphers in Encapsulating Security Payload (ESP)", RFC 8750, DOI 10.17487/RFC8750, March 2020, <https://www.rfc-editor.org/info/rfc8750>.

[RFC8899] Fairhurst, G., Jones, T., Tüxen, M., Rüngeler, I., and T. Völker, "Packetization Layer Path MTU Discovery for Datagram Transports", RFC 8899, DOI 10.17487/RFC8899, September 2020, <https://www.rfc-editor.org/info/rfc8899>.

[RFC8899] Fairhurst, G., Jones, T., Tüxen, M., Rüngeler, I., and T. Völker, "Packetization Layer Path MTU Discovery for Datagram Transports", RFC 8899, DOI 10.17487/RFC8899, September 2020, <https://www.rfc-editor.org/info/rfc8899>.

[RFC9063] Moskowitz, R., Ed. and M. Komu, "Host Identity Protocol Architecture", RFC 9063, DOI 10.17487/RFC9063, July 2021, <https://www.rfc-editor.org/info/rfc9063>.

[RFC9063] Moskowitz, R., Ed. and M. Komu, "Host Identity Protocol Architecture", RFC 9063, DOI 10.17487/RFC9063, July 2021, <https://www.rfc-editor.org/info/rfc9063>.

Appendix A. Selecting a Value for Check Pacing
付録A.チェックペーシングの値の選択

Selecting a suitable value for the connectivity check transaction pacing is essential for the performance of connectivity check-based NAT traversal. The value should not be so small that the checks cause network congestion or overwhelm the NATs. On the other hand, a pacing value that is too high makes the checks last for a long time, thus increasing the connection setup delay.

接続性チェックの送信間隔に適切な値を選ぶことは、接続性チェックに基づくNAT越えの性能に不可欠です。小さすぎると、チェックがネットワークの輻輳を引き起こしたり、NATに過大な負荷をかけたりします。一方、大きすぎるとチェックに時間がかかり、接続確立の遅延が増えます。

The Ta value may be configured by the user in environments where the network characteristics are known beforehand. However, if the characteristics are not known, it is recommended that the value is adjusted dynamically. In this case, it is recommended that the hosts estimate the round-trip time (RTT) between them, and they SHOULD set the minimum Ta value so that at most a single connectivity check message is sent on every RTT.

ネットワーク特性が事前に分かっている環境では、ユーザーがTa値を設定してもかまいません。ただし、特性が分からない場合は値を動的に調整することが推奨されます。この場合、ホストは相互間の往復時間(RTT)を推定し、各RTTにつき接続性チェックメッセージを最大1つ送信するように最小Ta値を設定すべきです (SHOULD)。

One way to estimate the RTT is to use the time that it takes for the Control Relay Server registration exchange to complete; this would give an estimate on the registering host's access link's RTT. Also, the I1/R1 exchange could be used for estimating the RTT, but since the R1 can be cached in the network, or the relaying service can increase the delay notably, this is not recommended. In general, estimating RTT can be difficult and error prone; thus, the guidelines for choosing a Ta value in Section 4.4 MUST be followed.

RTTを推定する1つの方法は、Control Relay Serverへの登録交換が完了するまでの時間を使うことです。これにより、登録ホストのアクセスリンクのRTTを推定できます。I1/R1交換もRTTの推定に使えますが、R1がネットワーク内でキャッシュされる場合や、中継サービスで大きな遅延が生じる場合があるため、推奨されません。一般にRTTの推定は難しく、誤差も生じやすいため、セクション4.4のTa値選択ガイドラインに従わなければなりません (MUST)。

Appendix B. Differences with Respect to ICE
付録B. ICEとの相違点

Legacy ICE-HIP reuses the ICE/STUN/TURN protocol stack as it is. The benefits of such as an approach include the reuse of STUN/TURN infrastructure and possibly the reuse of existing software libraries, but there are also drawbacks with the approach. For example, ICE is meant for application-layer protocols, whereas HIP operates at layer 3.5 between transport and network layers. This is particularly problematic because the implementations employ kernel-space IPsec ESP as their data plane: demultiplexing of incoming ESP, HIP, and TURN messages required the capturing of all UDP packets destined to port 10500 to the userspace (due to different, incompatible markers in ESP and STUN), thus causing additional software complexity and an unnecessary latency/throughput bottleneck for the dataplane performance. It is also worth noting that the demultiplexing of STUN packets in the kernel would also incur a performance impact (albeit smaller than with userspace demultiplexing), and secure verification of STUN messages would require communication between the kernel-space STUN detector and HIP daemon typically residing in the userspace (thus again increasing the performance overhead).

Legacy ICE-HIPは、ICE/STUN/TURNプロトコルスタックをそのまま再利用します。この方法には、STUN/TURNインフラストラクチャや既存のソフトウェアライブラリを再利用できる利点がありますが、欠点もあります。たとえばICEはアプリケーション層プロトコル向けですが、HIPはトランスポート層とネットワーク層の間のレイヤ3.5で動作します。実装ではデータプレーンにカーネル空間のIPsec ESPを使うため、特に問題となります。受信したESP、HIPおよびTURNメッセージを逆多重化するには、ESPとSTUNでマーカーの形式が異なり互換性がないことから、ポート10500宛てのすべてのUDPパケットをユーザー空間に取り込む必要がありました。その結果、ソフトウェアが複雑になり、データプレーン性能に不要な遅延やスループットのボトルネックが生じました。また、STUNパケットをカーネル内で逆多重化する場合も(ユーザー空間での逆多重化より影響は小さいものの)性能が低下します。STUNメッセージを安全に検証するには、通常ユーザー空間にあるHIPデーモンとカーネル空間のSTUN検出器との通信も必要となり、やはり性能上の負荷が増えます。

Legacy ICE-HIP also involves some other complexities when compared to the approach taken in this document. The relaying of ESP packets via TURN relays was not considered that simple because TURN relays require adding and removing extra TURN framing for the relayed packets. Finally, the developers of the two Legacy ICE-HIP implementations concluded that effort needed for integrating an ICE library into a HIP implementation turned out to be quite a bit higher than initially estimated. Also, the amount of extra code (some 10 kLoC) needed for all the new parsers, state machines, etc., was quite high and by reusing the HIP code, one should be able to do with much less. This should result in smaller binary size, less bugs, and easier debugging.

Legacy ICE-HIPには、本書の方式と比べて他にも複雑な点があります。TURNリレー経由でESPパケットを中継する場合、パケットにTURNのフレーミングを追加・削除する必要があるため、単純ではありませんでした。最終的に、2つのLegacy ICE-HIP実装の開発者は、HIP実装にICEライブラリを統合する作業が当初の見積もりよりかなり大きいと結論付けました。新しいパーサや状態機械などに必要な追加コードも約10 kLoCと多く、HIPコードを再利用すれば大幅に削減できるはずです。その結果、バイナリサイズの縮小、バグの減少、デバッグの容易化が期待できます。

Consequently, the HIP working group decided to follow ICE methodology but reuse HIP messaging format to achieve the same functionality as ICE; the result of that is this document, which specifies the Native ICE-HIP protocol.

その結果、HIPワーキンググループはICEの方法論に従いつつ、ICEと同じ機能を実現するためにHIPメッセージ形式を再利用する方針を選びました。本書はその方針に基づきNative ICE-HIPプロトコルを規定します。

The Native ICE-HIP protocol specified in this document follows the semantics of ICE as close as possible, and most of the differences are syntactical due to the use of a different protocol. In this section, we describe the differences to the ICE protocol.

本書で規定するNative ICE-HIPプロトコルは、ICEの意味論にできるだけ忠実に従います。相違点の大部分は、異なるプロトコルを使うことに伴う構文上の違いです。本節ではICEプロトコルとの相違点を説明します。

* ICE operates at the application layer, whereas this protocol operates between transport and network layers, thus hiding the protocol details from the application.

* ICEはアプリケーション層で動作しますが、本プロトコルはトランスポート層とネットワーク層の間で動作するため、アプリケーションからプロトコルの詳細が隠されます。

* The STUN protocol is not employed. Instead, Native ICE-HIP reuses the HIP control plane format in order to simplify the demultiplexing of different protocols. For example, the STUN binding response is replaced with a HIP UPDATE message containing an ECHO_REQUEST_SIGNED parameter and the STUN binding response with a HIP UPDATE message containing an ECHO_RESPONSE_SIGNED parameter as defined in Section 4.6. It is worth noting that a drawback of not employing STUN is that discovery of the address candidates requires creating (using HIP base exchange) and maintaining (using HIP UPDATE procedures) state at the Control Relay Client and Control Relay Server. Future extensions to this document may define a stateless, HIP-specific mechanism for an end host to discover its address candidates.

* STUNプロトコルは使いません。代わりに、異なるプロトコルの逆多重化を簡素化するため、Native ICE-HIPはHIP制御プレーン形式を再利用します。たとえば、STUN binding requestはECHO_REQUEST_SIGNEDパラメータを含むHIP UPDATEに、STUN binding responseはECHO_RESPONSE_SIGNEDパラメータを含むHIP UPDATEにそれぞれ置き換えます(セクション4.6参照)。STUNを使わないことの欠点は、アドレス候補の検出にあたり、Control Relay ClientとControl Relay Serverで状態を作成(HIP基本交換を使用)し、維持(HIP UPDATE手順を使用)しなければならないことです。今後の拡張で、エンドホストがアドレス候補を検出するためのステートレスなHIP固有の機構を定義する場合があります。

* The TURN protocol is not utilized. Instead, Native ICE-HIP reuses Control Relay Servers for the same purpose.

* TURNプロトコルは使いません。代わりに、Native ICE-HIPは同じ目的でControl Relay Serverを再利用します。

* ICMP errors may be used in ICE to signal failure. In the Native ICE-HIP protocol, HIP NOTIFY messages are used instead.

* ICEでは、失敗の通知にICMPエラーを使う場合があります。Native ICE-HIPプロトコルでは、代わりにHIP NOTIFYメッセージを使います。

* Instead of the ICE username fragment and password mechanism for credentials, Native ICE-HIP uses the HIT, derived from a public key, for the same purpose. The username fragments are "transient host identifiers, bound to a particular session established as part of the candidate exchange" [RFC8445]. Generally in HIP, a local public key and the derived HIT are considered long-term identifiers and invariant across different host associations and different transport-layer flows.

* 認証情報としてICEのユーザー名フラグメントとパスワードを使う代わりに、Native ICE-HIPは公開鍵から導出されるHITを同じ目的で使います。ユーザー名フラグメントは「候補交換の一部として確立された特定のセッションに結び付く一時的なホスト識別子」です [RFC8445]。一般にHIPでは、ローカル公開鍵とそこから導出したHITは長期的な識別子と見なされ、異なるホストアソシエーションやトランスポート層フロー間で変化しません。

* In ICE, the conflict when two communicating endpoints take the same controlling role is solved using random values (a so-called tie-breaker value). In the Native ICE-HIP protocol, the conflict is solved by the standard HIP base exchange procedure, where the host with the "larger" HIT switches to the Responder role, thus also changing to the controlled role.

* ICEでは、2つの通信端点が同じcontrollingの役割を取った場合、ランダム値(tie-breaker値)を使って競合を解決します。Native ICE-HIPでは標準的なHIP基本交換手順で解決します。この手順では「大きい」HITを持つホストがResponderの役割に移り、それに伴ってcontrolledの役割にも移ります。

* The ICE-CONTROLLED and ICE-CONTROLLING attributes are not included in the connectivity checks.

* ICE-CONTROLLED属性とICE-CONTROLLING属性は、接続性チェックに含めません。

* The foundation concept is unnecessary in Native ICE-HIP because only a single UDP flow for the IPsec tunnel will be negotiated.

* IPsecトンネル用には単一のUDPフローだけをネゴシエートするため、Native ICE-HIPではfoundationの概念は不要です。

* Frozen candidates are omitted for the same reason the foundation concept is excluded.

* foundationの概念を使わないのと同じ理由で、frozen candidateは省略します。

* Components are omitted for the same reason the foundation concept is excluded.

* foundationの概念を使わないのと同じ理由で、componentは省略します。

* Native ICE-HIP supports only "full ICE" where the two communicating hosts participate actively to the connectivity checks, and the "lite" mode is not supported. This design decision follows the guidelines of ICE, which recommends full ICE implementations. However, it should be noted that a publicly reachable Responder may refuse to negotiate the ICE mode as described in Section 4.7.2. This would result in a HIP base exchange (as per [RFC7401]) tunneled over UDP, followed by ESP traffic over the same tunnel, without the connectivity check procedures defined in this document (in some sense, this mode corresponds to the case where two ICE lite implementations connect since no connectivity checks are sent).

* Native ICE-HIPがサポートするのは、両方の通信ホストが接続性チェックに能動的に参加するfull ICEだけです。liteモードはサポートしません。この設計は、full ICE実装を推奨するICEのガイドラインに従っています。ただし、セクション4.7.2で説明するように、パブリックから到達可能なResponderはICEモードのネゴシエーションを拒否できます。その場合、[RFC7401]に従うHIP基本交換をUDPでトンネルし、その後同じトンネル上でESPトラフィックを送りますが、本書で定義する接続性チェックは行いません。接続性チェックを送らない点では、2つのICE lite実装が接続する場合に似ています。

* As the "ICE lite" is not adopted here and both sides are capable of ICE-HIP-UDP mode (negotiated during the base exchange), default candidates are not employed in Native ICE-HIP.

* ICE liteを採用せず、両側が基本交換中にネゴシエートしたICE-HIP-UDPモードに対応するため、Native ICE-HIPではdefault candidateを使いません。

* If the agent is using Diffserv Codepoint markings [RFC2475] in its media packets, it SHOULD apply those same markings to its connectivity checks.

* エージェントがそのメディアパケットでDiffServ CodePointマーキング[RFC2475]を使用している場合は、接続チェックに同じマーキングを適用すべきです (SHOULD)。

* Unlike in ICE, the addresses are not XORed in the Native ICE-HIP protocol but rather encrypted to avoid middlebox tampering.

* ICEとは異なり、Native ICE-HIPではアドレスをXOR変換せず、ミドルボックスによる改変を避けるため暗号化します。

* ICE defines Related Address and Port attributes used for diagnostic/SIP purposes, but the Native ICE-HIP protocol does not employ these attributes.

* ICEは、診断/ SIPの目的で使用される関連アドレスとポート属性を定義しますが、ネイティブのICE-HIPプロトコルはこれらの属性を使用しません。

* The minimum RTO is 500 ms in ICE but 1000 ms in the Native ICE-HIP protocol in favor of [RFC8961].

* ICEでの最小RTOは500 msですが、Native ICE-HIPでは[RFC8961]に従い1000 msです。

Appendix C. Differences to Base Exchange and UPDATE Procedures
付録C.ベース交換と更新手順との違い

This section gives some design guidance for implementers on how the extensions in this protocol extend and differ from [RFC7401] and [RFC8046].

本節では、実装者向けに、本プロトコルの拡張が[RFC7401]および[RFC8046]にどのように追加され、どのように異なるかを設計上の指針として説明します。

* Both the control and data plane are operated on top of UDP, not directly on IP.

* 制御とデータプレーンの両方がIP上ではなくUDPの上部で動作します。

* A minimal implementation would conform only to Sections 4.7.1 or 4.7.2, thus merely tunneling HIP control and data traffic over UDP. The drawback here is that it works only in the limited cases where the Responder has a public address.

* 最小限の実装はセクション4.7.1または4.7.2だけに準拠し、HIP制御トラフィックとデータトラフィックをUDPでトンネルします。この方式の欠点は、Responderがパブリックアドレスを持つ限られた場合にしか機能しないことです。

* It is worth noting that while a Rendezvous Server [RFC8004] has not been designed to be used in NATed scenarios because it just relays the first I1 packet and does not employ UDP encapsulation, the Control Relay Server forwards all control traffic and, hence, is more suitable in NATed environments. Further, the Data Relay Server guarantees forwarding of data plane traffic also in cases where the NAT traversal procedures fail.

* Rendezvous Server [RFC8004]は最初のI1だけを中継し、UDPカプセル化も使わないため、NAT環境で使うようには設計されていません。一方、Control Relay Serverはすべての制御トラフィックを転送するため、NAT環境により適しています。さらにData Relay Serverは、NAT越え手順に失敗した場合もデータプレーントラフィックを転送します。

* Registration procedures with a Control/Data Relay Server are similar as with a Rendezvous Server. However, a Control/Data Relay Server has different registration parameters than a Rendezvous Server because it offers a different service. Also, the Control/Data Relay Server also includes a REG_FROM parameter that informs the Control/Data Relay Client about its server-reflexive address. A Data Relay Server also includes a RELAYED_ADDRESS containing the relayed address for the Data Relay Client.

* Control/Data Relay Serverへの登録手順はRendezvous Serverの場合と似ています。ただし、提供するサービスが異なるため、登録パラメータも異なります。また、Control/Data Relay ServerはREG_FROMパラメータを含め、server-reflexive addressをControl/Data Relay Clientに通知します。Data Relay ServerはさらにRELAYED_ADDRESSを含め、Data Relay Client用の中継アドレスを通知します。

* In [RFC7401], the Initiator and Responder can start to exchange application payload immediately after the base exchange. While exchanging data immediately after a base exchange via a Data Control Relay would also be possible here, we follow the ICE methodology to establish a direct path between two hosts using connectivity checks. This means that there will be some additional delay after the base exchange before application payload can be transmitted. The same applies for the UPDATE procedure as the connectivity checks introduce some additional delay.

* [RFC7401]では、InitiatorとResponderは基本交換の直後にアプリケーションペイロードを交換できます。本書でもData Relay Server経由なら基本交換直後のデータ交換が可能ですが、ICEの方法論に従い、接続性チェックを使って2つのホスト間に直接経路を確立します。そのため、基本交換後、アプリケーションペイロードを送信できるまで追加の遅延が生じます。接続性チェックによる追加遅延はUPDATE手順にも当てはまります。

* In HIP without any NAT traversal support, the base exchange acts as an implicit connectivity check, and the mobility and multihoming extensions support explicit connectivity checks. After a base exchange or UPDATE-based connectivity checks, a host can use the associated address pair for transmitting application payload. In this Native ICE-HIP extension, we follow the ICE methodology where one endpoint acting in the controlled role chooses the used address pair also on behalf of the other endpoint acting in the controlled role, which is different from HIP without NAT traversal support. Another difference is that the process of choosing an address pair is explicitly signaled using the nomination packets. The nomination process in this protocol supports only a single address pair, and multihoming extensions are left for further study.

* NAT越え機能のないHIPでは、基本交換が暗黙の接続性チェックとして機能し、モビリティ拡張とマルチホーミング拡張が明示的な接続性チェックをサポートします。基本交換またはUPDATEによる接続性チェックの後、ホストは対応するアドレスペアをアプリケーションペイロードの送信に使えます。本Native ICE-HIP拡張はICEの方法論に従います。すなわち、controlledの役割を担う一方のエンドポイントに代わって、controllingの役割を担うもう一方のエンドポイントが使用するアドレスペアも選びます。この点がNAT越え機能のないHIPと異なります。また、アドレスペアの選択をNOMINATEパケットで明示的に通知します。本プロトコルの指名手順はアドレスペアを1組だけサポートし、マルチホーミング拡張は今後の検討課題です。

* The UPDATE procedure resembles the mobility extensions defined in [RFC8046]. The first UPDATE message from the mobile host is exactly the same as in the mobility extensions. The second UPDATE message from the peer host and third from the mobile host are different in the sense that they merely acknowledge and conclude the reception of the candidates through the Control Relay Server. In other words, they do not yet test for connectivity (besides reachability through the Control Relay Server) unlike in the mobility extensions. The idea is that the connectivity check procedure follows the ICE specification, which is somewhat different from the HIP mobility extensions.

* UPDATE手順は[RFC8046]のモビリティ拡張に似ています。モバイルホストが最初に送るUPDATEは、モビリティ拡張と同じです。ピアホストからの2つ目のUPDATEとモバイルホストからの3つ目のUPDATEは、Control Relay Server経由で候補を受信したことを確認し、手順を完了するためのものです。モビリティ拡張とは異なり、この時点では接続性(Control Relay Server経由の到達性を除く)をまだテストしません。接続性チェックには、HIPモビリティ拡張と多少異なるICE仕様に従う手順を使います。

* The connectivity checks as defined in the mobility extensions [RFC8046] are triggered only by the peer of the mobile host. Since successful NAT traversal requires that both endpoints test connectivity, both the mobile host and its peer host have to test for connectivity. In addition, this protocol also validates the UDP ports; the ports in the connectivity check must match with the response, as required by ICE.

* モビリティ拡張[RFC8046]で規定される接続性チェックは、モバイルホストのピアだけが開始します。NAT越えを成功させるには両エンドポイントで接続性をテストする必要があるため、本プロトコルではモバイルホストとそのピアの双方がテストします。また、ICEの要件に従い、本プロトコルはUDPポートも検証します。接続性チェックで使うポートは応答でも一致しなければなりません。

* In HIP mobility extensions [RFC8046], an outbound locator has some associated state: UNVERIFIED means that the locator has not been tested for reachability, ACTIVE means that the address has been verified for reachability and is being used actively, and DEPRECATED means that the locator lifetime has expired. In the subset of ICE specifications used by this protocol, an individual address candidate has only two properties: type and priority. Instead, the actual state in ICE is associated with candidate pairs rather than individual addresses. The subset of ICE specifications utilized by this protocol require the following attributes for a candidate pair: valid bit, nominated bit, base, and the state of the connectivity check. The connectivity checks have the following states: Waiting, In-progress, Succeeded, and Failed. Handling of this state attribute requires some additional logic when compared to the mobility extensions, since the state is associated with a local-remote address pair rather than just a remote address; thus, the mobility and ICE states do not have an unambiguous one-to-one mapping.

* HIPモビリティ拡張[RFC8046]では、送信ロケータは状態を持ちます。UNVERIFIEDは到達性を未確認、ACTIVEは到達性を確認して現在使用中、DEPRECATEDはロケータの有効期間が切れた状態を表します。本プロトコルが使うICE仕様の範囲では、個々のアドレス候補が持つ属性はtypeとpriorityの2つだけです。ICEでは状態を個々のアドレスではなく候補ペアに関連付けます。本プロトコルが使うICE仕様の範囲では、候補ペアはvalid bit、nominated bit、baseおよび接続性チェックの状態を持ちます。接続性チェックの状態はWaiting、In-progress、Succeeded、Failedです。状態がリモートアドレスだけでなくローカル・リモートのアドレスペアに関連付けられるため、モビリティ拡張と比べて状態属性の処理に追加のロジックが必要です。そのため、モビリティの状態とICEの状態を一対一に明確に対応付けることはできません。

* Credit-based authorization as defined in [RFC8046] could be used before candidate nomination has been concluded upon discovering working candidate pairs. However, this may result in the use of asymmetric paths for a short time period in the beginning of communications. Thus, support of credit-based authorization is left for further study.

* 動作する候補ペアが見つかってから候補の指名が完了するまでの間に、[RFC8046]で規定されるクレジットベースの認可を使うことができます。ただし、通信開始直後の短い時間に非対称経路を使う可能性があります。そのため、クレジットベースの認可のサポートは今後の検討課題です。

Appendix D. Multihoming Considerations
付録D.マルチホームに関する考慮事項

This document allows a host to collect address candidates from multiple interfaces but does not support activation and the simultaneous use of multiple address candidates. While multihoming extensions to support functionality similar to that found in [RFC8047] are left for further study and experimentation, we envision here some potential compatibility improvements to support multihoming:

本書では、ホストが複数のインターフェイスからアドレス候補を収集できますが、複数候補の有効化や同時使用はサポートしません。[RFC8047]にあるものと同様の機能をサポートするマルチホーミング拡張は、今後の検討と実験に委ねますが、マルチホーミングをサポートするために考えられる互換性改善を以下に示します。

Data Relay Registration: a Data Relay Client acting as an Initiator with another peer host should register a new server-reflexive candidate for each local transport address candidate. A Data Relay Client acting as a Responder should register a new server-reflexive candidate for each {local transport address candidate, new peer host} pair for the reasons described in Section 4.12.3. In both cases, the Data Relay Client should request the additional server-reflexive candidates by sending UPDATE messages originating from each of the local address candidates as described in Section 4.1. As the UPDATE messages are originating from an unknown location from the viewpoint of the Data Relay Server, it must also include an ECHO_REQUEST_SIGNED in the response in order to test for return routability.

Data Relayへの登録:別のピアと通信するInitiatorとして動作するData Relay Clientは、ローカルトランスポートアドレス候補ごとに新しいserver-reflexive candidateを登録すべきです。Responderとして動作するData Relay Clientは、セクション4.12.3の理由により、{ローカルトランスポートアドレス候補、新しいピアホスト}の組ごとに新しいserver-reflexive candidateを登録すべきです。どちらの場合も、セクション4.1で説明するように、それぞれのローカルアドレス候補からUPDATEを送って追加候補を要求します。UPDATEはData Relay Serverから見ると未知の位置から届くため、戻り経路の到達性を確認できるよう、サーバは応答にECHO_REQUEST_SIGNEDも含める必要があります。

Data Relay unregistration: This follows the procedure in Section 4, but the Data Relay Client should unregister using the particular transport address to be unregistered. All transport address pair registrations can be unregistered when no RELAYED_ADDRESS parameter is included.

Data Relayの登録解除:セクション4の手順に従いますが、Data Relay Clientは登録解除する特定のトランスポートアドレスを使って登録解除要求を送ります。RELAYED_ADDRESSパラメータを含めない場合、すべてのトランスポートアドレスペアの登録を解除できます。

PEER_PERMISSION parameter: This needs to be extended or an additional parameter is needed to declare the specific local candidate of the Data Relay Client. Alternatively, the use of the PEER_PERMISSION could be used as a wild card to open permissions for a specific peer to all of the candidates of the Data Relay Client.

PEER_PERMISSIONパラメータ:Data Relay Clientの特定のローカル候補を指定できるよう、このパラメータを拡張するか、別のパラメータを追加する必要があります。代わりに、PEER_PERMISSIONをワイルドカードとして使い、特定のピアに対する権限をData Relay Clientのすべての候補に設定する方法もあります。

Connectivity checks: The controlling host should be able to nominate multiple candidates (by repeating step 7 in Figure 5 in Section 4.6 using the additional candidate pairs).

接続性チェック:controlling hostは、追加の候補ペアを使い、セクション4.6の図5のステップ7を繰り返して複数の候補を指名できるようにすべきです。

Keepalives: These should be sent for all the nominated candidate pairs. Similarly, the Control/Data Relay Client should send keepalives from its local candidates to its Control/Data Relay Server transport addresses.

キープアライブ:指名したすべての候補ペアに対して送信します。同様に、Control/Data Relay Clientは、各ローカル候補からControl/Data Relay Serverのトランスポートアドレスへキープアライブを送るべきです。

Appendix E. DNS Considerations
付録E. DNSの考慮事項

This section updates Appendix B of [RFC5770], which will be replaced with the mechanism described in this section.

本節では[RFC5770]の付録Bを更新し、その内容を本節で説明する機構に置き換えます。

[RFC5770] did not specify how an end host can look up another end host via DNS and initiate a UDP-based HIP base exchange with it, so this section makes an attempt to fill this gap.

[RFC5770]は、エンドホストがDNSを介して別のエンドホストを検索し、UDPベースのHIP基本交換を開始する方法を規定していません。本節ではこの不足を補います。

[RFC8005] specifies how a HIP end host and its Rendezvous Server is registered to DNS. Essentially, the public key of the end host is stored as a HI record and its Rendezvous Server as an A or AAAA record. This way, the Rendezvous Server can act as an intermediary for the end host and forward packets to it based on the DNS configuration. The Control Relay Server offers similar functionality to the Rendezvous Server, with the difference being that the Control Relay Server forwards all control messages, not just the first I1 message.

[RFC8005]は、HIPエンドホストとそのRendezvous ServerをDNSに登録する方法を規定しています。基本的には、エンドホストの公開鍵をHIレコードとして、Rendezvous ServerをAレコードまたはAAAAレコードとして保存します。こうすることで、Rendezvous Serverはエンドホストの仲介役となり、DNS設定に基づいてパケットを転送できます。Control Relay Serverも同様の機能を提供しますが、最初のI1だけでなくすべての制御メッセージを転送する点が異なります。

Prior to this document, the A and AAAA records in the DNS refer either to the HIP end host itself or a Rendezvous Server [RFC8005], and control and data plane communication with the associated host has been assumed to occur directly over IPv4 or IPv6. However, this specification extends the records to be used for UDP-based communications.

本書以前は、DNSのAレコードとAAAAレコードはHIPエンドホスト自身またはRendezvous Server [RFC8005]を指し、該当ホストとの制御・データプレーン通信はIPv4またはIPv6上で直接行うと想定されていました。本仕様は、これらのレコードをUDPベース通信にも使えるよう拡張します。

Let us consider the case of a HIP Initiator with the default policy to employ UDP encapsulation and the extensions defined in this document. The Initiator looks up the Fully Qualified Domain Name (FQDN) of a Responder, and retrieves its HI, A, and AAAA records. Since the default policy is to use UDP encapsulation, the Initiator MUST send the I1 message over UDP to destination port 10500 (either over IPv4 in the case of an A record or over IPv6 in the case of an AAAA record). It MAY send an I1 message both with and without UDP encapsulation in parallel. In the case in which the Initiator receives R1 messages both with and without UDP encapsulation from the Responder, the Initiator SHOULD ignore the R1 messages without UDP encapsulation.

UDPカプセル化と本書の拡張を使う既定ポリシーのHIP Initiatorを考えます。InitiatorはResponderのFully Qualified Domain Name(FQDN)を検索し、HI、AおよびAAAAレコードを取得します。既定ポリシーではUDPカプセル化を使うため、Initiatorは宛先ポート10500へUDPでI1を送らなければなりません (MUST)。Aレコードの場合はIPv4で、AAAAレコードの場合はIPv6で送信します。UDPカプセル化ありとなしのI1を並行して送ってもかまいません (MAY)。ResponderからUDPカプセル化ありとなしのR1を両方受信した場合、InitiatorはUDPカプセル化なしのR1を無視すべきです (SHOULD)。

The UDP-encapsulated I1 packet could be received by four different types of hosts:

UDPカプセル化されたI1パケットは、4つの異なるタイプのホストによって受信される可能性があります。

HIP Control Relay Server: In this case, the A/AAAA records refer to a Control Relay Server, which will forward the packet to the corresponding Control Relay Client based on the destination HIT in the I1 packet.

HIP Control Relay Server:この場合、A/AAAAレコードはControl Relay Serverを指します。サーバはI1パケットの宛先HITに基づいて、対応するControl Relay Clientへパケットを転送します。

HIP Responder supporting UDP encapsulation: In this case, the A/AAAA records refer to the end host. Assuming the destination HIT belongs to the Responder, the Responder receives and processes the I1 packet according to the negotiated NAT traversal mechanism. The support for the protocol defined in this document, as opposed to the support defined in [RFC5770], is dynamically negotiated during the base exchange. The details are specified in Section 4.3.

UDPカプセル化に対応するHIP Responder:この場合、A/AAAAレコードはエンドホストを指します。宛先HITがResponderのものであれば、ResponderはネゴシエートされたNAT越え機構に従ってI1を受信・処理します。[RFC5770]の対応とは異なり、本書で規定するプロトコルへの対応は基本交換中に動的にネゴシエートします。詳細はセクション4.3で説明します。

HIP Rendezvous Server: This entity is not listening to UDP port 10500, so it will drop the I1 message.

HIP Rendezvous Server:このエンティティはUDPポート10500を待ち受けないため、I1メッセージを破棄します。

HIP Responder not supporting UDP encapsulation: The targeted end host is not listening to UDP port 10500, so it will drop the I1 message.

UDPカプセル化に対応しないHIP Responder:対象のエンドホストはUDPポート10500を待ち受けないため、I1メッセージを破棄します。

The A/AAAA record MUST NOT be configured to refer to a Data Relay Server unless the host in question also supports Control Relay Server functionality.

A/AAAAレコードは、問題のホストがControl Relay Server機能をサポートしていない限り、データリレーサーバーを参照するように設定してはいけません (MUST NOT)。

It is also worth noting that SRV records are not employed in this specification. While they could be used for more flexible UDP port selection, they are not suitable for end-host discovery but rather would be more suitable for the discovery of HIP-specific infrastructure. Further extensions to this document may define SRV records for Control and Data Relay Server discovery within a DNS domain.

本仕様ではSRVレコードを使いません。UDPポートをより柔軟に選ぶ用途には使えますが、エンドホストの検出には適さず、HIP固有のインフラストラクチャの検出に適しています。今後の拡張で、DNSドメイン内のControl Relay ServerおよびData Relay Serverを検出するSRVレコードを規定する場合があります。

Acknowledgments

謝辞

Thanks to Jonathan Rosenberg, Christer Holmberg, and the rest of the MMUSIC WG folks for the excellent work on ICE. The authors would also like to thank Andrei Gurtov, Simon Schuetz, Martin Stiemerling, Lars Eggert, Vivien Schmitt, and Abhinav Pathak for their contributions, and Tobias Heer, Teemu Koponen, Juhana Mattila, Jeffrey M. Ahrenholz, Kristian Slavov, Janne Lindqvist, Pekka Nikander, Lauri Silvennoinen, Jukka Ylitalo, Juha Heinanen, Joakim Koskela, Samu Varjonen, Dan Wing, Tom Henderson, Alex Elsayed, Jani Hautakorpi, Tero Kauppinen, and Timo Simanainen for their comments to [RFC5770] and this document. Thanks to Éric Vyncke, Alvaro Retana, Adam Roach, Ben Campbell, Eric Rescorla, Mirja Kühlewind, Spencer Dawkins, Derek Fawcus, Tianran Zhou, Amanda Barber, Colin Perkins, Roni Even, Alissa Cooper, Carl Wallace, Martin Duke, and Benjamin Kaduk for reviewing this document.

ICEに関する優れた取り組みについて、Jonathan Rosenberg、Christer Holmberg、およびMMUSIC WGの皆様に感謝します。また、貢献してくださったAndrei Gurtov、Simon Schuetz、Martin Stiemerling、Lars Eggert、Vivien Schmitt、Abhinav Pathakに感謝します。[RFC5770]および本書へのコメントを寄せてくださったTobias Heer、Teemu Koponen、Juhana Mattila、Jeffrey M. Ahrenholz、Kristian Slavov、Janne Lindqvist、Pekka Nikander、Lauri Silvennoinen、Jukka Ylitalo、Juha Heinanen、Joakim Koskela、Samu Varjonen、Dan Wing、Tom Henderson、Alex Elsayed、Jani Hautakorpi、Tero Kauppinen、Timo Simanainenにも感謝します。本書をレビューしてくださったÉric Vyncke、Alvaro Retana、Adam Roach、Ben Campbell、Eric Rescorla、Mirja Kühlewind、Spencer Dawkins、Derek Fawcus、Tianran Zhou、Amanda Barber、Colin Perkins、Roni Even、Alissa Cooper、Carl Wallace、Martin Duke、Benjamin Kadukにも感謝します。

This work has been partially funded by the Cyber Trust Program by Digile/Tekes in Finland.

本研究の一部は、フィンランドのDigile/TekesによるCyber Trust Programの資金提供を受けました。

Contributors

貢献者

Marcelo Bagnulo, Philip Matthews, and Hannes Tschofenig have contributed to [RFC5770]. This document leans heavily on the work in that RFC.

Marcelo Bagnulo、Philip MatthewsおよびHannes Tschofenigは[RFC5770]に貢献しました。本書は同RFCの成果に大きく基づいています。

Authors' Addresses

著者の住所

Ari Keränen Ericsson Hirsalantie 11 FI-02420 Jorvas Finland

Ari Keränen Ericsson Hirsalantie 11 FI-02420 Jorvas Finland

   Email: ari.keranen@ericsson.com
        

Jan Melén Ericsson Hirsalantie 11 FI-02420 Jorvas Finland

Jan Melén Ericsson Hirsalantie 11 FI-02420 Jorvas Finland

   Email: jan.melen@ericsson.com
        

Miika Komu (editor) Ericsson Hirsalantie 11 FI-02420 Jorvas Finland

Miika Komu (editor) Ericsson Hirsalantie 11 FI-02420 Jorvas Finland

   Email: miika.komu@ericsson.com