目錄

簡介

必要條件

需求

採用元件

SIP會話刷新概述

互通性和相容性

互通性

相容性

使用者代理的角色

Session-Expires Header

Min-SE報頭

422響應消息

支援和需要標頭

呼叫流程示例

通過更新刷新避免互操作性問題

呼叫中重新邀請/更新的消費量

相關資訊

簡介

本檔案介紹如何對思科整合邊界元件(CUBE)上的作業階段啟始通訊協定(SIP)作業階段刷新問題進行疑難排解。

作者：Andres Salgado，技術行銷工程師CUBE。

必要條件

需求

思科建議您瞭解以下主題：

- 立方體

- TCP

- SIP

- UDP

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

SIP會話刷新概述

會話發起協定(SIP)會話計時器支援功能增加了通過重複的INVITE請求定期刷新SIP會話的功能。重複的INVITE請求或Re-INVITE在啟用的呼叫段上傳送，以允許使用者代理(UA)或代理確定SIP會話的狀態。如果沒有此keepalive機制，記住傳入和傳出請求的代理（狀態代理）可以繼續毫無必要地保持呼叫狀態。如果UA無法在會話結束時傳送BYE消息，或者如果BYE消息由於網路問題而丟失，則狀態代理不知道會話已結束。重新邀請可確保活動會話保持活動狀態並終止已完成的會話。

互通性和相容性

互通性

此功能提供SIP會話的定期刷新。定期刷新允許使用者代理和代理監控SIP會話的狀態，以便在發生網路故障時防止掛起的網路資源。

相容性

呼叫中的兩個使用者代理或代理參與者中只有一個需要實施SIP會話計時器支援功能。此功能與舊的SIP網路輕鬆相容。SIP會話計時器支援功能還會新增兩個用於協商刷新間隔值的常規報頭。

使用者代理的角色

初始INVITE請求確定會話的持續時間，可以包括Session-Expires報頭和Min-SE報頭。這些標頭指示使用者代理客戶端(UAC)所需的會話計時器值。接收使用者代理伺服器(UAS)或代理可以降低會話計時器值，但不低於Min-SE報頭的值。如果會話計時器持續時間低於配置的最小值，則代理或UAS還可以傳送422響應消息。如果UAS或代理發現會話計時器值可以接受，則會將Session-Expires報頭複製到2xxclass響應。

如果UAC未包含一個Session-Expires報頭，則UAS或代理可以在INVITE中插入Session-Expires報頭。因此，即使請求中沒有出現Session-Expires報頭，UAC仍可以在響應中接收該報頭。

在2xxresponse中，Session-Expires報頭中的refresherparameter指示誰執行重新邀請。例如，如果引數包含值UAC，則UAC執行刷新。對於相容性問題，兩個使用者代理中只有一個需要支援會話計時器功能，在這種情況下，支援該功能的UA將執行刷新。另一個UA將刷新解釋為重複的INVITE並忽略它們。

重新INVITE的處理方式與INVITE請求相同，但會在預定的會話間隔內退出。Re-INVITE帶有新的會話過期時間。負責重新INVITE請求的UA會在會話到期之前傳送重新INVITE。如果沒有響應，則UA會傳送BYE請求以在會話到期之前終止呼叫。如果在會話到期之前未傳送重新邀請，則UAC或UAS可以傳送BYE。

如果2xxresponse不包含Session-Expires報頭，則沒有會話過期，因此不需要傳送re-INVITES。

Session-Expires Header

Session-Expires報頭用於傳輸SIP呼叫的會話間隔。它被置於INVITE請求中，並且被允許在INVITE的任何2個類別響應中。其存在表明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"

Refresherparameter在初始INVITE中是可選的，儘管UAC可以將其設定為UAC以指示它是啟動會話刷新的引數。200 OK響應必須設定刷新引數。

Min-SE報頭

由於INVITE請求的處理負載，您可以配置代理、UAC和UAS可以接受的最小計時器值。Proxy 、 UAC和UAS。min-secommand設定最小計時器，並在初始INVITE請求的Min-SE報頭中傳達該計時器。

當發出呼叫時，Min-SE報頭的存在會通知UAS和UAC在會話計時器持續時間內接受的最小值的任何代理（以秒為單位）。預設值為1800秒（30分鐘）。 建議不要將會話計時器降低到設定值以下，UAS和代理防止UAC產生422錯誤。設定後，min-secommand值將影響路由器發起的所有呼叫。如果Min-SE報頭不存在，則UA接受任何值。

Min-SE報頭的語法為：

Min-SE  =  "Min-SE" ":" delta-seconds

422響應消息

如果Session-Expires標頭的值太小，則UAS或代理會拒絕帶有422 Session Timer Too Smallresponse消息的呼叫。對於422響應消息，Proxy或UAS包括一個Min-SE報頭，指示它可以接受的最小會話值。然後，UAC可以使用更大的會話計時器值重試呼叫。

如果在INVITE請求之後收到422響應消息，則UAC可以重試INVITE。

支援和需要標頭

Supported報頭中存在timerargument表示UA支援SIP會話計時器。Require報頭中存在timerargument表示相反UA必須支援SIP會話計時器才能成功呼叫。

- 在2xx響應中，Session-Expires報頭中的refresherparameter指示誰執行Re-INVITATIONS

- 如果2xx響應不包含Session-Expires報頭，則沒有會話過期，因此不需要傳送Re-INVITATIONS

- 刷新引數在初始INVITE中是可選的。200 OK響應必須設定刷新引數

- Min-SE報頭通知UAS和UAC在會話計時器持續時間內接受的最小值的所有代理（以秒為單位）。預設值為1800秒（30分鐘）

呼叫流程示例

來自SIP提供商的入站呼叫，響應設定為UAC，因此200 OK後15分鐘，UAC（SIP提供商）傳送會話刷新(Re-Invite);

Cisco Unified Communications Manager(CUCM)在10秒後傳送會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下的session refresh命令會將會話過期新增到出站INVITE中。

3.將CUCM 10.x之前的會話刷新設定為Invite，而不是更新。

CUCM中SIP配置檔案下的會話刷新方法。

呼叫中重新邀請/更新的消費量

避免網路傳送不必要的重新邀請/更新，並在本地使用它們以避免任何互操作性問題。僅當發生介質更改時，才會傳遞會話刷新。

Midcall-reinvite消費

CUBE使用reinvite with midcall-signaling passthru media-change。CUBE獨立處理每個支路。

15分鐘後，您將看到會話刷新。

Midcall-reinvite Consumption示例，包含Session Expires標頭。

相關資訊

- SIP中的作業階段計時器

- SIP RFC

- 技術支援與文件 - Cisco Systems