簡介
本檔案介紹如何對思科整合邊界元件(CUBE)上的作業階段啟始通訊協定(SIP)作業階段刷新問題進行疑難排解。
作者:Andres Salgado,技術行銷工程師CUBE。
必要條件
需求
思科建議您瞭解以下主題:
採用元件
本文件所述內容不限於特定軟體和硬體版本。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
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" "=" "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標頭。
相關資訊