MGCP

Media Gateway Control Protocol(MGCP)は、IPネットワークと公衆交換電話網 (PSTN) を繋ぐメディアゲートウェイを制御するの実装の1つ（他の実装としてMegaco(H.248)が存在する）。
基本アーキテクチャとプログラミングインタフェースは RFC 2805 にあり、MGCP 固有の定義は RFC 3435 （RFC 2705 を改版）にある。 (SGCP) の後継である。
概要.
MGCPはVoIPあるいはIP電話システムが公衆交換電話網 (PSTN) とやり取りする際の呼制御プロトコルである。
ネットワークが呼制御センターで制御され、端点としては単純な制御コマンドを実行する機器を想定したPSTN-over-IPモデルを実装している。
H.323のように高機能なメディアゲートウェイ（H.323の用語では「ゲートキーパー」）を想定するVoIPモデルとは異なる。
MGCPは、呼セッション内で転送すべきメディアストリームの指定と調停に Session Description Protocol (SDP) を使い、メディアストリームのフレーム化に Real-time Transport Protocol (RTP) を使う。
Media Gateway Control Protocol アーキテクチャのもう1つの実装としてMegacoがあり、Internet Engineering Task Force (RFC 3525) と国際電気通信連合 (Recommendation H.248.1) の共同で規格化されている。
どちらのプロトコルも RFC 2805 にある "Media Gateway Control Protocol Architecture and Requirements" というAPIガイドラインに従う。
しかし、プロトコルの文法や前提とするコネクションモデルが異なるため両プロトコルは非互換である。
アーキテクチャ.
この分散システムは、1つのコールエージェント（呼制御サーバ）、アナログ回路とパケットの間で信号を変換する1つ以上のメディアゲートウェイ (MG)、PSTNに接続する際の1つ以上のシグナリングゲートウェイで構成される。
コールエージェントはMGCPを使ってメディアゲートウェイに以下のことを知らせる。
MGCPはまた、コールエージェントがメディアゲートウェイ上の端点群の現在状態を監査するのにも使える。
メディアゲートウェイはMGCPを使い、コールエージェントにイベント（フックがOFFになった、ダイヤルされた数字など）を報告する。
メディアゲートウェイとシグナリングゲートウェイは一般に同じ装置上にあるが、それは必須というわけではない。
コールエージェントはシグナリングゲートウェイとはMGCPで通信せず、SIGTRANプロトコルを使う。
発行された個々のMGCPコマンドにはトランザクションIDが付与されていて、常に応答がある。
一般にメディアゲートウェイは、それがプログラミングを受け付けるコールエージェントのリストで設定される（ただし、そのリストはコールエージェントが1つか2つ書かれているのが普通である）。
原理的には、イベント通知はゲートウェイの個々の端点ごとに異なるコールエージェントに送ることができる（コールエージェントのプログラムで、NotifiedEntity パラメータで設定できる）。
しかし実際には、ゲートウェイ上の全端点が同じコールエージェントで制御されるのが望ましい。
他のコールエージェントは冗長性を確保するためにあり、主コールエージェントが故障したりゲートウェイとの接続が切れたときに働く。
そのような障害が発生したとき、バックアップのコールエージェントがMGを再プログラムし、そのバックアップのコールエージェントの制御で動作するように変更しなければならない。
このときスプリットブレインシンドロームと似たような現象が発生しうるため、ゲートウェイを現在どのコールエージェントが制御しているかを判断するのに監査機能を使うことができる。
MGCPは、コールエージェント群が互いをなんらかの方法（おそらく不特定のプロトコル）で知っており、重大故障など必要に応じて関係を再構築できると仮定している。
そのフェイルオーバー機能は計画停止と予期しない停止の両方を考慮している。
プロトコルの概要.
MGCPのパケットは他の多くのプロトコルのパケットとは似ていない。
TCPではなくUDPのポート2427を使い、データグラムのフォーマットには空白文字を区切りとして使っている。
MGCPパケットにはコマンドと応答がある。
コマンドは4文字のコマンド名で始まり、応答は3桁の数字による応答コードで始まる。
コマンドは以下のような9種類がある。
 AUEP, AUCX, CRCX, DLCX, EPCF, MDCX, NTFY, RQNT, RSIP
次の2つのコマンドは、コールエージェントがメディアゲートウェイに（状態を）問い合わせる。
 AUEP - Audit Endpoint（端点監査）
 AUCX - Audit Connection（コネクション監査）
次の3つのコマンドは、コールエージェントがメディアゲートウェイ上のRTPコネクションを管理する（メディアゲートウェイも自身の判断でコネクションを削除する場合にDLCXを送ることができる）。
 CRCX - Create Connection（コネクション生成）
 DLCX - Delete Connection（コネクション削除）
 MDCX - Modify Connection（コネクション変更）
次の1つのコマンドは、コールエージェントがメディアゲートウェイに対してイベント通知を要求する。
 RQNT - Request for Notification（通知要求）
次の1つのコマンドは、コールエージェントがメディアゲートウェイの符号化設定を変更する。
 EPCF - Endpoint Configuration（端点構成設定）
次の1つのコマンドは、メディアゲートウェイがコールエージェントに対して、RQNTコマンドで以前にコールエージェントが要求したイベントを検出したことを知らせる。
 NTFY - Notify（通知）
次の1つのコマンドは、メディアゲートウェイがコールエージェントに対して再起動中であることを知らせる。
 RSIP - Restart In Progress（再起動中）