【个人笔记】SIPp操作&学习--第二天


uac

自己模仿范例写了一个

-sf uac -m 1 -i 192.168.自己的ip -d 5000 -p 7066 -s 1080 192.168.目标ip

没有传目标端口,自己电脑默认的是5060;[service][remote_ip] 由 -s 传入;[remote_port]5060
-i -p 【local_ip】【local_port】
[len] 长度 [branch] [call_number] [call_id] [local_ip_type] [media_ip_type] [media_port]都有系统确认或默认。
[transport] 比如说UDP
最重要是看这里 http://sipp.sourceforge.net/doc/reference.html

之前没有记的域 field
Version Number,协议版本 
Origin,所有者/创建者和会话标识符 
Subject,会话名称 
Connection Data,连接信息 
Time,会话活动时间 
Media(type, port, RTP/AVP Profile),媒体名称和传输地址

uac_pcap

在hp-sipp网站下的脚本使用sipp自带的pcap流媒体包。
转载别人博客里的写的:http://www.blogjava.net/amigoxie/archive/2010/07/21/326717.html

媒体包准备
          在测试过程中常常需要携带 RTP 流,此时需要有对应的 RTP 流文件, Sipp 安装目录 pcap 下有一些默认的 RTP 流文件,若不满足条件,也可以自行录制,录制好后,可在 wireshark 中过滤好需要的包后,点击“ Save As ”另存到 Sipp 安装目录 /pcap 目录。

RTP媒体分析  RTP媒体可分为两段,IAD>服务器;服务器>IAD  过滤RTP通过Invite或者200ok消息携带的rtp port字段  使用sip.Call-ID == "67410f21a1427a15" or udp.port == 8108过滤:

sipp官网refenence给的uac_pcap发送了一个g711a和DTMF的pcap_audio。
这个是自己模仿的:
【个人笔记】SIPp操作&学习--第二天_第1张图片


SDP的属性(a)里的rtpmap要跟下面的PCAP PLAY对应上。
官方代码:






















  
  
  
  
    ;tag=[call_number]
      To: sut 
      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: [len]

      v=0
      o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
      s=-
      c=IN IP[local_ip_type] [local_ip]
      t=0 0
      m=audio [auto_media_port] RTP/AVP 8
      a=rtpmap:8 PCMA/8000
      a=rtpmap:101 telephone-event/8000
      a=fmtp:101 0-11,16

    ]]>
  

  
  

  
  

  
  
  
  
  

  
  
  
    ;tag=[call_number]
      To: sut [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

    ]]>
  

  
  
    
      
    
  

  
  
  

  
  
    
      
    
  

  

  
  
    ;tag=[call_number]
      To: sut [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

    ]]>
  

  
  

  
  

  
  








invite tag

INVITE

tag=[call_number]这里的tag是自己随机生成的,而在To里面不带tag值


[peer_tag_param]

uac获取到uas的tag后使用[peer_tag_param]填入到To域中

注意:sipp使用时分号”;”不用写,[remote_port]>[peer_tag_param],虽然实际数据是需要分号的。


[Call-ID]从最初的INVITE到最后BYE结束通话,整个算同一个会话,所以这中间的其他请求(I帧请求和Session Timer更新也是包含在这个会话当中)和响应都是同一个Call-ID:

[Branch]初始INVITE、uas响应的100/422、uac的ACK确认是一个事务,Branch应该一样,这里ACK因为是对422(非2xx)响应的,所以Branch也一致


脚本部分

1. 响应消息间隔定义区,区分响应消息接受区间

 定时器自定义区    该区域主要作用为:针对消息响应时长(ResponseTime)以及呼叫持续时长(CallLength)的Timer进行自定义间隔的配置,
以获取所需的显示范围。

标签

消息发送
消息接收
暂停
媒体播放


 

通用属性: 

start_rtd 

启动响应定时器

 

 > 

rtd 

停止响应定时器

 

 

repeat_rtd  

重复启用响应定时器

 

rtd="invite" 

repeat_rtd="true“ /> 

crlf 

运行界面增加回车换行

 

 

next 

跳转任意

label 

next=“reg_fail"> 

 

test 与 next一起使用,设置跳转条件

 

 

chance 与test、next一起使用,

当test结果有值时,则概率跳转

 

next=“reg_fail” test=“flag“

 chance="0.90"> 

  

counter  

计数器累加

counter=“SuccessCALL">

start_rtd 启动响应定时器
 

repeat_rtd  重复启用响应定时器

crlf 运行界面增加回车换行  

next  跳转任意label  
test 与next一起使用,设置跳转条件  

chance  与test、next一起使用,当test结果有值时,则概率跳转
 
 

counter   计数器累加1  

犯的错误:
1:
[![CDATA[ 这中间不能夹注释,CDATA本来就表示 不应由 XML 解析器进行解析的文本数据。原封不动地传给加入后wireshark抓包显示sip提示。
【个人笔记】SIPp操作&学习--第二天_第2张图片

2
大写小写,横杠划线下划线,空格都要注意。第一次写看的眼花。






REFERENCE:

1. http://blog.sina.com.cn/s/blog_4ceb322201000aig.html
2. https://www.cisco.com/c/zh_cn/support/docs/unified-communications/unified-border-element/200412-DTMF-Relay-and-Interworking-on-CUBE.html
3. http://www.cnblogs.com/lijingcheng/p/4454928.html
4. RFC1889 RTP: A Transport Protocol for Real-Time Applications
5. RFC2833 RTP Payload for DTMF Digits, Telephony Tones and Telephony Signals

你可能感兴趣的:(VOIP,笔记)