本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本文件提供 Cisco IOS® 和 Cisco IOS XE 通話路由的說明。
雖然閱讀本文檔無需任何正式前提條件,但撰寫本文檔的目的是希望讀者已經具備一些用於建立和連線電話呼叫的基礎語音信令協定的知識。這些協定在整個過程中被引用多次。
信令協定:會話初始協定(SIP)、H323 (h225/h245)、媒體網關控制協定(MGCP)、瘦客戶端控制協定(SCCP)、ISDN Q931、E1 R2。
媒體協定:即時協定(RTP)、語音編解碼器、影片編解碼器。
模擬技術:Ear and Mouth (E&M)、Foreign Exchange Subscriber (FXS)和Foreign Exchange Office (FXO)。
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本文檔介紹了與普通舊式電話服務(POTS)和IP語音(VoIP)網路呼叫段匹配的入站和出站撥號對等體的機制。
除撥號對等體資訊外,本文檔還介紹了與呼叫路由相關的重要主題。其中包括數字處理、會話初始協定(SIP)消息處理的快速概述、限制呼叫功能的幾種方法、快速介質和信令繫結概述,以及最後一點故障排除。
本文檔使用配置示例以及debug和show命令輸出作為參考點。本文檔中的許多功能都明確標有Cisco IOS和Cisco IOS XE中引入該功能的版本。此資訊也可以在命令和功能規劃圖部分中快速參考。如果存在非常明顯的缺陷,則會在文本中連結,以便讀者瞭解。
屬性 |
說明 |
---|---|
數字字串 |
也稱為號碼字串、電話號碼、號碼或E164號碼。全部由數字0到9組成,加上可選前置加號(+)。
|
撥出號碼辨識服務(DNIS) |
這是呼叫的被叫號碼或目標號碼。 |
自動號碼辨識(ANI) |
這是呼叫的主叫號碼或始發主叫號碼。這也可以稱為主叫線路識別符號(CLID),也可以標題為「主叫方ID」。 |
統一資源辨識碼(URI) |
URI是sip:或tel:字串,最常用於VoIP協定SIP和H323。
|
載波ID |
CID範例: 注意:思科漏洞ID CSCua14749 Carrier-ID在IOS XE平台上不起作用。 |
路由字串 |
用於SIP的ILS路由字串的思科專有報頭。
|
列舉 |
ENUM是一種使用域名服務(DNS)將E164電話號碼轉換為URI的協定。本檔案不涵蓋此內容。 |
PSTN |
公共交換電話網路 |
ITSP |
網際網路電話服務提供者 |
SBC |
會話邊界控制器。 這是作為客戶LAN和ITSP/PSTN網路之間的分界點的裝置 |
功能 | IOS版本 | IOS XE版本 |
數字擴展(num-exp) 撥號對等體(POTS和VOIP) answer-address 目的地模式 incoming call-number 會話目標(IPv4和DNS) 最大連線數(max-conn) direct-inward-dial forward-digits (POTS) 首碼(POTS) 數字間(語音埠)超時 |
11.3(1)T |
All |
撥號對等體終止符 |
12.0 |
All |
洪博站 |
12.0(5)公噸 |
All |
ISDN對應 |
12.0(6)公噸 |
All |
撥號對等搜尋配置 |
12.0(7)XK |
All |
語音轉換規則和配置檔案 translate-outgoing numbering-type digit-strip (POTS) |
12.0.(7)XR1 |
All |
session target (sip-server) |
12.1(1)公噸 |
All |
POTS中繼組 |
12.1(3)公噸 |
All |
DNIS-Map(出站) |
12.2(2)XB |
All |
中繼組標籤 |
12.2(11)T |
All |
撥號對等體(資料) |
12.2(13)公噸 |
All |
語音類別URI (傳出) |
12.3(4)公噸 |
All |
outbound-proxy |
12.4(15)公噸 |
All |
會話目標(IPv6) |
12.4(22)公噸 |
All |
SIP配置檔案(出站) |
15.0(1)公尺 |
All |
語音類別URI(傳入) voice source-group |
15.1(2)公噸 |
3.8秒 |
SIP複製清單 會話目標(註冊器) |
15.1(3)公噸 |
3.6秒 |
call-route (url) |
15.2(1)公噸 |
3.3秒 |
最大頻寬 |
15.2(2)公噸 |
3.7秒 |
E164-Pattern-Maps(出站) |
15.2(4)公尺 |
3.7秒 |
Voice Class Route-String call-route (dest-route-string) |
15.3(3)公尺 |
3.10秒 |
撥號對等體群組(VOIP) E164模式對映(入站) 目標伺服器組 requri-passing 會話目標(sip-uri) |
15.4(1)公噸 |
3.11秒 |
撥號對等體調配策略 SIP配置檔案(入站) |
15.4(2)公噸 |
3.12秒 |
撥號對等體群組(POTS) |
15.5(1)公噸 |
3.14秒 |
語音類租戶 |
15.6(2)公噸 |
16.3.1 |
適用於撥號對等體的VRF篩選 |
15.6(3)公尺 |
16.3.1 |
e164翻譯 |
不適用 |
16.8.1 |
SIP DSAPP |
不適用 |
16.12.1 |
伺服器群組的Huntstop |
不適用 |
17.4.1 |
租戶的SIP偵聽埠撥號對等體過濾 |
不適用 |
17.8.1 |
基於DNS SRV的選項Keepalive |
不適用 |
17.9.1 |
Cisco IOS和Cisco IOS XE網關利用撥號對等體的概念來控制呼叫路由和呼叫每個支路的功能協商。呼叫段是兩個呼叫代理之間的雙向通訊。呼叫代理是發起、處理或轉發電話呼叫的裝置。這可以且不限於電話提供商裝置、Cisco網關、IP電話、Cisco Unified Communication Manager (CUCM)、Cisco Unity connection (CUC)等。有太多呼叫代理要列出。
方案:呼叫從另一個呼叫代理到達思科網關,並且是入站呼叫段(內段)。網關處理該呼叫,並根據其處理將呼叫傳送到下一個呼叫代理。這是出站呼叫段(外段)。
圖1顯示了透過思科語音網關從PSTN到CUCM路由的呼叫以及各自的呼入和撥出呼叫段資訊。
圖1 -圖示入站和出站呼叫段
透過Cisco網關成功呼叫ALWAYS(請參閱備註)匹配入站或出站撥號對等體以正確路由。入站和出站撥號對等體與前面提到的呼叫段類似。在圖1中,呼叫從Cisco網關的PSTN到達,需要匹配入站撥號對等體。然後,網關使用出站撥號對等體將呼叫路由到下一個呼叫代理。請務必記住,這些術語是從思科網關的角度定義的。
透過為呼叫的每一端匹配撥號對等體,管理員可以控制每個特定呼叫段的許多方面。這些示例包括語音編解碼器、DTMF首選項、數字操作、呼叫路由的位置以及許多其他設定。可以使用入站和出站匹配語句配置撥號對等體,因此,如果有效的入站和出站匹配配置應用於特定撥號對等體,則可以為內腿和外腿匹配相同的撥號對等體。
圖2說明與圖1相同的入站和出站呼叫段,但透過思科語音網關從PSTN到CUCM路由的呼叫段使用各自的撥號對等體。
圖2 -圖示的入站和出站撥號對等體
Cisco語音網關可以互動多種不同型別的語音呼叫和協定,包括IP到IP、POTS到POTS和IP到POTS,反之亦然。
圖3演示了透過思科統一邊界要素(CUBE)進行的VoIP到VoIP呼叫。
圖3 - Voip到VoIP呼叫的入站和出站撥號對等體
圖4顯示了透過Cisco網關的POTS到POTS呼叫。
圖4 - POTS到POTS呼叫的入站和出站撥號對等體
POTS |
普通舊式電話服務撥號對等體適用於模擬連線,例如模擬FXS、FXO、ISDN T1/E1、E1 R2以及耳和口(E&M)連線。 這些裝置向網關上的物理語音埠傳送或接收呼叫。 |
VOIP |
Voice Over IP撥號對等體主要用於控制進出網關的H323和SIP連線。 這些撥號對等體使用域名系統(DNS)傳送和接收來自IPv4和IPv6地址的信令以及完全限定域名(FQDN)。 — VoIP撥號對等體還可用於幀中繼語音(VoFR)、ATM語音(VoATM)、高級資料鏈路控制語音(VoHDLC)以及這些撥號對等體的註冊、准入和狀態(RAS)信令和會話目標,還可以包括結算和ENUM值。 注意:其中一些配置是較舊的技術,在較新的網路中是看不到的,而使用IOS XE時,有些配置不再受支援。因此,本文檔中不包含這些內容。 |
MMOIP |
Multimedia Mail Over IP撥號對等體用於將電子郵件傳送到Exchange伺服器。 這些主要用於t37入口匝道/出口匝道傳真。這些撥號對等體型別不在本文檔的討論範圍之內。 |
注意:Cisco網關上可配置的最大撥號對等體數量取決於可用記憶體(DRAM)。每個撥號對等體消耗大約6KB的記憶體,因此請確保網關至少具有為其他CPU進程保留的總記憶體的20%。大量已配置的撥號對等體可能會增加路由呼叫的延遲。這一點很重要,因為思科語音應用從上到下檢視撥號對等體,類似於訪問控制清單(ACL)。在較新的Cisco網關上,這通常不是問題。
錯誤示例:
May 26 12:59:46.406: %DIALPEER_DB-3-ADDPEER_MEM_THRESHOLD: Addition of dial-peers limited by available memory
當Cisco網關收到呼叫建立請求時,網關將開始搜尋此呼叫適用的呼入撥號對端。這不是逐位分析;而是使用完整消息來確定選擇了哪個入站撥號對等體。檢查的消息中的專案順序在很大程度上取決於呼叫的協定,如表1、表2和表3中定義的首選項清單所示。撥號對等體只需滿足其中一個匹配條件。 不需要在撥號對等體中配置所有屬性,也不需要每個屬性都與呼叫建立資訊匹配。 系統會根據第一個匹配條件搜尋所有撥號對等體。僅當找不到匹配項時,網關才會轉到下一個條件。
表 1.入站SIP撥號對等體選擇首選項
偏好設定 |
符合條件 |
撥號對等體命令 |
1 |
URI |
透過<uri-tag>傳入uri |
2 |
URI |
傳入uri要求<uri-tag> |
3 |
URI |
<uri-tag>的傳入uri |
4 |
URI |
來自<uri-tag>的傳入uri |
5 |
被叫號碼 |
incoming called-number <number-string> 傳入被叫e164-pattern-map <pattern-map-number> |
6 |
呼叫號碼 |
呼入呼叫e164-pattern-map <pattern-map-number> answer-address <number-string> |
7 |
Destination-pattern (ANI) -目的地模式(ANI) |
destination-pattern <數字字串> |
8 |
載波ID |
carrier-id source <字串> |
注意:可以按VRF或租戶過濾符合條件的入站撥號對等體。如果已配置適用功能。有關詳細資訊,請參閱虛擬路由和轉發(VRF)以及撥號對等體搜尋與語音類租戶部分。
表2.入站H323撥號對等體選擇首選項
偏好設定 |
符合條件 |
撥號對等體命令 |
1 |
URI |
傳入uri called <uri-tag> 傳入uri calling <uri-tag> |
2 |
被叫號碼 |
incoming called-number <number-string> 傳入被叫e164-pattern-map <pattern-map-number> |
3 |
呼叫號碼 |
呼入呼叫e164-pattern-map <pattern-map-number> answer-address <number-string> |
4 |
Destination-pattern (ANI) -目的地模式(ANI) |
destination-pattern <數字字串> |
5 |
載波ID |
carrier-id source <字串> |
表3.入站封鎖POTS撥號對等體選擇首選項
偏好設定 |
符合條件 |
撥號對等體命令 |
1 |
被叫號碼 |
incoming called-number <number-string> |
2 |
呼叫號碼 |
answer-address <number-string> |
3 |
Destination-pattern (ANI) -目的地模式(ANI) |
destination-pattern <number-string> |
4 |
語音埠 |
port <voice-port-number> |
當沒有適用於POTS或VoIP呼叫的入站撥號對等體的匹配項時,網關將分配撥號對等體0。這並不理想,因為撥號對等體0的功能有限,並且可能導致呼叫問題。此情況的一個例外情況是不使用撥號對等體來路由呼叫的SCCP和MGCP協定。有關詳細資訊,請參閱MGCP和SCCP部分。
撥號對等體0功能
出站撥號對等體用於將POTS或VoIP呼叫從網關路由到下一個呼叫代理。與入站撥號對等體匹配一樣,網關可以根據特定協定的首選順序使用一系列專案來匹配撥號對等體。但是,與入站撥號對等體不同,如果沒有合格的出站撥號對等體來路由呼叫,則呼叫失敗。與入站撥號對等體匹配一樣,將根據第一個匹配條件搜尋所有撥號對等體。僅當找不到匹配項時,網關才會轉到下一個條件。
表4.出站SIP撥號對等體選擇首選項
偏好設定 |
符合條件 |
撥號對等體命令 |
1 |
撥號對等體組撥號對等體 |
目標dpg <dpg-tag> (在入站撥號對等體上配置了DPG) |
2 |
撥號對等體調配策略URI |
目標uri-from <uri-tag> (在入站撥號對等體上配置了DPP) |
3 |
ILS路由字串 |
destination route-string <route-string-tag> |
4 |
URI和Carrier-ID |
目標uri <uri-tag> AND carrier-id target <string> |
5 |
被叫號碼和業者ID |
destination-pattern <number-string> AND carrier-id target <string> |
6 |
URI |
目標uri <uri-tag> |
7 |
被叫號碼 |
destination-pattern <DNIS-number> 目標e164-pattern-map <pattern-map-number> dnis-map <dnis-map-number> |
8 |
呼叫號碼 |
目標呼叫e164-pattern-map <pattern-map-number> |
表5.出站H323撥號對等體選擇首選項
偏好設定 |
符合條件 |
撥號對等體命令 |
1 |
撥號對等體組撥號對等體 |
目標dpg <dpg-tag> (在入站撥號對等體上配置) |
2 |
URI和Carrier-ID |
目標uri <uri-tag> AND carrier-id target <string> |
3 |
被叫號碼和業者ID |
destination-pattern <number-string> AND carrier-id target <string> |
4 |
URI |
目標uri <uri-tag> |
5 |
被叫號碼 |
destination-pattern <數字字串> 目標e164-pattern-map <pattern-map-number> dnis-map <dnis-map-number> |
6 |
呼叫號碼 |
目標呼叫e164-pattern-map <pattern-map-number> |
表6.出站POTS撥號對等體選擇首選項
偏好設定 |
符合條件 |
撥號對等體命令* |
1 |
撥號對等體組撥號對等體 |
destination dpg <dpg-tag>(在入站撥號對等體上配置) |
2 |
URI和Carrier-ID |
目標uri <uri-tag> AND carrier-id target <string> |
3 |
被叫號碼和業者ID |
destination-pattern <number-string>和carrier-id target <string> |
4 |
URI |
目標uri <uri-tag> |
5 |
被叫號碼 |
destination-pattern <DNIS-number>dnis-map <map-number> |
注意: Number String Dial-Peer Hunting和URI Dial-Peer Hunting部分介紹了網關在移至下一個匹配條件之前,如何評估每個匹配條件行的潛在命令清單。例如,它在檢查呼叫號碼命令之前,評估所有潛在的destination-pattern匹配和destination e164-pattern-map matching命令。
數字字串首選項:
類似於URI具有用於評估匹配的特定操作順序,在評估數字數字字串時也會使用一組規則。思科網關的預設撥號對等體尋線方案設定為0。這表示閘道會搜尋具有最長相符專案(最具體)的模式。如果存在兩個匹配長度相同的撥號對等體,網關將檢視顯式定義的撥號對等體首選項。最後,如果兩者都相同,它會隨機選擇一個。
有其他撥號對等尋線方案可供配置;但是,大多數部署都保留預設值0。
提示:如果在預設順序之外匹配撥號對等體,則管理員可以檢查非預設撥號對等體尋線方案的運行配置。
Gateway(config)# dial-peer hunt ? <0-7> Dial-peer hunting choices, listed in hunting order within each choice: 0 - Longest match in phone number, explicit preference, random selection. 1 - Longest match in phone number, explicit preference, least recent use. 2 - Explicit preference, longest match in phone number, random selection. 3 - Explicit preference, longest match in phone number, least recent use. 4 - Least recent use, longest match in phone number, explicit preference. 5 - Least recent use, explicit preference, longest match in phone number. 6 - Random selection. 7 - Least recent use.
最長匹配號碼字串撥號對等體演算法查詢序列中具有最多號碼的撥號對等體,這些號碼與號碼字串中的號碼序列完全匹配。這一概念在隨後的情景中得到了澄清。
方案:已經為這些可能的匹配項配置了符合條件的撥號對等體,並且網關正在評估數字字串2001。 撥號對等體1可以匹配從2000到2999的任何號碼,而撥號對等體2可以匹配從2000到2009的任何號碼。此呼叫的撥號對等體2應匹配,因為它是採用預設撥號對等體搜尋機制時數字字串2001的最長匹配(最具體)(撥號對等體尋線0)。換句話說,數字200的序列是與數字字串2001中的數字序列完全匹配的最大序列。
!
dial-peer voice 1 voip
destination-pattern 2...
!
dial-peer voice 2 voip
destination-pattern 200.
!
首選項定義為管理員為每個撥號對等體定義的權重。管理員可以配置首選項,使呼叫始終先於其它呼叫使用特定的撥號對等體。預設情況下,所有撥號對等體都是首選項0。首選順序編號為0的撥號對等體在首選順序編號為1至10的另一個撥號對等體之前匹配。大多數管理員設定多個撥號對等體以將呼叫傳送到特定CUCM使用者,備份使用者或使用優先順序較低(配置了較高號碼)的其他撥號對等體配置另一個呼叫代理程式。
方案:為數字字串2001配置相同的匹配長度的兩個撥號對等體。管理員定義明確的偏好設定。 由於兩個撥號對等體的匹配長度相同,因此網關對這兩個撥號對等體的評估結果相同。但是,管理員將撥號對等體1設定為較高的首選項,以便選擇撥號對等體作為路由呼叫時使用的第一個撥號對等體。如果在第一個撥號對等體上發生故障,撥號對等體2將保留為輔助選項。
!
dial-peer voice 1 voip
destination-pattern 2...
preference 1
!
dial-peer voice 2 voip
destination-pattern 2...
preference 2
!
Cisco網關一次僅嘗試透過一條符合條件的出站撥號對等體路由呼叫。如果在第一個選定的撥號對等體上觀察到故障情況,網關將嘗試將呼叫路由到下一個符合條件的撥號對等體。這樣會一直持續到呼叫成功或失敗為止,因為已經沒有其他符合條件的撥號對等體可以嘗試了。撥號對等體搜尋和故障的常見症狀是發出呼叫時回鈴明顯延遲。通常需要調試來驗證指定撥號對等體上呼叫失敗的確切原因。 如果管理員不希望網關在發現故障情況時查詢另一個撥號對等體,可在撥號對等體上使用huntstop命令。
方案:為數字字串2001配置相同的匹配長度的兩個撥號對等體。管理員已定義明確的首選項,不希望與此特定呼叫的撥號對等體2匹配。 由於有兩個具有相同匹配長度的撥號對等體,因此使用首選項來確定撥號對等體。撥號對等體1具有最小的已配置首選項編號,因此用於路由呼叫。如果使用撥號對等體1在出站呼叫段上發生故障情況,則網關會立即停止撥號對等體搜尋,因為配置了huntstop命令。在此場景中,撥號對等體2從未用於出站路由。
! dial-peer voice 1 voip destination-pattern 2... preference 1 huntstop ! dial-peer voice 2 voip destination-pattern 2... preference 2 !
注意:huntstop和preference命令也可以與URI匹配語句配合使用,因為它們是常規撥號對等體配置命令。此外,語音類伺服器組配置還可以使用17.4.1a中的huntstop命令。有關此內容的更多詳細資訊,請參閱目標伺服器組部分。
網關檢視每個匹配條件並將其耗盡,然後移動到下一個匹配條件。例如,在入站SIP呼叫中。根據表1 。入站SIP撥號對等體選擇首選項,思科網關首先檢查的是URI,並評估所有可能的URI命令以查詢適合的URI。如果沒有匹配項,或者沒有配置任何匹配項,則網關將移至下一個匹配項,並對該條件進行評估。此過程會重複進行,直到呼叫基於匹配路由或網關的匹配條件用盡時為止。
當使用URI命令配置入站或出站撥號對等體時,網關將檢查在多個報頭中接收的URI以查詢可能的匹配。匹配首選項基於最具體的匹配項,確切的首選項為完全URI匹配、主機部分、使用者部分或電話URI。瞭解URI匹配的操作順序可以極大地幫助撥號對等體匹配SIP和CUBE部署。
可以使用命令voice class uri sip preference 指定使用者id作為第一個選項(而不是「host」)來處理此首選項順序。
URI首選項:
支援文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
方案:管理員已配置此撥號對等體並向網關傳送呼叫。收到的Invite中的From標頭來自:<sip:testuser@10.10.10.10>。 根據此報頭,網關可能會匹配兩個不同的撥號對等體。基於使用者部分的撥號對等體1和基於主機部分的撥號對等體2。但是,由於主機匹配是比使用者匹配更好的首選項,因此撥號對等體2用於呼叫中的入站撥號對等體。
! voice class uri URI1 sip user-id testuser ! voice class uri URI2 sip host ipv4:10.10.10.10 ! dial-peer voice 1 voip sess protocol sipv2 incoming uri FROM URI1 ! dial-peer voice 2 voip sess protocol sipv2 incoming uri FROM URI2 !
入站和出站撥號對等體的URI匹配使管理員能夠靈活地對支援URI的VoIP協定的多個電話號碼字串執行匹配。在IOS 15.4(1)T和IOS-XE 3.11S之前,請求URI必須包含字母數字user@host,否則Cisco網關將拒絕帶有4xx消息的呼叫。現在URI可以只包含主機部分,網關僅根據提供的主機路由呼叫。例如,sip:cisco.com。
此外,在IOS 15.4(1)T和IOS-XE 3.11S之前的版本中,語音類URI使用者ID只能是數字e.164值(sip:1234@host.com)。已更改此配置,以便管理員可以在CUBE (sip:user@host.com)上配置字母數字使用者ID。
語音類uri的主機或使用者部分可以包含正規表示式(regex)模式,這大大擴展了可匹配的可能值。
Gateway(config-voice-uri-class)# user-id .) % unmatched ()user-id pattern can be of format ^([][0-9A-Za-z\|\/()*+^$&?#--.])*$
Gateway(config-voice-uri-class)# host .)
% unmatched ()host pattern can be of format ^([][0-9A-Za-z\|@\/()*+^$&?#--.])*$
Gateway(config-voice-uri-class)# pattern .)
% unmatched ()pattern pattern can be of format ^([][0-9A-Za-z\|@;:=%!~\/()*+^$&?#--.])*$
示例:語音類URI
! voice class uri HOST sip host webex.com host dns:cisco.webex.com host ipv4:10.50.244.2 host ipv6:[2001:4860:4860::8888] ! voice class uri USER sip user-id username ! voice class uri PATTERN sip pattern 8675309 ! voice class uri HostRegex sip host (.*)cisco.com !
voice class uri ipRegex sip
host 172\.18\.110\.20[567]
! voice class uri PatternRegex sip pattern 555(.*) !
voice class uri ipRegex sip
pattern (172\.18\.110\.10[134]|10\.10\.10\.10)
! One Line that matches 172.18.110.101, 172.18.110.103, 172.18.110.104 OR 10.10.10.10
! voice class uri UserRegex sip user-id test(.*) !
每個語音類別uri只能配置10台主機、1個模式或1個使用者id,如以下示例所示。如果需要匹配更多專案,建議使用Regex。
Gateway(config)# voice class uri TEST sip Gateway(config-voice-uri-class)#host ipv4:10.1.1.1 Gateway(config-voice-uri-class)#host ipv4:10.2.2.2 Gateway(config-voice-uri-class)#host ipv4:10.3.3.3 Gateway(config-voice-uri-class)#host ipv4:10.4.4.4 Gateway(config-voice-uri-class)#host ipv4:10.5.5.5 Gateway(config-voice-uri-class)#host ipv4:10.6.6.6 Gateway(config-voice-uri-class)#host ipv4:10.7.7.7 Gateway(config-voice-uri-class)#host ipv4:10.8.8.8 Gateway(config-voice-uri-class)#host ipv4:10.9.9.9 Gateway(config-voice-uri-class)#host ipv4:10.10.10.10 Gateway(config-voice-uri-class)#host ipv4:10.11.11.11 Error:Maximum of 10 hosts can only be configured. Gateway(config)# voice class uri TEST2 sip Gateway(config-voice-uri-class)#host dns:1.com Gateway(config-voice-uri-class)#host dns:2.com Gateway(config-voice-uri-class)#host dns:3.com Gateway(config-voice-uri-class)#host dns:4.com Gateway(config-voice-uri-class)#host dns:5.com Gateway(config-voice-uri-class)#host dns:6.com Gateway(config-voice-uri-class)#host dns:7.com Gateway(config-voice-uri-class)#host dns:8.com Gateway(config-voice-uri-class)#host dns:9.com Gateway(config-voice-uri-class)#host dns:10.com Gateway(config-voice-uri-class)#host dns:11.com Error:Maximum of 10 hosts can only be configured. Gateway(config)# voice class uri TEST3 sip Gateway(config-voice-uri-class)#user-id 8675309 Gateway(config-voice-uri-class)#user-id 123456789 Gateway(config-voice-uri-class)#do sh run | s TEST3 voice class uri TEST3 sip user-id 123456789 Gateway(config)# voice class uri TEST4 sip Gateway(config-voice-uri-class)#pattern 8675309 Gateway(config-voice-uri-class)#pattern 123456789 Gateway(config-voice-uri-class)#do sh run | s TEST4 voice class uri TEST4 sip pattern 123456789
此功能已增加到IOS 15.1(2)T和IOS-XE 3.8S中,並使用已配置並應用於入站撥號對等體的語音類uri。許多人透過傳統的incoming called-number語句對SIP呼叫採用傳入URI,因為它是選擇入站撥號對等體時檢查的第一個匹配條件。該命令還使管理員能夠更好地匹配來自特定呼叫座席或使用者的呼叫。
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
常見使用案例
組態範例
此示例輸出匹配來自語音類URI中定義的兩個主機IP的任何SIP請求的撥號對等體777。標頭監視被定義為撥號對等體上的From標頭;但是,管理員可以定義許多其他標頭,包括VIA、TO和REQUEST(請求URI)。如果CUCM向CUBE傳送OPTIONS ping現在與撥號對等體777匹配,並且從指定介面發出my 200 OK reply to the OPTIONS。如果CUCM向CUBE傳送Invite,則將撥號對等體777作為入站撥號對等體。
! voice class uri CUCM sip
host ipv4:10.50.244.2
host ipv4:10.50.244.20 ! dial-peer voice 777 voip description INCOMING URI session protocol sipv2 incoming uri from CUCM voice-class sip bind control source-interface Loopback777 voice-class sip bind media source-interface Loopback777 !
Cisco IOS網關可以透過將voice class uri應用於出站撥號對等體並將呼叫路由url增加到全局配置,來匹配使用URI的出站撥號對等體。如果出現此情況,CUBE可以嘗試根據請求URI路由呼叫。此功能已新增至IOS 12.3(4)T,且存在於所有IOS XE版本中。可以注意到,預設情況下,傳出SIP請求URI和目標報頭URI的會話目標是出站撥號對等體。可以使用命令requri-passing 停用此功能,該命令允許網關將內建URI主機部分傳遞到外接URI,而不是使用session-target替換URI主機部分。15.4(1)T和IOS XE 3.11S中增加了requri-passing 命令。
組態範例
voice service voip
sip
call-route url
requri-passing
! voice class uri CUCM sip
host dns:.*.com ! dial-peer voice 777 voip description OUTGOING URI session protocol sipv2 destination uri CUCM
session target sip-uri !
來源:思科統一邊界要素配置指南- Cisco IOS XE 17.6及更高版本
除了語音類URI,管理員可以使用撥號對等體調配策略(DPP)為出站撥號對等體匹配匹配匹配腿內URI。此功能已增加到IOS 15.4(2)T和IOS XE 3.12S中。撥號對等體調配策略要求定義一個主要匹配屬性,並且可選用輔助匹配屬性。該調配策略應用於入站撥號對等體,並且當該撥號對等體被選擇用於入站呼叫段時,呼叫該策略。結果是根據來自撥號對等體調配策略的屬性選擇出站撥號對等體。
出站匹配可以是單個報頭或多個報頭,這些報頭都必須為true才能與撥號對等體匹配。
在本示例中,存在起始和終止報頭的語音類URI。對於OR匹配,配置包含兩個首選項的撥號對等體調配策略。「從」標題是第一個首選項,而「到」標題是備份首選項。撥號對等體1234旨在應用入站匹配的調配策略。然後,構建分別應用目標uri-from和目標uri-to命令的撥號對等體11111和22222。這些命令指向它們的語音類URI。對於呼叫,您可以接收邀請,匹配撥號對等體1234並檢查調配策略。然後,裝置可以首先嘗試在From報頭上進行路由,作為撥號對等體11111上的適用匹配。如果失敗,您也可以嘗試使用22222在to標頭上進行路由。
該示例還詳細說明了如何實現與撥號對等體調配策略的And匹配。假設收到相同的Invite,您可以在一個首選項下定義兩個報頭並將此資訊應用於入站撥號對等體。
現在,當收到invite時,它可以檢查符合條件的出站撥號對等體,它們同時滿足調配策略中定義的兩個匹配條件。因此,在本示例中,您的出站撥號對等體需要同時使用TO和FROM報頭進行定義才能匹配。如果兩者之一不是有效的匹配,則不使用此撥號對等體12345。
注意:雖然我們對From報頭上的呼叫進行路由,但離開網關的Invite消息仍然具有原始請求URI。 我們僅使用撥號對等體調配策略來匹配出站撥號對等體,而不更改請求URI。
組態範例:
### Received INVITE
Received:
INVITE sip:8675309@172.18.110.58:5060 SIP/2.0
From: sipp <sip:sipp@172.18.110.65>;tag=1
To: sut <sip:cube@172.18.110.58:5060>
### Common Configurations
!
voice class uri FROM sip
user-id sipp
!
voice class uri TO sip
user-id cube
!
### OR Match
!
voice class dial-peer provision-policy 1
description match from header. If false, try to header
preference 1 from
preference 2 to
!
dial-peer voice 1234 voip
session protocol sipv2
destination provision-policy 1
incoming called-number .
!
dial-peer voice 11111 voip
destination uri-from FROM
session protocol sipv2
session target ipv4:172.18.110.48
!
dial-peer voice 22222 voip
destination uri-to TO
session protocol sipv2
session target ipv4:172.18.110.48
!
### AND Match
!
voice class dial-peer provision-policy 2
description match from AND to headers
preference 1 from to
!
dial-peer voice 1234 voip
session protocol sipv2
destination provision-policy 2
incoming called-number .
!
dial-peer voice 12345 voip
destination uri-from FROM
destination uri-to TO
session protocol sipv2
session target ipv4:172.18.110.48
!
來源:思科統一邊界要素配置指南(透過Cisco IOS XE 17.5)
會話目標sip-uri
在IOS 15.4(1)T和IOS XE 3.11S之前,如果URI的主機部分不同,但使用者相同,則需要兩個單獨的出站撥號對等體。
在此版本之後,管理員可以配置一個撥號對等體為同一使用者服務多台主機。例如,testuser@cisco.com和testuser@webex.com位於同一撥號對等體下。使用會話目標sip-uri會觸發傳入邀請請求URI域的DNS解析,並動態確定會話目標IP。
配置示例:
網關接收帶有這些報頭的兩個SIP邀請Invite sip:testuser@cisco.com:5060 SIP/2.0 Invite sip:testuser@webex.com:5060 SIP/2.0由於傳入URI命令和使用者ID定義都匹配testuser,因此網關匹配撥號對等體1上testuser@cisco.com和testuser@webex.com的傳入SIP請求。存在命令voice-class sip call-route url意味著您根據此入站Invite的請求URI評估出站撥號對等體。由於與匹配撥號對等體1(testuser的使用者ID)的原因相同,因此您匹配撥號對等體2。此撥號對等體的會話目標是會話目標sip-uri」定義的原始sip-uri,即FQDN。進行DNS解析後,將cisco.com和webex.com更改為用於第3層路由的IP,即可從網關傳送消息。
!
ip host cisco.com 10.10.10.10
ip host webex.com 10.10.10.10
!
voice class uri TEST-IN sip
user-id testuser
!
dial-peer voice 1 voip
description INCOMING dial-peer
incoming uri request TEST
session protocol sipv2
voice-class sip call-route url
!
dial-peer voice 2 voip
description OUTBOUND dial-peer
destination uri TEST
session protocol sipv2
session target sip-uri
!
驗證:
show voice class uri <uri-name> show voice class dial-peer provision-policy <number> debug voip uri
管理員可在定義涉及數字字串的入站和出站匹配機制時使用撥號對等體萬用字元。其中包括destination-pattern、incoming called-number、e164-pattern-maps和answer-address以及prefix命令。撥號對等體萬用字元是用於配置的正規表示式(regex),它允許比撥號對等體更靈活。
萬用字元表
字元 |
定義 |
範例 |
* |
在撥號對等體上,這是鍵盤上的文字值* (星號)。 |
12345* |
# |
在撥號對等體上,這是鍵盤上# (磅)的文字值。 |
8675309# |
, |
在數字之間插入1秒的暫停。在方括弧[ ]中也可以使用逗號來分隔連續範圍。 |
9,,,,55591[1-3,5-9]8675309 |
. | 用於匹配任意值0-9、A-F和*、#、+的Regex字元 每個撥號對等體最多可以定義15個點字元,但CLI允許管理員根據需要配置任意數量的點字元。 如果需要超過15個點,請使用T。 |
2.... 91[2-9]..[2-9]...... |
% |
前一位出現零次或更多次的Regex。 |
|
+ |
當在字串的開頭使用時,它表示在E164數字中使用的常值+。 當在字串的其他地方使用時,它是發生一或多次的前一個數字的正規表示式值。 |
+19191112222 |
? |
前一個數字出現零次或一次的Regex。 |
(206)?5015111 (0)?(1)?(1)?21933... |
^ |
在括弧外使用時,用來表示字串開頭的Regex字元 在括弧內使用時,它會被視為排除或DO NO MATCH語句 在更高的版本中不再需要此功能,因為網關在處理沒有^的regex字串時會自動假定為^。 |
^8675309 91[^135]555 |
$ |
Regex字元,表示字串的結尾。 |
8675309$ |
\ | 轉義字元表示文字值 |
|
[ ] | 方括弧定義單一位置的字元範圍。 必須用逗號來分解連續字串。 |
[1-5]0000 [2,5-8]0000 |
( ) | 括弧定義一組字元中的字元組。 |
9(258) 7777 |
T | 最多可有32位數的變長匹配項。 路由器在路由呼叫之前等待數字間超時發生。 數字間超時的預設值為10秒,可透過語音埠上的數字間超時進行修改。 T也參照T302計時器。 |
9011T |
- | 在方括弧中用來定義範圍。 |
[5-9]1234 |
來自網關的輸出,顯示可能的正規表示式輸入。
Gateway(config-dial-peer)# destination-pattern asdfqw4r3~2 Incorrect format for E.164 Number regular expression must be of the form ^[][^0-9,A-F#*.?+%()-]*T?(\$)?$
撥號對等體可以處於兩種運行狀態之一。
要使撥號對等體處於有效的運行狀態,並且符合與呼叫路由配合使用的條件,它必須處於UP狀態。對於出站VOIP撥號對等體,這意味著可以存在有效的出站匹配機制以及有效的會話目標來路由呼叫。對於出站POTS撥號對等體,可配置有效的出站匹配機制以及有效的語音埠。如果僅使用入站撥號對等體,則必須配置有效的入站匹配機制。
當撥號對等體配置了keepalive機制且遠端目標未通過該keepalive機制的引數時,將看到忙出狀態。然後,網關將撥號對等體轉入忙出狀態,以便不再用於呼叫路由決策,並且當再次執行keepalive機制時,網關將撥號對等體重新置於up狀態。如果選擇了撥號對等體作為出站撥號對等體,並且此撥號對等體處於忙出狀態,網關將用原因代碼188使呼叫失敗。
除了作業狀態之外,還有管理狀態。
管理員可以透過在撥號對等體上輸入shutdown命令來停用撥號對等體,而無需將其從配置中刪除。要重新啟用撥號程式,請輸入no shutdown。
註:語音埠處於關閉、關閉或不運行的撥號對等體保持運行狀態為「Up」,但「Out」狀態顯示為「Down」。
驗證
Gateway# show dial-peer voice summary dial-peer hunt 0 AD PRE PASS OUT TAG TYPE MIN OPER PREFIX DEST-PATTERN FER THRU SESS-TARGET STAT PORT KEEPALIVE 1 voip up up 0 syst 777 voip up up 9... 0 syst ipv4:10.50.244.2 555 voip up down 555 0 syst 888 pots up up 888 0 up 0/2/0
999 pots up up 999 0 down 0/2/0
123 voip up up 123 0 syst ipv4:10.10.10.10 busyout
從IOS 15.6(3)M和IOS-XE 16.3.1開始,Cisco網關可以使用VRF ID匹配入站撥號對等體。要利用此優勢,管理員必須將入站撥號對等體繫結到介面,該介面又將撥號對等體繫結到指定介面上的VRF ID。繫結完成後,思科網關將過濾入站呼叫,以便只包括符合接收資料包的介面VRF ID的合格入站撥號對等體。從此處,入站撥號對等體根據常規撥號對等體匹配操作順序進行匹配。
在發佈這些IOS/IOS-XE版本之前,Cisco網關會根據常規入站撥號對等體匹配進行入站選擇,而無需進行任何過濾。這意味著VRF1呼叫可以與VRF2撥號對等體匹配。此外,由於在這些版本之前H323和SIP僅支援一個VRF,因此嘗試使用多VRF功能時會出現其他問題。將單個VRF用於語音應用稱為VRF感知配置。
完整的VRF感知文檔:適用於語音網關的VRF感知H.323和SIP
多重VRF完整文檔:思科統一邊界元素配置指南- Cisco IOS XE 17.6及更高版本
Cisco網關能夠跨VRF橋接呼叫,無需配置路由洩漏。這意味著,如果滿足正常的出站撥號對等體匹配選擇,則可以在VRF2的撥號對等體上將VRF1上的入站呼叫路由出站。可以採用撥號對等體組來強制Cisco網關將呼叫保留在相同的VRF中。
VRF和撥號對等體組配置示例
此配置示例的VRF1和VRF2具有兩個重疊的IP範圍和兩個重疊的電話號碼範圍。
利用VRF繫結確保匹配的入站撥號對等體,利用「撥號對等體組」確保匹配正確的VRF繫結出站撥號對等體。如果8675309呼叫的SIP資料包到達gig0/0/1.2,則網關將根據VRF2 ID過濾掉所有可用的入站撥號對等體。這意味著您不能匹配撥號對等體10。現在,當您檢查數字字串時,您可以匹配撥號對等體20。撥號對等體20有一個撥號對等體組,它告訴網關唯一可以匹配的出站撥號對等體也是撥號對等體20。透過此撥號對等體組,您可以避免匹配撥號對等體10並將來自VRF1的呼叫交叉到VRF2。從那裡,呼叫可以正常進行。
! interface GigabitEthernet0/0/1.1 description VRF1 encapsulation dot1Q 10 ip vrf forwarding VRF1 ip address 10.10.10.10 255.255.255.0 ! interface GigabitEthernet0/0/1.2 description VRF2 encapsulation dot1Q 20 ip vrf forwarding VRF2 ip address 10.10.10.10 255.255.255.0 ! voice service voip no ip address trusted authenticate media-address voice-vrf VRF1 media-address voice-vrf VRF2 allow-connections sip to sip sip ! voice class dpg 10 description INBOUND VRF1 to OUTBOUND VRF1 dial-peer 10 preference 1 ! voice class dpg 20 description INBOUND VRF2 to OUTBOUND VRF2 dial-peer 20 preference 1 ! dial-peer voice 10 voip description VRF1 destination-pattern 8675309 session protocol sipv2 session target ipv4:10.10.10.20 destination dpg 10 incoming called-number 8675309 voice-class sip bind control source-interface GigabitEthernet0/0/1.1 voice-class sip bind media source-interface GigabitEthernet0/0/1.1 ! dial-peer voice 20 voip description VRF2 destination-pattern 8675309 session protocol sipv2 session target ipv4:10.10.10.20 destination dpg 20 incoming called-number 8675309 voice-class sip bind control source-interface GigabitEthernet0/0/1.2 voice-class sip bind media source-interface GigabitEthernet0/0/1.2 !
驗證
Gateway# show vrf brief | i VRF VRF1 1:1 ipv4 Gi0/0/1.1 VRF2 2:2 ipv4 Gi0/0/1.2
Gateway# show dial-peer voice summary TAG TYPE MIN OPER PREFIX DEST-PATTERN FER THRU SESS-TARGET STAT PORT KEEPALIVE VRF 10 voip up up 8675309 0 syst ipv4:10.10.10.20 VRF1 20 voip up up 8675309 0 syst ipv4:10.10.10.20 VRF2
Gateway# show voice class dpg 10 Voice class dpg: 10 AdminStatus: Up Description: INBOUND to OUTBOUND VRF1 Total dial-peer entries: 1 Peer Tag Pref -------- ---- 10 1 -------------------------------------
Gateway# show voice class dpg 20 Voice class dpg: 20 AdminStatus: Up Description: INBOUND to OUTBOUND VRF2 Total dial-peer entries: 1 Peer Tag Pref -------- ---- 20 1 -------------------------------------
隨著業務需求的成長,公司不斷擴展,需要更多的DID,企業管理員會發現基本撥號對等體無法很好地滿足擴展需求。可能存在需要解決的on-off情況,或者通常存在太多撥號對等體。擁有數千個撥號對等體不會使管理和故障排除變得輕鬆。每個特定CUCM伺服器或呼叫代理都有一個撥號對等體,這會使撥號對等體過多的問題變得更為複雜,因為現在管理員需要為每個數字字串配置一個撥號對等體。如果有多個SIP提供商連線到網關,或者有少數人使用同一個CUBE,這就使得隔離特定租戶變得非常困難。
思科已採納此反饋意見,建立了一系列可解決這些問題及其他問題的專案。撥號對等體組、語音類租戶、目標伺服器組、e164模式對映和POTS中繼組使管理員能夠解決列出的所有問題以及許多其他未列出的問題。
在IOS 15.4(1)T和IOS-XE 3.11S中增加了撥號對等體組,在IOS 15.5(1)T和IOS-XE 3.14S中增加了POTS撥號對等體作為選項。撥號對等體組允許管理員根據匹配的入站撥號對等體為出站路由指定準確的撥號對等體。一旦配置了撥號對等體組的入站撥號對等體匹配,即使目標模式不匹配,呼叫也會使用撥號對等體組中定義的撥號對等體。唯一的先決條件是,出站撥號對等體必須是Up,因此必須配置出站匹配方法,但是,這實際上並不用於路由呼叫。
描述撥號對等體組的最佳方式是將它們與路由表中的靜態路由概念相提並論。這些是靜態的入站到出站路由決策,它們消除了網關的一些猜測,因為它們告訴網關具體如何路由呼叫。
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
組態範例
在本例中,被叫號碼是8675309。這會基於傳入的called-number語句匹配撥號對等體1234。此撥號對等體配置了一個撥號對等體組,該組表明如果撥號對等體2失敗,呼叫現在可以路由出撥號對等體2、3,最後是1。這是網關,所以現在嘗試路由呼叫out dial-peer 2,就像透過撥號對等體組明確告知它所能做的那樣。
注意:撥號對等體1、2和3上的目標模式不是被叫的8675309號碼。這沒問題,呼叫仍然路由沒有問題。
請記住,如「撥號對等體狀態」部分所述,您需要將某物/任何物件配置為出站匹配語句。在這種情況下,目標模式僅用於將撥號對等體置於「啟動」操作狀態,並且永遠不會評估該命令的數字字串。建議配置類似destination-pattern AAAA的模式,因為這是有效的目標模式。由於這在技術上是一個有效的撥號對等體,因此其他呼叫可能會與之匹配。因此,AAAA數字字串意味著,除了涉及撥號對等體組的特定場景之外,您永遠不能將其用於任何其他場合,因為AAAA的呼叫進入可能性非常非常低。
!
dial-peer voice 1 voip
description Server 1
destination-pattern ^1234$
session target ipv4:1.1.1.1
!
dial-peer voice 2 voip
description Server 2
destination-pattern ^5678$
session target ipv4:2.2.2.2
!
dial-peer voice 3 voip
description Server 3
destination-pattern AAAA
session target ipv4:3.3.3.3
!
voice class dpg 1
description Dial-peer Group for specific called number 8675309
dial-peer 2 preference 1
dial-peer 3 preference 2
dial-peer 1 preference 3
!
dial-peer voice 1234 voip
description INCOMING dial-peer with DPG
incoming called-number ^8675309$
destination dpg 1
!
驗證
Gateway# show voice class dpg 1 Voice class dpg: 1 AdminStatus: Up Description: Dial-peer Group for specific called number 1234 Total dial-peer entries: 3 Peer Tag Pref -------- ---- 2 1 3 2 1 3 -------------------------------------
此功能使管理員能夠將許多可能的號碼匹配(目標模式、呼入被叫號碼等)合併到單個模式對映中,從而減少總撥號對端的數量。在IOS 15.2(4)M和IOS-XE 3.7S中增加了出站撥號對等體e164模式對映支援,而在IOS 15.4(1)T和IOS-XE 3.11S中增加了入站撥號對等體e164模式對映支援。
e164-pattern-map可以透過CLI配置或預配置並另存為.cfg檔案。然後將.cfg檔案增加到網關的快閃記憶體中,然後在配置其餘命令時引用。.cfg檔案可以使用5000個條目。
兩種配置方法中的條目都可以使用所有普通撥號對等體萬用字元進行進一步聚合!
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
CLI配置示例-呼叫號碼
! voice class e164-pattern-map 1 description E164 Pattern Map for calling numbers e164 919574100. e164 919574300. e164 8675309 ! dial-peer voice 1 voip description INBOUND Dial-peer based on CALLING # incoming calling e164-pattern-map 1 !
dial-peer voice 11 voip
description OUTBOUND Dial-peer based on CALLING #
destination calling e164-pattern-map 1
!
CLI配置示例-被叫號碼
! voice class e164-pattern-map 2 description E164 Pattern Map for called 800 numbers e164 91800T e164 91855T e164 91888T ! dial-peer voice 2 voip description INBOUND Dial-peer based on CALLED # incoming called e164-pattern-map 2 ! dial-peer voice 22 voip description OUTBOUND Dial-peer based on CALLED # destination e164-pattern-map 2 !
快閃記憶體配置示例
! voice class e164-pattern-map <tag> description FILEPATH for E164 Pattern Map url flash:<filepath>/e164-pattern-list.cfg ! dial-peer voice ### voip description E164 Pattern Map Dial-peer incoming calling e164-pattern-map <tag> !
voice class e164-pattern-map load <tag>
驗證
Gateway# show voice class e164-pattern-map 1 e164-pattern-map 1 ----------------------------------------- Description: CUCM phones It has 3 entries It is not populated from a file. Map is valid. E164 pattern ------------------- 8675309 1... [2-5]...$
明顯缺陷
思科漏洞ID CSCva64393 e164-pattern-map無法剖析組態檔的最後一行。
伺服器組使管理員能夠在同一VOIP撥號對等體上配置多個目標(會話目標)。依預設,排序順序是伺服器群組專案中所定義的偏好設定。使用命令hunt-scheme round-robin可以採用輪詢。Server-Groups已增加到Cisco IOS 15.4(1)T和Cisco IOS XE 3.11S。在Cisco IOS XE 17.4.1中,可配置的huntstop錯誤代碼已增加到語音類伺服器組配置中。也就是說,您可以配置單個錯誤代碼,例如404 Not Found,並且SIP錯誤通常會觸發裝置嘗試伺服器組中的下一個選項。在伺服器組內的配置huntstop 1 resp-code 404就位,搜尋可以停止。這些值也可針對如下範圍進行配置:huntstop 1 resp-code 401到599。
注意:每個伺服器組的最大條目數為5。
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
組態範例-一般
! voice class server-group 1 hunt-scheme round-robin ipv4 10.50.244.2 port 5060 preference 1 ipv4 10.50.244.62
ipv6 2010:AB8:0:2::1 port 2323 preference 3
ipv6 2010:AB8:0:2::2 port 2222 ! dial-peer voice 1 voip session protocol sipv2
destination-pattern 8675309 session server-group 1 !
驗證
Gateway# show voice class server-group 1 Voice class server-group: 1 AdminStatus: Up OperStatus: Up
Hunt-Scheme: round-robin Last returned server:
Description:
Total server entries: 4
Pref Type IP Address IP Port
---- ---- ---------- -------
1 ipv4 10.50.244.2 5060
0 ipv4 10.50.244.62
3 ipv6 2010:AB8:0:2::1 2323
0 ipv6 2010:AB8:0:2::2 2222
[..truncated..]
請注意,「伺服器群組」並不遵循正常的通話方塊外選項Keepalive機制。它們使用一個稱為option-keepalive配置檔案的功能。這允許網關監控在特定server-group中定義的每個呼叫代理。
伺服器群組的Option-keepalive範例
! voice class server-group 1 hunt-scheme round-robin ipv4 10.50.244.2 ipv4 10.50.244.62 ! dial-peer voice 1 voip session protocol sipv2 session server-group 1 voice-class sip options-keepalive profile 1 !
驗證
Gateway# show voice class sip-options-keepalive 1 Voice class sip-options-keepalive: 1 AdminStat: Up Description: Transport: system Sip Profiles: 0 Interval(seconds) Up: 5 Down: 5 Retry: 5 Peer Tag Server Group OOD SessID OOD Stat IfIndex -------- ------------ ---------- -------- ------- 1 1 Active 87 Server Group: 1 OOD Stat: Active OOD SessID OOD Stat ---------- -------- 1 Active 2 Active OOD SessID: 1 OOD Stat: Active Target: ipv4:10.50.244.2 Transport: system Sip Profiles: 0 OOD SessID: 2 OOD Stat: Active Target: ipv4:10.50.244.62 Transport: system Sip Profiles: 0
SIP出站代理配置可以增加到語音服務voip、語音類租戶或撥號對等體配置中,以指定第3層SIP資料包的目標。
也就是說,撥號對等體上的會話目標可用於建立SIP資料包,但出站代理可以是資料包在第3層傳送的位置。
!
voice service voip
sip
outbound-proxy dns:la01.sipconnect-us10.cisco-bcld.com
!
voice class tenant 100
outbound-proxy dns:la01.sipconnect-us10.cisco-bcld.com
!
dial-peer voice 100 voip
session target ipv4:192.168.1.1
voice-class sip outbound-proxy dns:la01.sipconnect-us10.cisco-bcld.com
!
請注意,撥號對等體的預設配置是語音類sip出站代理系統,它會導致撥號對等體使用全局語音服務voip > sip配置。
可以停用此行為,並強制撥號對等體回退並使用會話目標作為每個撥號對等體的第3層目標,配置如下:
dial-peer voice 777 voip
no voice-class sip outbound-proxy
中繼組是具有相似信令功能的物理語音埠的集合。此功能可用於減少需要配置的POTS撥號對等體的總數。中繼組是在12.1(3)T中引入IOS的,並且存在於所有Cisco IOS XE版本中。
完整文檔:網關中繼和基於業者的路由增強功能
組態範例
! trunk group PSTN description PSTN voice-ports !
trunk group FXO
description FXO voice-ports
! voice-port 0/2/0 trunk-group PSTN 1 ! voice-port 0/2/1 trunk-group PSTN 2 !
voice-port 0/2/2
trunk-group FXO 1
!
voice-port 0/2/3
trunk-group FXO 2
! dial-peer voice 1234 pots trunkgroup PSTN 1 trunkgroup FXO 2 !
Cisco IOS 15.6(2)T和Cisco IOS XE 16.3.1引入了語音類租戶,允許每個租戶擁有自己的獨立配置。租戶可以是電話提供商、思科統一通訊管理器(CUCM)或管理員希望擁有特定全局設定的任何其他第三方呼叫代理。首先,管理員建立語音類租戶並定義引數。然後,語音類租戶將應用到特定撥號對等體或選擇。這一新配置使管理員能夠進一步控制撥號對等體和全局配置之外的呼叫。
對於17.8.1a,可以使用sip-listen命令(與相應的SIP控制繫結命令結合)配置語音類租戶配置,以定義該租戶的非安全或安全埠。這意味著租戶1可以在UDP 5060 + VRF Red上偵聽不安全的SIP,而租戶2可以在TCP TLS 5070 + VRF Blue上偵聽SIP。基於listen-port + bind +可選vrf入站撥號對等體匹配租戶後,將過濾為應用了租戶的入站撥號對等體。
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
無租戶的正常命令順序首選項
有租戶的命令優先順序
多租戶配置示例
你有兩個租戶777和999。您已經使用略有不同的配置配置對它們進行了配置並將其應用於撥號對等體。這意味著使用不同撥號對等體的呼叫具有基於撥號對等體的配置以及租戶特定配置。列出的選項只是語音類租戶的強大功能的一個片段。請參閱文檔以瞭解可以在租戶上配置哪些內容。建議採用嚴格的匹配機制,如語音類uri或帶有特定號碼字串的標籤號碼,以分隔租戶撥號對等體匹配,甚至配置VRF,使租戶A不與租戶B重疊,意外匹配他們無法匹配的撥號對等體。
!
voice class tenant 999 asymmetric payload full bind control source-interface GigabitEthernet0/0/0.228 bind media source-interface GigabitEthernet0/0/0.228 g729 annexb-all ! voice class tenant 777 sip-server ipv4:192.168.1.2 bind control source-interface Loopback0 bind media source-interface Loopback0 pass-thru content sdp ! dial-peer voice 999 voip destination-pattern 8675309 session protocol sipv2 incoming called-number 8675309 voice-class sip tenant 999 ! dial-peer voice 777 voip destination-pattern 8675309 session protocol sipv2 session target sip-server voice-class sip tenant 777 !
驗證
目前,沒有單獨的命令可用於檢視語音類租戶配置。此命令足以將運行配置過濾為僅包含租戶資訊。
show run | sec tenant
注意:思科漏洞ID CSCvf28730中的顯示sip-ua register狀態不反映語音類租戶上SIP中繼註冊的狀態。
路由字串與CUCM集群間查詢服務(ILS)配合使用,並且可以配置為允許思科網關透過從運行ILS服務的CUCM 9.5+接收的SIP Invite中包含的路由字串來路由VoIP呼叫。此功能已增加到Cisco IOS 15.3(3)M和Cisco IOS XE 3.10S。大多數ILS連線是CUCM到CUCM的連線,管理員無需費心使用CUBE進行集群間中繼。但是,如果您需要執行中間有CUBE的函式,則選項會出現。CUCM需要在應用於SIP中繼的SIP配置檔案上啟用Send ILS Learned Destination Route String 設定,以便將x-cisco-dest-route-string報頭傳送到CUBE
完整文檔:Cisco IOS版本15M&T的H.323-to-SIP和SIP-to-SIP企業應用程式互操作性配置指南
配置示例CUCM - SIP - CUBE - SIP - CUCM
!
voice service voip sip call-route dest-route-string ! voice class route-string rt1 pattern london.uk.eu ! voice class sip route-string rt2 pattern *.eu ! voice class sip-hdr-passthrulist hdr1 passthru-hdr x-cisco-dest-route-string ! dial-peer voice 1 voip description INBOUND dial-peer session protocol sipv2 voice-class sip pass-thru headers hdr1
incoming called-number .
! dial-peer voice 2 voip description OUTBOUND dial-peer destination route-string rt2 session protocol sipv2 session target ipv4:172.16.104.178 !
驗證
show voice class route-string
本節涵蓋的專案被視為傳統技術。雖然Cisco網關中仍具備配置這些命令的功能,但建議不要在現代配置中使用這些命令。本文檔僅介紹這些配置,因為在使用傳統配置或執行升級時可能會遇到這些配置。
DNIS對映可以視為現在的E164模式對映的前身。DNIS對映是在12.2(2)XB中增加到Cisco IOS的,並且一直存在於Cisco IOS XE中。
如果配置了DNIS對映,則值得將其轉換為更強大的e164模式對映功能。
命令語法: Cisco IOS語音命令參考- D到I
組態範例
! voice dnis-map 34 dnis 8675309 ! dial-peer voice 88 voip dnis-map 34 !
中繼組標籤是在Cisco IOS 12.2(11)T中增加,並且存在於所有Cisco IOS XE版本中。中繼組標籤的用途與載波ID類似,因為它可用於加強撥號對等體的匹配。 這可用於POTS中繼組、VOIP和POTS撥號對等體以及語音源組中的配置。在現代Cisco網關配置中,很少出現中繼組標籤的使用。
命令語法: Cisco IOS語音命令參考- T至Z
組態範例
! dial-peer voice 112 pots trunk-group-label source north3 trunk-group-label target east17 !
透過ISDN Q.931整合,可以根據主叫或被叫號碼以及Q.931 SETUP消息傳送中的特定ITU號碼型別來匹配撥號對等體。這可以透過VOIP或POTS撥號對等體上的numbering-type命令進行配置。Numbering-type不能單獨使用,必須與destination-pattern、answer-address或incoming called-number一起使用。 這意味著入站/出站匹配語句的條件和號碼型別必須匹配,才能使入站和出站呼叫路由要考慮的撥號對等體成功。
Numbering-match可視為撥號對等體過濾機制,而不是匹配機制。這是因為如果沒有應用管理員首選項,則已應用和不應用編號型別命令的撥號對等體將被視為相同的預設首選項權重。這與載波ID不同,當載波ID沿著其他匹配機制應用到撥號對等體時,如果兩個條件都成立,則它會將該撥號對等體的首選項增加到其他撥號對等體中。
編號型別匹配已增加到Cisco IOS 12.0(7)XR1中,並且存在於所有Cisco IOS XE版本中。隨著傳統POTS ISDN線路在合作網路中部署的減少,編號型別的使用在現代部署中很少見。
命令語法: Cisco IOS Voice Command Reference - K到R
組態範例
只有在ISDN號碼型別為National時,此撥號對等體才能通過4085159999匹配4085150000。
! dial-peer voice 408 voip numbering-type national destination-pattern 408515.... session target ipv4:10.1.1.2 !
可能的號碼型別:
縮寫 |
此網路支援的完整號碼的縮寫形式 |
國際 |
呼叫到其他國家/地區使用者的號碼 |
國內 |
撥打到同一國家/地區但不在本地網路內的使用者的被叫號碼 |
網路 |
服務網路特定的管理或服務號碼 |
保留 |
保留為分機 |
訂閱者 |
到達同一本地網路中使用者的被叫號碼 |
未知 |
網路未知號碼型別 |
資料撥號對等體是在Cisco IOS 12.2(13)T中導入,而且這種撥號對等體的使用用於Cisco閘道上的傳入資料資料機呼叫。此撥號對等體僅用於入站方向,在現代部署中很少見。
命令語法: Cisco IOS語音命令參考- D到I
組態範例
! dial-peer data 100 pots incoming called-number 100 !
15.1(2)T中增加了此功能,但許多現代部署中未實作。通常部署IOS/CUBE的其他安全方法。
從第4.2節開始,可以在本白皮書中看到CUBE應用安全概述。
Cisco Unified Border Element (CUBE)管理和管理規格
命令語法: Voice Source-Group Feature
此配置允許管理員將撥號對等體限制為僅允許入站連線(術語/終止)或出口連線(源/發起)。這就好比將入站撥號對等體明確配置為僅用於入站呼叫,將出站撥號對等體明確配置為用於出站呼叫。任何撥號對等體的預設設定是允許入站和出站連線。此CLI在現代部署中不常部署。
Router(config)# dial-peer voice 1 voip
Router(config-dial-peer)# permission ?
both allow both orig/term on this dialpeer
none no orig/term allowed on this dialpeer
orig allow only orig on this dialpeer
term allow only term on this dialpeer
在合作部署的某個時刻,管理員可能需要處理數字或URI/SIP報頭。Cisco網關擁有多種數字操作方法,管理員可以完全控制數字操作的方式和時間。然而,這並不總是容易做到的,一些人會被不同的選項淹沒,或者管理員不知道選項存在。
POTS撥號對等體具有一些獨特的數字操作技術,這是VOIP撥號對等體所沒有的。
第一個是刪除目標模式中明確定義的左對齊數字。在POTS撥號對等體上使用命令no digit-strip可停用此功能。
範例:
在本示例中,9011T被定義為目標模式的字串。
有了這個裝置,您就可以接到90113227045555的電話。這與出站呼叫路由的撥號對等體匹配,並且在從語音埠路由出呼叫之前刪除明確定義的9011位數字。
! dial-peer voice 1 pots destination-pattern 9011T port 0/0/0:23 !
此範例顯示沒有位元資料條的組態。
如果呼叫相同的號碼,則傳送9011。
! dial-peer voice 1 pots destination-pattern 9011T port 0/0/0:23
no digit-strip !
第二個功能是指定您要在POTS撥號對等體上轉發多少位數。
在以下示例中,您收到來自CUCM的918005532447呼叫。在這種情況下,您要移除9,但會傳送以1開頭的剩餘數字。
如果在POTS撥號對等體上配置forward-digits命令,則可以指定精確傳送的數字數。
! dial-peer voice 1 pots destination-pattern 918005532447 forward-digits 11 port 0/2/0 !
最後,POTS撥號對等體可以使用prefix命令在語音埠路由輸出之前向呼叫增加數字。此示例將明確定義的91和字首007去除,然後再將呼叫傳送到語音埠。
! dial-peer voice 1 pots destination-pattern 91T prefix 007 port 0/1/0:15 !
語音轉換規則是用於轉換數字的正規表示式(regex)。在12.0(7)XR1中,Translation-rules和Profiles被增加到Cisco IOS。轉換規則應用於語音轉換配置檔案,然後應用於撥號對等體或語音埠。轉換規則包含匹配輸入和修改輸出。除了數字上的匹配輸入外,還有對ISDN計畫和型別的匹配和修改輸入。匹配數字字串、計畫和型別的組合被視為匹配。這意味著定義的所有匹配輸入都必須為true,才能進行轉換。
轉換規則能夠在ISDN、SIP和H323信令協定中更改被叫、呼叫、重定向被叫、重定向目標和回撥號碼。轉換規則會根據由上而下的搜尋進行比對,因此規則的順序非常重要。如果在較高規則中發現匹配項,網關將立即停止搜尋並處理轉換。轉換規則無法更改非數字sip報頭,例如testuser@10.10.10.10。為此,請使用SIP配置檔案。
轉移規則可用於阻止思科網關上的呼叫。
轉換設定檔選取偏好設定
除撥號對等體regex和wilcards轉換規則外,它們還擁有自己的regex字元。
字元 |
定義 |
* | 在轉換規則中使用時,這是先前字元0個或更多字元的regex。 要匹配文本*,請使用跳脫字元: \* |
\ |
常用於翻譯規則中的逸出集\(\) |
& |
&符號用於為修改集帶來初始匹配集中所有匹配項 |
( ) |
以括弧括住的專案會視為集合。 |
^ | 定義字串的明確開頭。 與撥號對等體不同,轉換規則不定義字串的開頭。 這意味著定義沒有^的字串可能會與輸入字串中的任何位置匹配,從而導致數字中間出現不需要的轉換。 |
修改集
具有兩個集合的轉換規則範例
在本例中,您可以檢查數字000111000222。
您想要從數字中移除0並得出最後的111222數。
為此,可以配置set 1和2,使其在刪除0的同時分別抓取111和222。
! voice translation-rule 333 rule 1 /000\(111\)000\(222\)/ /\1\2/ ! voice translation-profile SET-EXAMPLE translate called 333 ! Gateway# test voice translation-rule 333 000111000222 Matched with rule 1 Original number: 000111000222 Translated number: 111222 Original number type: none Translated number type: none Original number plan: none Translated number plan: none
從被叫號碼去除9外撥模式的示例
! voice translation-rule 9 rule 1 /^9\(.*\)/ /\1/ ! voice translation-profile STRIP-9 translate called 9 ! dial-peer voice 9 voip translation-profile outgoing STRIP-9 ! voice-port 0/0/0 translation-profile outgoing STRIP-9 ! Gateway# test voice translation-rule 9 918675309 Matched with rule 1 Original number: 918675309 Translated number: 18675309 Original number type: none Translated number type: none Original number plan: none Translated number plan: none
將被叫號碼截斷為4位數
! voice translation-rule 4 rule 1 /.*\(....\)/ /\1/ ! voice translation-profile STRIP-TO-4 translate called 4 ! Gateway# test voice translation-rule 4 8675309 Matched with rule 1 Original number: 8675309 Translated number: 5309 Original number type: none Translated number type: none Original number plan: none Translated number plan: none
從被叫號碼中刪除加號+
! voice translation-rule 999 rule 1 /\+\(.*\)/ /\1/ ! voice translation-profile STRIP-PLUS translate called 999 ! Gateway# test voice translation-rule 999 +8675309 Matched with rule 1 Original number: +8675309 Translated number: 8675309 Original number type: none Translated number type: none Original number plan: none Translated number plan: none
轉換規則也可以直接應用到撥號對等體,而無需首先應用到轉換配置檔案。
! voice translation-rule 1 rule 1 /1234/ /8678309/ ! voice translation-rule 2 rule 2 /^4...$/ /1408515\0/ ! dial-peer voice 1 voip translate-outgoing called 1 ! dial-peer voice 2 voip translate-outgoing calling 2 !
中繼組上的轉換配置檔案
! trunk group <name> translation-profile incoming <profile-name> translation-profile outgoing <profile-name> !
調試語音轉換規則和配置檔案
debug voip ccapi inout debug voice translation debug dialpeer test voice translation-rule <number> <string> type <type> plan <plan>
語音類e164轉換功能是較新的Cisco IOS XE功能,允許管理員建立匹配語句清單並修改要透過配置檔案從快閃記憶體或網路目錄載入的語句。這與本文檔中討論的e164-pattern-map功能的概念相似。這允許管理員在配置檔案中配置多達100個轉換,並在單個轉換配置檔案中應用這些轉換。有關詳細資訊,請參閱Cisco IOS語音命令參考
請遵循.cfg檔案的以下語法:
pattern1_to_be_matched<tab>replaced_pattern<space><enter> pattern1_to_be_matched<tab>replaced_pattern<space><enter>
注意:尾隨空格非常重要,如果沒有額外的格式化步驟,匯入可能會失敗。
Sample.cfg
+111111 8897 +222222 8312 928747 +123456789 737362 +987654321
然後此檔案會以下列方式參照:
voice class e164-translation 164 url ftp://username:password@10.10.10.10/sample.cfg
現在,您可以正常應用轉換配置檔案,然後從那裡使用正常轉換配置檔案語法應用於撥號對等體。
voice translation-profile e164 translate calling voice-class e164-translation 164 translate called voice-class e164-translation 164
命令show voice class e164-translation e164-translation-number可用於檢視轉換配置檔案的內容。
ISDN MAPS是修改數字的較舊技術。這已增加到Cisco IOS 12.0(6)T中,並且大多數新配置未使用此功能,因為它們不如語音轉換規則和配置檔案功能強大。ISDN對映在串列介面下定義。
組態範例
Serial0/0/0:23 isdn map address ^911 plan isdn type unknown isdn map address ^1.......... plan isdn type national isdn map address ^2......... plan isdn type national isdn map address ^3......... plan isdn type national isdn map address ^4......... plan isdn type national isdn map address ^5......... plan isdn type national isdn map address ^6......... plan isdn type national isdn map address ^7......... plan isdn type national isdn map address ^8......... plan isdn type national isdn map address ^9......... plan isdn type national
與ISDN對映一樣,號碼擴展是Cisco IOS 11.3(1)T中增加的一種較舊技術,在新網路中很少使用。此功能是在語音轉換規則和配置檔案存在之前增加的。號碼擴展是應用於Cisco網關上所有撥號對等體的全局數字更改。在撥號對等體匹配之後,並且在將呼叫傳送到下一個呼叫代理之前,將修改應用於被叫號碼。
組態範例
num-exp 4... 18005554...
num-exp 1234 8675309
SIP配置檔案是功能強大的正規表示式(regex) Match語句,允許管理員更改包含SDP和SIP報頭的SIP消息的任何方面。這些功能可以全局啟用,按撥號對等體或按租戶。從Cisco IOS 15.4(2)T和Cisco IOS XE 3.12S開始,SIP配置檔案可用於入站修改。由於SIP配置檔案非常強大,本文檔僅介紹幾個具體示例。SIP配置檔案還增加了在IOS 15.5(2)T和IOS-XE 3.13S中修改或增加自定義SIP報頭的功能。
有關入站SIP配置檔案與出站SIP配置檔案的要點
有關sip配置檔案配置的其他說明:
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
SIP配置檔案測試工具:SIP配置檔案測試工具
入站/出站SIP配置檔案示例語法
! voice class sip-profiles <number> request <message-type> sip-header <header> modify "match-pattern" "replace-pattern" request <message-type> sip-header <header> add "add-pattern" request <message-type> sip-header <header> remove
request <message-type> sdp-header <header> modify "match-pattern" "replace-pattern" request <message-type> sdp-header <header> add "add-pattern" request <message-type> sdp-header <header> remove
response <number> sip-header <header> modify "match-pattern" "replace-pattern" response <number> sip-header <header> add "add-pattern" response <number> sip-header <header> remove
response <number> sdp-header <header> modify "match-pattern" "replace-pattern" response <number> sdp-header <header> add "add-pattern" response <number> sdp-header <header> remove !
帶號碼的入站/出站SIP配置檔案示例
voice class sip-profiles 200
rule 1 response ANY sip-header Remote-Party-ID modify "match-pattern" "replace-pattern" rule 2 response ANY sdp-header Audio-Attribute modify "match-pattern" "replace-pattern"
出站SIP配置檔案應用方法
! Global Application voice service voip sip sip-profiles <number> !
! Tenant Application
voice class tenant <tag>
sip-profiles <tag>
!
! Dial-peer Application
dial-peer voice <tag> voip
voice-class sip profiles <number>
!
入站SIP配置檔案應用方法
注意:無論使用的是全局應用、租戶還是撥號對等體應用,都需要啟用voice service voip sip下的sip配置檔案入站。
! Global Application voice service voip sip sip-profiles inbound sip-profiles <number> inbound !
! Tenant Application
voice service voip
sip
sip-profiles inbound
! voice class tenant <tag>
sip-profiles <tag> inbound
!
! Dial-Peer Application
voice service voip
sip
sip-profiles inbound
! dial-peer voice <tag> voip voice-class sip profiles <number> inbound !
修改OPTIONS keepalive消息的SIP配置檔案示例。
!
voice class sip-options-keepalive 200
transport tcp tls
sip-profiles 299
!
用於修改URI的主機、域或兩部分的SIP配置檔案示例。
! Host ! voice class sip-profiles 1 request ANY sip-header Contact modify "sip:(.*)@" "sip:8675309@" ! ! Domain ! voice class sip-profiles 2 request ANY sip-header Contact modify "10.67.138.241:5060" "cisco.com" ! ! Note: Port is optional ! ! Modify Both User and Host ! voice class sip-profiles 3 request ANY sip-header Contact modify "sip:(.*)>" "sip:8675309@cisco.com>" !
增加、修改或刪除轉移報頭的SIP配置檔案示例。
! Add ! voice class sip-profiles 777 request INVITE sip-header Diversion add "Diversion: <sip:1234@cisco.com>" ! ! ! Modify ! voice class sip-profiles 888 request INVITE sip-header Diversion modify "sip:(.*)>" "sip:1234@cisco.com>" ! ! ! Remove ! voice class sip-profiles 999 request INVITE sip-header Diversion remove !
用於修改SIP報頭的呼叫方ID名稱部分的SIP配置檔案示例。
! voice class sip-profiles 123 request INVITE sip-header From modify "\".*\"" "\"TEST CLID*\"" !
將進行中的183會話更改為180振鈴的SIP配置檔案示例。
! voice class sip-profiles 789 response 183 sip-header SIP-StatusLine modify "SIP/2.0 183 Session in Progress" "SIP/2.0 180 Ringing" !
與提供商的單向或單向音訊互操作性的SIP配置檔案示例。
!
voice class sip-profiles 200 request ANY sdp-header Audio-Attribute modify "a=inactive" "a=sendrecv" request ANY sdp-header Audio-Connection-Info modify "0.0.0.0" "10.10.10.10"
!
! where 10.10.10.10 is CUBE's provider facing IP address
用於刪除互操作性問題的UPDATE方法的SIP配置檔案示例。
!
voice class sip-profiles 200
request ANY sip-header Allow-Header modify ", UPDATE" ""
!
顯示SIP配置檔案中的SET use的SIP配置檔案示例。這與語音轉換規則部分中描述的集合概念相同。
!
voice class sip-profiles 1 request ANY sip-header Contact modify "sip:(.*)@" "sip:\1@"
!
使用SIP配置檔案配置IF邏輯和新行中斷。
SIP配置檔案支援換行符,但是,這些配置檔案只有一個非常特定的使用案例。由於SIP配置檔案沒有任何If、Then和Else邏輯,因此現在提供了一種根據來自另一個報頭的輸入對一個報頭執行修改的方法。例如,如果FROM標頭包含1234@cisco.com,管理員只想修改轉換標頭。利用換行符我們可以偽裝SIP配置檔案中的IF語句。請參閱示例配置:在From報頭中的任何域中匹配1234。然後您將第一組換行並新增換行符\x0D\x0AD。最後,增加所需的報頭。請注意,此方法僅允許您增加報頭。無法修改其他標頭。因此,這僅部分滿足管理員以前希望達到的要求。
!
voice class sip-profiles 1 request INVITE sip-header From modify “(.*sip:1234@.*)” “\1\x0D\x0ADiversion: <sip:5678@example.com>” !
具有OR邏輯的SIP配置檔案示例。
!
voice class sip-profiles 123 request ANY sdp-header Audio-Attribute modify "(a=sendonly|a=recvonly|a=inactive)" "a=sendrecv" response ANY sdp-header Audio-Attribute modify "(a=sendonly|a=recvonly|a=inactive)" "a=sendrecv" !
透過SIP配置檔案進行第7層SIP檢查的示例。
### Usage 10.21.15.10 replace with private IP of CUBE a.b.c.d replace with public IP ------------------------------------------------------ ### Inbound from ITSP Layer 7 Fixup !
voice class sip-profiles 888 request INVITE sip-header SIP-Req-URI modify "@.*;" "@10.21.15.100;" ! voice service voip sip sip-profiles inbound ! ### Outbound Layer 7 Fixup ! voice class sip-profiles 777 request ANY sip-header Contact modify "<sip:(.*)@10.21.15.100:5060>" "<sip:\1 a.b.c.d:5060>" response ANY sip-header Contact modify "<sip:(.*)@10.21.15.100:5060>" "<sip:\1 a.b.c.d:5060>" request ANY sip-header Via modify "SIP(.*) 10.21.15.100(.*)" "SIP\1 a.b.c.d\2" request ANY sdp-header Session-Owner modify "(.*IP4 ).*" "\1a.b.c.d" request ANY sdp-header Connection-Info modify "IN IP4 10.21.15.100" "IN IP4 a.b.c.d" request ANY sdp-header Audio-Connection-Info modify "IN IP4 10.21.15.100" "IN IP4 a.b.c.d" response ANY sdp-header Session-Owner modify "(.*IP4 ).*" "\1a.b.c.d" response ANY sdp-header Audio-Connection-Info modify "IN IP4 10.21.15.100" "IN IP4 a.b.c.d" response ANY sdp-header Connection-Info modify "IN IP4 10.21.15.100" "IN IP4 a.b.c.d" request ANY sip-header Remote-Party-ID modify "<sip:(.*)@10.21.15.100>" "<sip:\1 a.b.c.d>" response ANY sip-header Remote-Party-ID modify "<sip:(.*)@10.21.15.100>" "<sip:\1 a.b.c.d>" !
### Apply to dial-peers for the side of the CUBE facing the ITSP
!
dial-peer voice 1 voip
voice-class sip profiles 777
voice-class sip profile 888 inbound
!
dial-peer voice 2 voip
voice-class sip profiles 777
voice-class sip profile 888 inbound
!
SIP副本清單是SIP配置檔案的擴展,它允許網關從呼叫的支路複製報頭,然後貼上到支路上的出口SIP消息中的另一個位置。Cisco IOS 15.1(3)T和Cisco IOS XE 3.6S中增加了SIP副本清單支援。這是一種非常強大的方式,可根據呼叫分支中的其他報頭來建立動態報頭。
最常用的用例是將FROM報頭動態複製到不同的報頭,如轉移或p-asserted-id,以便使用者部分的值為源使用者。這主要是為了驗證和呼叫方ID目的。
完整文檔:思科統一邊界要素配置指南-思科IOS XE 17.6及更高版本
SIP Copylist示例
! ! Create Copylist to copy the FROM header on the inbound message specified later. ! voice class sip-copylist <number> sip-header From ! ! Apply this to the inbound dial-peer of the call. ! dial-peer voice <tag> voip voice-class sip copy-list <number> ! ! Create SIP Profile to take From (peer-header) stored as variable "u01" and apply to a header of choice. ! This example modifies the user portion of the Contact by copying the user portion of the From header to the user portion of the Contact header. ! voice class sip-profiles <number> request INVITE peer-header sip From copy "<sip:(.*)@" u01 request INVITE sip-header Contact modify "<sip:(.*)>" "<sip:\u01@10.50.244.2>" ! ! Apply the SIP profile to an outbound dial-peer ! dial-peer voice <tag> voip voice-class sip profiles <number>
!
調試SIP配置檔案和副本清單
debug voip ccapi inout debug ccsip mess debug ccsip info debug ccsip feature sip-profile
示例SIP Copylist的調試輸出
### Ingress from CUCM Received: INVITE sip:1001@10.50.228.61:5060 SIP/2.0 Via: SIP/2.0/TCP 10.50.244.3:5060;branch=z9hG4bKaad21bc3ae7e From: "5001" <sip:5001@10.50.244.3>;tag=100442~cdffff43-5020-4e79-a10b-99d406971010-36470319 Contact: <sip:5001@10.50.244.3:5060;transport=tcp> ### Copylist Details 00440: Mar 8 18:59:49.796: //-1/xxxxxxxxxxxx/SIP/Info/info/64/sip_profiles_application_peer_copy_pattern: sed_match succeeded 000441: Mar 8 18:59:49.797: //187/D6138E000000/SIP/Info/info/64/sip_profiles_application_peer_copy_pattern: SIP Profiles COPY variables AVL tree created 000442: Mar 8 18:59:49.797: //-1/xxxxxxxxxxxx/SIP/Info/info/64/sip_profiles_prefix_slash_in_copy_var_val: ret_dst: 5001 000443: Mar 8 18:59:49.797: //187/D6138E000000/SIP/Info/info/64/sip_profiles_application_peer_copy_pattern: SIP Profiles COPY variable: u1 val: 5001 000444: Mar 8 18:59:49.797: //-1/xxxxxxxxxxxx/SIP/Info/info/64/sip_profiles_application_modify_remove_header: Header before modification : Contact: <sip:5001@10.50.228.61:5060> 000445: Mar 8 18:59:49.797: //187/D6138E000000/SIP/Info/info/64/sip_profiles_check_and_get_variables_in_replace_pattern: Node found: COPY variable: u1 val: 5001 000446: Mar 8 18:59:49.797: //187/D6138E000000/SIP/Info/info/64/sip_profiles_check_and_get_variables_in_replace_pattern: substituted_replace_pattern : : @168.117.64.94> 000448: Mar 8 18:59:49.797: //187/D6138E000000/SIP/Info/info/64/sip_profiles_check_and_get_variables_in_replace_pattern: Final substituted_replace_pattern : <sip:5001@168.117.64.94> 000449: Mar 8 18:59:49.797: //-1/xxxxxxxxxxxx/SIP/Info/info/64/sip_profiles_app_modify_header: Passing substituted replace pattern 000450: Mar 8 18:59:49.798: //-1/xxxxxxxxxxxx/SIP/Info/info/64/sip_profiles_application_modify_remove_header: Header after modification : Contact: <sip:5001@168.117.64.94> 000451: Mar 8 18:59:49.798: //187/D6138E000000/SIP/Msg/ccsipDisplayMsg: ### Egress from CUBE Sent: INVITE sip:1001@14.50.228.63:5060 SIP/2.0 Via: SIP/2.0/UDP 10.50.228.61:5060;branch=z9hG4bK3C7CD Remote-Party-ID: "5001" <sip:5001@10.50.228.61>;party=calling;screen=yes;privacy=off From: "5001" <sip:5001@10.50.228.61>;tag=34C458-D6 Contact: <sip:5001@168.117.64.94>
所有信令協定都允許管理員將信令繫結到特定介面。預設情況下,網關沒有靜態定義的繫結,則網關會從資料包所經過的物理介面為呼叫傳送信令。在撥號對等體上繫結時,資料包包含來自指定介面的源報頭、消息傳送和資料包,但實際資料包仍會透過物理介面路由。撥號對等體繫結始終透過會話發起協定(SIP)取代語音類租戶和全局語音服務voip繫結。
管理員多次將信令繫結到環回。這是邏輯介面,意味著沒有資料包透過此介面。要執行資料包捕獲,必須在物理介面上執行捕獲。命令show ip cef <remote-ip>顯示資料包用來路由到目標/遠端IP的物理介面,即使該配置繫結到虛擬介面也是如此。
介質和信令繫結並不總是需要同一個IP。如果管理員需要繫結到特定介面,以便向/從CUCM發出信令,但電話和網關之間的音訊/媒體可能需要繫結到另一個介面。
組態範例
本示例顯示繫結到loopback 1的撥號對等體,並且它接收來自CUCM的呼叫。
即使介質和信令(控制)繫結到環回1,show ip cef命令也會顯示傳送到CUCM的所有資料包都保留在物理介面GigabitEthernet0/0/1上。
! dial-peer voice 2 voip description "Incoming call from CUCM" session protocol sipv2 incoming called-number . voice-class sip bind control source-interface Loopback1 voice-class sip bind media source-interface Loopback1 !
第7層應用程式繫結的操作順序
SIP繫結命令
! Per Dial-peer
!
dial-peer voice 1 voip voice-class sip bind control source-interface <interface> voice-class sip bind media source-interface <interface> !
! Global Binding
! voice service voip sip bind control source-interface <interface> bind media source-interface <interface> !
MGCP繫結命令
!
mgcp bind control source-interface <interface> mgcp bind media source-interface <interface>
!
SCCP繫結命令
!
sccp local <interface> ! sccp ccm group <number> bind interface <interface> !
H323繫結命令
! inteface <interface> ! ! Media Bind Command: h323-gateway voip interface ! ! Signaling Bind Command: h323-gateway voip bind srcaddr <a.b.c.d> !
與任何其他DNS解決方案一樣,採用VOIP的DNS。 常見配置是使用會話目標dns:FQDN.com。
即使網關上沒有全局配置IP域名查詢,Cisco網關也會執行DNS解析。 這意味著即使您停用DNS,VOIP撥號對等體仍會解析DNS條目。但是,最近,在Cisco IOS XE 3.16S中,Cisco IOS XE平台中的整體DNS功能有所更改。
完成此更改後,為會話目標dns:FQDN.com配置的撥號對等體現在遵守停用沒有ip域名查詢的DNS這一事實。
我建議在使用DNS時始終確保配置命令「ip domain lookup」,以避免此問題。
對於出站SIP連線,CUBE會按此順序執行DNS解析操作。
有關如何建立SRV,以及如何跳過SRV並在會話目標上執行A記錄查詢的資訊,請參閱完整文檔:Cisco Unified Border Element配置指南- Cisco IOS XE 17.6以上
對於IOS網關需要解析報頭以響應消息的入站SIP連線,網關可以使用此操作順序進行DNS解析
在Cisco IOS XE 17.9.1中,CUBE可以透過選項keepalive機制來檢查DNS會話目標的可達性。請參閱完整說明檔案:
思科統一邊界要素配置指南- Cisco IOS XE 17.6及更高版本
IOS DNS配置示例
ip host _sip._udp.cucmgroup.lab.local srv 1 50 5060 cucm1.lab.local ip host _sip._udp.cucmgroup.lab.local srv 1 50 5060 cucm2.lab.local ip host _sip._udp.cucmgroup.lab.local srv 1 50 5060 cucm3.lab.local ip host cucm1.lab.local 10.0.0.1 ip host cucm2.lab.local 10.0.0.2 ip host cucm3.lab.local 10.0.0.3 ip domain name lab.local ip name-server 8.8.8.8
注意:15.6(1)S/3.17.00.S及更高版本支援Cisco IOS XE上的DNS SRV。
DNS調試和驗證命令
show host clear host all * ! debug ip dns view debug ip domain debug ccsip info
debug ccsip error
DNS測試3.15S及更高版本
### Domain Name Verification Gateway# sh run | s lookup no ip domain lookup ### Checking the host table for no entry Gateway# show host Name lookup view: Global Default domain is cisco.com Name/address lookup uses static mappings Codes: UN - unknown, EX - expired, OK - OK, ?? - revalidate temp - temporary, perm - permanent NA - Not Applicable None - Not defined Host Port Flags Age Type Address(es) ### Verification of no PING on a FQDN Gateway# ping cucm.cisco.com Translating "cucm.cisco.com" % Unrecognized host or address, or protocol not running. ### Made a test call here ### Checking logs to see if it worked Gateway# sh log | s INVITE sip: INVITE sip:9001@14.50.228.70:5060 SIP/2.0 INVITE sip:5001@cucm.cisco.com:5060 SIP/2.0 ### Host Table now has an entry Gateway# sh host Name lookup view: Global Default domain is cisco.com Name/address lookup uses static mappings Codes: UN - unknown, EX - expired, OK - OK, ?? - revalidate temp - temporary, perm - permanent NA - Not Applicable None - Not defined Host Port Flags Age Type Address(es) cucm.cisco.com None (temp, OK) 0 IP 10.50.244.2 ### CCSIP All output showing a proper DNS Query for the FQDN on the dial-peer. 001338: Mar 9 15:29:07.437: //-1/xxxxxxxxxxxx/SIP/Info/info/1024/httpish_msg_free: Freed msg=0x7FE9873AE560 001339: Mar 9 15:29:07.437: //-1/xxxxxxxxxxxx/SIP/Info/notify/8192/sip_dns_type_srv_query: TYPE SRV query for _sip._udp.cucm.cisco.com and type:1 001340: Mar 9 15:29:07.438: //-1/xxxxxxxxxxxx/SIP/Info/info/8192/sip_dns_type_a_aaaa_query: DNS query for cucm.cisco.com and type:1 001341: Mar 9 15:29:07.441: //-1/xxxxxxxxxxxx/SIP/Info/notify/8192/sip_dns_type_a_query: TYPE A query successful for cucm.cisco.com 001342: Mar 9 15:29:07.441: //-1/xxxxxxxxxxxx/SIP/Info/info/8192/sip_dns_type_a_query: ttl for A records = 3600 seconds 001343: Mar 9 15:29:07.441: //-1/xxxxxxxxxxxx/SIP/Info/info/8192/sip_dns_type_a_aaaa_query: IP Address of cucm.cisco.com is: 001344: Mar 9 15:29:07.441: //-1/xxxxxxxxxxxx/SIP/Info/info/8192/sip_dns_type_a_aaaa_query: 10.50.244.2
DNS Testing 3.16S及更高版本。
### Checking the command is present Gateway# sh run | s lookup no ip domain lookup ### Verifying the gateway cannot ping a FQDN Gateway# ping cucm.cisco.com % Unrecognized host or address, or protocol not running. ### Checking the Host Table for entries Gateway# sh host Default domain is cisco.com Name servers are 10.50.244.52 NAME TTL CLASS TYPE DATA/ADDRESS ----------------------------------------- ### Made a test call here ### CCSIP All Outbound showing the failed call 000974: *Mar 9 15:53:01.222: //-1/xxxxxxxxxxxx/SIP/Info/info/1024/httpish_msg_free: Freed msg=0x7FF31DAAA848 000975: *Mar 9 15:53:01.222: //-1/xxxxxxxxxxxx/SIP/Info/notify/8192/sip_dns_type_srv_query: TYPE SRV query for _sip._udp.cucm.cisco.com and type:1 000976: *Mar 9 15:53:01.224: //-1/xxxxxxxxxxxx/SIP/Info/info/8192/sip_dns_type_a_aaaa_query: DNS query for cucm.cisco.com and type:1 000977: *Mar 9 15:53:01.225: //-1/xxxxxxxxxxxx/SIP/Error/sip_dns_type_a_query: TYPE A query failed for cucm.cisco.com 000978: *Mar 9 15:53:01.225: //-1/xxxxxxxxxxxx/SIP/Error/_send_dns_fail: DNS Query for cucm.cisco.com failed 000984: *Mar 9 20:53:01.225: %VOICE_IEC-3-GW: SIP: Internal Error (DNS query fail): IEC=10.1.128.7.47.0 on callID 6 GUID=37B668DF044111E7A950D832C82B325C
預設情況下,VOIP和POTS撥號對等體允許無限制的連線(呼叫)和頻寬(僅限VOIP撥號對等體)。對於可以使用的呼叫數或頻寬有限的中繼,使用max-conn或max-bandwidth命令會很有用。max-conn是在Cisco IOS 11.3(1)T中增加的,並且存在於所有Cisco IOS XE版本中,而max-bandwidth是在15.2(2)T和IOS-XE 3.7S中增加的。
組態範例:
在此通知網關使用「max-conn 30」將撥號對等體1限制為30個呼叫。
撥號對等體2正在限制該撥號對等體的頻寬,以使我們不超過分配的限制。
! dial-peer voice 1 voip description ITSP SIP Trunk - 30 Max Calls! session protocol sipv2 sess target ipv4:10.10.10.10 destination-pattern 8675309$ max-conn 30 !
dial-peer voice 2 voip
description SIP Trunk with Bandwidth Restrictions!
session protocol sipv2
sess target ipv4:10.10.10.10
destination-pattern 123456789$
max-bandwidth 400
!
超過max-conn閾值時的錯誤示例。
000308: Oct 5 19:01:02.603: %CALL_CONTROL-6-MAX_CONNECTIONS: Maximum number of connections reached for dial-peer 1 000309: Oct 5 19:01:02.603: %VOICE_IEC-3-GW: CCAPI: Internal Error (Dial-peer connections exceeded): IEC=10.1.181.1.21.0 on callID 0 000310: Oct 5 19:01:02.604: %SIP-3-MAXCONNCAC: Call rejected due to CAC based on maximum number of connections on dial-peer 1, sent response 503 000311: Oct 5 19:01:02.604: //17084/86B070800000/SIP/Msg/ccsipDisplayMsg: Sent: SIP/2.0 503 Service Unavailable Via: SIP/2.0/TCP 10.50.244.62:5060;branch=z9hG4bKb78c35aa21b0 From: <sip:9001@10.50.244.62>;tag=72531~2e8ca155-3f0b-4f07-a1b2-b14ef77ceb7f-26250846 To: <sip:1234@10.50.245.70>;tag=3E19564D-1684 Date: Thu, 05 Oct 2017 19:01:02 GMT Call-ID: 86b07080-9d61816e-b762-3ef4320e@10.50.244.62 CSeq: 101 INVITE Allow-Events: telephone-event Warning: 399 10.50.245.70 "Maximum Number of Connections reached for dial-peer 1" Server: Cisco-SIPGateway/IOS-15.4.3.S4 Content-Length: 0
在POTS撥號對等體上啟用了直接撥入後,入站消息傳送可以包含路由呼叫所需的所有數字。Cisco網關無法進行後續數字收集。當路由器或網關搜尋出站撥號對等體時,裝置使用整個傳入撥號字串。預設情況下,此匹配為可變長度。此匹配不是逐位完成的,因為根據DID定義,已收到所有數字。這是POTS撥號對等體的預設配置。
完整文檔:瞭解IOS語音數字(T1/E1)介面上的直接撥入(DID)
組態範例
! dial-peer voice 1 pots incoming called-number 8675309 voice-port 0/0/0 direct-inward-dial !
如果傳入POTS撥號對等體配置了no direct-inward-dial,則路由器或網關將進入數字收集模式(數字在帶內收集)。出站撥號對等體匹配按數字逐位進行。路由器或網關在裝置收到每個數字後檢查撥號對等體匹配,然後在完全匹配時路由呼叫。
組態範例
!
dial-peer voice 1 pots
incoming called-number 8675309
voice-port 0/0/0
no direct-inward-dial
!
每個協定處理呼叫阻塞的方式略有不同。大多數協定都可以使用基於數字字串的塊轉換規則拒絕模式。 如果管理員仍然希望應用入站轉換配置檔案進行正常數字操作,但不阻止其中的任何數字,則可以選擇使用call-block translation-profile命令實施呼叫阻止。
! voice translation-rule 164 rule 1 reject /8675309/ ! voice translation-profile CALLBLOCK translate calling 164 !
dial-peer voice 1 pots
desc INCOMING VOICE-PORT with BLOCK
translation-profile incoming ANOTHER
call-block translation-profile incoming CALLBLOCK
call-block disconnect-cause incoming invalid-number
incoming called-number .
port 0/0/0:23
! Gateway#test voice translation-rule 164 8675309 8675309 blocked on rule 1
在E1 R2中,管理員可以阻止收集呼叫。這主要用於巴西部署,但可透過任何自定義組進行配置。
這兩個選項是:
II-8類阻止消息(debug vpm signal)
009228: Nov 21 12:02:00.955 GMT: //-1/BF12BE36BAC8/VTSP:(0/0/0:0):-1:1:2/vtsp_report_cas_digit: Begin Digit=8, Mode=CC_TONE_R2_MF_BACKWARD_MODE 009229: Nov 21 12:02:00.955 GMT: htsp_digit_ready_up(0/0/0:0(2)): Rx digit='8' 009230: Nov 21 12:02:00.955 GMT: R2 Incoming Voice(0/0): DSX (E1 0/0/0:1): STATE: R2_IN_CATEGORY R2 Got Event 8 009231: Nov 21 12:02:00.955 GMT: Enter r2_comp_category 009232: Nov 21 12:02:00.955 GMT: R2 Event : 8 009233: Nov 21 12:02:00.955 GMT: #######R2_II8 TRUE######## 009234: Nov 21 12:02:00.955 GMT: ####### collect_call_enable = 0 009235: Nov 21 12:02:00.955 GMT: ############sending B7 ########## 009236: Nov 21 12:02:00.955 GMT: r2_reg_generate_digits(0/0/0:0(2)): Tx digit '7' 009237: Nov 21 12:02:01.055 GMT: //-1/BF12BE36BAC8/VTSP:(0/0/0:0):-1:1:2/vtsp_report_cas_digit: End Digit=8, Mode=CC_TONE_R2_MF_BACKWARD_MODE 009238: Nov 21 12:02:01.055 GMT: htsp_digit_ready(0/0/0:0(2)): Rx digit='#' 009239: Nov 21 12:02:01.055 GMT: R2 Incoming Voice(0/0): DSX (E1 0/0/0:1): STATE: R2_IN_CATEGORY R2 Got Event R2_TONE_OFF 009240: Nov 21 12:02:01.055 GMT: Enter r2_comp_category 009241: Nov 21 12:02:01.055 GMT: r2_reg_generate_digits(0/0/0:0(2)): Tx digit '#' 009242: Nov 21 12:02:01.359 GMT: htsp_dsp_message: SEND_SIG_STATUS: state=0x8 timestamp=22365 systime=225097425 009243: Nov 21 12:02:01.359 GMT: htsp_process_event: [0/0/0:0(2), R2_Q421_IC_WAIT_ANSWER, E_DSP_SIG_1000] 009244: Nov 21 12:02:01.359 GMT: r2_q421_ic_clr_fwd_idle(0/0/0:0(2)) Rx CLEAR FWD 009245: Nov 21 12:02:01.359 GMT: r2_reg_channel_disconnected(0/0/0:0(2)) 009246: Nov 21 12:02:01.359 GMT: R2 Incoming Voice(0/0): DSX (E1 0/0/0:1): STATE: R2_IN_CATEGORY R2 Got Event R2_STOP 009247: Nov 21 12:02:01.359 GMT: Enter r2_comp_category 009248: Nov 21 12:02:01.359 GMT: htsp_timer - 2000 msec 009249: Nov 21 12:02:01.359 GMT: htsp_process_event: [0/0/0:0(2), R2_Q421_IC_CLR_FWD, E_HTSP_RELEASE_REQ] 009250: Nov 21 12:02:01.359 GMT: r2_q421_null_release(0/0/0:0(2)) E_HTSP_RELEASE_REQ 009251: Nov 21 12:02:01.359 GMT: r2_reg_process_event: [0/0/0:0(2), R2_REG_COLLECTING, E_R2_REG_DISCONNECT(91)] 009252: Nov 21 12:02:01.359 GMT: r2_reg_disconnect_collect(0/0/0:0(2)) 009253: Nov 21 12:02:01.359 GMT: r2_reg_timer_stop(0/0/0:0(2)) 009254: Nov 21 12:02:01.711 GMT: htsp_process_event: [0/0/0:0(1), R2_Q421_IC_CLR_FWD, E_HTSP_EVENT_TIMER] 009255: Nov 21 12:02:01.711 GMT: htsp_timer_stop 009256: Nov 21 12:02:01.711 GMT: r2_q421_clr_fwd_idle(0/0/0:0(1)) Tx IDLEvnm_dsp_set_sig_state:[R2 Q.421 0/0/0:0(1)] set signal state = 0x8 009257: Nov 21 12:02:01.711 GMT: r2_reg_channel_disconnected(0/0/0:0(1)) 009258: Nov 21 12:02:01.711 GMT: //682206/0C63B263B9C9/VTSP:(0/0/0:0):0:1:1/vtsp_do_call_history: Coder Rate=5 009259: Nov 21 12:02:01.711 GMT: r2_reg_process_event: [0/0/0:0(1), R2_REG_IDLE, E_R2_REG_DISCONNECT(91)]
雙應答配置示例
! controller e1 0/0/0 ds0-group 0 timeslots 1-15,17-31 type r2-digital r2-compelled ani cas-custom 0 country brazil double-answer cc-reanswer-to 3000 !
雙應答調試(debug vpm signal)
### Answer the call and start a 1 second timer May 23 09:52:59.180 BR: r2_q421_ic_answer(0/0/0:0(18)) Tx ANSWER seizure: delay 0 ms,elapsed 12404 msvnm_dsp_set_sig_state:[R2 Q.421 0/0/0:0(18)] set signal state = 0x4 May 23 09:52:59.180 BR: r2_reg_channel_connected(0/0/0:0(18)) May 23 09:52:59.180 BR: htsp_timer - 1000 msec May 23 09:52:59.180 BR: //23899578/92233E71B421/CCAPI/cc_api_voice_mode_event: Call Id=23899578 May 23 09:52:59.180 BR: //23899578/92233E71B421/CCAPI/cc_api_voice_mode_event: Call Entry(Context=0x1E73AD8) May 23 09:52:59.180 BR: htsp_process_event: [0/0/0:0(18), R2_Q421_IC_DOUBLE_ANS_ANS, E_HTSP_VOICE_CUT_THROUGH] all May 23 09:52:59.184 BR: //23899578/92233E71B421/CCAPI/cc_process_notify_bridge_done: Conference Id=0x10AD1, Call Id1=23899578, Call Id2=23899579 May 23 09:52:59.184 BR: r2_reg_process_event: [0/0/0:0(18), R2_REG_WAIT_FOR_CONNECT, E_R2_REG_CONNECT(90)] May 23 09:52:59.184 BR: r2_reg_connect(0/0/0:0(18)) ### One Second Passes and we clear the call and start a 2 second timer May 23 09:53:00.180 BR: htsp_process_event: [0/0/0:0(18), R2_Q421_IC_DOUBLE_ANS_ANS, E_HTSP_EVENT_TIMER] May 23 09:53:00.180 BR: r2_q421_ic_d_answ_answ_to(0/0/0:0(18)) E_TIMER_EVENT May 23 09:53:00.180 BR: htsp_timer - 2000 msec May 23 09:53:00.180 BR: r2_q421_ic_d_answ_answ_to(0/0/0:0(18)) Tx CLEAR BWDvnm_dsp_set_sig_state:[R2 Q.421 0/0/0:0(18)] set signal state = 0xC May 23 09:53:00.824 BR: htsp_process_event: [0/0/0:0(18), R2_Q421_IC_DOUBLE_ANS_RLS, E_DSP_SIG_1000] May 23 09:53:00.824 BR: r2_q421_ic_answer_clr_fwd(0/0/0:0(18)) Rx CLEAR FWD May 23 09:53:00.824 BR: r2_reg_channel_disconnected(0/0/0:0(18)) May 23 09:53:00.824 BR: htsp_timer - 2000 msec May 23 09:53:00.824 BR: r2_reg_process_event: [0/0/0:0(18), R2_REG_CONNECTED, E_R2_REG_DISCONNECT(91)] May 23 09:53:00.824 BR: r2_reg_disconnect_idle(0/0/0:0(18)) May 23 09:53:00.824 BR: R2 Incoming Voice(0/0): DSX (E1 0/0/0:17): STATE: R2_IN_IDLE R2 Got Event R2_STOP May 23 09:53:00.824 BR: r2_reg_timer_stop(0/0/0:0(18)) ### 2 second passes and the gateway release the call May 23 09:53:02.824 BR: htsp_process_event: [0/0/0:0(18), R2_Q421_IC_CLR_FWD, E_HTSP_EVENT_TIMER] May 23 09:53:02.824 BR: htsp_timer_stop May 23 09:53:02.824 BR: r2_reg_channel_disconnected(0/0/0:0(18)) May 23 09:53:02.824 BR: //23899578/92233E71B421/VTSP:(0/0/0:0):17:1:1/vtsp_cc_call_disconnected: Cause Value=16 May 23 09:53:02.824 BR: //23899578/92233E71B421/CCAPI/cc_api_call_disconnected: Cause Value=16, Interface=0xB41CEBC, Call Id=23899578
在ISDN介面上配置了isdn overlap-receiving命令後,入站撥號對等體匹配有一些隱含條件。在ISDN層收到每個數字後,會檢查撥號對等體是否存在匹配。如果完全匹配,呼叫將立即路由(在本例中路由到會話應用),而不等待其他數字。T終止符可用於掛起這種逐位匹配,並強制路由器或網關等待,直到收到所有數字為止。T是指ISDN級別的T302數字間計時器,可在與ISDN介面相關聯的串列介面下配置。ISDN還提供了其他表示數字結尾的機制,例如在Q.931資訊消息中設定傳送完整資訊元素(IE)。
當撥號對等體配置了傳入被叫號碼T時,會顯示所示的警告消息。
示例輸出
Gateway(config)# dial-peer voice 1 pots
Gateway(config-dial-peer)# incoming called-number T
Warning: Pattern T defines a match with zero or more digits and hence could
match with an empty number. If this is not the desired behaviour please
configure pattern .T instead to match on one or more digits
有關傳入撥號對等體與空被叫號碼匹配的特殊說明。
空的被叫號碼與語音埠和/或在某些情況下與應答地址相比被認為是不合格的。因此,僅當沒有基於answer-address或port-number的匹配時,才會出現基於null被叫號碼的匹配。
在重疊撥號的情況下,空被叫號碼與傳入被叫號碼T不匹配,因為未發生超時。
只有在ENBLOCK的情況下,空的被叫號碼才能與傳入的被叫號碼T匹配,並且由於answer-address和port-number原因而沒有匹配。管理員配置傳入被叫號碼T時顯示的警告指此特定情況。
限制類別(COR)是一種限制思科網關上呼叫的方式。COR通常被描述為鎖和金鑰機制。鎖將分配給具有傳出COR清單的撥號對等體。金鑰將分配給具有傳入COR清單的撥號對等體。應用COR清單時,可用的出站撥號對等體是金鑰可以解鎖的出站撥號對等體。此過濾發生在檢查其餘出站撥號對等體匹配方法之前。
具有限制類別的兩個重要規則:
限制類別(COR)、邏輯分割限制類別(LPCOR)及使用強制授權碼(FAC)的LPCOR的組態不在本檔案範圍內,但可參考這些檔案以進行進一步閱讀。
COR |
|
帶CME的LPCOR |
|
LPCOR,帶CME和FAC |
CME為電子電話和語音註冊池建立系統撥號對等體。這些無法在運行配置中看到。要對CME撥號對等體進行更改,需要在實際的ephone或語音註冊池中進行更改。在檢視show dial-peer voice summary輸出時,從2000開始的撥號對等體是SCCP電話,從4000開始的撥號對等體是SIP語音註冊池。此撥號對等體顯示為來自CME註冊電話的呼叫的入站撥號對等體,顯示為來自CME註冊電話的呼叫的調試中的出站撥號對等體。
使用CME的show dial-peer voice summary的輸出示例。
Gateway# show dial-peer voice sum | s 2000|4000 20001 pots up up 1001$ 0 50/0/1 20002 pots up up 4001$ 0 50/0/2 20003 pots up up 4002$ 0 50/0/3 20004 pots up up 7001$ 0 50/0/4 20005 pots up up 3009$ 0 50/0/5 20006 pots up up 8810....$ 0 50/0/10 20007 pots up up 8811....$ 0 50/0/11 40001 voip up up 14085151111$ 0 syst ipv4:14.50.214.67:50 40002 voip up up 19725252222$ 0 syst ipv4:14.50.214.67:50 40003 voip up up 85225353333$ 0 syst ipv4:14.50.214.67:50 40004 voip up up 442084445555$ 0 syst ipv4:14.50.214.67:50 40005 voip up up 911$ 0 syst ipv4:14.50.214.67:50 40006 voip up up 18005550100$ 0 syst ipv4:14.50.214.67:50 40008 voip up up 2001$ 0 syst ipv4:14.50.214.51:50
使用SIP CME的show voice register撥號對等體的示例輸出。
Gateway# show voice register dial-peers Dial-peers for Pool 2: dial-peer voice 40006 voip destination-pattern 14085151111$ session target ipv4:14.50.214.67:5060 session protocol sipv2 dtmf-relay rtp-nte digit collect kpml codec g711ulaw bytes 160 no vad call-fwd-all 8888 after-hours-exempt FALSE dial-peer voice 40005 voip destination-pattern 19725252222$ session target ipv4:14.50.214.67:5060 session protocol sipv2 dtmf-relay rtp-nte digit collect kpml codec g711ulaw bytes 160 no vad after-hours-exempt FALSE
MGCP和SCCP遵循各自的撥號對等體規則。他們使用的唯一概念是,必須為呼叫配置所需的語音埠。其餘部分由STCAPP和MGCPAPP流程處理。當您檢視這些撥號對等體的配置時,它們具有命令service mgcpapp或service stcapp。這些功能會啟用所選應用的撥號對等體,並告訴應用它可以處理哪個撥號對等體。
調試這些協定時,輸出不會顯示入站撥號對等體匹配。這始終可以顯示為撥號對等體0。因為它不存在。處理應用程式的呼叫代理已選擇要將呼叫傳送到哪個埠,入站撥號對等體匹配無用,因為網關無法控制呼叫的該段。但是,可以觀察到出站撥號對等體匹配。這僅僅是為了顯示,因為最終處理該過程的呼叫代理也控制了呼叫的該側。
請記住,撥號對等體只告訴應用程式要控制哪個物理語音埠。由於這其中大部分是由外部呼叫代理和網關控制的,因此它只執行通知的操作。您將跳過本節中介紹的基本操作方法,並提供一些開始使用的配置。
MGCP配置示例[使用CUCM自動配置*]
!
mgcp call-agent 10.10.10.10
mgcp
!
ccm-manager mgcp [codec-all]
ccm-manager config server 10.10.10.10
ccm-manager config
ccm-manger redundant-host 10.10.10.20
!
voice-port 0/0/0
description The MGCP port to register
no shut
!
dial-peer voice 1 pots
description Defining the Port for the MGCP application
service mgcpapp
port 0/0/0
!
hostname myrouter
ip domain name cisco.com
ip name server 10.10.10.30
!
ip tftp source-interface gig0/0/0
!
完整MGCP文檔:Cisco Unified Communications Manager和互操作性配置指南,Cisco IOS版本15M&T
SCCP/STCAPP配置示例[使用CUCM自動配置*]
!
stcapp ccm-group 1
stcapp
!
sccp local gig0/0/0
sccp ccm 10.10.10.10 id 1 priority 1 version 7.0+
sccp ccm 10.10.10.20 id 1 priority 2 version 7.0+
sccp
!
sccp ccm group 1
bind interface gig0/0/0
associate ccm 1 priority 1
associate ccm 2 priority 2
!
ccm-manager config server 10.10.10.10
ccm-manager sccp local gig0/0/0
ccm-manager sccp
!
voice-port 0/0/0
description The SCCP port to register
no shut
!
dial-peer voice 1 pots
description Defining the Port for the SCCP application
service stcapp
port 0/0/0
!
ip tftp source-interface gig0/0/0
!
如果管理員不希望CUCM配置網關,只需刪除ccm-manager 命令即可。包括撥號對等體配置,可明確說明該概念的工作原理。如果存在ccm-manager配置,CUCM將根據CUCM中的埠配置建立這些撥號對等體,因此不需要實際定義撥號對等體。CUCM建立的撥號對等體通常以999開頭,然後是三個數字。
SIP DSAPP已增加到Cisco IOS XE 16.12.1+和CUCM 12.5.1SU+
透過此功能,模擬語音埠(例如FXS)可以由CUCM註冊和管理。使用DSAPP的呼叫路由與MGCP或SCCP略有不同,因為撥號對等體仍然正常匹配。也就是說,網關可以從FXS埠收集數字,並在VOIP撥號對等體上執行撥號對等體查詢。找到匹配後,INVITE將傳送到CUCM的CUCM儲存塊以供CUCM執行進一步的數字分析。
SIP DSAPP配置示例[帶CUCM自動配置*] | IOS-XE 16.12.1+和CUCM 12.5.1SU+
!
dsapp line
!
voice service voip
sip
bind control source-interface GigabitEthernet0/0/0
bind media source-interface GigabitEthernet0/0/0
session transport tcp
!
application
service dsapp
param dialpeer 777
!
global
service default dsapp
!
ccm-manager config server 10.10.10.10
ccm-manager sipana auto-config local GigabitEthernet0/0/0
!
dial-peer voice 777 voip
destination-pattern 9T
session protocol sipv2
session target ipv4:10.10.10.10
session transport tcp
incoming called-number .
voice-class sip extension gw-ana
voice-class sip bind control source-interface GigabitEthernet0/0/0
dtmf-relay rtp-nte
codec g711ulaw
!
dial-peer voice 19990100 pots
service dsapp
destination-pattern 7776
voice-class sip extension gw-ana
port 0/1/0
!
sip-ua
registrar ipv4:10.10.10.10 expires 3600 tcp
!
完整SIP DSAPP文檔:Cisco VG450語音網關軟體配置指南
請參閱本檔案以取得更多詳細資訊。
修訂 | 發佈日期 | 意見 |
---|---|---|
4.0 |
24-May-2023 |
已刪除PII。
更新的標題、簡介、SEO、品牌要求、樣式要求、機器翻譯、替代文字和格式。 |
3.0 |
27-Apr-2022 |
在細微更改後重新發佈。 |
1.0 |
30-May-2017 |
初始版本 |
註:此規則的例外是MGCP和SCCP語音埠。在呼叫路由過程中,這些信令協定不遵循正常的撥號對等體匹配機制。有關詳細資訊,請參閱SCCP和MGCP部分。