SIP負荷テストツール”SIPp”を使ってみる。(RTP送信編)
前回、「SIPp」 というツールを紹介しましたが、反響が大きかったので第2弾です。非常に有用なツールであることは前回紹介した通り。今回はその応用編として、SIPpを利用してRTPパケットを送信/受信する方法をご紹介します。
実際のSIPサーバやIP-PBXはRTPパケットをリレーしていることが多く、パフォーマンステストではSIPメッセージだけではなく、RTPパケットを送信して負荷を掛けることが多々あります。今回の設定も主にXMLファイル形式の設定ファイルで行いますが、少しインストール方法が異なります。前回と比較しながら読んでいただければと思います。
目次
インストール:
環境は前回同様、CentOS6で行いました。またインストール手順を含め、公式サイトのドキュメントが役に立ちます。(http://sipp.sourceforge.net/doc/reference.html#UAS)
SIPpはmakeする必要があるため、makeを行うために必要なツールが未インストールの場合はインストールしてください。以下yumコマンドを利用した場合の手順を記載します。
1. Make ツールのインストール
前回と同様です。既にインストール済みの方はスキップしてください。
# yum install gcc # yum install gcc-c++ # yum install autoconf # yum install automake # yum install make # yum install ncurses-devel
2. SIPpのダウンロード
以下のURLからダウンロードできます。
(https://github.com/SIPp/sipp/releases)
私はSIPp 3.5.1で動作検証しましたが、最新版の使用をオススメします。
3. SIPpを展開
# tar -xvzf sipp-3.5.1.tar.gz
以下、/sipp-3.5.1 というディレクトリに展開したとします。
4. Makeを実施
今回、WAVファイルまたはPCAPファイルをRTPパケットで送信するため、オプションを付けてMakeします。
# cd /sipp-3.5.1 # ./configure --with-rtpstream --with-pcap # make
5. 音声ファイルを配置
RTPパケット送信の際に使用する、音声ファイル(.wav)または事前にRTPパケットをキャプチャしたファイル.pcap(pcapng)ファイルを適当なパスに配置します。通例として “<sippディレクトリ>/pcap”の下に配置することが多いようです。以下はpcapファイルを配置した例です。
# cp rtpstream01.pcap /sipp-3.5.1/pcap/
*.pcapファイルはwireshakなどのパケットキャプチャツールを使用して簡単に作成することができます。
6. uac.xml, uas.xmlファイルの修正
まずはuac.xmlから。変更箇所は以下。
ACKのsendセクション<send></ send>の後に次の行を追加します。
<!-- Play a pre-recorded PCAP file (RTP stream) --> <nop> <action> <exec play_pcap_audio="pcap/rtpstream01.pcap"/> </action> </nop> <!-- Pause 300 seconds, which is approximately the duration of the --> <!-- PCAP file --> <pause milliseconds="300000"/>
簡単な例ですがこれでOKです。
次にuas.xml側です。こちらは.wavファイルを使用する場合の例を記載してみました。ACKのrecvセクションの後ろに以下のように記載します。
<!– Play a wav file –> <nop> <action> <exec rtp_stream=”pcap/sample.wav”/> </action> </nop>
これで準備は完了です。uac.xml / uas.xmlファイルの説明とファイル例が必要な場合はこちらのサイトが参考になります。(https://docs.brekeke.jp/tech-info/sipp-uacxml-uasxml-examples)
7. RTPパケットを送信
最後にSippを利用した送信コマンドの例をご紹介します。
<UAC側>
./sipp -sf uac.xml -d 10000 -s 4000 172.30.1.145 -i 172.30.1.171 -r 60 -m 900
この例ではUAC(172.30.1.171)側から IP-PBX(172.30.1.145)へ向けて60コール/秒の割合で発信されます。また、発信にはuac.xmlが使われます。
<UAS側>
./sipp -sf uas.xml -d 0 -p 5060 -i 172.30.1.14 -rsa 172.30.1.145:5060
UAS(172.30.1.14)が対応します。受信用の設定ファイルとしてはuas.xmlが使用されます。
送信するRTPの元ファイルとして、.pcapファイルと.wavファイルを紹介しましたが、筆者は.pcapファイルの使用をオススメします。Sippがそのままファイルを送信できるイメージのため、sipp側の処理負荷が軽減されるためです。負荷を掛ける側の負荷が軽減されることにより、負荷テスト対象(IP-PBX, SIPサーバなど)へより多くの負荷をかけることができます。
また、今回紹介していませんが、コマンドオプションを利用してUAS側は来たRTPをそのままミラーしてUAC側に返すということもできます。この場合はuas.xml内でのrtpファイルの設定はいりません。
是非、Sipp試してみてください。