目录

简介

先决条件

要求

使用的组件

SIP会话刷新概述

互操作性和兼容性

互操作性

兼容性

用户代理的角色

会话过期报头

最小SE报头

422回复消息

支持和需要报头

呼叫流示例

避免更新刷新的互操作性问题

呼叫中RE-INVITE/UPDATE的消耗

相关信息

简介

本文档介绍如何对思科统一边界元素(CUBE)上的会话发起协议(SIP)会话刷新问题进行故障排除。

作者：CUBE技术营销工程师Andres Salgado。

先决条件

要求

Cisco 建议您了解以下主题：

- CUBE

- TCP

- SIP

- UDP

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

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        =  ";" "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包含会话过期报头的消耗示例。

相关信息

- SIP中的会话计时器

- SIP RFC

- 技术支持和文档 - Cisco Systems