2. ハートビート Hello 拡張
ハートビート (Heartbeat) のサポートは Hello 拡張 (Hello Extensions) で示されます。ピアは、その実装がハートビートをサポートしていることを示すだけでなく、HeartbeatRequest メッセージを受信して HeartbeatResponse メッセージで応答する意思があるか、または HeartbeatRequest メッセージの送信のみを行う意思があるかを選択できます。前者は HeartbeatMode として peer_allowed_to_send を使用することで示されます。後者は Heartbeat モードとして peer_not_allowed_to_send を使用することで示されます。この決定は再ネゴシエーションのたびに変更できます。peer_not_allowed_to_send を示しているピアに HeartbeatRequest メッセージを送信してはなりません (MUST NOT)。peer_not_allowed_to_send を示しているエンドポイントが HeartbeatRequest メッセージを受信した場合、エンドポイントはメッセージを静かに破棄すべきであり (SHOULD)、unexpected_message 警告 (Alert) メッセージを送信してもかまいません (MAY)。
ハートビート Hello 拡張のフォーマットは次のように定義されます:
enum {
peer_allowed_to_send(1),
peer_not_allowed_to_send(2),
(255)
} HeartbeatMode;
struct {
HeartbeatMode mode;
} HeartbeatExtension;
未知のモードを受信した場合、その AlertDescription として illegal_parameter を使用するエラー警告 (Alert) メッセージを応答として送信しなければなりません (MUST)。