基础知识

必要条件

在将 CUBE HA 部署为 Webex Calling 的本地网关之前,确保深入了解以下概念:

本文中提供的配置准则是假定您采用了没有现行语音配置的专用本地网关平台。 如果要修改现有的 CUBE 企业版部署以同时利用 Cisco Webex Calling 的本地网关功能,请密切注意所应用的配置,以确保现有呼叫流程和功能不会中断,并确保遵守 CUBE HA 的设计要求。

硬件和软件组件

作为本地网关,CUBE HA 需要使用 IOS-XE V16.12.2 或更高版本以及同时支持 CUBE HA 和 LGW 功能的平台。


本文中的 show 命令和日志基于 vCUBE (CSR1000v) 上实施的 Cisco IOS-XE 16.12.2 的最低软件发行版。

参考资料

以下是各种平台的一些详细 CUBE HA 配置指南:

Webex Calling 解决方案概述

Cisco Webex Calling 是一款协作产品,可以为本地 PBX 电话服务提供基于多租户云的替代方案,并有多个 PSTN 选项可供客户选择。

本文重点介绍本地网关部署(如下所示)。 Webex Calling 中的本地网关(本地部署 PSTN)中继支持连接到客户自有的 PSTN 服务。 此外,它还提供与本地 IP PBX 部署(如 Cisco Unified CM)的连接。 所有与云之间的通信都将使用 TLS 传输(对于 SIP)和 SRTP(对于媒体)进行保护。

下图显示了没有任何现行 IP PBX 的 Webex Calling 部署,适用于单站点或多站点部署。 本文概述的配置基于此部署。

第 2 层设备对设备冗余

CUBE HA 第 2 层设备对设备冗余使用了冗余组 (RG) 基础结构协议来构成活动/待机路由器对。 此路由器对在各自的接口上共享同一个虚拟 IP 地址 (VIP),并持续交换状态消息。 系统将在路由器对之间就 CUBE 会话信息执行检查点检查,从而在活动路由器停止服务时让待机路由器立即接管所有的 CUBE 呼叫处理工作,以实现有状态信令和媒体保持。


检查点检查仅限于带有媒体数据包的已连接呼叫。 处于过渡状态的呼叫(例如处于尝试状态或振铃状态)不会执行检查点检查。

在本文中,CUBE HA 是指用于实现有状态呼叫保持的 CUBE 高可用性 (HA) 第 2 层设备对设备 (B2B) 冗余

从 IOS-XE 16.12.2 开始,可以将 CUBE HA 部署为 Cisco Webex Calling 中继(本地部署 PSTN)部署的本地网关,我们将在本文中介绍设计注意事项和配置。 此图显示了作为 Cisco Webex Calling 中继部署的本地网关的典型 CUBE HA 设置。

冗余组基础结构组件

冗余组 (RG) 基础结构组件将在两个 CUBE 之间提供设备对设备 (B2B) 通信基础结构支持,并协商最终的稳定冗余状态。 此外,该组件还提供:

  • 一种类似于 HSRP 的协议,用于通过在两个 CUBE 之间(经控制接口,即上图中的 GigabitEthernet3)交换 keepalive 消息和 hello 消息,从而协商每个路由器的最终冗余状态。

  • 一种传输机制,用于对从活动路由器传输到待机路由器(经数据接口,即上图中的 GigabitEthernet3)的每个呼叫的信令和媒体状态执行检查点检查。

  • 流量接口(可以使用同一个 RG 组来配置多个流量接口)的虚拟 IP (VIP) 接口配置和管理 - 上图中的 GigabitEthernet 1 和 GigabitEthernet 2 被视为流量接口。

该 RG 组件必须要明确地配置为支持语音 B2B HA。

用于信令和媒体的虚拟 IP (VIP) 地址管理

B2B HA 依靠 VIP 来实现冗余。 在 CUBE HA 对中,两个 CUBE 上的 VIP 和关联物理接口必须位于同一个 LAN 子网中。 要想支持语音 B2B HA,必须配置 VIP 并将 VIP 接口绑定到特定的语音应用程序 (SIP) 上。 外部设备(如 Unified CM、Webex Calling 接入 SBC、服务商或代理)将 VIP 用作穿越 CUBE HA 路由器的呼叫的目标 IP 地址。 因此,从 Webex Calling 的角度讲,CUBE HA 对将充当单个本地网关。

针对已建立的呼叫,系统将在活动路由器和待机路由器之间对其呼叫信令和 RTP 会话信息执行检查点检查。 当活动路由器关闭时,待机路由器会接管其工作,并继续转发先前由第一个路由器路由的 RTP 流。

切换后,将不会保留在执行故障转移时处于过渡状态的呼叫。 例如:未完全建立的呼叫,或是正在通过转接或保持功能进行修改的呼叫。 切换后,已建立的呼叫可能会被断开。

将 CUBE HA 用作本地网关以实现有状态呼叫故障转移时,必须满足以下要求:

  • CUBE HA 不能让 TDM 或模拟接口处于同一位置

  • Gig1 和 Gig2 被称为流量 (SIP/RTP) 接口,而 Gig3 为冗余组 (RG) 控制接口/数据接口

  • 最多可以在同一个第 2 层域中放置 2 个 CUBE HA 对,其中一个具有组标识 1,另一个具有组标识 2。 如果使用同一个组标识来配置 2 个 HA 对,则 RG 控制接口/数据接口必须属于不同的第 2 层域(vlan,单独的交换机)

  • RG 控制接口/数据接口和流量接口都支持端口通道

  • 所有信令/媒体均发送自/发送到虚拟 IP 地址

  • 每次在 CUBE HA 关系中重新加载某个平台时,该平台始终作为待机平台启动

  • 所有接口(Gig1、Gig2 和 Gig3)的低位地址都应该位于同一平台上

  • 在同一个第 2 层域中,一个对/接口组合的冗余接口标识符 (rii) 必须是唯一的

  • 两个 CUBE 的配置必须相同(包括物理配置),且必须在相同类型的平台和 IOS-XE 版本上运行

  • 环回接口不能用于绑定,因为它们始终处于打开状态

  • 多个流量 (SIP/RTP) 接口(Gig1 和 Gig2)要求配置接口跟踪

  • 在 RG 控制/数据链路 (Gig3) 的跨接线缆连接上,不支持 CUBE HA

  • 两个平台必须相同,且必须在所有类似接口之间通过物理交换机进行连接,这样 CUBE HA 才能正常工作。也就是说,CUBE-1 和 CUBE-2 的 GE0/0/0 必须端接到同一个交换机上,依此类推。

  • WAN 不能直接端接到 CUBE 上,且任一端不能端接到数据 HA 上

  • 活动/待机路由器必须位于同一个数据中心中

  • 必须为冗余使用单独的 L3 接口(RG 控制接口/数据接口,即 Gig3)。也就是说,用于流量的接口不能用于 HA keepalive 消息和检查点检查

  • 故障转移后,依照设计,先前的活动 CUBE 将进行重新加载,以实现信令和媒体保持

在两个 CUBE 上配置冗余

要想显示虚拟 IP,必须在计划用于 HA 对的两个 CUBE 上配置第 2 层设备对设备冗余。

1

在全局级别上配置接口跟踪功能,以跟踪接口的状态。

conf t
 track 1 interface GigabitEthernet1 line-protocol
 track 2 interface GigabitEthernet2 line-protocol
 exit
VCUBE-1#conf t
VCUBE-1(config)#track 1 interface GigabitEthernet1 line-protocol
VCUBE-1(config-track)#track 2 interface GigabitEthernet2 line-protocol
VCUBE-1(config-track)#exit
VCUBE-2#conf t
VCUBE-2(config)#track 1 interface GigabitEthernet1 line-protocol
VCUBE-2(config-track)#track 2 interface GigabitEthernet2 line-protocol
VCUBE-2(config-track)#exit

Track CLI 在 RG 中用于跟踪语音流量接口状态,以便在流量接口关闭后让活动路由退出其活动角色。

2

配置一个 RG,供在应用程序冗余子模式下与 VoIP HA 配合使用。

redundancy
  application redundancy
   group 1
    name LocalGateway-HA
    priority 100 failover threshold 75
    control GigabitEthernet3 protocol 1
    data GigabitEthernet3
    timers delay 30 reload 60
    track 1 shutdown
    track 2 shutdown
    exit
   protocol 1
    timers hellotime 3 holdtime 10
   exit
  exit
 exit
VCUBE-1(config)#redundancy
VCUBE-1(config-red)#application redundancy
VCUBE-1(config-red-app)#group 1
VCUBE-1(config-red-app-grp)#name LocalGateway-HA
VCUBE-1(config-red-app-grp)#priority 100 failover threshold 75
VCUBE-1(config-red-app-grp)#control GigabitEthernet3 protocol 1
VCUBE-1(config-red-app-grp)#data GigabitEthernet3
VCUBE-1(config-red-app-grp)#timers delay 30 reload 60
VCUBE-1(config-red-app-grp)#track 1 shutdown
VCUBE-1(config-red-app-grp)#track 2 shutdown
VCUBE-1(config-red-app-grp)#exit
VCUBE-1(config-red-app)#protocol 1
VCUBE-1(config-red-app-prtcl)#timers hellotime 3 holdtime 10
VCUBE-1(config-red-app-prtcl)#exit
VCUBE-1(config-red-app)#exit
VCUBE-1(config-red)#exit
VCUBE-1(config)#
VCUBE-2(config)#redundancy
VCUBE-2(config-red)#application redundancy
VCUBE-2(config-red-app)#group 1
VCUBE-2(config-red-app-grp)#name LocalGateway-HA
VCUBE-2(config-red-app-grp)#priority 100 failover threshold 75
VCUBE-2(config-red-app-grp)#control GigabitEthernet3 protocol 1
VCUBE-1(config-red-app-grp)#data GigabitEthernet3
VCUBE-2(config-red-app-grp)#timers delay 30 reload 60
VCUBE-2(config-red-app-grp)#track 1 shutdown
VCUBE-2(config-red-app-grp)#track 2 shutdown
VCUBE-2(config-red-app-grp)#exit
VCUBE-2(config-red-app)#protocol 1
VCUBE-2(config-red-app-prtcl)#timers hellotime 3 holdtime 10
VCUBE-2(config-red-app-prtcl)#exit
VCUBE-2(config-red-app)#exit
VCUBE-2(config-red)#exit
VCUBE-2(config)#

以下是对此配置中所使用的字段的说明:

  • redundancy - 进入冗余模式

  • application redundancy - 进入应用程序冗余配置模式

  • group - 进入冗余应用程序组配置模式

  • name LocalGateway-HA - 定义 RG 组的名称

  • priority 100 failover threshold 75 - 指定 RG 的初始优先级和故障转移阈值

  • timers delay 30 reload 60 - 配置延迟计时器和重新加载

    • 延迟计时器定义了接口打开后 RG 组初始化和角色协商的延迟时间(缺省值为 30 秒)。 范围是 0 到 10000 秒

    • Reload - 此字段定义了重新加载后 RG 组初始化和角色协商的延迟时间(缺省值为 60 秒)。 范围是 0 到 10000 秒

    • 建议使用缺省计时器,但您可以调整缺省计时器来适应启动/重新加载路由器期间可能发生的任何其他网络融合延迟,以确保路由后在已融合到某个稳定点的网络中进行 RG 协议协商。 例如,如果在故障转移之后发现新的待机路由器最多要用时 20 秒才从新的活动路由器收到第一个 RG HELLO 数据包,则应根据此延迟中的倍数关系将计时器调整为“timers delay 60 reload 120”。

  • control GigabitEthernet3 protocol 1 - 配置用于在两个 CUBE 之间交换 keepalive 消息和 hello 消息的接口,指定将附加到控制接口的协议实例,并进入冗余应用程序协议配置模式

  • data GigabitEthernet3 - 配置用于对数据流量执行检查点检查的接口

  • track - 接口的 RG 组跟踪

  • protocol 1 - 指定要附加到控制接口的协议实例,并进入冗余应用程序协议配置模式

  • timers hellotime 3 holdtime 10 - 配置 hellotime 计时器和 holdtime 计时器:

    • Hellotime - 两条连续 hello 消息之间的间隔(缺省值为 3 秒)。 范围是 250 毫秒到 254 秒

    • Holdtime - 从收到 Hello 消息到推定发送路由器已发生故障之间的间隔。 此持续时间必须大于 hellotime,缺省值为 10 秒。 范围是 750 毫秒到 255 秒

      建议将 holdtime 计时器配置为 hellotime 计时器的 3 倍或以上。

3

为 CUBE 应用程序启用设备对设备冗余。 在下列内容下配置上一步中的 RG voice service voip 。 这样,CUBE 应用程序就能够控制冗余过程。

voice service voip
   redundancy-group 1
   exit
VCUBE-1(config)#voice service voip
VCUBE-1(config-voi-serv)#redundancy-group 1
% Created RG 1 association with Voice B2B HA; reload the router for the new configuration to take effect
VCUBE-1(config-voi-serv)# exit
VCUBE-2(config)#voice service voip
VCUBE-2(config-voi-serv)#redundancy-group 1
% Created RG 1 association with Voice B2B HA; reload the router for the new configuration to take effect
VCUBE-2(config-voi-serv)# exit

redundancy-group 1 - 添加或删除此命令时,需要重新加载才能使更新后的配置生效。 我们将会在所有配置都已应用后再重新加载平台。

4

如下所示,为 Gig1 接口和 Gig2 接口配置相应的虚拟 IP,并应用冗余接口标识符 (rii)

VCUBE-1(config)#interface GigabitEthernet1
VCUBE-1(config-if)# redundancy rii 1
VCUBE-1(config-if)# redundancy group 1 ip 198.18.1.228 exclusive
VCUBE-1(config-if)# exit
VCUBE-1(config)#
VCUBE-1(config)#interface GigabitEthernet2
VCUBE-1(config-if)# redundancy rii 2
VCUBE-1(config-if)# redundancy group 1 ip 198.18.133.228 exclusive
VCUBE-1(config-if)# exit
VCUBE-2(config)#interface GigabitEthernet1
VCUBE-2(config-if)# redundancy rii 1
VCUBE-2(config-if)# redundancy group 1 ip 198.18.1.228 exclusive
VCUBE-2(config-if)# exit
VCUBE-2(config)#
VCUBE-2(config)#interface GigabitEthernet2
VCUBE-2(config-if)# redundancy rii 2
VCUBE-2(config-if)# redundancy group 1 ip 198.18.133.228 exclusive
VCUBE-v(config-if)# exit

以下是对此配置中所使用的字段的说明:

  • redundancy rii - 配置冗余组的冗余接口标识符。 生成虚拟 MAC (VMAC) 地址时会用到此标识符。 对于具有同一个 VIP 的每个路由器(活动/待机)而言,必须在其接口上使用相同的 rii ID 值。


     

    如果同一个 LAN 中有多个 B2B 对,那么每个对的相应接口上必须具有唯一的 rii ID(以防冲突)。 “show redundancy application group all”应指定正确的本地和对等连接信息。

  • redundancy group 1 - 将接口与上述步骤 2 中创建的冗余组相关联。 配置 RG 组以及分配给此物理接口的 VIP。


     

    必须为冗余使用单独的接口。也就是说,用于语音流量的接口不能用作上述步骤 2 中指定的控制接口和数据接口。 在本例中,千兆位接口 3 用作 RG 控制接口/数据接口

5

保存第一个 CUBE 的配置,然后重新加载。

最后要重新加载的平台始终为待机平台。

VCUBE-1#wr
Building configuration...
[OK]
VCUBE-1#reload
Proceed with reload? [confirm]

VCUBE-1 完全启动后,保存 VCUBE-2 的配置,然后重新加载。

VCUBE-2#wr
Building configuration...
[OK]
VCUBE-2#reload
Proceed with reload? [confirm]
6

验证设备对设备冗余配置是否符合预期。 相关的输出以粗体高亮显示。

最后重新加载 VCUBE-2;依据设计思路,最后要重新加载的平台始终为待机平台。


VCUBE-1#show redundancy application group all
Faults states Group 1 info:
       Runtime priority: [100]
               RG Faults RG State: Up.
                       Total # of switchovers due to faults:           0
                       Total # of down/up state changes due to faults: 0
Group ID:1
Group Name:LocalGateway-HA
  
Administrative State: No Shutdown
Aggregate operational state: Up
My Role: ACTIVE
Peer Role: STANDBY
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes

RF Domain: btob-one
         RF state: ACTIVE
         Peer RF state: STANDBY HOT

RG Protocol RG 1
------------------
        Role: Active
        Negotiation: Enabled
        Priority: 100
        Protocol state: Active
        Ctrl Intf(s) state: Up
        Active Peer: Local
        Standby Peer: address 10.1.1.2, priority 100, intf Gi3
        Log counters:
                role change to active: 1
                role change to standby: 1
                disable events: rg down state 0, rg shut 0
                ctrl intf events: up 1, down 0, admin_down 0
                reload events: local request 0, peer request 0

RG Media Context for RG 1
--------------------------
        Ctx State: Active
        Protocol ID: 1
        Media type: Default
        Control Interface: GigabitEthernet3
        Current Hello timer: 3000
        Configured Hello timer: 3000, Hold timer: 10000
        Peer Hello timer: 3000, Peer Hold timer: 10000
        Stats:
            Pkts 1509, Bytes 93558, HA Seq 0, Seq Number 1509, Pkt Loss 0
            Authentication not configured
            Authentication Failure: 0
            Reload Peer: TX 0, RX 0
            Resign: TX 0, RX 0
    Standy Peer: Present. Hold Timer: 10000
            Pkts 61, Bytes 2074, HA Seq 0, Seq Number 69, Pkt Loss 0

VCUBE-1#

VCUBE-2#show redundancy application group all
Faults states Group 1 info:
       Runtime priority: [100]
               RG Faults RG State: Up.
                       Total # of switchovers due to faults:           0
                       Total # of down/up state changes due to faults: 0
Group ID:1
Group Name:LocalGateway-HA
  
Administrative State: No Shutdown
Aggregate operational state: Up
My Role: STANDBY
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes

RF Domain: btob-one
         RF state: ACTIVE
         Peer RF state: STANDBY HOT

RG Protocol RG 1
------------------
        Role: Active
        Negotiation: Enabled
        Priority: 100
        Protocol state: Active
        Ctrl Intf(s) state: Up
        Active Peer: address 10.1.1.2, priority 100, intf Gi3
        Standby Peer: Local
        Log counters:
                role change to active: 1
                role change to standby: 1
                disable events: rg down state 0, rg shut 0
                ctrl intf events: up 1, down 0, admin_down 0
                reload events: local request 0, peer request 0

RG Media Context for RG 1
--------------------------
        Ctx State: Active
        Protocol ID: 1
        Media type: Default
        Control Interface: GigabitEthernet3
        Current Hello timer: 3000
        Configured Hello timer: 3000, Hold timer: 10000
        Peer Hello timer: 3000, Peer Hold timer: 10000
        Stats:
            Pkts 1509, Bytes 93558, HA Seq 0, Seq Number 1509, Pkt Loss 0
            Authentication not configured
            Authentication Failure: 0
            Reload Peer: TX 0, RX 0
            Resign: TX 0, RX 0
    Standy Peer: Present. Hold Timer: 10000
            Pkts 61, Bytes 2074, HA Seq 0, Seq Number 69, Pkt Loss 0

VCUBE-2#

在两个 CUBE 上配置本地网关

在配置示例中,我们使用 Control Hub 中的以下中继信息在 VCUBE-1 和 VCUBE-2 这两个平台上构建本地网关配置。 此设置的用户名和密码如下所示:

  • 用户名: Hussain1076_LGU

  • 密码: lOV12MEaZx

1

确保先使用如下所示的命令来创建密码的配置密钥,然后才能在凭证或共享密钥中使用该配置密钥。 第 6 类型的密码使用 AES 密码和这一用户定义的配置密钥进行加密。


LocalGateway#conf t
LocalGateway(config)#key config-key password-encrypt Password123
LocalGateway(config)#password encryption aes

以下是根据如上所示的 Control Hub 参数而应用于两个平台的本地网关配置,请保存并重新加载。 来自 Control Hub 的 SIP 摘要式凭证以粗体高亮显示。


configure terminal
crypto pki trustpoint dummyTp
revocation-check crl
exit
sip-ua
crypto signaling default trustpoint dummyTp cn-san-validate server
transport tcp tls v1.2
end


configure terminal
crypto pki trustpool import clean url
http://www.cisco.com/security/pki/trs/ios_core.p7b
end


configure terminal
voice service voip
  ip address trusted list
    ipv4 x.x.x.x y.y.y.y
    exit
   allow-connections sip to sip
  media statistics
  media bulk-stats
  no supplementary-service sip refer
  no supplementary-service sip handle-replaces
  fax protocol pass-through g711ulaw
  stun
    stun flowdata agent-id 1 boot-count 4
    stun flowdata shared-secret 0 Password123!
  sip
    g729 annexb-all
    early-offer forced
    end


configure terminal
voice class sip-profiles 200
  rule 9 request ANY sip-header SIP-Req-URI modify "sips:(.*)"
"sip:\1"
  rule 10 request ANY sip-header To modify "<sips:(.*)" "<sip:\1"
  rule 11 request ANY sip-header From modify "<sips:(.*)" "<sip:\1"
  rule 12 request ANY sip-header Contact modify "<sips:(.*)>"
"<sip:\1;transport=tls>"
  rule 13 response ANY sip-header To modify "<sips:(.*)" "<sip:\1"
  rule 14 response ANY sip-header From modify "<sips:(.*)" "<sip:\1"
  rule 15 response ANY sip-header Contact modify "<sips:(.*)"
"<sip:\1"
  rule 20 request ANY sip-header From modify ">"
";otg=hussain1076_lgu>"
  rule 30 request ANY sip-header P-Asserted-Identity modify
"sips:(.*)" "sip:\1"


voice class codec 99
  codec preference 1 g711ulaw
  codec preference 2 g711ulaw
  exit

voice class srtp-crypto 200
  crypto 1 AES_CM_128_HMAC_SHA1_80
  exit

voice class stun-usage 200
  stun usage firewall-traversal flowdata
  exit






voice class tenant 200
  registrar dns:40462196.cisco-bcld.com scheme sips expires 240
refresh-ratio 50 tcp tls
  credentials number Hussain5091_LGU username Hussain1076_LGU
password 0 lOV12MEaZx realm Broadworks 
  authentication username Hussain5091_LGU password 0 lOV12MEaZx
realm BroadWorks

  authentication username Hussain5091_LGU password 0 lOV12MEaZx
realm 40462196.cisco-bcld.com
  no remote-party-id
  sip-server dns:40462196.cisco-bcld.com
  connection-reuse
  srtp-crypto 200
  session transport tcp tls
  url sips
  error-passthru
  asserted-id pai
  bind control source-interface GigabitEthernet1
  bind media source-interface GigabitEthernet1
  no pass-thru content custom-sdp
  sip-profiles 200
  outbound-proxy dns:la01.sipconnect-us10.cisco-bcld.com
  privacy-policy passthru


voice class tenant 100
  session transport udp
  url sip
  error-passthru
  bind control source-interface GigabitEthernet2
  bind media source-interface GigabitEthernet2
  no pass-thru content custom-sdp

voice class tenant 300
  bind control source-interface GigabitEthernet2
  bind media source-interface GigabitEthernet2
  no pass-thru content custom-sdp
  

voice class uri 100 sip
 host ipv4:198.18.133.3

voice class uri 200 sip
 pattern dtg=hussain1076.lgu



dial-peer voice 101 voip
 description Outgoing dial-peer to IP PSTN
 destination-pattern BAD.BAD
 session protocol sipv2
 session target ipv4:198.18.133.3
 voice-class codec 99
 voice-class sip tenant 100
 dtmf-relay rtp-nte
 no vad

dial-peer voice 201 voip
 description Outgoing dial-peer to Webex Calling
 destination-pattern BAD.BAD
 session protocol sipv2
 session target sip-server
 voice-class codec 99
 voice-class stun-usage 200
 no voice-class sip localhost
 voice-class sip tenant 200
 dtmf-relay rtp-nte
 srtp
 no vad


voice class dpg 100
 description Incoming WebexCalling(DP200) to IP PSTN(DP101)
 dial-peer 101 preference 1

voice class dpg 200
 description Incoming IP PSTN(DP100) to Webex Calling(DP201)
 dial-peer 201 preference 1





dial-peer voice 100 voip
 desription Incoming dial-peer from IP PSTN
 session protocol sipv2
 destination dpg 200
 incoming uri via 100
 voice-class codec 99
 voice-class sip tenant 300
 dtmf-relay rtp-nte
 no vad

dial-peer voice 200 voip
 description Incoming dial-peer from Webex Calling
 session protocol sipv2
 destination dpg 100
 incoming uri request 200
 voice-class codec 99
 voice-class stun-usage 200
 voice-class sip tenant 200
 dtmf-relay rtp-nte
 srtp
 no vad

end

copy run start

为了显示 show 命令的输出,我们依次重新加载了 VCUBE-2VCUBE-1,其中 VCUBE-1 为待机 CUBE,而 VCUBE-2 为活动 CUBE

2

在任何给定时间,只有一个平台会向“Webex Calling 接入 SBC”进行活动注册(作为本地网关)。 让我们来看看以下 show 命令的输出。

show redundancy application group 1

show sip-ua-register status


VCUBE-1#show redundancy application group 1
Group ID:1
Group Name:LocalGateway-HA

Administrative State: No Shutdown
Aggregate operational state : Up
My Role: Standby
Peer Role: ACTIVE
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes

RF Domain: btob-one
         RF state: STANDBY HOT
         Peer RF state: ACTIVE

VCUBE-1#show sip-ua register status
VCUBE-1#

VCUBE-2#show redundancy application group 1
Group ID:1
Group Name:LocalGateway-HA

Administrative State: No Shutdown
Aggregate operational state : Up
My Role: ACTIVE
Peer Role: STATUS
Peer Presence: Yes
Peer Comm: Yes
Peer Progression Started: Yes

RF Domain: btob-one
         RF state: ACTIVE
         Peer RF state: STANDBY HOT

VCUBE-2#show sip-ua register status

Tenant: 200
--------------------Registrar-Index  1 ---------------------
Line                           peer       expires(sec) reg survival P-Associ-URI
============================== ========== ============ === ======== ============
Hussain5091_LGU                -1          48          yes normal
VCUBE-2#

从以上输出中可以看到,VCUBE-2 是向“Webex Calling 接入 SBC”进行注册的活动 LGW,而“show sip-ua register status”在 VCUBE-1 中的输出为空

3

现在,请在 VCUBE-1 上启用以下调试


VCUBE-1#debug ccsip non-call
SIP Out-of-Dialog tracing is enabled
VCUBE-1#debug ccsip info
SIP Call info tracing is enabled
VCUBE-1#debug ccsip message
4

在活动 LGW(在本例中为 VCUBE-2)上发出以下命令,以模拟故障转移。


VCUBE-2#redundancy application reload group 1 self

除了上面列出的 CLI 之外,下列情况下也会从活动 LGW 切换到待机 LGW

  • 重新加载活动路由器时

  • 重新开启活动路由器电源时

  • 关闭启用了跟踪功能的活动路由器上的 RG 配置接口时

5

检查 VCUBE-1 是否已向“Webex Calling 接入 SBC”进行注册。 VCUBE-2 现在应该已重新加载。


VCUBE-1#show sip-ua register status

Tenant: 200
--------------------Registrar-Index  1 ---------------------
Line                           peer       expires(sec) reg survival P-Associ-URI
============================== ========== ============ === ======== ============
Hussain5091_LGU                -1          56          yes normal
VCUBE-1#

VCUBE-1 现在为活动 LGW。

6

查看有关 VCUBE-1 通过虚拟 IP 向 Webex Calling 发送 SIP REGISTER 并收到 200 OK 的相关调试日志。


VCUBE-1#show log

Jan 9 18:37:24.769: %RG_MEDIA-3-TIMEREXPIRED: RG id 1 Hello Time Expired.
Jan 9 18:37:24.771: %RG_PROTCOL-5-ROLECHANGE: RG id 1 role change from Standby to Active
Jan 9 18:37:24.783: %VOICE_HA-2-SWITCHOVER_IND: SWITCHOVER, from STANDBY_HOT to ACTIVE state.
Jan 9 18:37:24.783: //-1/xxxxxxxxxxxx/SIP/Info/info/4096/sip_ha_notify_active_role_event: Received notify active role event

Jan 9 18:37:25.758: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:
Sent:
REGISTER sip: 40462196.cisco-bcld.com:5061 SIP/2.0
Via: SIP/2.0/TLS 198.18.1.228:5061;branch=z9hG4bK0374
From: <sip:Hussain5091_LGU@40462196.cisco-bcld.com;otg=hussain1076_lgu>;tag=8D573-189
To: <sip:Hussain5091_LGU@40462196.cisco-bcld.com>
Date: Thu, 09 Jan 2020 18:37:24 GMT
Call-ID: FFFFFFFFEA0684EF-324511EA-FFFFFFFF800281CD-FFFFFFFFB5F93B97
User-Agent: Cisco-SIPGateway/IOS-16.12.02
Max-Forwards: 70
Timestamp: 1578595044
CSeq: 2 REGISTER
Contact: <sip:Hussain5091_LGU@198.18.1.228:5061;transport=tls>
Expires: 240
Supported: path
Content-Length: 0
Jan 9 18:37:25.995: //-1/000000000000/SIP/Msg/ccsipDisplayMsg:
Received:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/TLS 198.18.1.228:5061;received=173.38.218.1;branch=z9hG4bK0374;rport=4742
From: <sip:Hussain5091_LGU@40462196.cisco-bcld.com;otg=hussain1076_lgu>;tag=8D573-189
To: <sip:Hussain5091_LGU@40462196.cisco-bcld.com>;tag=SD1u8bd99-1324701502-1578595045969
Date: Thu, 09 Jan 2020 18:37:24 GMT
Call-ID: FFFFFFFFEA0684EF-324511EA-FFFFFFFF800281CD-FFFFFFFFB5F93B97
Timestamp: 1578595044
CSeq: 2 REGISTER
WWW-Authenticate; DIGEST realm="BroadWorks",qop="auth",nonce="BroadWorksXk572qd01Ti58zliBW",algorithm=MD5
Content-Length: 0
Jan 9 18:37:26.000: //-1/xxxxxxxxxxxx/SIP/Msg/ccsipDisplayMsg:
Sent:
REGISTER sip:40462196.cisco-bcld.com:5061 SIP/2.0
Via: SIP/2.0/TLS 198.18.1.228:5061;branch=z9hG4bK16DC
From: <sip:Hussain5091_LGU@40462196.cisco-bcld.com;otg=hussain1076_lgu>;tag=8D573-189
To: <sip:Hussain5091_LGU@40462196.cisco-bcld.com>
Date: Thu, 09 Jan 2020 18:37:25 GMT
Call-ID: FFFFFFFFEA0684EF-324511EA-FFFFFFFF800281CD-FFFFFFFFB5F93B97
User-Agent:Cisco-SIPGateway/IOS-16.12.02
Max-Forwards: 70
Timestamp: 1578595045
CSeq: 3 REGISTER
Contact: <sip:Hussain5091_LGU@198.18.1.228:5061;transport=tls>
Expires: 240
Supported: path
Authorization: Digest username="Hussain1076_LGU",realm="BroadWorks",uri="sips:40462196.cisco-bcld.com:5061",response="b6145274056437b9c07f7ecc08ebdb02",nonce="BroadWorksXk572qd01Ti58z1iBW",cnonce="3E0E2C4D",qop=auth,algorithm=MD5,nc=00000001
Content-Length: 0
Jan 9 18:37:26.190: //1/000000000000/SIP/Msg/ccsipDisplayMsg:

Received:
SIP/2.0 200 OK
Via: SIP/2.0/TLS 198.18.1.228:5061;received=173.38.218.1;branch=z9hG4bK16DC;rport=4742
From: <sip:Hussain5091_LGU@40462196.cisco-bcld.com;otg=hussain1076_lgu>;tag=8D573-189
To: <sip:Hussain5091_LGU@40462196.cisco-bcld.com>;tag=SD1u8bd99-1897486570-1578595-46184
Call-ID: FFFFFFFFEA0684EF-324511EA-FFFFFFFF800281CD-FFFFFFFFB5F93B97
Timestamp: 1578595045
CSeq: 3 REGISTER
Contact: <sip:Hussain5091_LGU@198.18.1.228:5061;transport=tls>;expires=120;q=0.5
Allow-Events: call-info,line-seize,dialog,message-summary,as-feature-event,x-broadworks-hoteling,x-broadworks-call-center-status,conference
Content-Length: 0