Connecting Google Voice Unified Border
Connecting Google Voice Unified Border
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
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
platform hardware throughput level MB 1000
IP Networking
Note: CUBE and service provider addresses used in this guide are fictional and provided for
illustration purposes only.
interface GigabitEthernet0/0/0
description HA interface
ip address 10.64.5.235 255.255.0.0
negotiation auto
interface GigabitEthernet0/0/1
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
Certificates
The following steps describe how to create and install a certificate. The SBC TLS certificate
must contain its fully qualified domain name (FQDN) as common name (CN), be 2,048 bits in
size, and use RSA or ECDSA encryption. Wildcard certificates are not supported.
Exporting RSA key and certificate from CUBE 1 for High Availability
crypto pki export sbc pkcs12 ftp://<username>@x.x.x.x/ password xxxxx
Address or name of remote host [x.x.x.x]?
Destination filename [sbc]?
Writing sbc Writing pkcs12 file to ftp://<username>@x.x.x.x/sbc
!
CRYPTO_PKI: Exported PKCS12 file successfully.
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
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 1 request ANY sip-header To modify "<sip:(.*);transport=grpc>" "<sip:\1>"
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.staging.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
Tenant for Google Trunk:
voice class tenant 200
srtp-crypto 1
localhost dns:sbc.example.com
session transport tcp tls
bind control source-interface GigabitEthernet0/0/2
bind media source-interface GigabitEthernet0/0/2
sip-profiles 200
sip-profiles 2 inbound
early-offer forced
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
Codecs
Codecs towards Google Voice
voice class codec 1
codec preference 1 g711alaw
codec preference 2 g711ulaw
codec preference 3 opus
codec preference 4 g722-64
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 outgoing 200
session protocol sipv2
session target ipv4:10.64.1.50:5060
session transport udp
voice-class codec 2 offer-all
voice-class sip tenant 100
Inbound Dial-peer from the PSTN and PBX using UDP with RTP:
voice class uri 100 sip
host ipv4:10.64.1.50
!
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
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 example.com
!
login on-success log
!
subscriber templating
!
multilink bundle-name authenticated
!
crypto pki trustpoint SLA-TrustPoint
enrollment pkcs12
revocation-check crl
!
crypto pki trustpoint sbc
enrollment terminal
fqdn sbc.example.com
subject-name cn=sbc.example.com
subject-alt-name sbc.example.com
revocation-check crl
© 2022 Cisco Systems, Inc. All rights reserved.
Important notices, privacy statements, and trademarks of Cisco Systems, Inc. can be found on cisco.com
Page 23 of 43
rsakeypair sbc
!
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 sbc
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
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