posts - 297,  comments - 1618,  trackbacks - 0
            上一篇:使用SIPP進行SIP壓力測試(1)


          蜜果私塾:使用
          SIPP來進行SIP壓力測試(2

          記錄人:阿蜜果

          記錄時間:2010-7-21

          1.     使用場景

          筆者最近需要對新做的一個SBCSsession Border Controller,會話邊界控制器)進行大呼測試。所做的SBC包括兩個模塊:CNVNCN模塊做信令轉(zhuǎn)發(fā),VN模塊主要做媒體轉(zhuǎn)發(fā),SBC用于解決SIP和媒體流的NAT穿越問題。

          SBC服務(wù)器為雙網(wǎng)卡機器,IP地址為:192.168.2.47125.39.155.110UAS服務(wù)器的IP192.168.2.66UAC所在機器(筆者機器)的IP125.39.155.107

          UACSBC服務(wù)器發(fā)INVITE消息,SBC接收到消息后,由CN模塊將消息轉(zhuǎn)發(fā)給UAS服務(wù)器,并轉(zhuǎn)發(fā)UAS發(fā)過來的信息給UAC,呼叫建立后,UASUAC的媒體流的轉(zhuǎn)發(fā)由SBCVN模塊來做。

          UAC(125.39.155.107)< -------------------> SBC (192.168.2.47125.39.155.110)<----------------->UAS(192.168.2.66)

          在該大呼測試中,UAC由筆者機器的Sipp軟件來做,UAS是另一臺經(jīng)過測試的穩(wěn)定的服務(wù)器,它在收到SBCINVITE消息后,發(fā)100180200,并放一段音。

          2. uac.xml編輯

          因為我們需要在媒體包、所帶的音頻Codec等、另外流程等上有一些不同,所以還需要準(zhǔn)備自定義的uac.xml。在Sipp的安裝目錄(eg. C:"Program Files"Sipp_3.1)新建uac.xml文件,該文件內(nèi)容編寫如下:

          <?xml version="1.0" encoding="ISO-8859-1" ?>

          <!DOCTYPE scenario SYSTEM "sipp.dtd">

           

          <!-- This program is free software; you can redistribute it and/or      -->

          <!-- modify it under the terms of the GNU General Public License as     -->

          <!-- published by the Free Software Foundation; either version 2 of the -->

          <!-- License, or (at your option) any later version.                    -->

          <!--                                                                    -->

          <!-- This program is distributed in the hope that it will be useful,    -->

          <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of     -->

          <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the      -->

          <!-- GNU General Public License for more details.                       -->

          <!--                                                                    -->

          <!-- You should have received a copy of the GNU General Public License -->

          <!-- along with this program; if not, write to the                      -->

          <!-- Free Software Foundation, Inc.,                                    -->

          <!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA             -->

          <!--                                                                    -->

          <!--                 Sipp default 'uac' scenario.                       -->

          <!--                                                                    -->

           

          <scenario name="Basic Sipstone UAC">

           <send retrans="500">

              <![CDATA[

           

                INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0

                Via: SIP/2.0/[transport] [local_ip]:[local_port]

                From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]

                To: sut <sip:[service]@[remote_ip]:[remote_port]>

               Call-ID: [call_id]

                Cseq: 1 INVITE

                Contact: sip:sipp@[local_ip]:[local_port]

                Max-Forwards: 70

                Subject: Performance Test

                Content-Type: application/sdp

                Content-Length: 136

           

                v=0

                o=user1 53655765 2353687637 IN IP4 127.0.0.1

                s=-

                t=0 0

                m=audio [media_port] RTP/AVP 8

                c=IN IP4 [media_ip]

                a=rtpmap:8 PCMA/8000

           

              ]]>

           </send>

           

           <recv response="100"

                  optional="true">

           </recv>

           

           <recv response="180" optional="true">

           </recv>

           

           <recv response="200" rtd="true">

           </recv>

           

           <!-- Packet lost can be simulated in any send/recv message by         -->

           <!-- by adding the 'lost = "10"'. Value can be [1-100] percent.     -->

           <send>

              <![CDATA[

                ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0

                Via: SIP/2.0/[transport] [local_ip]:[local_port]

                From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]

                To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]

                Call-ID: [call_id]

                Cseq: 1 ACK

                Contact: sip:sipp@[local_ip]:[local_port]

                Max-Forwards: 70

                Subject: Performance Test

                Content-Length: 0

           

              ]]>

           </send>

           

           <nop>

              <action>

                  <exec play_pcap_audio="pcap/g711a.pcap"/>

              </action>

           </nop>

           

           <!-- This delay can be customized by the -d command-line option       -->

           <!-- or by adding a 'milliseconds = "value"' option here.           -->

           <pause/>

           

           <!-- The 'crlf' option inserts a blank line in the statistics report. -->

           <send retrans="500">

              <![CDATA[

           

                BYE sip:[service]@[remote_ip]:[remote_port] SIP/2.0

                Via: SIP/2.0/[transport] [local_ip]:[local_port]

                From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]

                To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]

                Call-ID: [call_id]

                Cseq: 2 BYE

                Contact: sip:sipp@[local_ip]:[local_port]

                Max-Forwards: 70

                Subject: Performance Test

                Content-Length: 0

           

              ]]>

           </send>

           

           <recv response="200" crlf="true">

           </recv>

           

           <!-- definition of the response time repartition table (unit is ms)   -->

           <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/>

           

           <!-- definition of the call length repartition table (unit is ms)     -->

           <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/>

          </scenario>

                   該流程表示的意思是首先由uac主動往外發(fā)INVITE,接著期望收到100180200信息,UAC收到SBC200 OK信息后,往SBC發(fā)送ACK信息,接著往服務(wù)器發(fā)送pcap/g711a.pcapRTP包信息。接著開始pausepause的是時間是uac啟動時所帶的d參數(shù)(在后續(xù)章節(jié)帶了該參數(shù))。等待ds)后,往服務(wù)器發(fā)BYE消息,并期待得到服務(wù)器的200 OK信息,流程結(jié)束。

                   上面腳本中的“[]”中都是用戶帶入的一些參數(shù),若未指定,系統(tǒng)會自動指定。

          1) remote_ip:服務(wù)器的IP,本實例中指定為125.39.155.100

          2) remote_port:服務(wù)器的端口,本實例中指定為5040

          3) local_ipUACIP,未指定時,使用UAC所在主機的IP,本例中指定為192.168.4.20

          4) local_portUAC的端口,本例中指定為6060

          5) call_number主叫號碼,本實例中通過-s參數(shù)指定為01077778888

          6) transport未指定,默認(rèn)為udp

          7) call_idCall-ID,由系統(tǒng)生成,未指定。

          ……

          注意如下這段腳本:

          <nop>

              <action>

                  <exec play_pcap_audio="pcap/g711a.pcap"/>

              </action>

          </nop>

          這段表示接通后UAC向服務(wù)器發(fā)送的RTP包,筆者使用的是Sipp安裝目錄pcap下的g711.pcap包,也可以自己錄制。

          3. 媒體包準(zhǔn)備

                   在測試過程中常常需要攜帶RTP流,此時需要有對應(yīng)的RTP流文件,Sipp安裝目錄pcap下有一些默認(rèn)的RTP流文件,若不滿足條件,也可以自行錄制,錄制好后,可在wireshark中過濾好需要的包后,點擊“Save As”另存到Sipp安裝目錄/pcap目錄。

          4. 測試結(jié)果分析

                   選擇“開始”->“程序”->Sipp_3.1->start sipp”,在彈出的窗口中可以先運行如下語句先試呼叫一個:

          sipp -sf uac.xml -m 1 -i 192.168.4.20 -d 5000 -p 6060 -s 01077778888 -rtp_echo 125.39.155.110:5040

                   其中:

          1-sf后跟的是自定義的uac的腳本文件;

          2-m后跟的是呼叫次數(shù);

          3-i后跟的是本機IP(該參數(shù)可以不加,默認(rèn)使用本機IP);

          4-p后跟的是本地的端口;

          5-d后跟的是暫停的秒數(shù),可“2. uac.xml

          6-s后跟的是助教號碼;

          7rtp_echo表示需要對方發(fā)送RTP

          8125.39.155.110:5040表示的服務(wù)器的IP和端口。

          一個試呼成功后,可以開始進行大呼,此時可以去掉-m參數(shù)。命令如下:

          sipp -sf uac.xml -i 192.168.4.20 -d 5000 -p 6060 -s 01077778888 -rtp_echo 125.39.155.110:5040

          另外在SBC服務(wù)器開三個窗口觀察當(dāng)前的運行情況,分別使用如下命令:

          1inmon 觀察SCFload值等情況(我們公司平臺的一個命令);

          2vmstat 3:主要觀察id列等,一般要穩(wěn)定在idle 70%以上;

          3top     實時查看當(dāng)前cpu的占用排位情況。

          caps值加到25,運行一段時間后,筆者觀察到topvmstat 3的情況比較穩(wěn)定,測試基本情況如下:

          1sipp uac窗口:
              

                   從該結(jié)果中可看出,雖然有重復(fù)現(xiàn)象,但是重發(fā)布多,而且沒有“Timout”和“Unexpected Msg”,總體算正常。

                   2vmstat 3運行基本情況:
              

                   從上圖可以看出,idle值太低,基本在57%,離70%還有距離;

                   3top運行基本情況:
              

                   從上圖中可以看出,sbcvn模塊所占CPU比較高,需要重點優(yōu)化效率,sbcVN模塊基本在12%,只是負(fù)責(zé)信令轉(zhuǎn)發(fā),所以瓶頸在 VN模塊。

                   4inmon運行基本情況:
              

                   inmonload值一般在17%,而且比較穩(wěn)定,沒有突然居高位,并持續(xù)居高位的情況,CN模塊比較穩(wěn)定。

          5. 參考文獻

                   sip使用秘籍-v1.2》阮班勇:

          http://wenku.baidu.com/view/632ac7c758f5f61fb73666c5.html

          posted on 2010-07-21 11:17 阿蜜果 閱讀(7887) 評論(0)  編輯  收藏 所屬分類: 網(wǎng)絡(luò)通信相關(guān)協(xié)議電信知識
          <2010年7月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

                生活將我們磨圓,是為了讓我們滾得更遠(yuǎn)——“圓”來如此。
                我的作品:
                玩轉(zhuǎn)Axure RP  (2015年12月出版)
                

                Power Designer系統(tǒng)分析與建模實戰(zhàn)  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關(guān)注blog

          積分與排名

          • 積分 - 2296367
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 西藏| 日照市| 临邑县| 阿克陶县| 平山县| 枝江市| 桃园市| 亚东县| 奉化市| 辉县市| 南岸区| 肥乡县| 肥东县| 高密市| 砀山县| 东平县| 龙岩市| 黄山市| 三河市| 莫力| 精河县| 都匀市| 华容县| 南阳市| 永新县| 喀什市| 恩平市| 长汀县| 江孜县| 三门峡市| 内黄县| 奈曼旗| 乌鲁木齐县| 辉县市| 霍邱县| 宝鸡市| 广宁县| 高尔夫| 上杭县| 会东县| 拜城县|