本文详细介绍Cisco AS5400平台上时分复用(TDM)交换的理论和配置。
假设读者对ISDN呼叫信令和TDM网络上同步时钟源的分布有基本的了解。本文档提供了一些有关TDM时钟的背景信息。熟悉Cisco IOS®配置和调试命令也很有帮助。
本文档中的信息基于以下软件和硬件版本:
Cisco AS5400、AS5350和AS5850平台
带IP Plus功能集的思科IOS软件版本12.2.2XB5
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
TDM交换的基础是所有已配置接口共享的同步时钟源。如果不同端口的时钟参考不同,接入服务器会注册时钟滑移,这在语音呼叫中可能不明显,但几乎肯定会导致传真或调制解调器呼叫失败。因此,与之同步的外部设备(PBX或中心局(CO)交换机)接入服务器接口与通用主时钟参考是至关重要的。大多数电信或服务提供商订用或发起第1层时钟参考,并在其网络中传播此参考。因此,在大多数情况下,时钟即使在不同的服务提供商之间也能保持同步。如果接入服务器上所有已配置的T1/E1接口保持同步,则接口出错的可能性很小。
TDM交换基于来电的拨号号码识别服务(DNIS)来路由呼叫。一旦接入服务器收到传入ISDN Q.931设置消息,它便可确定呼叫的发送位置,在传出接口上选择适当的承载信道,并发送ISDN Q.931设置消息以向下游设备发出新呼叫的存在信号。终端设备发送ISDN Q.931连接消息后,接入服务器会交叉连接背板上的脉冲码调制(PCM)流。如前段所述,两个相连网络必须具有相同的时钟同步,以确保PCM音频流或数字数据从一个接口无错地切换到另一个接口。网络图显示了根据在已配置的普通老式电话服务(POTS)拨号对等体上进行的匹配,在特定PRI接口上传入并通过其他接口交换出去的ISDN呼叫的一般概念。如有必要,可使用IOS转换规则来操纵被叫/主叫号码。
AS5400平台通常安装为拨入数据、语音、传真或调制解调器接入服务器。要终止语音类型呼叫(语音、传真或调制解调器),接入服务器需要安装适当的任何服务、任何端口(ASAP)数字信号处理器(DSP)资源。
如果调制解调器、传真或语音呼叫实际上不需要在接入服务器上终止,但出于某种原因需要切换回备用端口,则可以将AS5400配置为在纯TDM应用中工作,在该应用中,语音呼叫交换通过ISDN D信道信令控制。数据或语音呼叫可以根据DNIS(被叫号码)切换到另一个接口。实际上,接入服务器成为TDM语音/数据交换机。此功能通常称为TDM交换,但其他名称(如发夹、长号或拨号修饰)也应用于该技术。通常,术语是可互换的,对于本文档,术语是TDM交换。没有与ISDN一起传递的双音多频(DTMF)或多频(MF)信令音。呼叫控制通过高级数据链路控制(HDLC)封装的D通道消息完成。因此,在TDM操作模式下,无需语音呼叫的DSP资源。
接入服务器使用传入DNIS(被叫号码)匹配传出POTS拨号对等体目标模式,并将呼叫路由到适当的端口。也可以使用IOS转换规则来控制呼叫路由决策的被叫号码和主叫号码。
TDM交换的应用可以包括充当小型ISDN数据/语音交换(使用ISDN网络侧协议仿真)的接入服务器,或通过备用运营商进行呼叫重路由(最低成本)。
本文档介绍如何配置AS5400以对语音和数据呼叫执行TDM交换。根据在DNIS上为传入呼叫(在ISDN Q.931设置消息中提供)所做的匹配,呼叫从一个接口切换到备用接口。该技术还适用于使用TDM背板(如AS5350和AS5850)的其他平台。
本部分提供有关如何配置本文档所述功能的信息。
注意:使用命令查找工具(仅限注册客户)可查找有关本文档中使用的命令的详细信息。
本文档使用以下网络设置:
为了允许接入服务器执行TDM交换,必须启用资源池并将可用的承载信道资源放入池中。然后,此承载信道池与DNIS组关联,这允许特定资源池与特定传入被叫号码或任何传入被叫号码相关联。此输出显示了一个示例:
AS5400 |
---|
! resource-pool enable ! resource-pool group resource TDM_Voice range limit 124 !--- Up to 124 speech channels can be switched. ! resource-pool group resource TDM_Data range limit 124 !--- Up to 124 data channels can be switched. ! ! resource-pool profile customer TDM_Switching limit base-size all limit overflow-size 0 resource TDM_Voice speech !--- Resources for speech calls. ! resource TDM_Data digital ! resources for data calls ! dnis group default !--- Default DNIS group matches all called numbers. ! |
必须启用资源池功能,才能允许TDM交换。定义了名为TDM_Voice的资源组,允许最多124个可用于语音呼叫的信道。另一个名为TDM_Data的资源组允许最多124个信道进行数据呼叫。这些数字源自系统上E1或T1端口的最大数量。例如,8端口E1卡有30个承载信道,每个接口(31个信道)有1个信令信道,用于8个端口。总数为248(31乘8)。 此处分配一半用于数据,一半用于语音呼叫。
然后,资源组TDM_Voice被放置到名为TDM_Switching的配置文件中,呼叫类型被定义为语音,而资源组TDM_Data被定义为数字。这有效地允许具有语音和数据承载能力的呼叫通过接入服务器。dnis group default命令允许匹配所有传入的被叫号码。可以定义与更具体被叫号码匹配的DNIS组。有关详细信息,请参阅适用于语音和数据服务的通用端口资源池配置指南。
如果需要,可以操纵被叫号码,以在呼叫进入特定端口时预置接入代码。例如:
AS5400 |
---|
! translation-rule 1 Rule 1 ^.% 555 !--- Match on any string, prepend with 555. ! voice-port 6/0:D translate called 1 !--- Apply translation rule 1 to port 6/0 so any !--- incoming call is prepended with 555. compand-type a-law ! voice-port 6/3:D compand-type a-law !--- The translated called number is matched on POTS dial-peers !--- to determine where it should be routed. dial-peer voice 1 pots description - enable DID (single stage dialing) on port 6/0 incoming called-number . direct-inward-dial port 6/0:D ! dial-peer voice 2 pots description - reroute calls from 6/0 to 6/3 destination-pattern 55598842304 port 6/3:D prefix 0401890165 ! |
当呼叫进入端口6/0时,其前缀为555。如果原始被叫号码为98842304,则转换后的号码变为55598842304,并与拨号对等体2匹配。呼叫随后在端口6/3上发出。由于它是显式匹配,因此原始被叫号码将被删除,而prefix命令将其替换为0401890165。
数据呼叫交换的工作方式相同。POTS拨号对等体匹配被叫号码,并将其转发到其他端口。例如,如果呼入的端口6/4的被叫号码为5551000,则使用新的被叫号码5552000将呼出端口6/7。同样,如果呼入的端口6/7的被叫号码为5552000,则使用新的被叫号码5551000将呼出的端口6/4切出。
AS5400 |
---|
! dial-peer voice 3 pots description - enable DID on port 6/4 incoming called-number direct-inward-dial port 6/4:D ! dial-peer voice 4 pots description - enable DID on port 6/7 incoming called-number direct-inward-dial port 6/7:D ! dial-peer voice 12 pots description - reroute calls from 6/4 to 6/7 destination-pattern 5551000 port 6/7:D prefix 5552000 ! dial-peer voice 13 pots description - reroute calls from 6/7 to 6/4 destination-pattern 5552000 port 6/4:D prefix 5551000 ! |
使用本部分可确认配置能否正常运行。
命令输出解释程序(仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。
show run — 显示作为TDM交换机运行的接入服务器的完整配置。
multi-5-19#show run Building configuration... Current configuration : 3110 bytes ! ! Last configuration change at 13:18:39 UTC Wed Jun 19 2002 ! NVRAM config last updated at 20:45:12 UTC Sat Jan 8 2000 ! version 12.2 service timestamps debug datetime msec localtime service timestamps log uptime no service password-encryption ! hostname multi-5-19 ! enable password cisco ! ! ! resource-pool enable ! resource-pool group resource TDM_Voice range limit 124 ! resource-pool group resource TDM_Data range limit 124 ! resource-pool profile customer TDM_Switching limit base-size all limit overflow-size 0 resource TDM_Data digital resource TDM_Voice speech dnis group default dial-tdm-clock priority 1 6/0 ! ! ! ! ip subnet-zero ip cef ! isdn switch-type primary-net5 ! ! ! ! ! ! ! fax interface-type fax-mail mta receive maximum-recipients 0 ! controller E1 6/0 pri-group timeslots 1-31 ! controller E1 6/1 ! controller E1 6/2 ! controller E1 6/3 pri-group timeslots 1-31 ! controller E1 6/4 pri-group timeslots 1-31 ! controller E1 6/5 ! controller E1 6/6 ! controller E1 6/7 pri-group timeslots 1-31 ! translation-rule 1 Rule 1 ^.% 555 ! translation-rule 2 Rule 2 ^.% 666 ! ! ! interface FastEthernet0/0 no ip address duplex auto speed auto ! interface FastEthernet0/1 no ip address duplex auto speed auto ! interface Serial0/0 no ip address shutdown clockrate 2000000 ! interface Serial0/1 no ip address shutdown clockrate 2000000 ! interface Serial6/0:15 no ip address isdn switch-type primary-net5 isdn incoming-voice modem no cdp enable ! interface Serial6/3:15 no ip address isdn switch-type primary-net5 isdn incoming-voice modem no cdp enable ! interface Serial6/4:15 no ip address isdn switch-type primary-net5 isdn protocol-emulate network no cdp enable ! interface Serial6/7:15 no ip address isdn switch-type primary-net5 isdn protocol-emulate network no cdp enable ! interface Group-Async0 physical-layer async no ip address ! ip classless ! no ip http server ! ! ! call rsvp-sync ! voice-port 6/0:D translate called 1 compand-type a-law ! voice-port 6/3:D translate called 2 compand-type a-law ! voice-port 6/4:D compand-type a-law ! voice-port 6/7:D compand-type a-law ! ! mgcp profile default ! dial-peer cor custom ! ! ! dial-peer voice 1 pots incoming called-number direct-inward-dial port 6/0:D ! dial-peer voice 2 pots incoming called-number direct-inward-dial port 6/3:D ! dial-peer voice 10 pots destination-pattern 55598842304 port 6/3:D prefix 94344600 ! dial-peer voice 11 pots destination-pattern 66698842305 port 6/0:D prefix 94344600 ! dial-peer voice 3 pots incoming called-number direct-inward-dial port 6/4:D ! dial-peer voice 4 pots incoming called-number direct-inward-dial port 6/7:D ! dial-peer voice 12 pots destination-pattern 5551000 port 6/7:D prefix 5552000 ! dial-peer voice 13 pots destination-pattern 5552000 port 6/4:D prefix 5551000 ! ! line con 0 line aux 0 line vty 0 4 password cisco login ! scheduler allocate 10000 400 ntp master end multi-5-19#
使用本部分可排除配置故障。
命令输出解释程序(仅限注册用户)(OIT) 支持某些 show 命令。使用 OIT 可查看对 show 命令输出的分析。
排除ISDN中继故障时,可以使B信道忙。在CAS中继的控制器配置模式下发出ds0 busyout X命令。
Router(config-controller)#ds0 busyout X
要占线CCS或PRI ISDN中继,请在接口配置模式下使用isdn service b_channel X state 2命令。
对于T1:
Router(config)#interface serial 0:23
对于E1:
Router(config)#interface serial 0:15 Router(config-if)#isdn service b_channel X state 2
有效状态为0=Inservice、1=Maint、2=Outofservice,X是CCS和CAS配置中的B通道编号。
show isdn service命令可用于查找每个B信道的状态。
注意:在使用debug命令之前,请参阅有关Debug命令的重要信息。
正常的ISDN和IOS转换规则调试可用于排除TDM交换故障。
debug translation detailed — 显示有关IOS转换规则操作的信息,以便监控被叫号码或主叫号码的数字操作。
debug isdn q931 — 显示有关本地路由器(用户端)和网络之间ISDN网络连接(第3层)的呼叫建立和拆卸的信息。
这些命令输出是调试转换详细(IOS转换规则调试)的跟踪,以及为交换到端口6/3的端口6/0上的语音呼叫启用的调试isdn q931。
multi-5-19#debug translation detailed *Jan 1 00:20:53.215: ISDN Se6/0:15: RX <- SETUP pd = 8 callref = 0x1D79 *Jan 1 00:20:53.215: Bearer Capability i = 0x8090A3 *Jan 1 00:20:53.215: Channel ID i = 0xA18395 *Jan 1 00:20:53.215: Called Party Number i = 0x80, '98842304', Plan:Unknown, Type:Unknown !--- Receive a setup message on interface 6/0:15 for a !--- speech call with a called number of 98842304. !--- Speech call is indicated by the bearer capability of 0x8090A3 : !--- 64 Kbps A-law PCM audio/speech. !--- IOS Translation rule number 1 prepends '555' to the original !--- called number when it passes through port 6/0. *Jan 1 00:20:53.219: xrule_checking *Jan 1 00:20:53.219: xrule_checking calling , called 98842304 *Jan 1 00:20:53.219: xrule_checking peer_tag 0, direction 1, protocol 6 *Jan 1 00:20:53.219: xrule_translation *Jan 1 00:20:53.219: xrule_translation callednumber 98842304, strlen 8 *Jan 1 00:20:53.219: xrule_translation callednumber 98842304 xruleCalledTag=1 *Jan 1 00:20:53.219: xrule_translation called Callparms Numpertype 0x80, match_type 0x0 *Jan 1 00:20:53.219: xrule_translation Xrule index 1, Numpertype 0x9 *Jan 1 00:20:53.219: dpMatchString, target_number 98842304, match_number ^.% *Jan 1 00:20:53.219: dpMatchString match_tmp , match_len 0 *Jan 1 00:20:53.219: dpMatchString beginning_replace 0, match_tmp ,target 98842304 *Jan 1 00:20:53.219: dpMatchString 1. target 98842304,match_tmp *Jan 1 00:20:53.219: dpMatchString 1.1 compare_len 0, target 98842304, match_tmp *Jan 1 00:20:53.219: dpMatchString 5. match_len=compare_len 0, target 98842304 *Jan 1 00:20:53.219: replace_string *Jan 1 00:20:53.219: replace_string match ^.%, replace 555 *Jan 1 00:20:53.219: translation_format replace_rule ^.%, strip_proceeding 0 *Jan 1 00:20:53.219: replace_string match_tmp ^.%, strip_proceeding 0 *Jan 1 00:20:53.219: replace_string match_tmp *Jan 1 00:20:53.219: replace_string direction 1, callparty 2 *Jan 1 00:20:53.219: replace_string direction 1, callparty 2, target 98842304 *Jan 1 00:20:53.219: replace_string match_tmp ,replace 555 *Jan 1 00:20:53.219: replace_string2.replace1,target98842304,current98842304,match_tmp *Jan 1 00:20:53.219: replace_string2.1 compare_len 0,match_len 0 *Jan 1 00:20:53.219: replace_string 3. replace1 , compare_len 0 *Jan 1 00:20:53.219: replace_string 4. replace1 5,compare_len -1,replace 55 *Jan 1 00:20:53.219: replace_string 4. replace1 55,compare_len -2,replace 5 *Jan 1 00:20:53.219: replace_string 4. replace1 555,compare_len -3,replace *Jan 1 00:20:53.219: replace_string 5.replace1 555, compare_len -3,match_len 0 *Jan 1 00:20:53.219: replace_string 6. replace1 555,compare_len -3,current 98842304 *Jan 1 00:20:53.219: replace_string 7. replace1 5559 *Jan 1 00:20:53.219: replace_string 7. replace1 55598 *Jan 1 00:20:53.219: replace_string 7. replace1 555988 *Jan 1 00:20:53.219: replace_string 7. replace1 5559884 *Jan 1 00:20:53.219: replace_string 7. replace1 55598842 *Jan 1 00:20:53.219: replace_string 7. replace1 555988423 *Jan 1 00:20:53.219: replace_string 7. replace1 5559884230 *Jan 1 00:20:53.219: replace_string 7. replace1 55598842304 *Jan 1 00:20:53.219: replace_string buffer 55598842304 *Jan 1 00:20:53.219: xrule_translation index 1,xrule_number 55598842304, callparty 2 *Jan 1 00:20:53.219: xrule_translation Return rc = 0 *Jan 1 00:20:53.219: xrule_checking Return rc = 0 *Jan 1 00:20:53.223: ISDN Se6/0:15: TX -> CALL_PROC pd = 8 callref = 0x9D79 *Jan 1 00:20:53.223: Channel ID i = 0xA98395 !--- Send a call proceeding back to the ISDN. *Jan 1 00:20:53.227: ISDN Se6/3:15: TX -> SETUP pd = 8 callref = 0x0005 *Jan 1 00:20:53.227: Bearer Capability i = 0x8090A3 *Jan 1 00:20:53.227: Channel ID i = 0xA9839F *Jan 1 00:20:53.227: Called Party Number i = 0x80, '0401890165', Plan:Unknown, Type:Unknown !--- Match has been made on outgoing POTS dial-peer !--- and a new call is sent out on 6/3:15. *Jan 1 00:20:53.371: ISDN Se6/3:15: RX <- CALL_PROC pd = 8 callref = 0x8005 *Jan 1 00:20:53.371: Channel ID i = 0xA1839F *Jan 1 00:20:53.371: ISDN Se6/3:15: RX <- ALERTING pd = 8 callref = 0x8005 !--- Receive alerting on the second (outgoing) call leg. *Jan 1 00:20:53.375: ISDN Se6/0:15: TX -> ALERTING pd = 8 callref = 0x9D79 *Jan 1 00:20:53.375: Progress Ind i = 0x8188 - In-band info or appropriate now available !--- Send alerting on the first (incoming) call leg. *Jan 1 00:21:00.095: ISDN Se6/3:15: RX <- CONNECT pd = 8 callref = 0x8005 *Jan 1 00:21:00.095: ISDN Se6/3:15: TX -> CONNECT_ACK pd = 8 callref = 0x0005 *Jan 1 00:21:00.099: ISDN Se6/0:15: TX -> CONNECT pd = 8 callref = 0x9D79 *Jan 1 00:21:00.247: ISDN Se6/0:15: RX <- CONNECT_ACK pd = 8 callref = 0x1D79 !--- Both calls connect. *Jan 1 00:21:00.247: ISDN Se6/0:15: CALL_PROGRESS:CALL_CONNECTED call id 0x5, bchan 20, dsl0 *Jan 1 00:21:37.591: ISDN Se6/0:15: RX <- DISCONNECT pd = 8 callref = 0x1D79 *Jan 1 00:21:37.591: Cause i = 0x8290 - Normal call clearing !--- Receive a disconnect on incoming call leg. *Jan 1 00:21:37.595: ISDN Se6/0:15: TX -> RELEASE pd = 8 callref = 0x9D79 *Jan 1 00:21:37.599: ISDN Se6/3:15: TX -> DISCONNECT pd = 8 callref = 0x0005 *Jan 1 00:21:37.599: Cause i = 0x8090 - Normal call clearing !--- Send a disconnect on the outgoing call leg. *Jan 1 00:21:37.631: ISDN Se6/0:15: RX <- RELEASE_COMP pd = 8 callref = 0x1D79 *Jan 1 00:21:37.723: ISDN Se6/3:15: RX <- RELEASE pd = 8 callref = 0x8005 *Jan 1 00:21:37.723: Cause i = 0x8290 - Normal call clearing *Jan 1 00:21:37.723: ISDN Se6/3:15: TX -> RELEASE_COMP pd = 8 callref = 0x0005 !--- Both calls have cleared.
这是debug isdn q931命令的命令输出。这些跟踪显示从端口6/4到端口6/7的ISDN数据呼叫。
Jun 19 13:36:02.091: ISDN Se6/4:15: RX <- SETUP pd = 8 callref = 0x0005 Jun 19 13:36:02.091: Bearer Capability i = 0x8890 Jun 19 13:36:02.091: Channel ID i = 0xA9839F Jun 19 13:36:02.095: Called Party Number i = 0x81, '5551000', Plan:ISDN, Type:Unknown !--- Call comes in on port 6/4 for 5551000. Bearer Capability !--- is 0x8890, which indicates 64 K data call. Jun 19 13:36:02.095: ISDN Se6/4:15: TX -> CALL_PROC pd = 8 callref = 0x8005 Jun 19 13:36:02.095: Channel ID i = 0xA9839F Jun 19 13:36:02.099: ISDN Se6/7:15: TX -> SETUP pd = 8 callref = 0x0085 Jun 19 13:36:02.099: Bearer Capability i = 0x8890 Jun 19 13:36:02.099: Channel ID i = 0xA98381 Jun 19 13:36:02.099: Called Party Number i = 0x81, '5552000', Plan:ISDN, Type:Unknown !--- Redirect the call out on port 6/7, (new) called !--- number is 5552000 with data bearer capability. Jun 19 13:36:02.155: ISDN Se6/7:15: RX <- CALL_PROC pd = 8 callref = 0x8085 Jun 19 13:36:02.155: Channel ID i = 0xA98381 Jun 19 13:36:02.159: ISDN Se6/7:15: RX <- CONNECT pd = 8 callref = 0x8085 Jun 19 13:36:02.159: Channel ID i = 0xA98381 !--- Second call leg connects. Jun 19 13:36:02.159: ISDN Se6/7:15: TX -> CONNECT_ACK pd = 8 callref = 0x0085 Jun 19 13:36:02.163: ISDN Se6/4:15: CALL_PROGRESS:CALL_CONNECTED call id 0x7,bchan 30, dsl 2 Jun 19 13:36:02.163: ISDN Se6/4:15: TX -> CONNECT pd = 8 callref = 0x8005 !--- First call leg connects. Jun 19 13:36:02.215: ISDN Se6/4:15: RX <- CONNECT_ACK pd = 8 callref = 0x0005 Jun 19 13:38:12.783: ISDN Se6/4:15: RX <- DISCONNECT pd = 8 callref = 0x0005 Jun 19 13:38:12.783: Cause i = 0x8090 - Normal call clearing !--- Remote device drops the call, first call leg disconnects. Jun 19 13:38:12.787: ISDN Se6/4:15: TX -> RELEASE pd = 8 callref = 0x8005 Jun 19 13:38:12.787: ISDN Se6/7:15: TX -> DISCONNECT pd = 8 callref = 0x0085 Jun 19 13:38:12.787: Cause i = 0x8290 - Normal call clearing !--- Second call leg is dropped. Jun 19 13:38:12.807: ISDN Se6/7:15: RX <- RELEASE pd = 8 callref = 0x8085 Jun 19 13:38:12.851: ISDN Se6/4:15: RX <- RELEASE_COMP pd = 8 callref = 0x0005 !--- Both calls have cleared.