简介
本文档介绍如何对思科统一边界元素(CUBE)上的会话发起协议(SIP)会话刷新问题进行故障排除。
作者:CUBE技术营销工程师Andres Salgado。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
SIP会话刷新概述
会话初始协议(SIP)会话计时器支持功能增加了定期刷新重复INVITE请求的SIP会话的功能。重复的INVITE请求(或Re-INVITE)在活动呼叫段上发送,以允许用户代理(UA)或代理确定SIP会话的状态。如果没有此保持连接机制,记住传入和传出请求(有状态代理)的代理可以继续毫无必要地保留呼叫状态。如果UA在会话结束时未能发送BYE消息,或者BYE消息因网络问题而丢失,则有状态代理不知道会话已结束。Re-INVITES确保活动会话保持活动状态,并终止已完成的会话。
互操作性和兼容性
互操作性
此功能提供SIP会话的定期刷新。定期刷新允许用户代理和代理监控SIP会话的状态,以防止发生网络故障时挂起网络资源。
兼容性
呼叫中的两个用户代理或代理参与者中只有一个需要实施SIP会话计时器支持功能。此功能可轻松与旧SIP网络兼容。SIP会话计时器支持功能还添加了两个新的常规报头,用于协商刷新间隔的值。
用户代理的角色
初始INVITE请求建立会话的持续时间,并可以包括Session-Expires报头和Min-SE报头。这些报头指示用户代理客户端(UAC)所需的会话计时器值。接收用户代理服务器(UAS)或代理可以降低会话计时器值,但不能低于Min-SE报头的值。如果会话计时器持续时间低于配置的最小值,代理或UAS也可以发送422响应消息。如果UAS或代理发现会话计时器值可接受,它会将Session-Expires报头复制到2 xxclass响应中。
如果UAC未包含会话过期报头,UAS或代理可以在INVITE中插入会话过期报头。因此,UAC可以在响应中接收会话过期报头,即使请求中不存在。
在2 xxresponse中,Session-Expires报头中的therefresherparameter指示谁执行重新邀请。例如,如果参数包含值UAC,UAC将执行刷新。对于兼容性问题,两个用户代理中只有一个需要支持会话计时器功能,在这种情况下,支持该功能的UA会执行刷新。另一个UA将刷新解释为重复的INVITE,并忽略它们。
重新邀请的处理方式与INVITE请求相同,但在预定会话间隔内发出。重新邀请将携带新会话过期时间。负责重新邀请请求的UA在会话到期前发送重新邀请。如果没有响应,UA会发送BYE请求在会话到期前终止呼叫。如果在会话到期前未发送重新邀请,UAC或UAS可以发送BYE。
如果2 xresponse不包含Session-Expires报头,则不存在会话过期,并且不需要发送重新邀请。
会话过期报头
Session-Expires报头传送SIP呼叫的会话间隔。它被放在INVITE请求中,并且允许在对INVITE的任何2 xclass响应中。其存在表示UAC希望使用会话计时器进行此呼叫。与SIP-Expires报头不同,它只能包含增量时间(即当前时间)加上响应的会话间隔。
例如,如果UAS对包含值为1800秒(30分钟)的Session-Expires报头的re-INVITE生成200 OK响应,则UAS会在发送200 OK响应后30分钟计算会话过期。对于每个代理,会话过期时间是收到或发送2xx时后30分钟。对于UAC,到期时间是收到最终响应后30分钟。
Session-Expires报头的建议值为1800秒。
Session-Expires报头的语法为:
Session-Expires = ("Session-Expires" | "x") ":" delta-seconds
refresher = ";" "refresher" "=" "UAS"|"UAC"
在初始INVITE中,therefresherparameter是可选的,但UAC可以将其设置为UAC,以指示它是启动会话刷新的参数。200 OK响应必须设置刷新器参数。
最小SE报头
由于INVITE请求的处理负载,您可以配置代理、UAC和UAS可以接受的最小计时器值。代理、UAC和UAS。Themin-secommand设置最小计时器,并在初始INVITE请求的Min-SE报头中传达。
进行呼叫时,Min-SE报头的存在会通知UAS和任何代理UAC在会话计时器持续时间内接受的最小值(以秒为单位)。默认值为1800秒(30分钟)。 建议不要将会话计时器降低到值集以下,UAS和代理会阻止UAC生成422错误。设置后,themin-secommand值会影响路由器发出的所有呼叫。如果Min-SE报头不存在,UA接受任何值。
Min-SE报头的语法为:
Min-SE = "Min-SE" ":" delta-seconds
422回复消息
如果Session-Expires报头的值太小,UAS或代理会拒绝使用422会话计时器过小响应消息的呼叫。使用422响应消息时,代理或UAS包括Min-SE报头,该报头指示它可以接受的最小会话值。然后,UAC可以使用较大的会话计时器值重试该呼叫。
如果在INVITE请求后收到422响应消息,UAC可以重试INVITE。
支持和需要报头
Supported报头中存在timerargument表示UA支持SIP会话计时器。Require报头中存在timerargument表示相对的UA必须支持SIP会话计时器,才能成功进行呼叫。
- 在2xx响应中,Session-Expires报头中的refresher参数指示谁执行Re-INVITE
- 如果2xx响应不包含Session-Expires报头,则不存在会话过期,并且不需要发送Re-INVITE
- 刷新器参数在初始INVITE中是可选的。200 OK响应必须设置刷新器参数
- Min-SE报头将UAC在会话计时器持续时间内接受的最小值通知UAS和任何代理(以秒为单位)。默认值为1800秒(30分钟)
呼叫流示例
来自SIP提供商的入站呼叫,响应设置为UAC,因此在200 OK后15分钟,UAC(SIP提供商)发送会话刷新(Re-Invite);
思科统一通信管理器(CUCM)在86400秒后发送会话刷新;
会话过期CUCM发送的默认值为1800,但最大可增加到86400。
避免更新刷新的互操作性问题
1. CUBE可以禁用更新以使用SIP配置文件刷新会话。
voice class sip-profiles 200
request ANY sip-header Allow-Header modify ", UPDATE" "“
Response ANY sip-header Allow-Header modify ", UPDATE" "“
Voice service voip
sip
sip-profiles 200
2.如果入站支路中没有报头,则语音服务voip中SIP下的会话刷新命令会向出站INVITE添加会话过期。
3.将会话刷新设置为Invite(而不是更新),从CUCM 10.x开始。
CUCM中SIP配置文件下的会话刷新方法。
呼叫中RE-INVITE/UPDATE的消耗
避免网络发送的不必要的重新邀请/更新,并在本地使用它们以避免任何互操作性问题。会话刷新仅在介质发生更改时通过。
中呼重新邀请消耗
CUBE使用中呼信令通过媒体更改重新邀请。CUBE独立处理每个支路。
15分钟后,您会看到会话刷新。
Midcall-reinvite包含会话过期报头的消耗示例。
相关信息