本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 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)和Fore Exchange Office(FXO)。
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
本文說明使用普通舊式電話服務(POTS)和VoIP網路呼叫段進行入站和出站撥號對等體匹配的機制。
除了撥號對等體資訊外,本文檔還介紹了與呼叫路由相關的重要主題。其中包括數字操控、會話初始協定(SIP)消息操作快速概述、限制呼叫功能的幾種方法、快速媒體和信令繫結概述,以及最後一點故障排除。
本檔案會利用組態範例以及debug和show命令輸出作為參考點。本檔案中的許多功能已清楚標示為功能已匯入Cisco IOS和Cisco IOS XE的版本。此資訊也可在「命令和功能規劃圖」部分快速參考。如果有一個非常顯著的缺陷,它是在文本中連結的,以便讀者瞭解。
屬性 |
說明 |
---|---|
數字字串 |
也稱為號碼字串、電話號碼、號碼或E164號碼。完全由數字0到9組成,帶可選前導加號(+)。
|
撥出號碼識別服務(DNIS) |
這是呼叫的被叫號碼或目標號碼。 |
自動號碼識別(ANI) |
這是呼叫的主叫號碼或始發主叫號碼。這也稱為呼叫線路識別符號(CLID),也可以命名為呼叫者ID。 |
統一資源識別符號(URI) |
URI是sip:或電話:最常用於VoIP協定SIP和H323的字串。
|
Carrier-id |
CID示例: 附註:思科錯誤ID CSCua14749 Carrier-ID在IOS XE平台上不起作用。 |
Route-String |
用於SIP的ILS路由字串的思科專有報頭。
|
列舉 |
ENUM是一種使用域名服務(DNS)將E164電話號碼轉換為URI的協定。本檔案沒有說明這一點。 |
PSTN |
公共交換電話網路 |
ITSP |
網際網路電話服務供應商 |
SBC |
作業階段邊界控制器。 這是作為客戶LAN和ITSP/PSTN網路之間的分界點的裝置 |
功能 | IOS版本 | IOS XE版本 |
號碼擴展(num-exp) 撥號對等體(POTS和VOIP) answer-address destination-mode incoming called-number 作業階段目標(IPv4和DNS) 最大連線數(max-conn) 直接撥入 轉位數(POTS) 首碼(POTS) timeouts inter-digit(voice-port) |
11.3(1)T |
All |
撥號對等終止器 |
12.0 |
All |
洪博托 |
12.0(5)T |
All |
ISDN對應 |
12.0(6)T |
All |
撥號對等搜尋方案 |
12.0(7)X |
All |
語音轉換規則和配置檔案 translate-outgoing numbering-type 數字條帶(POTS) |
12.0.(7)XR1 |
All |
session target(sip-server) |
12.1(1)T |
All |
POTS中繼組 |
12.1(3)公噸 |
All |
DNIS對應(出站) |
12.2(2)X |
All |
trunk-group-label |
12.2(11)T |
All |
撥號對等體(資料) |
12.2(13)T |
All |
語音類URI(出站) |
12.3(4)公噸 |
All |
出站代理 |
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秒 |
max-bandwidth |
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-Pattern-Maps(入站) 目標伺服器組 requri-passing session target(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連線(CUC)等。要列出的呼叫代理太多。
案例:呼叫從另一個呼叫代理到達思科網關,並且是入站呼叫段(內部呼叫)。 網關處理該呼叫,並根據其處理將呼叫傳送到下一個呼叫代理。這是出站呼叫段(出站)。
圖1顯示通過思科語音網關從PSTN到CUCM路由的呼叫以及相應的入站和出站呼叫支路資訊。
圖1 — 圖示的入站和出站呼叫段
通過Cisco Gateway ALWAYS(請參閱註釋)的成功呼叫與入站或出站撥號對等體匹配以正確路由。入站和出站撥號對等體類似於前面提到的呼叫段。在映像1中,呼叫從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 |
IP語音撥號對等體主要用於控制進出網關的H323和SIP連線。 這些撥號對等體使用域名系統(DNS)傳送和接收來自IPv4和IPv6地址以及完全限定域名(FQDN)的信令。 — VoIP撥號對等體也可用於透過訊框中繼傳輸的語音(VoFR)、透過ATM傳輸的語音(VoATM)、透過高階資料連結控制(VoHDLC)的語音,以及這些撥號對等體的註冊、許可和狀態(RAS)訊號傳送和作業階段目標,也可以包括結算和ENUM值。 附註:其中一些型別的配置是較舊的技術,在較新的網路中看不到,而對於IOS XE,有些配置不再受支援。因此,本文檔中不包含這些內容。 |
MMOIP |
Multimedia Mail Over IP撥號對等體用於將電子郵件傳送到Exchange伺服器。 這些主要用於t37入匝道/出匝道傳真。這些撥號對等體型別不在本文檔的討論範圍之內。 |
注意:思科網關上可配置的最大撥號對等體數量取決於可用記憶體(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
當思科網關收到呼叫建立請求時,網關開始搜尋此呼叫的適用傳入撥號對等體。這不是逐位分析;相反,完整消息用於確定選擇了哪個入站撥號對等體。檢查的消息中的項的順序在很大程度上取決於呼叫的協定,如表1、表2和表3中定義的首選項清單所示。撥號對等體只需滿足匹配條件之一。不必在撥號對等體中配置所有屬性或每個屬性都與呼叫設定資訊匹配。將根據第一個匹配條件搜尋所有撥號對等體。僅當找不到匹配項時,網關才會轉到下一個條件。
表1.入站SIP撥號對等體選擇首選項
優先使用程度 |
匹配條件 |
Dial-peer命令 |
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) |
destination-pattern <number-string> |
8 |
Carrier-ID |
carrier-id source <string> |
附註:合格入站撥號對等體可以按VRF或租戶進行過濾。如果配置了適用的功能。有關詳細資訊,請參閱虛擬路由和轉發(VRF)以及撥號對等體搜尋和語音類租戶部分。
表2.入站H323撥號對等體選擇首選項
優先使用程度 |
匹配條件 |
Dial-peer命令 |
1 |
URI |
傳入uri已呼叫<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) |
destination-pattern <number-string> |
5 |
Carrier-ID |
carrier-id source <string> |
表3. 入站擁塞POTS撥號對等體選擇首選項
優先使用程度 |
匹配條件 |
Dial-peer命令 |
1 |
被叫號碼 |
incoming called-number <number-string> |
2 |
主叫號碼 |
answer-address <number-string> |
3 |
Destination-pattern(ANI) |
destination-pattern <number-string> |
4 |
Voice-port |
port <voice-port-number> |
當POTS或VoIP呼叫的入站撥號對等體沒有適合匹配時,網關將分配撥號對等體0。這不是理想的,因為撥號對等體0的功能有限,並且可能導致呼叫問題。SCCP和MGCP協定是這種協定的例外,它們不使用撥號對等體來路由呼叫。請參閱MGCP和SCCP部分以瞭解更多詳細資訊。
dial-peer 0功能
出站撥號對等體用於從網關將POTS或VoIP呼叫路由到下一個呼叫代理。與入站撥號對等體匹配類似,網關可以根據特定協定的優先順序使用一系列專案來匹配撥號對等體。但是,與入站撥號對等體不同,如果沒有合格的出站撥號對等體來路由呼叫,則呼叫將失敗。與入站撥號對等體匹配一樣,將根據第一個匹配條件搜尋所有撥號對等體。僅當找不到匹配項時,網關才會轉到下一個條件。
表4.出站SIP撥號對等選擇首選項
優先使用程度 |
匹配條件 |
Dial-peer命令 |
1 |
撥號對等體組撥號對等體 |
目標dpg <dpg-tag> (在入站撥號對等體上配置的DPG) |
2 |
撥號對等體設定策略URI |
destination 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撥號對等體選擇首選項
優先使用程度 |
匹配條件 |
Dial-peer命令 |
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 <number-string> 目標e164-pattern-map <pattern-map-number> dnis-map <dnis-map-number> |
6 |
主叫號碼 |
目標呼叫e164-pattern-map <pattern-map-number> |
表6.出站POTS撥號對等體選擇首選項
優先使用程度 |
匹配條件 |
撥號對等命令* |
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 <DNIS-number>dnis-map <map-number> |
附註:Number String Dial-Peer Hunting和URI Dial-Peer Hunting部分在轉到下一個匹配條件之前,將介紹網關如何評估每個匹配條件行的潛在命令清單。例如,它在檢查呼叫號碼命令之前,會評估所有潛在的destination-pattern匹配和目標e164-pattern-map匹配命令。
數字字串首選項:
與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的數字字串。Dial-peer 1可以匹配從2000到2999的任何數字,而dial-peer 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
!
思科網關每次僅嘗試通過一個符合條件的出站撥號對等體路由呼叫。如果在第一個選定的撥號對等體上觀察到故障情況,則網關會嘗試將呼叫路由到下一個符合條件的撥號對等體。此過程會一直持續,直到呼叫成功或失敗,因為沒有更多符合條件的撥號對等體可以嘗試。撥號對等體搜尋和故障的常見症狀是進行呼叫時的回鈴明顯延遲。通常需要調試來驗證指定撥號對等體上呼叫失敗的確切原因。如果管理員不希望網關在觀察到故障情況時查詢另一個撥號對等體,則可以在撥號對等體上使用huntstop命令。
方案:為兩個撥號對等體配置相同的匹配長度,以匹配數字字串2001。管理員已定義明確的首選項,不希望與此特定呼叫的撥號對等體2匹配。由於存在兩個具有相同匹配長度的撥號對等體,因此該首選項用於確定撥號對等體。撥號對等體1具有最小的已配置首選項號碼,因此用於路由呼叫。如果使用dial-peer 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是否有潛在的匹配。匹配首選項基於最具體的匹配項,且確切的首選項為Full URI match、Host Part、User Part或telephone URI。瞭解URI匹配的操作順序可以極大地幫助撥號對等體匹配SIP和CUBE部署。
可以使用voice class uri sip preference命令操作此首選項順序,以便將使用者ID指定為第一個選項而不是主機。
URI首選項:
支援文檔:思科統一邊界要素配置指南 — Cisco IOS XE 17.6或更高版本
案例:管理員已配置此撥號對等體並將呼叫傳送到網關。收到的Invite中的From標頭是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,因為它是選擇入站撥號對等體時檢查的第一個匹配條件。該命令還使管理員能夠更好地匹配來自特定呼叫代理或使用者的呼叫。
完整文檔:思科統一邊界要素配置指南 — Cisco IOS XE 17.6及以上版本
常見使用案例
組態範例
此示例輸出匹配來自語音類URI中定義的兩個主機IP的任何SIP請求的撥號對等體777。被監控的報頭被定義為撥號對等體上的From報頭;但是,管理員可以定義許多其他屬性,包括VIA、TO和REQUEST(請求URI)。 如果CUCM向CUBE傳送OPTIONS ping現在匹配撥號對等體777,並從指定介面向OPTIONS發出my 200 OK回覆。如果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網關可以通過將語音類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才能與撥號對等體匹配。
在示例中,From和To標頭有一個語音類URI。對於OR匹配,將配置包含兩個首選項的撥號對等調配策略。From標頭是第一個首選項,To標頭是備份首選項。撥號對端1234的構建是為了應用入站配對的調配策略。然後分別應用目11111URI from和22222標URI-to命令的撥號對等體命令和撥號對等體命令。這些命令指向它們的語音類URI。對於該呼叫,您可以接收Invite、match dial-peer 1234並檢查調配策略。然後,裝置可以嘗試首先在From報頭上進行路由,該報頭作為撥號對等體上的適用匹配。如果失敗,您還可以嘗試使用22222在11111報頭上進行路由。
該示例還詳細說明了如何實現與撥號對等體調配策略匹配。假設收到相同的Invite,您可以在一個首選項下定義兩個報頭,並將其應用於入站撥號對等體。
現在,收到邀請後,它可以檢查符合條件的出站撥號對等體,它們滿足調配策略中定義的兩個匹配條件。因此,在本示例中,您的出站撥號對等體需要同時定義TO和FROM報頭才能匹配。如果任一匹配項無效,則不使用此12345號對等項。
附註:雖然我們正在對From標頭上的呼叫進行路由,但離開網關的Invite仍然具有原始請求URI。我們只需使用Dial-peer provision-policy匹配出站撥號對等體,而不更改請求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版思科統一邊界元素配置指南
session target 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評估出站撥號對等體。您之所以匹配撥號對等體2,是因為與匹配撥號對等體1(testuser的使用者ID)的原因相同。此撥號對等體的會話目標是由FQDN的會話目標sip-uri」定義的原始sip-uri。進行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),它使撥號對等體的匹配具有更大的靈活性。
萬用字元表
字元 |
定義 |
範例 |
* |
在撥號對等體上,這是鍵盤上的文字值*(star)。 |
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字元 在方括弧內使用時,該語句被視為exclude或DO NO MATCH語句 在更高的版本中不再需要此功能,因為網關在處理沒有^的regex字串時自動假定^。 |
^8675309 91[^135]555 |
美元 |
用於指示字串結尾的regex字元。 |
8675309$ |
\ | 用於表示文字值的跳脫字元 |
|
[ ] | 方括弧定義單個位置的字元範圍。 必須使用逗號來分解連續字串。 |
[1-5]0000 [2,5-8]000 |
() | 括弧定義集合中的一組字元。 |
9(258) 7777 |
T | 最大為32位的可變長度匹配。 路由器在路由呼叫之前等待數字間超時發生。 數字間逾時的預設值為10秒,並可透過語音連線埠上的數字間逾時進行修改。 它還引用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機制時,網關將撥號對等體重新置於啟動狀態。如果選擇撥號對等體作為出站撥號對等體,並且此撥號對等體處於忙碌退出狀態,則網關將以原因代碼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開始,思科網關可以使用VRF ID匹配入站撥號對等體。要利用這一點,管理員必須將入站撥號對等體繫結到介面,而介面又將撥號對等體繫結到指定介面上的VRF ID。完成繫結後,思科網關將過濾入站呼叫,以便僅包括符合接收資料包的介面的VRF ID的合格入站撥號對等體。從這裡開始,入站撥號對等體根據常規撥號對等體匹配操作順序進行匹配。
在發佈這些IOS/IOS-XE版本之前,思科網關會根據常規的入站撥號對等體匹配進行入站選擇,而無需進行任何過濾。這意味著VRF1呼叫可以與VRF2撥號對等體匹配。此外,由於在這些版本之前,H323和SIP僅支援一個VRF,因此嘗試使用多VRF功能時會出現其他問題。將單個VRF用於語音應用稱為VRF感知配置。
完整的VRF感知文檔:適用於語音閘道的VRF感知H.323和SIP
完整多VRF文檔:思科統一邊界元素配置指南 — Cisco IOS XE 17.6或更高版本
思科網關能夠跨VRF橋接呼叫,而無需配置路由洩漏。這意味著如果滿足正常的出站撥號對等體匹配選擇,則可以在VRF2的撥號對等體上對VRF1上的入站呼叫進行出站路由。可以採用撥號對等體組來強制思科網關將呼叫保留在同一個VRF中。
VRF和撥號對等組配置示例
此配置示例的VRF1和VRF2具有兩個重疊的IP範圍和兩個重疊的電話號碼範圍。
利用VRF繫結確保匹配正確的入站撥號對等體,利用Dial-peer Groups確保匹配正確的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,企業管理員會發現基本撥號對等體無法很好地滿足擴展需求。可能需要解決開 — 關情況,或者一般而言撥號對等體過多。擁有數以千計的撥號對等體並不能簡化管理和故障排除。為每個特定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狀態,因此必須配置出站匹配方法,但實際上並不使用此方法來路由呼叫。
描述撥號對等體組的最佳方式是將其與路由表中的靜態路由概念相類比。這些是靜態入站到出站路由決策,它們會消除網關的一些猜測,因為它們確切地告訴網關如何路由呼叫。
完整文檔:思科統一邊界要素配置指南 — Cisco IOS XE 17.6及以上版本
組態範例
在此示例中,被叫號碼是8675309。這將基於傳入的called-number語句匹配撥號對等體1234。此撥號對等體配置有撥號對等體組,該組表示如果撥號對等體2失敗,呼叫現在可以路由出撥號對等體2、3和1。這是網關,因此現在嘗試路由撥出dial-peer 2,就像通過撥號對等體組明確告訴它一樣,這是它可以進行的操作。
附註:撥號對等體1、2和3上的目標模式不是被叫的8675309號碼。這是正常的,呼叫仍然路由而沒有問題。
請記住,如「撥號對等體狀態」部分所述,您需要將某個/任何內容配置為出站匹配語句。在這種情況下,目的地模式只會使撥號對等體進入啟動運行狀態,並且不會計算該命令的數字字串。建議配置類似目標模式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-pattern-map支援,而在IOS 15.4(1)T和IOS-XE 3.11S中新增了入站撥號對端e164-pattern-map支援。
e164-pattern-map可以通過CLI配置或預配置,並另存為.cfg檔案。然後,.cfg檔案會新增到網關的快閃記憶體中,並在配置命令的其餘部分時進行引用。.cfg檔案可以使用5000個條目。
兩種配置方法中的條目都可以使用所有普通撥號對等體萬用字元進行進一步聚合!
完整文檔:思科統一邊界要素配置指南 — Cisco 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
驗證
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 CSCva64393e164-pattern-map不會分析配置檔案的最後一行。
伺服器組使管理員能夠在同一VOIP撥號對等體上配置多個目標(會話目標)。預設情況下,排序順序是在server-group條目中定義的首選項。當您使用命令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錯誤通常會觸發裝置嘗試伺服器組中的下一個選項。在server-group內具有config huntstop 1 resp-code 404;狩獵可以停止。這些值也可配置為huntstop 1 resp-code 401到599的範圍。
附註:每個伺服器組的最大條目數為5。
完整文檔:思科統一邊界要素配置指南 — Cisco 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 profile的功能。這樣,網關就可以監控在特定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
!
請注意,撥號對等體的預設配置是voice-class sip outbound-proxy system,這可能會使撥號對等體使用全域性語音服務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。基於偵聽埠+繫結+可選vrf入站撥號對等體匹配租戶後,將篩選為應用了租戶的租戶。
完整文檔:思科統一邊界要素配置指南 — Cisco 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中,show sip-ua register status不反映語音類租戶上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配置檔案上啟用傳送ILS學習目標路由字串設定,以便將x-cisco-dest-route-string報頭傳送到CUBE
完整文檔:Cisco IOS版本15M&T的H.323到SIP和SIP到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
本節涵蓋的項被視為傳統技術。雖然思科閘道中仍存在設定這些命令的功能,但建議不要在現代設定中使用這些命令。本文檔僅介紹它們,因為它們在使用傳統配置或執行升級時可能會遇到。
DNIS地圖可以被認為是現在的E164模式地圖的前身。DNIS對映是在12.2(2)XB中新增到Cisco IOS的,並且一直存在於Cisco IOS XE中。
如果配置了DNIS對映,則值得將它們轉換為更強大的e164模式對映功能。
組態範例
! voice dnis-map 34 dnis 8675309 ! dial-peer voice 88 voip dnis-map 34 !
中繼組標籤是在Cisco IOS 12.2(11)T中新增,並且存在於所有Cisco IOS XE版本中。Trunk-group-label的用途與Carrier-ID類似,因為它可用於增強撥號對等體的匹配。這可用於POTS中繼組、VOIP和POTS撥號對等體以及語音源組中的配置。在現代Cisco網關配置中,很少會看到中繼組標籤的使用。
組態範例
! 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不能單獨使用,並且必須與目標模式、應答地址或傳入被叫號碼一起使用。這意味著入站/出站匹配語句的條件與號碼型別必須匹配,才能使撥號對等體成功用於入站和出站呼叫路由。
Numbering-match可視為撥號對等體過濾機制,而非匹配機制。這是因為如果沒有應用管理員首選項,則無論是否應用編號型別命令,撥號對等體都會被視為相同的預設首選項權重。這與carrier-id不同,後者當應用於撥號對等體和其他匹配機制時,如果兩個條件都為真,則向撥號對等體新增優先權。
編號型別匹配已新增到Cisco IOS 12.0(7)XR1中,並且存在於所有Cisco IOS XE版本中。隨著在合作網路中部署的傳統POTS ISDN線路的減少,編號型別的使用在現代部署中很少見。
組態範例
只有當ISDN號碼型別為4085150000國4085159999時,此撥號對等體才能匹配到VDSL。
! 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閘道上的傳入資料資料機呼叫。此撥號對等體僅用於入站方向,在現代部署中很少見。
組態範例
! dial-peer data 100 pots incoming called-number 100 !
15.1(2)T中增加了此功能,但許多現代部署中未實現此功能。IOS/CUBE通常部署其他安全方法。
CUBE應用程式安全概述可從本白皮書的第4.2節開始檢視。
命令語法: 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報頭。思科網關擁有多種數字操作方法,管理員可以完全控制數字操作的方式和時間。但是,這並不總是容易的,並且一些人被不同的選項弄得不知所措,或者管理員不知道有一個選項存在。
POTS撥號對等體具有一些唯一的VOIP撥號對等體沒有的位數處理技術。
第一個是去除destination-pattern中顯式定義的左對齊數字。可以在POTS撥號對等體上使用no digit-strip命令禁用此功能。
範例:
在本示例中,9011T被定義為destination-pattern的字串。
通過此配置,您可以接收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的Cisco IOS中。轉換規則應用於語音轉換配置檔案,然後應用於撥號對等體或語音埠。轉換規則包含匹配輸入和修改輸出。除了號碼上的匹配輸入外,ISDN計畫和型別還有一個匹配和修改輸入。匹配數字字串、計畫和型別的組合被視為匹配項。這意味著要進行轉換,定義的所有匹配輸入都必須為true。
轉換規則能夠在ISDN、SIP和H323信令協定中更改Called、Calling、redirect-called、redirect-target和回撥號碼。轉換規則匹配基於自上而下的搜尋,因此規則的順序至關重要。如果在更高級的規則中找到匹配項,網關會立即停止搜尋並處理轉換。轉換規則無法更改非數字sip報頭,例如testuser@10.10.10.10。要進行此操作,請使用SIP配置檔案。
Transition-rules可用於阻止思科網關上的呼叫。
轉換配置檔案選擇首選項
除了撥號對等體regex和wilcards轉換規則外,它們還擁有自己的regex字元。
字元 |
定義 |
* | 在轉換規則中使用時,這是對前面字元的0個或更多字元的正規表示式。 要匹配文本*,請使用跳脫字元:\* |
\ |
常用於轉義規則中的轉義集\(\) |
& |
與號用於為修改集提供初始匹配集中匹配的任何內容 |
() |
用括弧括起來的項被視為集合。 |
^ | 定義字串的顯式開頭。 與dial-peers translation-rules不同,不定義字串的開頭。 這意味著定義沒有^的字串可能會與輸入字串中的任何位置匹配,從而導致數字中間出現不需要的轉換。 |
修改集
帶有兩個集合的轉換規則示例
在本例中,您可以檢查數字000111000222。
您要從數字中移除0,然後實現最終的111222數。
為此,可配置設定1和設定2,分別抓取111和222,同時刪除0。
! 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中增加的一種較舊技術,在新網路中很少使用。此功能是在語音轉換規則和配置檔案存在之前新增的。號碼擴展是應用於思科網關上所有撥號對等體的數字的全域性更改。在撥號對等體匹配之後,以及在將呼叫傳送到下一個呼叫代理之前,將修改應用於被叫號碼。
組態範例
num-exp 4... 18005554...
num-exp 1234 8675309
SIP配置檔案是強大的正規表示式(regex)Match語句,允許管理員更改包含SDP和SIP報頭的SIP消息的任何方面。可以全域性啟用、按撥號對等體或按租戶啟用。SIP配置檔案可用於從Cisco IOS 15.4(2)T和Cisco IOS XE 3.12S開始的入站修改。由於SIP配置檔案非常強大,因此本文檔僅介紹幾個具體示例。SIP配置檔案還增加了在IOS 15.5(2)T和IOS-XE 3.13S中修改或新增自定義SIP報頭的功能。
有關入站SIP配置檔案與出站SIP配置檔案的要點
有關sip-profile Configuration的其他附註:
完整文檔:思科統一邊界要素配置指南 — Cisco 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配置檔案應用方法
附註:無論使用的是全域性應用、租戶還是撥號對等應用,都需要啟用語音服務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配置檔案示例。這與語音轉換規則一節中介紹的Sets概念相同。
!
voice class sip-profiles 1 request ANY sip-header Contact modify "sip:(.*)@" "sip:\1@"
!
配置IF邏輯和新線路會使用SIP配置檔案中斷。
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 Copylists是SIP Profiles的擴展,它允許網關從呼叫的支路複製報頭,然後將PASTE複製到支路上的輸出SIP消息中的另一個位置。Cisco IOS 15.1(3)T和Cisco IOS XE 3.6S中增加了SIP複製清單支援。這是一種非常強大的方法,可以基於來自呼叫內部的其他報頭建立動態報頭。
最常見的使用情形是將FROM報頭動態地複製到不同的報頭,如diverse或p-asserted-id,使得使用者部分的值是from使用者。這主要是為了身份驗證和呼叫者ID目的。
完整文檔:思科統一邊界要素配置指南 — Cisco IOS XE 17.6及以上版本
SIP複製列表示例
! ! 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副本清單的輸出
### 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>
所有信令協定都允許管理員將信令繫結到特定介面。預設情況下,網關沒有靜態定義的繫結,則網關會從資料包通過的物理介面為呼叫傳送信令。如果在撥號對等體上進行繫結,則資料包包含來自指定介面的源報頭、消息傳送和資料包,但實際資料包仍會通過物理介面路由。撥號對等體繫結始終取代語音類租戶和全域性語音服務voip繫結,使用會話發起協定(SIP)。
很多情況下,管理員會將信令繫結到環回。這是邏輯介面,表示沒有資料包經過此介面。為了執行封包擷取,擷取必須在實體介面上執行。命令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域查詢時,思科網關也會執行DNS解析。 這表示即使您正在禁用DNS,VOIP撥號對等體仍會解析DNS條目。但是, r最近,在Cisco IOS XE 3.16S中,Cisco IOS XE平台中的總體DNS功能發生了一些更改。
進行此更改後,使用會話目標dns:FQDN.com配置的撥號對等體現在遵循以下事實:DNS已禁用,並且沒有ip域查詢。
建議使用DNS時始終確保配置「ip domain lookup」命令,以避免此問題。
對於出站SIP連線,CUBE會執行此順序的DNS解析操作。
有關如何建立SRV或如何跳過SRV並在會話目標上執行A記錄查詢的資訊,請參閱完整文檔:Cisco Unified Border Element Configuration Guide - 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測試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
!
超出最大連線閾值時的示例錯誤。
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撥號對等體上啟用直接撥入後,入站消息傳送可以包含路由呼叫所需的所有數字。思科網關無法執行後續數字收集。當路由器或網關搜尋出站撥號對等體時,裝置使用整個傳入撥號字串。預設情況下,此匹配為可變長度。此匹配無法逐位完成,因為根據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
!
每種協定處理呼叫阻塞的處理方式略有不同。大多數協定都可以使用基於數字字串的塊的translation-rule reject模式。如果管理員仍要應用入站轉換配置檔案進行正常數字操作,但不阻止其中的任何數字,則可以選擇使用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中,管理員可以阻止收集呼叫。這主要用於巴西部署,但可以通過任何cas自定義組進行配置。
這兩個選項是:
Category II-8 Block消息(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 !
雙應答調試(調試vpm訊號)
### 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
有關與空被叫號碼匹配的傳入撥號對等體的特殊說明。
空的被叫號碼與語音埠和/或在某些情況下應答地址相比被認為是不合格的。因此,基於空被叫號碼的匹配只有在基於應答地址或埠號沒有匹配的情況下才會發生。
在重疊撥號的情況下,空的被叫號碼與傳入的被叫號碼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 dial-peers的輸出示例。
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
!
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 enblock以供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部分以瞭解更多詳細資訊。