监视VoIP信令网络的状态是使UCaaS提供商向客户提供保证质量的服务质量(如音频和视频呼叫,传真接收和传输)的重要条件之一。 通常,使用各种监视系统,流量收集和分析,CDR分析来执行这种控制。 信号网络的某些参数相当困难,并且通常无法使用所示方法进行评估。
有关VoIP信令网络状态的重要信息的可能来源是SIP应用服务器(SIP AS),它是处理VoIP网络中的呼叫所涉及的主要元素之一。 SIP AS日志文件使您可以评估VoIP信令网络的以下参数:
- SIP对话长度
- 对于各种类型的SIP请求,从发送请求到接收最终响应之间的时间间隔(请求响应时间,RRT)
- 不同类型的SIP消息的消息重传次数(重传,RTR)
不仅这些参数的值很重要,而且这些参数的分布以及它们随时间的变化也很重要。 有关参数值随时间变化的信息可以预测VoIP网络中可能出现的问题。 该信息还可以用作各种机器学习算法(机器学习,ML)的数据源之一,这不仅使预测时间和其他因素成为可能,而且还可以预测参数的变化。
根据信号负载,SIP AS可以每天以文本格式生成高达数十GB的日志文件。 分析如此大量的文本文件是一项资源密集型任务。 作为一种可能的选择,可以使用各种Python工具进行此分析。 例如, Pandas库提供了非常方便的工具来处理和分析各种数据,尤其是数据帧(DF)。 本文中使用的代码可在此处获得 。
建议使用以下步骤来分析SIP AS日志文件:
- 打开日志文件进行读取。 如果SIP AS创建了多个日志文件,则应以创建它们的相同顺序打开它们。
- 逐行读取数据。 在处理单位为数十GB的文件时,这对于节省RAM是必要的
- 高亮显示位于特定字符序列之间的SIP消息-分隔符
- 创建词典列表。 每个字典又由一个时间戳(键)和一个列表形式的实际SIP消息(值)组成。
- 将此列表保存为磁盘或网络存储,例如泡菜文件。 此文件以后将用于创建各种DF。
- 从保存的泡菜文件创建DF,其中包含进一步分析(SIP DF)所需的信息
在此特定情况下,将创建一个SIP DF,其中包含以下列:
- 时间戳-SIP AS添加的时间戳
- 通话ID-SIP对话的通话ID
- CSeq_num,CSeq_meth-来自“ CSeq” SIP标头的数据
- 方向-已接收(Rx <-)或已发送(Tx->)的消息,添加了SIP AS
- SIP方法-SIP请求行中的SIP方法
- Src Dst IP-发送或接收消息的IP地址

图 1.从大约3 GB的泡菜文件中获得的SIP DF的参数

图 2. SIP DF的内容
具有类似的SIP DF,您可以评估信令VoIP网络的各种参数。 下面的所有示例均来自有效的VoIP网络。 可以提供有关指定网络的任何信息的IP地址和其他数据已更改。
1. SIP对话的时间


图 3. DF和SIP对话框长度
对于长时间的SIP对话,您可以通过Call-ID值找到呼叫,然后通过文本日志来分析此呼叫的情况。 尽管SIP对话的长度为数十到数百个消息的呼叫数量相对较少,但必须调查这些呼叫的情形。 对此类呼叫的研究揭示了长SIP对话的以下来源:
- 建立语音会话后,传输数十个具有特定结构的组,其中包含DTMF字符。 这是一种语音呼叫场景,在此场景中将在主叫用户和被叫用户之间进行身份验证,授权和信息交换。
- 在视频通话中记录了非常多的完整帧内请求( FIR )请求。 这尤其表示在视频通话期间电话软件出现问题或RTP数据包丢失。
由于VoIP设备故障,试图通过IVR菜单选择PIN码(发送大量DTMF序列),还会出现长的SIP对话框。 在任何情况下,都有必要监视长SIP会话的数量,因为随着此类对话框数量的增加,可能会在VoIP网络的各个元素上出现额外的无用信号负载。
2. RRT
它是针对接收和发送的INFO和INVITE请求分别计算的。 请记住,在处理大量呼叫时,可能会为不同的对话框出现相同的CSeq值。 可以假设RRT值的分配对于所发送的请求应该大致相同,由于INFO和INVITE请求的大小和内容不同,因此,绝对值应该有所不同,结果是网络元素对这些请求的处理时间不同。

图 3. SIP AS收到的INFO请求的RRT
在这种情况下,RRT值的增加表明虚拟化可能存在问题,这会增加SIP AS的负载。 Call-ID和CSeq_num允许您检查每种情况的RRT值。

图 4. SIP AS发送的INFO请求的RRT。 图上的RRT限制为500毫秒,这是SIP T1计时器的默认值。

图 5. SIP AS发送的INVITE请求的RRT。 正如预期的那样,分布与INFO查询大致相同。
3. RTR
表征VoIP信令网络状态的重要参数。

图 6.分别重发INFO和INVITE请求的百分比。 考虑了发生一次或多次的RTR。
除了描述的示例外,还可以使用DF获得其他数据,例如:
- 为传出消息纠正SIP AS负载平衡。 为此,您需要使用groupby()计算发送到不同IP地址(SrcDst IP)的已发送消息(Tx)的数量Count()-与retransmits_counter_tx()函数类似。 邮件数量差异超过15-20%表示负载分配不正确
- 呼叫转移失败的次数。 为此,您可以创建一个单独的DF,其中仅包含REFER对话框,以及这些对话框的消息中必要的标题和字段。
- 参数对时间的依赖性。 如果您收集了一个参数(例如RRT)在几个月内的平均值,则可以根据数据构建时间序列(时间序列,TS)。 使用各种库进行TS分析,例如statsmodels,您可以确定趋势,季节性和其他TS参数。 来自此预测的数据可用于调整VoIP网络的体系结构。
结论
SIP AS文本日志文件是有关VoIP网络当前状态的重要信息来源。 另外,在对该信息进行适当处理之后获得的数据可以用于预测VoIP网络的状态,特别是使用ML方法。