# H.323

H.323 regroupe un ensemble de protocoles de communication de la voix, de l'image et de données sur IP. C'est un protocole développé par l'UIT-T qui le définit comme : « systèmes de communication multimédia en mode paquet ». La première version est publiée en novembre 1996. La version actuelle de la norme date de 2009 et est précédée de plusieurs autres mise à jour, toujours rétrocompatibles.
Il est dérivé du protocole H.320, utilisé sur RNIS.
Il est supplanté par le protocole SIP.
L'ID H323 est un identifiant numérique et/ou texte servant au contrôle des communications et à l'identification des clients H.323.

## Protocoles secondaires ou associés

Plus qu'un protocole, H.323 ressemble davantage à une association de plusieurs protocoles différents et qui peuvent être regroupés en trois catégories : la signalisation, la négociation de codec, et le transport de l'information.
Les messages de signalisation sont ceux que l’on envoie pour demander d’être mis en relation avec une autre personne, qui indiquent que la ligne est occupée, que le téléphone sonne… Cela comprend aussi les messages que l’on envoie pour signaler que tel téléphone est connecté au réseau et peut être joint de telle manière. En H.323, la signalisation s’appuie sur le protocole RAS ((en) Registration Admission Status) pour l’enregistrement et l’authentification, et le protocole Q.931 pour l’initialisation et le contrôle d’appel.
La négociation est utilisée pour se mettre d’accord sur la façon de coder les informations qu’on va s’échanger. Il est important que les téléphones (ou systèmes) parlent un langage commun s’ils veulent se comprendre. Il serait aussi préférable, s’ils ont plusieurs alternatives de langages qu’ils utilisent le plus adapté. Il peut s’agir du codec le moins gourmand en bande passante ou de celui qui offre la meilleure qualité. Le protocole utilisé pour la négociation de codec est le H.245
Le transport de l’information s’appuie sur le protocole RTP qui transporte la voix, la vidéo ou les données numérisées par les codecs. On peut aussi utiliser les messages RTCP pour faire du contrôle de qualité, voire demander de renégocier les codecs si, par exemple, la bande passante diminue.
Pour le contrôle et la signalisation : H.225, H.245, Q.931, RTCP.
Pour la voix : G.711, G.722, G.723, G.726, G.728, G.729.
Pour la vidéo : H.261, H.263, H.263+, H.264.
Pour les données : T.123, T.124, T.125.

## Principales applications du protocole H.323

* Certaines offres de téléphonie sur IP grand public s'appuient sur H.323
* Les clients (NetMeeting, Orange, Ekiga (ex GnomeMeeting), Openphone, iChat…).
* les gatekeepers, ou portiers, servant à l'administration des communications et à la translation d'identifiants de connexion (ID H323). Certains équipements n'acceptent qu'un seul identifiant et d'autres plusieurs. Dans la majorité des cas, les gatekeepers n'acceptent l'enregistrement des clients que si l'identifiant est unique.
* Les MCU, des ponts multipoints.
* Les gateways, des passerelles H.320 ⇔ H.323, H.324M ⇔ H.323.

## Fonctionnement simplifié

Il existe plusieurs manières de mettre en œuvre une architecture H.323.
* De nombreux messages sont optionnels et dans la pratique on peut choisir de ne pas les utiliser tous. Par exemple, si l’authentification n’est pas une préoccupation, on peut se passer des messages RAS (en).
* Il est également possible d’enchaîner les messages de plusieurs manières différentes. On peut par exemple ouvrir les canaux RTP sans attendre le message « connect » qui indique que la personne appelée a bien décroché (early H.245).
* On peut décider que les messages H.225, H.245 et RTP passent par des chemins différents : Par exemple la signalisation traversera plusieurs gatekeeper qui participent au contrôle et au routage de l’appel alors que le flux RTP passe directement d’un poste à l’autre.

### Cas 1 : communication « point à point » de deux clients simples

* L'appelant saisit l'adresse IP du destinataire dans le champ du logiciel réservé à cet effet.
* Les protocoles de signalisation proposent au logiciel du destinataire d'établir la communication et transmet son ID H323.
* Le logiciel du destinataire répond soit « occupé » soit « libre ».
* Si « libre », l'appelant énumère ses possibilités de codecs audio et vidéo (si disponibles).
* Le destinataire énumère les codecs compatibles avec l'appelant pour accord.
* Si accord, d'autres ports TCP et UDP sont négociés pour l'audio (UDP), la vidéo (UDP) et les données (TCP).
* Chaque flux est ensuite transmis indépendamment des autres.
* À la fermeture d'une session, les ports sont libérés et les transmissions de contrôle stoppées.

### Cas 2 : communication « point à point » entre deux clients enregistrés auprès d'un gatekeeper

Le gatekeeper intervient sur la signalisation.
* À l'ouverture du logiciel, les clients A et B s'enregistrent auprès du gatekeeper en lui transmettant leur ID H323 et leur adresse IP respective.
* Le client A entre l'ID de connexion du client B dans le champ du logiciel réservé à cet effet.
* Le logiciel du client A demande l'autorisation au gatekeeper pour se connecter au client B.
* Si le gatekeeper accepte, celui-ci demande au client B son état (déjà en conversation ou non).
* Si état compatible, le gatekeeper transmet l'adresse IP du client B au client A.
* Le gatekeeper informe le client B qu'une communication va avoir lieu avec le client A.
* Le client A entre directement en négociation avec le client B avec les protocoles de contrôle de communication.
* Le client A énumère ses possibilités de codecs audio et vidéo (si disponibles).
* L'appelé énumère les codecs compatibles avec l'appelant pour accord.
* Si accord, d'autres ports TCP et UDP sont négociés pour l'audio (UDP), la vidéo (UDP) et les données (TCP).
* Tous les flux sont ensuite transmis indépendamment les uns des autres sans passer par le gatekeeper mais directement entre les clients.
* À la fermeture d'une session, le gatekeeper est informé de la fin de connexion, les ports sont libérés et les transmissions de contrôle stoppées.

### Cas 3 : communication « Multipoints » entre plusieurs clients (MCU nécessaire)

Les MCU ont des capacités de traitements du signal (diffusion, enregistrement, mixage…) ils sont utilisés pour :
* permettre la conférence en mixant les flux audios
* diffuser des messages réseau comme la tonalité, le bip de mise en attente
* voire réaliser des fonctions élémentaires de messagerie vocale
* Le MCU s'annonce auprès du gatekeeper et lui énonce ses possibilités :
** Nombre de clients possibles.
** Débits (en octets par seconde) possible par client ou débit total maximal.
** ID H323 de connexion.
Les communications seront ensuite traitées comme au cas 2, le MCU devenant alors un « simple client » au vu des appelants ; la différence se trouvant simplement dans le nombre de communications acceptées avant transmission du message « occupé ».
Les principaux ports utilisés par le protocole H.323 sont 1720 TCP et suivants, les autres sont négociés dynamiquement.
Notes : Le protocole H.323 ne suit pas les recommandations ISO sur les séparations de couches du modèle réseau. On trouve des données sur les couches IP dans la couche « Application » du modèle. D'autre part, le protocole a tendance à ouvrir des « ports » à la volée pour la communication, ce qui fait que le passage d'un pare-feu (firewall) ou d'un routeur avec NAT est souvent problématique.
Néanmoins il existe aujourd'hui des solutions applicatives (NAT ALG) qui permettent de contrecarrer la présence de données IP (souvent privées) dans la partie application du modèle.
On trouve pourtant de plus en plus d'équipements réseau sachant gérer les protocoles associés à H.323, notamment à cause de la téléphonie sur IP (VoIP).

### Cas 4 : 3 gatekeeper

Dans cet exemple chaque terminal est rattaché à un gatekeeper de proximité. Tous les gatekeeper de proximité sont rattachés à un gatekeeper qui a une connaissance générale du réseau et qui réalise le routage.
On a choisi de faire passer le flux H.245 par les gatekeeper de proximité et le flux RTP par l’un des gatekeeper de proximité.

### Cas 5 : autres

Dans un cas réel, il est probable que l’architecture comprenne les éléments suivants :
* Une ou plusieurs passerelles vers le RTC ou vers d’autres réseaux de ToIP.
* Des serveurs de messageries vocales (MCU avec capacité d’enregistrement)
* Des serveurs (MCU) capable de diffuser des messages réseau (signaux d’occupation, de mise en attente…)

## Note générale

Pour les pare-feu, H323 pose de véritables problèmes car c'est un protocole qui demande l'ouverture d'un panel de ports TCP et UDP de manière dynamique et quelque peu "aléatoire", incompatible avec la logique des règles "strictes" imposées par la sécurité d'un site ou d'un intranet exposé à Internet. Les pare-feu modernes le font très bien, mais au prix d'une complexification qui aurait été évitée si le protocole avait été mieux pensé dès son origine.
Pour la translation d'adresses NAT (Network Address Translation), le protocole H.323 pose des problèmes dans le sens où celui-ci ne respecte pas comme il faut le modèle en couches des réseaux informatiques (voir le modèle OSI) en incorporant des données de la couche Application dans la couche Transport. Cela oblige les passerelles à aller changer des données à l'intérieur même des paquets TCP/IP.
Voir à ce sujet : Protocole réseau passant difficilement les pare-feu concernant les difficultés rencontrées usuellement lors de la mise en place d'une structure VoIP fondée sur H.323.
On constatera, en 2014, que cette suite de protocoles a presque été abandonnée par les grands opérateurs de Télécommunication, ceci en raison des piètres interopérabilités entre constructeurs de solutions (il était impossible communiquer entre des équipements Alcatel (Avec le produit Picturetel et les produits Polycom des années 2000) malgré la compatibilité H.323 annoncée).