前一陣子被交待要做SIP stack的測試,跟同事討論後又學到一個好東西,SIPp,它是一個很直覺化的工具,只要寫出你要測試的SIP流程,就可以用各種不同的SIP method測試SIP stack.
SIPp強大的地方在於可以自己編寫SIP method script,舉例如下,一個簡單的向SIP server (192.168.15.3)register的script,而register的username和password分別為444
- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <!DOCTYPE scenario SYSTEM "sipp.dtd">
-
- <scenario name="branch_client">
- <send retrans="0">
- <![CDATA[
-
- REGISTER sip:444@192.168.15.3 SIP/2.0
- Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
- From: 444 <sip:444@192.168.15.3:[local_port]>;tag=[call_number]
- To: 444 <sip:444@192.168.15.3:[local_port]>
- Call-ID: [call_id]
- CSeq: 1 REGISTER
- Contact: sip:444@[local_ip]:[local_port]
- Content-Length: 0
- Expires: 300
-
- ]]>
- </send>
-
- <!-- simple case - just jump over a line -->
-
- <recv response="407" auth="true">
- </recv>
-
- <send retrans="0">
- <![CDATA[
-
- REGISTER sip:444@192.168.15.3 SIP/2.0
- Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
- From: 444 <sip:444@192.168.15.3:[local_port]>;tag=[call_number]
- To: 444 <sip:444@192.168.15.3:[local_port]>
- Contact: sip:444@[local_ip]:[local_port]
- [authentication username=444 password=444]
- Call-ID: [call_id]
- CSeq: 2 REGISTER
- Content-Length: 0
- Expires: 300
-
- ]]>
- </send>
-
-
- <recv response="200">
- </recv>
- </scenario>
測試這個register script的命令如下,-r 1 和 –rp 1s代表每秒發送一次SIP message,reg.xml這個檔案則是前述的reg.xml,後面接上SIP server的IP和port
sipp -r 1 -rp 1s -sf reg.xml 192.168.15.3:5060
畫面如下,SIPp會把reg.xml內的命令依照順序列出,Messages欄位顯示SIP message發送和接收的次數,Retrans是重傳次數

看到這邊有沒有想到什麼?他奶奶的,如果我有字典檔那不就可以暴力測試SIP server那組帳密可以用.真感謝HP發展這個好工具阿,讓”測試SIP”多了無限組的可能
至於針對SIP stack的其它測項請參考這個網頁
Regular expression-跟brainfuck差不多的東西 (2009-11-13 15:37)
Reading file in kernel-簡單但實用 (2009-10-13 15:18)
Linux file system for dummies-只花你45分鐘 (2009-08-19 15:40)
OPENSSL-TCP SSL初心者之路 (2009-07-16 15:16)
NAPI與pure interrupt driver的效能比較 (2009-04-29 19:06)
usermode helper-來自kernel的呼喚 (2009-04-21 16:19)
kernel module memory detector-抓出有害的kernel module (2009-03-31 13:50)
kernel space coding-如履薄冰 (2009-03-26 09:52)
readahead與posix_advise-預讀取是萬能靈丹? (2009-03-06 15:54)