session timer(一)

功能介绍

SIP并没有为所建立的会话定义存活机制。尽管用户代理可以通过会话特定的机制判断会话是否超时,但是代理服务器却做不到这点。如此一来,代理服务器有时会无法判断会话是否还是活动的。例如,当一个用户代理在会话结束时发送BYE消息失败,或者由于网络问题BYE消息丢失,代理服务器将不会知道会话已经结束。在这种情况下,代理服务器将保持呼叫的状态并且无法知道呼叫状态信息何时失效。

为了解决这个问题,RFC4028为SIP会话定义了一种存活机制。用户代理或代理服务器周期性发送re-INVITE或UPDATE请求用来保持会话的活动。会话更新请求的间隔通过其定义的协商机制决定。如果在间隔内没有收到会话更新请求,该会话被认为已经终止。

工作原理

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

Min-SE头字段为会话更新间隔建立最小刷新时间。这个头字段的目的是防止怀有恶意的代理服务器设置任意短的更新间隔以致它的邻居代理负荷超载。处理请求的每个代理服务器可以提高这个下限(实际上就是提高刷新的周期),但是不能降低下限。

Session-Expires头字段为会话更新间隔建立最长刷新时间。任何服务于该请求的代理可以降低这个值,但必须大于Min-SE头字段指定的值。

如果Session-Expires的间隔太小(小于代理服务器要维护的Min-SE头字段的值),那么代理服务器将拒绝这个请求并返回一个422响应。该响应包含一个Min-SE头字段表明它所支持的最小会话间隔。UAC再次尝试发送请求,这次请求中包含了Min-SE头字段,头字段等于先前接收到的所有422响应中最大的Min-SE头字段。这样一来,最小定时器就能满足所经过的所有代理服务器的约束条件。

在几次INVITE/422消息的反复传送后,请求最终到达UAS。UAS可以调整会话间隔的值就好像它自己也是一个代理服务器。之后,它将这个最终的会话间隔加入2xx响应的Session-Expires头字段。Session-Expires头字段还包含一个“refresher”参数用来表示更新的执行者(是当前的UAC还是UAS)。当2xx响应沿代理服务器返回时,任何代理服务器可以观察这个最终的会话间隔但不能修改它。

通过响应中的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重新协商

时间: 2024-11-07 02:18:26

session timer(一)的相关文章

oracle编程艺术--runstst工具

runstats工具是< oracle database 9i/10g/11g编程艺术 深入数据库体系结构>作者写的一个统计性能工具,能对做同一件事的两个方法进行比较,得到孰优孰劣的结果. (看到runstats想到了db2 里有runstats命令收集统计信息) runststs工具主要测量三个要素 墙上时钟(wall clock) 或耗用时间(elapsed time) 系统统计结果,会并排地显示每个方法做某件事(如执行一个解析调用)的次数,并展示出二者之差 闩定(latch)这个是报告的

AWR Report 关键参数详细分析

WORKLOAD REPOSITORY report for DB Name DB Id Instance Inst num Startup Time Release RAC CALLDB 1251068085 calldb1 1 07-Dec-12 21:12 11.2.0.3.0 YES Host Name Platform CPUs Cores Sockets Memory (GB) calldb01 AIX-Based Systems (64-bit) 128 32   250.25  

如何读懂 STATSPACK 报告 (转)

详细解读 STATSPACK 报告 1.报表头信息 2.实例负载档信息 ** (部分重要参数) 3.实例有效性信息 *** (全部) 4.TOP 5及其他等待事件信息 *** 5.SQL统计信息 *** (只确认部分语句, 我们自己写的) 对于一个特定的应用程序或者系统来讲,要调整优化其性能,最好的方法是检查程序的代码和用户使用的SQL语句.如果使用了 level5级别的snapshot, 那么statspack生成的报告就会显示系统中高负荷SQL语句(High Load SQL)的信息, 缺省

用websocket实现后台推送消息

1前台实现 1 connect:function() { 2 var webSocketIP = window.CRM_CONFIG.WebSocketIP; 3 var target = 'ws://'+webSocketIP+'/websocket'; 4 if ('WebSocket' in window) { 5 ws = new WebSocket(target); 6 } else if ('MozWebSocket' in window) { 7 ws = new MozWebSo

PJSIP UA分析

PJSIP UA分析(1)--概述 一个SIP UA不外乎包括如下几方面: 1 账号管理——包括number,display,authentication name,password,domain,registrar,proxy,outbound-proxy 2 账号注册和注销 3 主叫管理——键盘事件处理.发起呼叫.暂挂(hold).多路呼叫 4 被叫管理——暂挂.多路呼叫管理.前转.后转 5 语音数据编改码和传输 6 视频数据编改码和传输 只要沿着这几方面仔细去分析,我想分析起代码来比较有思

oracle 10g 生成awr报告过程

SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP and Data Mining options[[email protected]_maridb ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on M

本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel

本地数据Store var monthStore = Ext.create('Ext.data.Store', { storeId : 'monthStore', autoLoad : false, fields : [ 'MONTH_' ], data : [ { MONTH_ : '1' }, { MONTH_ : '2' }, { MONTH_ : '3' }, { MONTH_ : '4' }, { MONTH_ : '5' }, { MONTH_ : '6' }, { MONTH_ :

华为MPLS LDP session和路由通告原则

Igress LER:一个ip网络进入mpls网络时:查询FIB,是查FIB表里面的NHLFB表 Trasit :  当在一个纯mpls网络中,查询的是LFIB表,是LFIB表里面的ILM(及lsp)表 Egress LER:在离开mpls域进入ip域时,查询的仍然是FIB表. (还有一张表LIB,或者称为lsp,此表不做转发,而是做转发使用) 查看PUSH动作的标签(节点类型Ingress LER)查看FIB表 dis fib 或dis fib ver dis mpls lsp include

servlet之session添加和移除的两种方式

Java Session 介绍 一.添加.获取session 1.项目结构 2.jar包 3.web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns