2. Extension Heartbeat Hello
Le support des Heartbeats est indiqué avec les extensions Hello (Hello Extensions). Un pair peut non seulement indiquer que son implémentation supporte les Heartbeats, mais il peut également choisir s'il est disposé à recevoir des messages HeartbeatRequest et à répondre avec des messages HeartbeatResponse, ou s'il est seulement disposé à envoyer des messages HeartbeatRequest. Le premier cas est indiqué en utilisant peer_allowed_to_send comme HeartbeatMode ; le second cas est indiqué en utilisant peer_not_allowed_to_send comme mode Heartbeat. Cette décision peut être modifiée à chaque renégociation. Les messages HeartbeatRequest NE DOIVENT PAS (MUST NOT) être envoyés à un pair indiquant peer_not_allowed_to_send. Si un point de terminaison qui a indiqué peer_not_allowed_to_send reçoit un message HeartbeatRequest, le point de terminaison DEVRAIT (SHOULD) abandonner le message silencieusement et PEUT (MAY) envoyer un message d'alerte (Alert) unexpected_message.
Le format de l'extension Heartbeat Hello est défini comme suit :
enum {
peer_allowed_to_send(1),
peer_not_allowed_to_send(2),
(255)
} HeartbeatMode;
struct {
HeartbeatMode mode;
} HeartbeatExtension;
Lors de la réception d'un mode inconnu, un message d'alerte (Alert) d'erreur utilisant illegal_parameter comme AlertDescription DOIT (MUST) être envoyé en réponse.