Connecting-Google-Voice-Unified-Border CISCO CUBE
Connecting-Google-Voice-Unified-Border CISCO CUBE
Public
192.0.2.3 10.80.11.138
GE 0/0/2 GE 0/0/1
Google
Active
GE 0/0/1
GE 0/0/2
10.80.11.137
192.0.2.2 IP IP
SIP/UDP
SIP Phone
IP
Google Voice
VVX X50 Series PBX
Web Client
Setting Value
Hardware
A Cisco Catalyst Edge 8300 router was used for this tested solution. Any CUBE platform
may be used though, (refer to https://www.cisco.com/go/cube) for more information.
Software Used
● CUBE v14.4 IOS-XE 17.6.2
● Poly VVX 250 OBI Edition V6.4.3.10318
● OnPrem PBX (Asterisk PBX) V16.0.17
Caveats
The following are the observations from CUBE.
• After High Availability Switchover, if a call is immediately disconnected from Google
Voice user client, the PSTN leg remains connected until the standby SBC establishes
a SIP TLS connection to Google Voice.
• CUBE does not support codec preference list in SRTP to RTP
• By default, CUBE processes TCP keepalive for every 1 min when the TLS SIP
OPTIONs is down/disabled.
Licensing
Ensure that the appropriate licenses are enabled for using CUBE and TLS for the platform
you are using. You will need to save your configuration and reload the platform when
changing feature licenses.
For Cisco ISR 1000 Series and Cisco 4000 Series routers, use the following commands:
license boot level uck9
license boot level securityk9
For Cisco ASR 1000 Series routers, use either the Advanced IP services or Advanced
Enterprise services with one of the following commands:
license boot level advipservices
license boot level adventerprise
For Cisco Catalyst 8300 and 8200 Series Edge Platforms, use the DNA Network Essentials
feature license, or better and the required throughput level. The following example uses
25Mbps bidirectional crypto throughput, select the appropriate level for the number of calls
anticipated.
license boot level network-essentials
platform hardware throughput crypto 25M
For Cisco Catalyst 8000V Edge Software, use the DNA Network Essentials feature license, or
better and the required throughput level. The following example uses 1Gbps throughput,
select the appropriate level for the number of calls anticipated.
license boot level network-essentials addon dna-essentials
platform hardware throughput level MB 1000
interface GigabitEthernet0/0/1
description To PSTN and PBX
ip address 10.80.11.137 255.255.255.0
negotiation auto
redundancy rii 16
redundancy group 1 ip 10.80.11.136 exclusive
!
interface GigabitEthernet0/0/2
description To Google Voice
ip address 192.65.79.x 255.255.255.x
negotiation auto
redundancy rii 15
redundancy group 1 ip 192.65.79.x exclusive
Explanation
Command Description
Route To PSTN-PBX
ip route 10.64.0.0 255.255.0.0 10.80.11.1
ip route 172.16.0.0 255.255.0.0 10.80.11.1
Domain Name
Use the same domain name for the router as used for the Microsoft 365 tenant.
ip domain name example.com
DNS Servers
DNS must be configured to resolve addresses for Google trunk.
ip name-server 8.8.8.8
NTP Servers
Configure a suitable NTP source to ensure that the correct time is used by the platform.
ntp server 10.10.10.5
Authenticate CA Certificate
Enter the following command, then paste the CA certificate that verifies the host certificate
into the trust point (usually the intermediate certificate). Open the base 64 CER/PEM file with
notepad, copy the text, and paste it into the terminal when prompted.
Exporting RSA key and certificate from CUBE 1 for High Availability
crypto pki export sbc6 pkcs12 ftp://<username>@x.x.x.x/ password xxxxx
Address or name of remote host [x.x.x.x]?
Destination filename [sbc6]?
Writing sbc Writing pkcs12 file to ftp://<username>@x.x.x.x/sbc6
!
CRYPTO_PKI: Exported PKCS12 file successfully.
Explanation
Command Description
ip address trusted list To allow all traffic from a peer trunk to CUBE.
allow-connections sip to sip Allow back to back user agent connections between two SIP
call legs
Explanation
Command Description
priority 150 failover threshold 75 Set priority weight for CUBE 1 and CUBE 2. High priority CUBE
turns Active and other Standby
timers delay 30 reload 60 the amount of time to delay RG group’s initialization and role
negotiation after the interface comes up and reload
SIP Profiles: Manipulations for inbound messages from Google Voice SIP link
The following sip profile is required to:
Rule 1: Remove transport “grpc” received from Google, CUBE does not handle this
transport.
Rule 2: Remove candidate attributes received from Google.
voice class sip-profiles 2
rule 100 request ANY sdp-header Audio-Attribute modify "a=candidate.*"
"a=label:main-audio"
rule 110 response ANY sdp-header Audio-Attribute modify "a=candidate.*"
"a=label:main-audio"
!
Options Keepalive
To ensure that contact and from headers include the SBC fully qualified domain name, the
following profile is used.
voice class sip-profiles 201
rule 1 request OPTIONS sip-header SIP-Req-URI modify
"sip:siplink.telephony.goog:5672" "sip:trunk.sip.voice.google.com:5672"
SRTP crypto
Used to set the crypto cipher for the Google Voice trunk.
voice class srtp-crypto 1
crypto 1 AES_CM_128_HMAC_SHA1_80
Tenant to PSTN/PBX:
voice class tenant 100
options-ping 60
session transport udp
bind control source-interface GigabitEthernet0/0/1
bind media source-interface GigabitEthernet0/0/1
early-offer forced
Dial peers
Outbound Dial-peer to the PSTN and PBX using UDP with RTP:
dial-peer voice 100 voip
description outbound to PSTN
destination-pattern .T
translation-profile incoming 200
session protocol sipv2
session target ipv4:10.64.1.x:5060
session transport udp
voice-class codec 2 offer-all
voice-class sip tenant 100
voice-class sip options-keepalive
no voice-class sip session refresh
voice-class sip bind control source-interface GigabitEthernet0/0/1
voice-class sip bind media source-interface GigabitEthernet0/0/1
dtmf-relay rtp-nte
no vad
!
voice class e164-pattern-map 300
e164 +197259801xx
e164 +1972598011x
!
dial-peer voice 300 voip
description outbound to PBX
Inbound Dial-peer from the PSTN and PBX using UDP with RTP:
voice class uri 100 sip
host ipv4:10.64.1.x
!
dial-peer voice 110 voip
description inbound from PSTN
translation-profile incoming 100
session protocol sipv2
session transport udp
incoming uri via 100
voice-class codec 2 offer-all
voice-class sip tenant 100
no voice-class sip session refresh
voice-class sip bind control source-interface GigabitEthernet0/0/1
voice-class sip bind media source-interface GigabitEthernet0/0/1
dtmf-relay rtp-nte
no vad
!
voice class uri 300 sip
host ipv4:172.16.29.18
!
dial-peer voice 310 voip
description inbound from PBX
translation-profile incoming 100
session protocol sipv2
© 2023 Cisco Systems, Inc. All rights reserved.
Important notices, privacy statements, and trademarks of Cisco Systems, Inc. can be found on cisco.com
Page 22 of 47
session transport udp
incoming uri via 300
voice-class codec 1
voice-class sip tenant 100
no voice-class sip session refresh
voice-class sip bind control source-interface GigabitEthernet0/0/1
voice-class sip bind media source-interface GigabitEthernet0/0/1
dtmf-relay rtp-nte
no vad
!
CUBE 1 (Active):
version 17.6
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
service call-home
platform qfp utilization monitor load 80
platform punt-keepalive disable-kernel-core
!
hostname 8K_CUBE
!
boot-start-marker
boot system bootflash:c8000be-universalk9.17.06.02.SPA.bin
boot-end-marker
!
logging buffered 2147483
!
no aaa new-model
clock timezone UTC -5 0
clock calendar-valid
!
ip name-server 8.8.8.8
ip domain name tekvizionlabs.com
!
login on-success log
!
subscriber templating
multilink bundle-name authenticated
!
crypto pki trustpoint SLA-TrustPoint
enrollment pkcs12
revocation-check crl
!
crypto pki trustpoint sbc6
enrollment terminal
fqdn sbc6.tekvizionlabs.com
subject-name cn=sbc6.tekvizionlabs.com
subject-alt-name sbc6.tekvizionlabs.com
revocation-check crl
rsakeypair sbc6
© 2023 Cisco Systems, Inc. All rights reserved.
Important notices, privacy statements, and trademarks of Cisco Systems, Inc. can be found on cisco.com
Page 26 of 47
!
crypto pki trustpoint GoogleCA1
enrollment terminal
revocation-check none
!
crypto pki trustpoint GoogleCA2
enrollment terminal
revocation-check none
!
crypto pki certificate chain SLA-TrustPoint
certificate ca 01
crypto pki certificate chain sbc6
certificate 00A76F21D0D0E2906D
certificate ca 07
crypto pki certificate chain GoogleCA1
certificate ca 0203E5936F31B01349886BA217
crypto pki certificate chain GoogleCA2
certificate ca 040000000001154B5AC394
!
crypto pki certificate pool
! ('certificate ca' cmd has been deprecated. Downloaded
! Trustpool certificates should be re-downloaded
! using 'crypro pki trustpool import url <url>')!
!
voice service voip
ip address trusted list
ipv4 216.239.36.0 255.255.255.0
ipv4 10.64.1.0 255.255.255.0
ipv4 172.16.0.0 255.255.0.0
address-hiding
mode border-element
allow-connections sip to sip
redundancy-group 1
fax protocol pass-through g711alaw
trace
sip
error-passthru
asserted-id pai
privacy pstn
early-offer forced
sip-profiles inbound
!
!
version 17.6
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
service call-home
platform qfp utilization monitor load 80
platform punt-keepalive disable-kernel-core
!
hostname 8K_Cube2
!
boot-start-marker
boot system bootflash:c8000be-universalk9.17.06.02.SPA.bin
boot-end-marker
!
logging queue-limit 2000000
logging buffered 2147483
!
no aaa new-model
clock timezone UTC -5 0
clock calendar-valid
!
ip name-server 8.8.8.8
ip domain name tekvizionlabs.com
!
login on-success log
!
subscriber templating
!
multilink bundle-name authenticated
!
crypto pki trustpoint TP-self-signed-2307055185
enrollment selfsigned
subject-name cn=IOS-Self-Signed-Certificate-2307055185
revocation-check none
rsakeypair TP-self-signed-2307055185
!
crypto pki trustpoint SLA-TrustPoint
enrollment pkcs12
revocation-check crl
!
crypto pki trustpoint sbc6
THE SPECIFICATIONS AND INFORMATION REGARDING THE PRODUCTS IN THIS MANUAL ARE SUBJECT TO CHANGE
WITHOUT NOTICE. ALL STATEMENTS, INFORMATION, AND RECOMMENDATIONS IN THIS MANUAL ARE BELIEVED TO
BE ACCURATE BUT ARE PRESENTED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. USERS MUST TAKE
FULL RESPONSIBILITY FOR THEIR APPLICATION OF ANY PRODUCTS. IN NO EVENT SHALL CISCO OR ITS SUPPLIERS BE
LIABLE FOR ANY INDIRECT, SPECIAL, CONSEQUENTIAL, OR INCIDENTAL DAMAGES, INCLUDING, WITHOUT
LIMITATION, LOST PROFITS OR LOSS OR DAMAGE TO DATA ARISING OUT OF THE USE OR INABILITY TO USE THIS
MANUAL, EVEN IF CISCO OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
Cisco Systems has more than 200 offices in the following countries and regions. Addresses,
phone numbers, and fax numbers are listed on the Cisco Web site at
http://www.cisco.com/go/offices.
Argentina • Australia • Austria • Belgium • Brazil • Bulgaria • Canada • Chile • China PRC •
Colombia • Costa Rica • Croatia • Czech Republic • Denmark • Dubai, UAE • Finland • France
• Germany • Greece • Hong Kong SAR • Hungary • India • Indonesia • Ireland • Israel • Italy •
Japan • Korea • Luxembourg • Malaysia • Mexico • The Netherlands • New Zealand • Norway