功能介绍

SIP并没有为所建立的会话定义存活机制。

虽然用户代理能够通过会话特定的机制推断会话是否超时,可是代理server却做不到这点。

如此一来。代理server有时会无法推断会话是否还是活动的。

比如,当一个用户代理在会话结束时发送BYE消息失败,或者因为网络问题BYE消息丢失,代理server将不会知道会话已经结束。在这样的情况下,代理server将保持呼叫的状态而且无法知道呼叫状态信息何时失效。

为了解决问题,RFC4028为SIP会话定义了一种存活机制。用户代理或代理server周期性发送re-INVITE或UPDATE请求用来保持会话的活动。会话更新请求的间隔通过其定义的协商机制决定。

假设在间隔内没有收到会话更新请求,该会话被觉得已经终止。

工作原理

UAC通过INVITE消息发起,这个消息包含一个带有可选标签“timer”的Supported头字段,用来表明支持Session
Timer功能。该请求通过代理server传递,所经过的任代理server都能够根据他们的兴趣建立会话定时器。每一个代理server都能够在请求中插入一个Session-Expires头字段和一个Min-SE头字段(前提是请求中还没有这些字段),或者改动上述已存在头字段的值。

Min-SE头字段为会话更新间隔建立最小刷新时间。

这个头字段的目的是防止怀有恶意的代理server设置随意短的更新间隔以致它的邻居代理负荷超载。

处理请求的每一个代理server能够提高这个下限(实际上就是提高刷新的周期),可是不能减少下限。

Session-Expires头字段为会话更新间隔建立最长刷新时间。不论什么服务于该请求的代理能够减少这个值。但必须大于Min-SE头字段指定的值。

假设Session-Expires的间隔太小(小于代理server要维护的Min-SE头字段的值)。那么代理server将拒绝这个请求并返回一个422响应。该响应包括一个Min-SE头字段表明它所支持的最小会话间隔。UAC再次尝试发送请求。这次请求中包括了Min-SE头字段,头字段等于先前接收到的全部422响应中最大的Min-SE头字段。

这样一来。最小定时器就能满足所经过的全部代理server的约束条件。

在几次INVITE/422消息的重复传送后,请求终于到达UAS。UAS能够调整会话间隔的值就好像它自己也是一个代理server。

之后。它将这个终于的会话间隔增加2xx响应的Session-Expires头字段。

Session-Expires头字段还包括一个“refresher”參数用来表示更新的运行者(是当前的UAC还是UAS)。当2xx响应沿代理server返回时,不论什么代理server能够观察这个终于的会话间隔但不能改动它。

通过响应中的Session-Expires头字段,UAC和UAS都知道会话定时器是活动的。它何时终止以及谁在更新会话。在终止前的某个时刻,当前活动的更新者生成一个会话更新请求,能够是一个re-INVITE或者UPDATE请求。

假设更新者始终得不到这个会话更新请求的响应,它就会发送一个BYE消息结束会话。相同。假设还有一端在会话终止前始终收不到会话更新请求。它也会发送一个BYE消息结束会话。

相关參数

Session-Expires头字段用于传达SIP会话的会话间隔。该字段仅仅包括在INVITE或UPDATE请求。也包括在INVITE或UPDATE消息的不论什么一个2xx响应中。

当在已经协商确定Session-Expires值,那么该会话将在Session-Expires/2的时间进行会话更新,该更新方式能够是re-INVITE或者UPDATE的请求。

Min-SE头字段表示会话间隔的最小值。以秒为单位。

当它被用在INVITE或UPDATE请求中时。用来表示该会话所要使用的会话间隔的最小值。

422回应代码出如今会话协商过程中,当Session-Expires的间隔太小(小于UAS所支持的Min-SE头字段的值)时。UAS将回应要求UAC又一次协商

session timer(一)的更多相关文章

  1. Session Timer机制分析

    Session Timer机制分析 功能介绍 会话初始化协议(SIP)并没有为所建立的会话定义存活机制.尽管用户代理可以通过会话特定的机制判断会话是否超时,但是代理服务器却做不到这点.如此一来,代理服 ...

  2. 关于无线的Idle Timeout和Session Timeout

    1.Session Timeout Session Timer的默认值为1800s,也就是30min.Session Timeout:当该计时器超时时,使得客户端强制发生重认证,这个时间是从客户端认证 ...

  3. Understanding Kafka Consumer Groups and Consumer Lag

    In this post, we will dive into the consumer side of this application ecosystem, which means looking ...

  4. 用websocket实现后台推送消息

    1前台实现 connect:function() { var webSocketIP = window.CRM_CONFIG.WebSocketIP; var target = 'ws://'+web ...

  5. AWR報告詳解

    AWR是Oracle  10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快照(snapshot)收集到的统计信息 ...

  6. [20190416]11g下那些latch是Exclusive的.txt

    [20190416]11g下那些latch是Exclusive的.txt --//昨天测试了11g下那些latch是共享的,链接:--//是否反过来剩下的都是Exclusive的.继续测试: 1.环境 ...

  7. Java类MemoryUsage查看虚拟机的使用情况

    原文地址:https://www.cnblogs.com/xubiao/p/5465473.html Java类MemoryUsage,通过MemoryUsage可以查看Java 虚拟机的内存池的内存 ...

  8. joomla对象注入漏洞分析

    0x00 漏洞简单介绍 jooomla 1.5 到 3.4.5 的全部版本号中存在反序列化对象造成对象注入的漏洞,漏洞利用无须登录,直接在前台就可以运行随意PHP代码. Joomla 安全团队紧急公布 ...

  9. oracle编程艺术--runstst工具

    runstats工具是< oracle database 9i/10g/11g编程艺术 深入数据库体系结构>作者写的一个统计性能工具,能对做同一件事的两个方法进行比较,得到孰优孰劣的结果. ...

随机推荐

  1. Python常用目录操作(Python2)

    Python获取当前路径   Python查看指定路径下的文件和文件夹 Python修改当前工作目录(在读取文件等时需要) Python添加import路径(有时候为了import自己写的py文件,且 ...

  2. UI体系的本质是结构化存在

    UI体系的本质是结构化存在: UI系统的问题需要使用结构化的思维来处理.

  3. [SCOI2008]着色方案 递推 记忆化搜索

    我们发现 $c_{i}$ 和 $k$ 的规模非常小我们还发现每种颜色的位置是不必知道的,只要这种颜色和相邻的颜色种类不同即可.定义状态 $f[a][b][c][d][e][last]$,代表有 $a$ ...

  4. POJ2104 K-th Number(线段树,二分,vector)

    题意 不带修改区间第k小.(n<=100000) 题解 建立线段数和vector数组(vector为当前区间排列之后的序列)(归并) 然后对于每一个询问二分答案. 问题就转化为区间有多少数小于等 ...

  5. PostgreSQL指定用户可访问的数据库pg_hba.conf

    进入指定目录: # cd /var/lib/pgsql/9.3/data/ 使用vi编辑pg_hba.conf文件 # vi pg_hba.conf 以上配置为所有IP及网关都允许访问,使用MD5认证 ...

  6. Delayer 基于 Redis 的延迟消息队列中间件

    Delayer 基于 Redis 的延迟消息队列中间件,采用 Golang 开发,支持 PHP.Golang 等多种语言客户端. 参考 有赞延迟队列设计 中的部分设计,优化后实现. 项目链接:http ...

  7. P3168 [CQOI2015]任务查询系统(主席树)

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  8. Java基础学习总结(19)——Java环境变量配置

    前言 学习java的第一步就要搭建java的学习环境,首先是要安装JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME"."path"." ...

  9. 网页载入进度条中的javascript

    demo地址:http://output.jsbin.com/buquyedosa 思路例如以下:代码都有凝视,就不一一介绍了. <!DOCTYPE html> <html> ...

  10. openVswitch(OVS)源码分析之工作流程(哈希桶结构体的解释)

    这篇blog是专门解决前篇openVswitch(OVS)源码分析之工作流程(哈希桶结构体的疑惑)中提到的哈希桶结构flex_array结构体成员变量含义的问题. 引用下前篇blog中分析讨论得到的f ...