此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍陆地移动无线电(LMR)或Hoot and Holler(Hootie)功能,该功能允许模拟设备通过启用组播的LAN与其他(模拟和IP)终端通信。
语音网关充当IP网络和模拟端点之间的分界点,促进模拟音频和组播实时传输协议(RTP)之间的会话。
作者:Kyzer Davis和Matt Snow,Cisco TAC工程师。
Cisco 建议您了解以下主题:
! license boot level appxk9 license boot level uck9 ! or
license boot suite FoundationSuiteK9
license boot suite AdvUCSuiteK9
注意:本文档未涉及LAN或WAN上组播配置的许多方面。请参阅相关文档,以启用网络路径中LAN或WAN设备上的组播。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
ISR4451# show inventory NAME: "Chassis", DESCR: "Cisco ISR4451 Chassis" PID: ISR4451-X/K9 , VID: V03 , SN: XXXXXXXXX NAME: "NIM subslot 0/3", DESCR: "NIM-4E/M Voice Analog Module" PID: NIM-4E/M , VID: V01 , SN: XXXXXXXXX
注意:在ISR 4000语音网关上使用模拟NIM卡,使用本地DSP。 因此不需要主板DSP。
潜在使用案例:
注意:以下是一些示例使用案例。应用程序不限于这些功能。
最初的LMR设计指南不包括最新一代思科语音网关所需的项目。因此,本文档旨在介绍有关IOS-XE设备(如ISR 4300和4400系列语音网关)的LMR/Hootie功能。
以下是示例拓扑;
第7层信令和媒体
Analog Endpoint <> Ear and Mouth (E&M) Port <> Cisco Voice Gateway (4451-X) <> Multicast Enabled LAN <> IP Endpoint.
提示:请记住,由于IP主干使用组播,语音网关只需能够成功加入所需的组播组。语音网关并不了解其他终端,也不直接与其通信,因此本文档详细说明了一个LMR/Hootie语音网关中的示例配置、调试、显示命令和故障排除。
步骤1.您必须首先配置运行语音和组播功能所需的IOS-XE许可证。
config t ! license boot level appxk9 license boot level uck9
! or
license boot suite FoundationSuiteK9
license boot suite AdvUCSuiteK9 ! exit ! wr ! reload !
设备重新通电后,验证许可证状态是否与以下show命令输出匹配:
ISR4451# show license feature Feature name Enforcement Evaluation Subscription Enabled RightToUse appxk9 yes yes no yes yes uck9 yes yes no yes yes
步骤2.接下来,定义包含所需组播IP和端口的组播IP拨号对等体;
! dial-peer voice 33333 voip
destination-pattern 33333
session protocol multicast
session target ipv4:239.X.X.X:21000
codec g711ulaw
vad aggressive !
Dial-peer命令语法:
CLI命令 | 描述 |
destination-pattern <number> | 拨号对等体的Match语句。拨号对等体必须可用。 |
会话协议组播 | 指示设备此拨号对等体用于IP组播功能。 |
会话目标ipv4:<a.b.c.d.>:xxxxx | 这是语音网关加入以发送/接收组播RTP的组播组的IP和端口。 |
codec <codec> |
定义用于组播RTP数据包的编解码器。支持的编解码器为G711ulaw、G711alaw、G729和G726。 |
[no] vad [aggressive] |
当您使用命令no vad禁用VAD时,您将禁用此RTP流的语音活动检测。 使用命令vad aggressive时,VAD噪声阈值将从–78降低到–62 dBm。低于–62 dBm阈值的噪声被视为静音,不会通过网络发送。此外,未知数据包将被视为静默数据包并被丢弃。来源 注意:使用vad aggressive,由于不需要从LMR路由器发送数据包,因此在show ip mroute中可能看不到VIF。 |
步骤3.为便于组播组与模拟端口的此语音网关之间的永久(始终开启)连接,必须定义voice-class permanent,然后将其应用于语音端口。
! voice class permanent 1 signal timing oos timeout disabled signal keepalive disabled !
voice-port 0/1/0
voice-class permanent 1
!
voice class permanent命令语法
CLI命令 | 描述 | 来源 |
signal timing oos timeout { disabled | <seconds> } | 禁用信令丢失检测。或者,可以配置秒数。 | 命令语法指南 |
signal keepalive { disabled | <seconds> } | 指定keepalive信令数据包间隔(以秒为单位)。已禁用不会发送keepalive。 | 命令语法指南 |
然后为E&M端口配置所需类型的连接语音端口,然后配置命令。(E&M或本文档未涵盖的其他模拟特定配置。
步骤4. Cisco hoot and holler over IP提供永远在线的通信网桥。最终用户无需拨打任何电话号码即可与热键组的其他成员联系。为了模拟此功能,Cisco IOS提供了称为Connection Trunk的功能。连接中继提供永久语音呼叫,不需要最终用户进行任何输入,因为所有数字均由路由器/网关内部拨号。
此连接中继将语音端口绑定到您在拨号对等体配置步骤中配置的组播地址。
!
voice-port 0/1/0 connection trunk 33333 !
模拟端口命令语法
CLI命令 | 描述 | 来源 |
connection trunk <number> | 指定模拟到PBX的永久中继连接的连接。如果没有任何激活呼叫,中继连接将保持永久性。 | 命令语法指南 |
步骤5.语音配置完成后,您需要定义组播配置。
! ip multicast-routing distributed !
interface GigabitEthernet0/0/1
ip address Y.Y.Y.Y 255.255.255.0
ip pim sparse-mode
! interface Vif1
ip address 192.0.2.2 255.255.255.0
ip pim sparse-mode
!
interface Service-Engine0/1/0
ip pim sparse-mode
!
ip pim rp-address 2.x.x.x
!
有关组播配置的说明:
使用本部分可确认配置能否正常运行。
当配置完成时,永久连接将恢复正常。您可以使用此show命令输出进行验证;
ISR4451# show call active voice compact <callID> A/O FAX T<sec> Codec type Peer Address IP R<ip>:<udp> VRF Total call-legs: 2 115 ANS T24 g711ulaw TELE P 116 ORG T0 g711ulaw VOIP P33333 239.X.X.X:21000
ISR4451# show voip rtp connections VoIP RTP Port Usage Information: Max Ports Available: 19999, Ports Reserved: 101, Ports in Use: 0 Port range not configured Min Max Ports Ports Ports Media-Address Range Port Port Available Reserved In-use ------------------------------------------------------------------------------ Global Media Pool 8000 48198 19999 101 0 ------------------------------------------------------------------------------ VoIP RTP active connections : No. CallId dstCallId LocalRTP RmtRTP LocalIP RemoteIP MPSS VRF 1 116 115 15986 21000 192.0.2.1 239.X.X.X NO NA Found 1 active RTP connections
ISR4451# show voice port summary IN OUT PORT CH SIG-TYPE ADMIN OPER STATUS STATUS EC =============== == ============ ===== ==== ======== ======== == 0/3/1 -- e&m-imd up up trunked trunked y
ISR4451# show voice call summary PORT CODEC VAD VTSP STATE VPM STATE ============== ========= === ===================== ===================== 0/3/1 g711ulaw y S_CONNECT S_TRUNKED
ISR4451# show voice call status CallID CID ccVdb Port Slot/Bay/DSP:Ch Called # Codec MLPP Dial-peers 0x73 12D0 0x7F7475CF8C08 0/3/1 0/3/1:1 33333 g711ulaw 4 777 33333777/33333 1 active call found
ISR4451# show voice trunk-conditioning supervisory FAST SCAN 0/3/1 : state : TRUNK_SC_CONN_DEFAULT_OOS, voice : off , signal : on ,master status: lost keepalive, trunk connected sequence oos : idle and oos pattern :rx_idle = 0000 rx_oos = 1111 timeout timing : idle = 0, idle_off = 0, restart = 120, standby = 0, timeout = 30 supp_all = 0, supp_voice = 0, keep_alive = 5 timer: oos_ais_timer = 46, timer = 43 ISR4451# show voice trunk-conditioning signaling 0/3/1 : hardware-state ACTIVE signal type is NorthamericanCAS status : lost keepalive, forced playout pattern = 0xF idle monitoring : disabled tx_idle = FALSE, rx_idle = FALSE, tx_oos = FALSE, lost_keepalive = TRUE trunk_down_timer = 0, rx_ais_duration = 0, idle_timer = 0,tx_oos_timer = 0
要验证IP到模拟的复制,请先检查新的IOS-XE命令:
ISR4451# show platform hardware qfp active feature sbc hootie group SBC Hootie structure : --------------------------------------- VRF = 0 IP = 239.X.X.X Port = 21000 Protocol = 1 Calls in group = 1 SBC Hootie group Statistics --------------------------------------- Total RTP packets received = 2873 Total RTP octects received = 573520 Total RTP packets replicated = 2873 Total RTP octects replicated = 573520 Total RTP packets dropped = 0 Total RTP octects dropped = 0 ISR4451# show platform hardware qfp active feature sbc hootie group SBC Hootie structure : --------------------------------------- VRF = 0 IP = 239.X.X.X Port = 21000 Protocol = 1 Calls in group = 1 SBC Hootie group Statistics --------------------------------------- Total RTP packets received = 3111 Total RTP octects received = 621032 Total RTP packets replicated = 3111 Total RTP octects replicated = 621032 Total RTP packets dropped = 0 Total RTP octects dropped = 0
验证PIM邻居:
ISR4451# show ip pim neighbor PIM Neighbor Table Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority, P - Proxy Capable, S - State Refresh Capable, G - GenID Capable, L - DR Load-balancing Capable Neighbor Interface Uptime/Expires Ver DR Address Prio/Mode Y.Y.Y.Y GigabitEthernet0/0/1 00:20:13/00:01:41 v2 1 / DR S P G
验证mroute输出是否正确:
ISR4451# show ip mroute [snip] (192.0.2.1, 239.X.X.X), 00:01:08/00:02:20, flags: FT Incoming interface: Vif1, RPF nbr 0.0.0.0 Outgoing interface list: GigabitEthernet0/0/1, Forward/Sparse, 00:01:08/00:03:19
验证列表中是否包含组播RP:
ISR4451# show ip igmp member Flags: A - aggregate, T - tracked L - Local, S - static, V - virtual, R - Reported through v3 I - v3lite, U - Urd, M - SSM (S,G) channel 1,2,3 - The version of IGMP, the group is in Channel/Group-Flags: / - Filtering entry (Exclude mode (S,G), Include mode (G)) Reporter: <mac-or-ip-address> - last reporter if group is not explicitly tracked <n>/<m> - <n> reporter in include mode, <m> reporter in exclude Channel/Group Reporter Uptime Exp. Flags Interface *,239.X.X.X 192.0.2.2 00:01:16 01:43 2VA Vi1
验证组播数据包复制:
RP# show ip mroute count [snip] Group: 239.X.X.X, Source count: 1, Packets forwarded: 2107, Packets received: 2108 RP-tree: Forwarding: 2/0/56/0, Other: 2/0/0 Source: 192.168.19.1/32, Forwarding: 2105/50/158/80, Other: 2106/0/1
RP# show ip mroute count [snip] Group: 239.X.X.X, Source count: 1, Packets forwarded: 2190, Packets received: 2191 RP-tree: Forwarding: 2/0/56/0, Other: 2/0/0 Source: 192.168.19.1/32, Forwarding: 2188/50/159/80, Other: 2189/0/1
思科 CLI 分析器(仅适用于注册客户)支持某些 show 命令。要查看对 show 命令输出的分析,请使用思科 CLI 分析器。
本部分提供了可用于对配置进行故障排除的信息。
如果连接未建立,请首先通过以下调试检验信令:
debug vpm signal debug voip vtsp session debug voip ccapi inout
调试示例:
123165: Oct XX 13:21:55.563: htsp_process_event: [0/3/1, S_DOWN, E_HTSP_IF_INSERVICE] 123166: Oct XX 13:21:55.564: %LINK-3-UPDOWN: Interface recEive and transMit 0/3/1, changed state to up 123167: Oct XX 13:21:55.564: recEive and transMit 0/3/1 rx_signal_map: 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 123168: Oct XX 13:21:55.564: recEive and transMit 0/3/1 tx_signal_map: 0 0 0 0 0 0 0 0 C C C C C C C C 123169: Oct XX 13:21:55.564: htsp_process_event: [0/3/1, S_OPEN_PEND, E_HTSP_GO_TRUNK]em_trunk_null_init 123170: Oct XX 13:21:55.564: flex_set_Legerity_impedance: [0/3/1] impedance = 0 123171: Oct XX 13:21:55.704: htsp_process_event: [0/3/1, S_TRUNK_NULL, E_HTSP_INSERVE]default_trunk_down 123172: Oct XX 13:21:55.704: htsp_timer - 6204 msec 123173: Oct XX 13:21:55.919: %SYS-5-CONFIG_I: Configured from console by vty3 (192.168.19.2) 123174: Oct XX 13:22:01.908: htsp_process_event: [0/3/1, S_TRUNK_PEND, E_HTSP_EVENT_TIMER] 123175: Oct XX 13:22:01.908: htsp_timer_stop htsp_setup_ind 123176: Oct XX 13:22:01.908: [0/3/1] get_local_station_id calling num= calling name= calling time=10/08 13:22 orig called= 123177: Oct XX 13:22:01.908: htsp_timer - 2000 msec 123181: Oct XX 13:22:01.909: //-1/80F08D0180E8/CCAPI/cc_api_call_setup_ind_common: Interface=0x7F7475CF8C08, Call Info( Calling Number=,(Calling Name=)(TON=Unknown, NPI=Unknown, Screening=Not Screened, Presentation=Allowed), Called Number=33333(TON=Unknown, NPI=Unknown), Calling Translated=FALSE, Subscriber Type Str=RegularLine, FinalDestinationFlag=TRUE, Incoming Dial-peer=777, Progress Indication=ORIGINATING SIDE IS NON ISDN(3), Calling IE Present=FALSE, Source Trkgrp Route Label=, Target Trkgrp Route Label=, CLID Transparent=FALSE), Call Id=-1 123203: Oct XX 13:22:01.911: //115/80F08D0180E8/CCAPI/ccCallSetupRequest: Calling Number=(TON=Unknown, NPI=Unknown, Screening=Not Screened, Presentation=Allowed), Called Number=33333(TON=Unknown, NPI=Unknown), Redirect Number=, Display Info= Account Number=, Final Destination Flag=TRUE, Guid=80F08D01-CA55-11E8-80E8-8E0AC3C8E4C4, Outgoing Dial-peer=33333 123252: Oct XX 13:22:01.914: //116/80F08D0180E8/CCAPI/cc_api_caps_ack: Destination Interface=0x7F7475CF8C08, Destination Call Id=115, Source Call Id=116, Caps(Codec=g711ulaw(0x1), Fax Rate=FAX_RATE_VOICE(0x2), Fax Version:=0, Vad=AGGRESSIVE(0x4), Modem=OFF(0x0), Codec Bytes=160, Signal Type=2, Seq Num Start=2165) 123253: Oct XX 13:22:01.914: //115/80F08D0180E8/CCAPI/cc_api_caps_ack: Destination Interface=0x7F7471175B68, Destination Call Id=116, Source Call Id=115, Caps(Codec=g711ulaw(0x1), Fax Rate=FAX_RATE_VOICE(0x2), Fax Version:=0, Vad=AGGRESSIVE(0x4), Modem=OFF(0x0), Codec Bytes=160, Signal Type=2, Seq Num Start=2165)
123255: Oct XX 13:22:01.914: //115/80F08D0180E8/VTSP:(0/3/1):-1:1:1/vtsp_call_connect: Connected Name 123256: Oct XX 13:22:01.914: //115/80F08D0180E8/VTSP:(0/3/1):-1:1:1/vtsp_call_connect: Connected Number 33333 123257: Oct XX 13:22:01.914: //115/80F08D0180E8/VTSP:(0/3/1):-1:1:1/vtsp_call_connect: Connected oct3a 0 123258: Oct XX 13:22:01.914: //115/80F08D0180E8/CCAPI/ccCallConnect: Call Entry(Connected=TRUE, Responsed=TRUE) 123265: Oct XX 13:22:01.916: htsp_process_event: [0/3/1, S_TRUNK_W_CUTTHRU, E_HTSP_VOICE_CUT_THROUGH] 123266: Oct XX 13:22:01.916: send_trunk_dsp_voice_chnl_mapping:[0/3/1], 1/0/0 123267: Oct XX 13:22:01.916: send_trunk_dsp_sig_chnl_mapping:[0/3/1], 129/0/0 123268: Oct XX 13:22:01.916: recEive and transMit 0/3/1 rx_signal_map: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 default_trunk_up 123269: Oct XX 13:22:01.916: recEive and transMit 0/3/1 tx_signal_map: 0 0 0 0 0 0 0 0 F F F F F F F F default_trunk_updefault_trunk_up 123270: Oct XX 13:22:01.916: recEive and transMit 0/3/1 rx_signal_map: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 default_trunk_up 123271: Oct XX 13:22:01.916: recEive and transMit 0/3/1 tx_signal_map: 0 0 0 0 0 0 0 0 F F F F F F F F default_trunk_up 123272: Oct XX 13:22:01.916: %HTSP-5-UPDOWN: Trunk port(channel) [0/3/1] is up
如果看到此错误,则是由于拨号对等体上的session protocol multicast命令不可用。
%VOICE_IEC-3-GW: H323: Internal Error (H225 chn, sock fail in RAS): IEC=1.1.186.5.81.0
如果问题出在无音频上,请验证语音网关是否已正确加入组播组。有关工作设备的基线输出,请参阅本文档验证部分中的命令输出。特定组播组的show ip mroute命令的传出接口决不能为Null。如果看到为Null的传出接口,请检查组播LAN的适用网络配置,因为这表明语音网关无法正确加入组播组。
Null传出接口示例:
Router# show ip mroute 239.X.X.X (*, 239.X.X.X), 00:22:02/stopped, RP 10.188.0.1, flags: SJCF Incoming interface: GigabitEthernet0/0/1, RPF nbr X.X.X.X Outgoing interface list: Vif1, Forward/Sparse-Dense, 00:18:27/00:02:32 (A.B.C.D, 239.X.X.X), 00:20:34/00:01:23, flags: PFT Incoming interface: Vif1, RPF nbr 0.0.0.0 Outgoing interface list: Null
如果设备在组播组中正确但音频问题依然存在,请使用命令show platform hardware qfp active feature sbc hootie group多次验证设备是否可以接收和复制数据包。每次运行该命令时,计数器必须增加。或者,可以运行show platform hardware qfp active statistics drop命令以查看语音网关是否丢弃流量。要清除这些计数器,请运行show platform hardware qfp active statistics drop clear命令。
如果未配置IP multicast-routing,则Ipv4mcNoRoute增量的丢弃原因如下所示:
4451# show platform hardware qfp active statistics drop ------------------------------------------------------------------------- Global Drop Stats Packets Octets ------------------------------------------------------------------------- Ipv4mcNoRoute 728 145272
其他音频问题(例如网关无法将从模拟端收到的组播RTP数据包复制到IP端的问题)可能会因组播配置问题而发生。当观察到这些丢包时,这些问题可能表现为丢包原因FIAError。观察这些情况时,查看适用的组播配置,确保网关可以正确加入组播组,并且show ip mroute命令具有有效的输出接口。请参阅本文档的多播部分,了解基线命令输出。
4451# show platform hardware qfp active statistics drop ------------------------------------------------------------------------- Global Drop Stats Packets Octets ------------------------------------------------------------------------- FIAError 724 144800
如果未启用组播路由,则显示ip mroute states的输出。
ISR4451# sh ip mroute IP Multicast Forwarding is not enabled.
[snip]
为了验证语音端口上是否发送或接收了模拟音频,您可以捕获PCM。完整的PCM文档
conf t voice pcm capture buffer 200000 voice pcm capture destination bootflash: exit ! test voice port 0/1/0 pcm-dump caplog ffffff duration 255 ! send audio test voice port 0/1/0 pcm-dump disable ! copy flash:/<filename>.dat [ftp://user:pass@ip.address/filename.pcap | tftp://a.b.c.d/filename] ! TAC is required to decode the binary .dat file into SIN/SOUT/RIN audio streams
为了验证是否发送或接收了组播RTP,您可以在物理接口上进行数据包捕获(PCAP)。完整的EPC文档。
! NOT IN CONFIGURATION TERMINAL monitor capture TAC int gig0/0/1 both monitor capture TAC match any ! monitor capture TAC start ! send audio monitor capture TAC stop ! monitor capture TAC export [flash:/filename.pcap | ftp://user:pass@ip.address/filename.pcap | tftp://a.b.c.d/filename] ! monitor capture TAC clear
如果需要,测试音可由语音网关上的DSP/PVDM在所需方向(网络 — IP-LAN端或本地模拟端口端)生成。
此音调可以定向到DSP以指向IP LAN组播地址。这些命令可用于启用/禁用。连接必须处于活动状态,并且您必须指定用于测试的模拟端口。
test voice port 0/1/0 inject-tone network 1000 ! A 1000hz tone is now being generated from the analog port to the IP LAN Multicast Address test voice port 0/1/0 inject-tone network disable
为了从DSP到模拟端口外生成声音,可以使用这些命令启用/禁用。连接必须处于活动状态,并且您必须指定用于测试的模拟端口。
test voice port 0/1/0 inject-tone local 1000 ! A 1000hz tone is now being generated out of the analog port. test voice port 0/1/0 inject-tone local disable
下载VLC Media Player并导航到Media > Open Network Stream
以此格式输入组播RTP IP地址并按播放
rtp://@239.X.X.X:21000
然后下载并打开Wireshark。然后选择数据包捕获所需的特定接口。
使用rtp过滤器开始捕获。
如果一切顺利,您必须加入组播RP。(可以从RP运行相同的组播命令以验证加入组播组的PC)。
通过tone命令生成音频或让模拟终端发言。
现在,您必须在wireshark中看到数据包。请记住,源IP必须是VIF IP减去1,因此我们的测试必须是192.0.2.2 -1 = 192.0.2.1。
思科 CLI 分析器(仅适用于注册客户)支持某些 show 命令。要查看对 show 命令输出的分析,请使用思科 CLI 分析器。
注意:使用 debug 命令之前,请参阅有关 Debug 命令的重要信息。
CSCvd18792 - ISR4K - Hoot和Holler E&M端口不能与组播集线器共置
CSCve66876 - ISR4K — 丢弃来自DSP的数据包的组播RP注册
CSCve71893 - ISR4K - Hoot和Holler组播复制问题
版本 | 发布日期 | 备注 |
---|---|---|
2.0 |
29-Apr-2022 |
对文档进行细微更改 |
1.0 |
30-Oct-2018 |
初始版本 |