注目キーワード
  1. 3CX
  2. IP電話
  3. VoIP
  4. クラウドPBX

5分でわかる!SIPの基本知識

こんにちは。CCアーキテクトのカスタマーサクセス部です。IP電話と言えば、「SIP」という単語はよく耳にしますね。「SIP」とは一体何ですか?今回SIPについてわかりやすく説明したいと思います。

SIPとは

SIP (Session Initiation Protocol)は、2人以上の参加者間で「セッション」を確立し、そのセッションを変更し、最終的にそのセッションを終了するために使用されるシグナリングプロトコルです。

SIPは、IPテレフォニーの世界で重要な役割を担っています。SIPはオープンスタンダードであるため、テレフォニー市場に大きな関心を呼び起こし、SIPベースの電話を出荷するメーカーはこの分野で驚異的な成長を遂げました。

SIPプロトコルはテキストベースであり、HTTPプロトコルに酷似しています。メッセージはテキストベースであり、リクエストとレスポンスのメカニズムにより、トラブルシューティングが容易になります。実際のデータ転送は、OSIモデルの第5層のTCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)によって行われます。

セッション記述プロトコル(SDP)は、どちらのプロトコルを使用するかを制御します。SIPメッセージは、呼の参加者のIDと、参加者がIPネットワーク上でどの ように到達できるかを記述します。SIPメッセージの内部にカプセル化されて、SDP宣言が表示されることもあります。

SDP (Session Description Protocol)は、セッションで確立されるメディアチャネルのタイプを定義します。通常、これは、どのコーデックが使用可能か、メディアエンジンがIPネットワーク上で互いに到達する方法を宣言します。このセットアップメッセージの交換が完了すると、メディアはさらに別のプロトコル、通常はRTP(Real-Time Transmission Protocol)を使用して交換されます。

SIPはIETFによって開発され、RFC3261として公開されました。その柔軟性により、VoIPの世界ではH.323プロトコルをほぼ完全に置き換えることができました。

SIPサーバとは

SIPサーバーは、IP PBXの主要コンポーネントであり、主にネットワーク内のすべてのSIPコールを管理する役割を担っています。SIPサーバーは、SIPプロキシまたはレジストラとも呼ばれます。

SIPサーバーは、SIPベースのIP-PBX電話システムの最も重要な部分と考えることができますが、セッションを処理または管理するだけで、より具体的には、SIPサーバーは、次のことができます:

・2つ以上のエンドポイント間のセッションを設定する(音声会議では2つ以上のエンドポイントがある)
・SDPプロトコルを使用して、各エンドポイントのセッションのメディアパラメータと仕様をネゴシエートする。
・セッションのメディアパラメータと仕様をセッション中に調整する(例えば、通話を保留にする)。
・あるエンドポイントを新しいエンドポイントに置き換える(呼の転送)
・セッションを終了する

SIPサーバーは、実際にメディアを送信または受信しません。これは、RTPプロトコルを使用するメディアサーバーによって行われます。IP-PBX環境では、SIPサーバーとそのメディアサーバーが同じマシンに存在することがほとんどです。しかし、非常に大量のSIPサーバー(例えば、大規模なVoIPプロバイダーなど)は、作業負荷をより良く処理するためにメディアサーバーを別のマシンに分離し、場合によっては複数のメディアサーバーに負荷を分散させることができることを念頭に置いておいてください。

SIPコールセッションの例としては、どのようなものがありますか?

SIP通話は、SIPトランクまたはSIPチャネルを介して音声通話を伝送するプロセスです。SIP通話は、当事者間の接続に特定の経路を使用します。2台の電話機間のSIP通話セッションは、次のように確立されます。

・発呼側電話機はINVITEを送出する。
・着呼側電話機は情報応答100 – Trying -を送り返す。
・着呼側電話が鳴り始めると、応答180 – Ringing -が送り返される。
・発呼側が電話を取ると、着呼側電話は応答200 – OKを送
・着信側の電話は、ACK – 確認応答で応答する。
・これで、実際の会話はRTP経由でデータとして送信される。
・電話をかけている人が電話を切ると、BYEリクエストが発呼側 の電話に送信される。
・発信側の電話は200 – OKで応答する。

これほど簡単なことはないです! SIPプロトコルは論理的で、非常に理解しやすいです。

SIPレスポンス

SIPレスポンスは、Session Initiation Protocolが通信に使用するコードです。レスポンスコードがたくさんありますが、いくつよく見かけるコードを紹介したいと思います。

1xx = 情報提供のためのSIPレスポンス(1xx = Informational SIP responses)

100 Trying – 拡張検索が実行されているので、フォークしたプロキシは100 Trying応答を送らなければならない。

180 Ringing – デスティネーションユーザーエージェントはINVITEメッセージを受信し、ユーザーに呼を通知しているところである。

2xx = 成功の応答(2xx = Success responses)

200 OK – リクエストが正常に処理されたことを示します。

202 Accepted – リクエストが処理のために受理されたことを示し、主に紹介のために使用される。

4xx = リクエストの失敗(4xx = Request failures)

400 Bad Request – リクエストは、不正な構文のために理解することができませんでした。

401 Unauthorized – リクエストはユーザー認証を必要とする。この応答はUASと登録サーバーによって発行される。

403 Forbidden – サーバーはリクエストを理解したが、それを実行することを拒否している。

404 Not Found – サーバーは、ユーザーが(User not found)に存在しないという確定的な情報を持っている。

405 Method Not Allowed – Request-Lineで指定されたメソッドは理解できるが、許可されない。

408 Request Timeout – 時間内にユーザーを見つけることができませんでした。

5xx = サーバーエラー(5xx = Server errors)

500 Server Internal Error – サーバーが予期せぬ状況により、リクエストを実行できませんでした。

501 Not Implemented – SIPリクエストメソッドはここでは実装されていない。

502 Bad Gateway – サーバーは、リクエストを実行しようとしているときに、ダウンストリームサーバーから無効な応答を受け取りました。

503 Service Unavailable – サーバーがメンテナンス中か、一時的に過負荷になっているため、リクエストを処理することができない。

504 Server Time-out – サーバーは、要求を処理しようとしているときに別のサーバーにアクセスしようとしましたが、タイムリーな応答がありませんでした。

6xx = グローバルな障害(6xx = Global failures)

600 Busy Everywhere – 可能なすべての宛先がビジー状態です。

603 Decline – 宛先が通話に参加できない/参加したくない、代替宛先がない。

604 Does Not Exist Anywhere – サーバーは、要求されたユーザーがどこにも存在しないという、信頼できる情報を持っている。

606 Not Acceptable – ユーザーのエージェントは正常にコンタクトしたが、セッション記述のいくつかの側面は受け入れられなかった。

607 Unwanted – 着信側は、発信側からの通話を望んでいない。発呼側からの今後の試みは、同様に拒否される可能性が高い。

SIP レスポンスコードの一覧をご参照したい方はこちらへ。

最後に

今回はSIPの基本について詳しく解説しました。次回SIP端末について紹介したいと思います。ぜひご覧ください。