SIPp的参数及命令示例
以下是SIPp参数的分类表格整理,方便快速查阅和使用:
SIPp 参数分类表格
| 分类 | 参数 | 描述 | 默认值 | 示例 |
|---|---|---|---|---|
| 基本参数 | -sc | 指定XML场景文件(客户端模式) | 无 | -sc uac.xml |
-sd | 指定XML场景文件(服务器端模式) | 无 | -sd uas.xml | |
-i | 本地IP地址 | 自动选择 | -i 192.168.1.100 | |
-p | 本地端口号 | 自动选择 | -p 5060 | |
-s | 远端用户名或号码(用于From头域) | 无 | -s 1000 | |
| 性能相关 | -r | 每秒启动的呼叫数(速率) | 1 | -r 10(10次/秒) |
-rp | 速率周期(单位:毫秒,控制速率精度) | 1000(1秒) | -rp 500(每0.5秒调整速率) | |
-l | 最大并发调用数(并行呼叫数) | 无限制 | -l 100(最多100路并发) | |
-d | 测试持续时间(单位:毫秒) | 无限运行 | -d 60000(运行1分钟) | |
-m | 最大呼叫次数(达到次数后停止) | 无限 | -m 1000(执行1000次呼叫) | |
| 场景控制 | -sf | 指定自定义的XML场景文件 | 无 | -sf custom_scenario.xml |
-inf | 从CSV文件导入动态变量(如号码、参数) | 无 | -inf data.csv | |
-key | 定义场景中的动态变量(通过命令行) | 无 | -key username=test | |
| 传输协议 | -t | 传输协议模式(t1=TCP,u1=UDP,tls=TLS,sctp=SCTP) | UDP | -t t1(使用TCP) |
-transport | 指定传输协议(与-t等效) | 无 | -transport tcp | |
| 日志与调试 | -trace_msg | 打印完整SIP消息到日志 | 关闭 | -trace_msg |
-trace_err | 打印错误消息到日志 | 关闭 | -trace_err | |
-trace_shortmsg | 打印简化的SIP消息(仅摘要) | 关闭 | -trace_shortmsg | |
-trace_screen | 在屏幕显示统计信息和简要日志 | 开启 | -trace_screen off(关闭) | |
| 高级配置 | -3pcc | 启用第三方呼叫控制模式(需指定模式参数,如-3pcc 192.168.1.101:5060) | 关闭 | -3pcc role:A-B |
-aa | 启用自动应答模式(适用于UAS场景) | 关闭 | -aa | |
-rate_cycle | 速率调整周期(单位:毫秒,与-rp等效) | 1000 | -rate_cycle 200 | |
-max_socket | 最大Socket连接数(限制资源占用) | 系统默认 | -max_socket 500 | |
-recv_timeout | 接收消息超时时间(单位:毫秒) | 5000 | -recv_timeout 3000 | |
-send_timeout | 发送消息超时时间(单位:毫秒) | 5000 | -send_timeout 3000 |
使用示例
# 客户端模式,UDP协议,每秒10次呼叫,最大并发100路,运行1分钟
sipp -sf uac.xml -i 192.168.1.100 -p 5060 -s 1000 -r 10 -l 100 -d 60000# 服务端模式,TCP协议,启用详细日志
sipp -sd uas.xml -t t1 -trace_msg -trace_err
注意事项
- 参数大小写敏感:例如
-t t1和-T可能代表不同含义。 - 默认行为:未指定场景文件时,SIPp会使用内置的默认UAC/UAS场景。
- 性能限制:
-l和-r需根据硬件和网络调整,避免资源耗尽。
建议结合官方文档(sipp -h 或 SIPp Manual)确认参数细节及版本兼容性。
以下是 uac.xml(客户端场景)和 uas.xml(服务器端场景)的示例文件内容。这些文件是 SIPp 测试工具中常用的基本场景文件,用于模拟 SIP 客户端(UAC)和 SIP 服务器(UAS)的行为。
1. uac.xml(客户端场景)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="Basic UAC"><!-- 发送 INVITE 请求 --><send retrans="500"><![CDATA[INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]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 INVITEContact: sip:sipp@[local_ip]:[local_port]Max-Forwards: 70Subject: Performance TestContent-Type: application/sdpContent-Length: [len]v=0o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]s=-c=IN IP[media_ip_type] [media_ip]t=0 0m=audio [media_port] RTP/AVP 0a=rtpmap:0 PCMU/8000]]></send><!-- 等待 100 Trying 响应 --><recv response="100" optional="true" /><!-- 等待 180 Ringing 响应 --><recv response="180" optional="true" /><!-- 等待 200 OK 响应 --><recv response="200" /><!-- 发送 ACK 请求 --><send><![CDATA[ACK sip:[service]@[remote_ip]:[remote_port] SIP/2.0Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]To: sut <sip:[service]@[remote_ip]:[remote_port]>;tag=[peer_tag]Call-ID: [call_id]CSeq: 1 ACKMax-Forwards: 70Content-Length: 0]]></send><!-- 等待 1 秒 --><pause milliseconds="1000" /><!-- 发送 BYE 请求 --><send retrans="500"><![CDATA[BYE sip:[service]@[remote_ip]:[remote_port] SIP/2.0Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[call_number]To: sut <sip:[service]@[remote_ip]:[remote_port]>;tag=[peer_tag]Call-ID: [call_id]CSeq: 2 BYEMax-Forwards: 70Content-Length: 0]]></send><!-- 等待 200 OK 响应 --><recv response="200" /><!-- 场景结束 -->
</scenario>
2. uas.xml(服务器端场景)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="Basic UAS"><!-- 等待 INVITE 请求 --><recv request="INVITE" /><!-- 发送 100 Trying 响应 --><send><![CDATA[SIP/2.0 100 Trying[last_Via:][last_From:][last_To:];tag=[call_number][last_Call-ID:][last_CSeq:]Contact: <sip:[local_ip]:[local_port];transport=[transport]>Content-Length: 0]]></send><!-- 发送 180 Ringing 响应 --><send><![CDATA[SIP/2.0 180 Ringing[last_Via:][last_From:][last_To:];tag=[call_number][last_Call-ID:][last_CSeq:]Contact: <sip:[local_ip]:[local_port];transport=[transport]>Content-Length: 0]]></send><!-- 发送 200 OK 响应 --><send><![CDATA[SIP/2.0 200 OK[last_Via:][last_From:][last_To:];tag=[call_number][last_Call-ID:][last_CSeq:]Contact: <sip:[local_ip]:[local_port];transport=[transport]>Content-Type: application/sdpContent-Length: [len]v=0o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]s=-c=IN IP[media_ip_type] [media_ip]t=0 0m=audio [media_port] RTP/AVP 0a=rtpmap:0 PCMU/8000]]></send><!-- 等待 ACK 请求 --><recv request="ACK" /><!-- 等待 BYE 请求 --><recv request="BYE" /><!-- 发送 200 OK 响应 --><send><![CDATA[SIP/2.0 200 OK[last_Via:][last_From:][last_To:];tag=[call_number][last_Call-ID:][last_CSeq:]Contact: <sip:[local_ip]:[local_port];transport=[transport]>Content-Length: 0]]></send><!-- 场景结束 -->
</scenario>
说明
uac.xml:模拟 SIP 客户端行为,发送INVITE请求,等待响应,然后发送ACK和BYE。uas.xml:模拟 SIP 服务器行为,接收INVITE,发送响应,然后处理ACK和BYE。- 动态变量:
[remote_ip]、[local_ip]、[call_id]等是 SIPp 的动态变量,运行时会被替换为实际值。 - SDP 部分:SIP 消息中的 SDP 部分用于协商媒体流(如 RTP)。
运行示例
- 启动 UAS(服务器端):
sipp -sf uas.xml -i 192.168.1.100 -p 5060 - 启动 UAC(客户端):
sipp -sf uac.xml -i 192.168.1.101 -p 5061 192.168.1.100:5060
如果需要更复杂的场景,可以修改 XML 文件或使用 SIPp 的高级功能(如动态变量、条件分支等)。
相关文章:
SIPp的参数及命令示例
以下是SIPp参数的分类表格整理,方便快速查阅和使用: SIPp 参数分类表格 分类参数描述默认值示例基本参数-sc指定XML场景文件(客户端模式)无-sc uac.xml-sd指定XML场景文件(服务器端模式)无-sd uas.xml-i本…...
全面理解-友元(friend关键字)
在 C 中,friend 关键字用于授予其他类或函数访问当前类的 私有(private)和保护(protected)成员 的权限。这种机制打破了严格的封装性,但可以在特定场景下提高代码的灵活性和效率。以下是 friend 的详细说明…...
【Java】多线程和高并发编程(三):锁(下)深入ReentrantReadWriteLock
文章目录 4、深入ReentrantReadWriteLock4.1 为什么要出现读写锁4.2 读写锁的实现原理4.3 写锁分析4.3.1 写锁加锁流程概述4.3.2 写锁加锁源码分析4.3.3 写锁释放锁流程概述&释放锁源码 4.4 读锁分析4.4.1 读锁加锁流程概述4.4.1.1 基础读锁流程4.4.1.2 读锁重入流程4.4.1.…...
macbook2015升级最新MacOS 白苹果变黑苹果
原帖:https://www.bilibili.com/video/BV13V411c7xz/MAC OS系统发布了最新的Sonoma,超酷的动效锁屏壁纸,多样性的桌面小组件,但是也阉割了很多老款机型的升级权利,所以我们可以逆向操作,依旧把老款MAC设备强…...
如何使用C++将处理后的信号保存为PNG和TIFF格式
在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示。C提供了多种库来处理图像数据,本文将介绍如何使用stb_image_write库保存为PNG格式图像以及使用OpenCV库保存为TIFF格式图像。 1. PNG格式保存 使用stb_ima…...
探索从传统检索增强生成(RAG)到缓存增强生成(CAG)的转变
在人工智能快速发展的当下,大型语言模型(LLMs)已成为众多应用的核心技术。检索增强生成(RAG)(RAG 系统从 POC 到生产应用:全面解析与实践指南)和缓存增强生成(CAG&#x…...
尝试一下,交互式的三维计算python库,py3d
py3d是一个我开发的三维计算python库,目前不定期在PYPI上发版,可以通过pip直接安装 pip install py3d 开发这个库主要可视化是想把自己在工作中常用的三维方法汇总积累下来,不必每次重新造轮子。其实现成的python库也有很多,例如…...
[创业之路-289]:《产品开发管理-方法.流程.工具 》-15- 需求管理 - 第1步:原始需求收集
概述: 需求收集是需求管理的第一步,也是产品开发、项目管理或软件设计中的关键步骤。原始需求收集主要是指从各种来源获取关于产品或服务的初步需求和期望。 以下是对需求管理中的原始需求收集的详细分析: 1、原始需求收集的目的 原始需求…...
蓝桥杯---数青蛙(leetcode第1419题)
文章目录 1.题目重述2.例子分析3.思路分析4.思路总结5.代码解释 1.题目重述 这个题目算是模拟这个专题里面的一类比较难的题目了,他主要是使用crock这个单词作为一个整体,让我们确定:给你一个字符串,至少需要多少个青蛙进行完成鸣…...
单片机之基本元器件的工作原理
一、二极管 二极管的工作原理 二极管是一种由P型半导体和N型半导体结合形成的PN结器件,具有单向导电性。 1. PN结形成 P型半导体:掺入三价元素,形成空穴作为多数载流子。N型半导体:掺入五价元素,形成自由电子作为多…...
Spring Boot + MyBatis Field ‘xxx‘ doesn‘t have a default value 问题排查与解决
目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行代码的时候,出现某个字段无法添加 ### Error updating database. Cause: java.sql.SQLException: Field e_f_id doesnt have a default value ### The error may exist in cn...
C++ STL Map 学习学案(提高版)
C++ STL Map 学案(初中生版) 一、学习目标 深入理解 STL 中 map 容器的概念、特点和用途。熟练掌握 map 容器的基本操作,如插入、查找、删除和遍历元素。能够运用 map 容器解决实际编程问题,提升逻辑思维和编程实践能力。二、知识讲解 引入 在日常生活中,我们常常会遇到…...
OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统
在OpenEuler上部署小企业开源MES(制造执行系统,Manufacturing Execution System)是一个非常有价值的项目,可以帮助企业实现生产过程的数字化管理。以下是基于开源MES系统(如 Odoo MES 或 OpenMES)的部署步骤…...
深入与浅出-Python爬虫逆向实战
一、什么是爬虫逆向? 爬虫逆向,简单来说,就是通过分析网页的前端和后端行为,找出数据的来源和获取方式,从而实现自动化抓取。很多时候,直接使用requests和BeautifulSoup可能无法获取到目标数据,…...
ubuntu中如何在vscode的终端目录后显示(当前的git分支名) 实测有用
效果展示 配置过程: 在 Ubuntu 中,如果你想在 VS Code 的终端提示符后显示当前的 Git 分支名,可以通过修改 Shell 配置文件(如 ~/.bashrc 或 ~/.zshrc)来实现。以下是具体步骤: 1. 确定使用的 Shell 首…...
什么是自回归范式
Autoregressive Paradigm(自回归范式)是一种广泛应用于 序列数据建模 的方法,它在生成模型中发挥着重要作用。自回归范式的核心思想是 基于已知的历史信息(或前一个状态),来预测下一个值。这种方法在 时间序…...
Jenkins 使用教程:从入门到精通
在软件开发的复杂流程中,持续集成与持续交付(CI/CD)是提升开发效率和保障软件质量的核心实践。Jenkins 作为一款备受欢迎的开源自动化服务器,在 CI/CD 流程中发挥着举足轻重的作用。本文将深入、详细地介绍 Jenkins 的使用方法&am…...
DeepSeek大模型的微调流程
DeepSeek大模型的微调流程通常包括以下几个步骤: 1. 环境准备 硬件:确保有足够的GPU资源,通常需要高性能GPU(如NVIDIA A100、V100等)。软件:安装必要的深度学习框架(如PyTorch、TensorFlow&am…...
关于“i18n“在vue中的使用
关于"i18n"在vue中的使用 <!-- vue2中 --> <template><div>{{ $t("This campaign has expired.") }}}}</div> </template> <script> export default {created() {this.onLoading();},methods: {onLoading () {this.$…...
Android图片加载框架Coil,Kotlin
Android图片加载框架Coil,Kotlin implementation("io.coil-kt:coil:1.4.0") import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import coil.Coil i…...
从二叉树遍历深入理解BFS和DFS
1. 介绍 1.1 基础 BFS(Breadth-First Search,广度优先搜索)和 DFS(Depth-First Search,深度优先搜索)是两种常见的图和树的遍历算法。 BFS:从根节点(或起始节点)开始&am…...
强化学习之 PPO 算法:原理、实现与案例深度剖析
目录 一、引言二、PPO 算法原理2.1 策略梯度2.2 PPO 核心思想 三、PPO 算法公式推导3.1 重要性采样3.2 优势函数估计 四、PPO 算法代码实现(以 Python 和 PyTorch 为例)五、PPO 算法案例应用5.1 机器人控制5.2 自动驾驶 六、总结 一、引言 强化学习作为…...
Docker 部署 MongoDB | 国内阿里镜像
一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...
1.1 Spring Security 概述
Spring Security 概述 1. 什么是 Spring Security? Spring Security 是 Spring 生态中专注于应用安全的核心框架,为 Java 企业应用提供认证(Authentication)、授权(Authorization)以及安全攻击防护&#x…...
Kotlin协程详解——协程上下文
目录 一、上下文结构 get()获取元素 minusKey()删除元素 fold()元素遍历 plus()添加元素 CombinedContext Key 二、协程名称CoroutineName 三、上下文组合 四、协程作用域CoroutineScope 五、典型用例 协程的上下文,它包含用户定义的一些数据集合&#x…...
手写一个C++ Android Binder服务及源码分析
手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...
今日AI和商界事件(2025-02-10)
今日AI领域的相关事件包括: 一、技术与应用进展 全球首例AI驱动供应链攻击曝光: 网络安全机构披露一起新型供应链攻击事件,攻击者利用AI技术生成高度仿真的供应商邮件,诱骗目标企业员工下载恶意软件,进而渗透至大众汽…...
全面理解-c++中的异常处理机制
C 的异常处理机制是一种用于处理程序运行时错误的结构化方法,通过分离正常逻辑与错误处理代码,提高代码的可读性和可维护性。以下是其核心组成部分和工作原理的详细说明: 1. 异常处理的三大关键字 1.1 try 块 作用:包裹可能抛出异…...
Deep Dive into LLMs like ChatGPT - by Andrej Karpathy
https://www.youtube.com/watch?v7xTGNNLPyMIhttps://www.youtube.com/watch?v7xTGNNLPyMIDeep Dive into LLMs like ChatGPT - by Andrej Karpathy_哔哩哔哩_bilibilihttps://www.youtube.com/watch?v7xTGNNLPyMI转载自Andrej Karpathy Youtube ChannelThis is a general a…...
react实例与总结(一)
目录 一、简单认识 1.1、特点 1.2、JSX语法规则 1.3、函数组件和类式组件 1.4、类组件三大属性state、props、refs 1.4.1、state 1.4.2、props 1.4.3、refs 1.5、事件处理 1.6、收集表单数据—非受控组件和受控组件 1.7、高阶函数—函数柯里化 1.8、生命周期—新旧…...
