# Media Gateway Control Protocol

Media Gateway Control Protocol (MGCP) est un protocole permettant de contrôler les passerelles multimédia (Media Gateways) qui assurent la conversion de la voix et de la vidéo entre les réseaux IP et le Réseau Téléphonique Commuté (RTC).
L'architecture de base et l'interface de programmation sont décrites dans la RFC 2805 et le protocole lui-même est défini dans la RFC 3435, qui a remplacé la RFC 2705. MGCP succède à Simple Gateway Control Protocol (SGCP). Il est concurrencé par le protocole Megaco, issu de la collaboration de l'IETF (RFC 3525) et de l'UIT (recommandation H.248.1), et qui est incompatible avec MGCP.
MGCP est un protocole de signalisation et de contrôle d'appel utilisé par les systèmes de Voix sur IP (VoIP) qui sont reliés au Réseau Téléphonique Commuté (RTC). Les passerelles multimédia qui permettent de passer d'un réseau à l'autre sont contrôlées par un centre de contrôle des appels, couramment appelé softswitch, qui rappelle le standard du réseau commuté. Les passerelles peuvent être des équipements « peu intelligents », qui la plupart du temps ne font qu'exécuter les commandes envoyées par le softswitch. Dans d'autres modèles de voix sur IP, comme H.323, les passerelles multimédia sont plus intelligentes et mettent en place un traitement de la signalisation plus complexe.
MGCP s'appuie sur le protocole Session Description Protocol (SDP) pour indiquer et négocier les flux audio et vidéo à transmettre durant l'appel.

## Architecture

MGCP est un système centralisé composé :
* d'un contrôleur, qui rappelle par sa fonction un ancien standard téléphonique, appelé Media Gateway Controller, MGC ou plus familièrement softswitch ;
* d'au moins une passerelle multimédia (MG, Media Gateway), qui se charge de convertir les échantillons de voix et vidéo entre circuits téléphoniques et paquets réseau ;
* et d'au moins une passerelle de signalisation (Signaling gateway, SG).
Le contrôleur (MGC) utilise MGCP pour dire à la passerelle multimédia (MG) :
* quels évènements doivent remonter au contrôleur ;
* comment les terminaux (les téléphones) doivent être mis en relation ;
* quels signaux doivent être joués sur les terminaux.
MGCP permet également au standard d'interroger l'état actuel des terminaux sur la passerelle multimédia.
La passerelle multimédia utilise MGCP pour signaler des évènements comme le raccrochage ou les numéros composés au standard.
La passerelle de signalisation se trouve souvent sur le même équipement physique que la passerelle multimédia, mais ce n'est pas une obligation. Le contrôleur n'utilise pas MGCP pour contrôler la passerelle de signalisation ; on utilise plutôt les protocoles SIGTRAN pour transporter la signalisation entre la passerelle de signalisation et le contrôleur.

### Contrôleurs multiples

La passerelle multimédia possède une liste des contrôleurs qui ont le droit de la programmer. Cette liste ne comporte normalement qu'un ou deux contrôleurs.
En principe, les évènements peuvent être notifiés à différents contrôleurs pour chaque terminal connecté à la passerelle. Néanmoins, en pratique, il est généralement souhaitable qu'à tout moment tous les terminaux sur une passerelle soient sous le contrôle d'un même contrôleur, les autres contrôleurs n'étant mis en place que pour fournir de la redondance dans le cas où le contrôleur principal tombe en panne ou perd contact avec la passerelle multimédia. Dans de tels cas, le contrôleur de secours reprogramme la passerelle multimédia pour qu'elle passe sous son contrôle. Cette situation est délicate, car deux contrôleurs peuvent avoir perdu contact l'un avec l'autre tandis qu'ils essaient tous deux de contrôler la même passerelle multimédia. La possibilité d'interroger la passerelle pour savoir quel contrôleur en a actuellement la charge peut être utilisée pour résoudre de tels conflits.
MGCP suppose que les contrôleurs multiples se tiennent mutuellement au courant de l'état de la passerelle (sans pour autant préciser le protocole à utiliser pour cela), et qu'ils sont capables de le reconstruire si nécessaire (en cas de panne catastrophique). Il faut tenir compte à la fois des indisponibilités prévues et de celles qui n'étaient pas prévues.

## Aperçu du protocole

Les données MGCP sont d'ordinaire contenues dans des segments UDP, sur le port 2427. Ils utilisent un format texte dont le séparateur est l'espace.
Un PDU MGCP est soit une commande, soit une réponse. Chaque commande MGCP possède un identifiant de transaction et reçoit une réponse. Les commandes commencent par un verbe de quatre lettres. Les réponses commencent pas un code réponse de trois chiffres.
Les neuf (9) verbes de commande sont :
Deux verbes sont utilisés par le contrôleur pour consulter l'état de la passerelle multimédia :
Trois verbes sont utilisés par le contrôleur pour gérer une connexion RTP sur la passerelle :
La passerelle peut également envoyer un DLCX quand elle a besoin de mettre fin à une connexion de son propre chef.
Un verbe est utilisé par le contrôleur pour demander à être prévenu lorsque des évènements surviennent sur la passerelle et pour demander à la passerelle d'appliquer certains signaux :
Un verbe est utilisé par le contrôleur pour modifier l'encodage du côté « téléphonie classique » sur la passerelle :
Un verbe est utilisé par la passerelle pour faire remonter au contrôleur un évènement, le contrôleur ayant demandé auparavant à en être averti au moyen de RQNT :
Un verbe est utilisé par la passerelle pour indiquer au contrôleur qu'elle est en train de redémarrer :

## Liste des RFC

* RFC 3435 - Media Gateway Control Protocol (MGCP) Version 1.0, le protocole MGCP version 1.0, cette RFC remplace la RFC 2705
* RFC 3660 - Basic Media Gateway Control Protocol (MGCP) Packages, modules MGCP essentiels, RFC informative
* RFC 3661 - Media Gateway Control Protocol (MGCP) Return Code Usage, utilisation des codes retours par MGCP
* RFC 3064 - MGCP CAS Packages, modules Channel Associated Signaling
* RFC 3149 - MGCP Business Phone Packages, modules MGCP pour téléphones professionnels à touches de fonctions et écran
* RFC 3991 - Media Gateway Control Protocol (MGCP) Redirect and Reset Package, modules MGCP de redirection et de réinitialisation
* RFC 3992 - Media Gateway Control Protocol (MGCP) Lockstep State Reporting Mechanism, mécanisme pour informer le contrôleur quand un terminal est dans un état bloqué, RFC informative
* RFC 2805 - Media Gateway Control Protocol Architecture and Requirements, architecture et présupposés du protocole MGCP
* RFC 2897 - Proposal for an MGCP Advanced Audio Package, proposition pour un module audio avancé pour MGCP