This document describes the configuration steps required for the Ribbon SBC Core to successfully interoperate with Microsoft Teams. All feature and serviceability test cases completed and passed successfully.
You can configuer Ribbon SBC Core using any one of the methods defined under sections A and B depending on your requirements and level of comfort.
This document provides the Ribbon SBC Core (SWe/5xx0/5400/7000) configuration with Microsoft® Teams for documented products and their versions. This is a general reference document that requires user input during the configuration. For EMA configuration, the screen captures in this document are limited to only the necessary provisioning areas.
This document provides a sample of the Ribbon SBC 5400 configuration used during compliance testing.
This document does not provide the test case details, success criteria, processes, and execution steps of testing that was performed. Also, this document does not focus on either the PSX configuration or provisioning areas for Microsoft Teams. These non-goals are covered in a separate configuration guide.
The following configurations in this document are for reference only. Other configurations are also based on customer requirements.
Microsoft® TAP (Technology Adoption Program) Testing is performed between Microsoft® Teams and the Ribbon’s SBC Core (SWe/5400/5210/5110/7000). This document outlines the configuration, observations, and the overall testing experience with the device under test (DUT).
This is a technical document intended for telecommunications engineers with the purpose of configuring both the Ribbon SBC and the third-party product.
The sample configuration uses the following equipment and software:
The following figure illustrates the connectivity between the third-party and the Ribbon SBC Core.
For any questions regarding this document or the content herein, contact your maintenance and support provider.
Refer to the Microsoft Teams' test plan for complete product features details.
The following commands and configurations are only for reference, other configurations are also based on the customer's requirement.
Create a Codec Entry with the supported codec and packet size of 20:
set profiles media codecEntry G711-default dtmf relay rfc2833 set profiles media codecEntry G711-default packetSize 20 commit
To enable comfort noise, use G711SS-DEFAULT codec profile.
Configure the RTCP interval:
set system media mediaRtcpControl senderReportInterval 5 commit
set global sipDomain SIP.PSTNHUB.MICROSOFT.COM set global sipDomain SIP2.PSTNHUB.MICROSOFT.COM set global sipDomain SIP3.PSTNHUB.MICROSOFT.COM set global sipDomain ABC.EXAMPLE.COM commit
This configuration only applies if the SBC is deployed with (hardware) DSP resources. If this is not the case, executing this configuration step has no negative impact.
set system mediaProfile compression 75 tone 25 commit
This configuration is not required for SWe Core 7.2 release onwards.
set profiles media toneAndAnnouncementProfile LRBT_PROF set profiles media toneAndAnnouncementProfile LRBT_PROF localRingBackTone signalingTonePackageState enable makeInbandToneAvailable enable set profiles media toneAndAnnouncementProfile LRBT_PROF localRingBackTone flags useThisLrbtForIngress enable set profiles media toneAndAnnouncementProfile LRBT_PROF localRingBackTone flags dynamicLRBT enable commit
Create an IP interface group.
Replace "x.x.x.x" with SBC's packet interface (pkt) IP address towards Teams (example pkt1 IP). 'y' with its prefix length.
set addressContext default ipInterfaceGroup LIF2 ipInterface PKT1_V4 ceName IOTGCM portName pkt1 set addressContext default ipInterfaceGroup LIF2 ipInterface PKT1_V4 ipAddress x.x.x.x prefix Y set addressContext default ipInterfaceGroup LIF2 ipInterface PKT1_V4 mode inService state enabled commit
This Zone groups the set of objects used for the communication to MS Teams.
Configure the domain name and attach it with appropriate zone.
set addressContext default zone TEAMS_ZONE id 4 set addressContext default zone TEAMS_ZONE domainName abc.example.com commit
Set the SIP Signaling port which is a logical address used to send and receive SIP call signaling packets and is permanently bound to a specific zone.
The Ribbon SBC Core listens on two ports, one defined under sipSigPort for TCP & UDP and plus one port for TLS to receive incoming traffic.
Replace "x.x.x.x" with SIP Signaling Port IP address towards Teams.
set addressContext default zone TEAMS_ZONE id 4 sipSigPort 4 ipInterfaceGroupName LIF2 ipAddressV4 x.x.x.x portNumber 5060 transportProtocolsAllowed sip-tls-tcp set addressContext default zone TEAMS_ZONE id 4 sipSigPort 4 state enabled mode inService commit
Create DNS objects for DNS resolution within a particular zone. Use the interface which has public connectivity.
set addressContext default dnsGroup EXT_DNS set addressContext default dnsGroup EXT_DNS type ip interface LIF2 server DNS2 ipAddress 8.8.8.8 state enabled set addressContext default zone TEAMS_ZONE dnsGroup EXT_DNS commit
Create a Packet Service Profile (PSP) for the Teams side. The PSP is specified within the SIP trunk group configuration.
set profiles media packetServiceProfile TEAMS_PSP set profiles media packetServiceProfile TEAMS_PSP codec codecEntry1 G711-default set profiles media packetServiceProfile TEAMS_PSP rtcpOptions rtcp enable set profiles media packetServiceProfile TEAMS_PSP preferredRtpPayloadTypeForDtmfRelay 101 set profiles media packetServiceProfile TEAMS_PSP silenceInsertionDescriptor g711SidRtpPayloadType 13 heartbeat enable set profiles media packetServiceProfile TEAMS_PSP secureRtpRtcp flags enableSrtp enable set profiles media packetServiceProfile TEAMS_PSP flags ssrcRandomize enable commit
Create an IP signaling profile for the Teams side. The IPSP is specified within the SIP trunk group configuration.
set profiles signaling ipSignalingProfile TEAMS_IPSP ipProtocolType sipOnly set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags includeReasonHeader enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags includeTransportTypeInContactHeader enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags routeUsingRecvdFqdn enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags sendPtimeInSdp enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags sendRtcpPortInSdp enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags storePChargingVector enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes relayFlags notify enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags publishIPInHoldSDP enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes relayFlags statusCode4xx6xx enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags minimizeRelayingOfMediaChangesFromOtherCallLegAll enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes flags relayDataPathModeChangeFromOtherCallLeg enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes transparencyFlags mwiBody enable set profiles signaling ipSignalingProfile TEAMS_IPSP commonIpAttributes optionTagInRequireHeader suppressReplaceTag enable set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes domainName useZoneLevelDomainNameInContact enable set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes domainName useIpSignalingPeerDomainInRequestUri enable set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes flags disable2806Compliance enable set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes privacy flags includePrivacy enable set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes redirect flags forceRequeryForRedirection enable set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes transport type1 tlsOverTcp set profiles signaling ipSignalingProfile TEAMS_IPSP egressIpAttributes domainName useIpSignalingPeerDomainInRequestUri enable set profiles signaling ipSignalingProfile TEAMS_IPSP ingressIpAttributes flags sendSdpIn200OkIf18xReliable enable commit
Create a SIP Trunk Group for the Teams side and assign the IPSP, PSP and LRBT profiles configured above.
For ingressIpPrefix, replace "x.x.x.x" and "y" with the IP address and prefix length that needs to be allowed from Teams.
Teams SIP Proxy server does not support the Update method and requires a Re-Invite. Teams SIP Proxy Server only supports new RFC for call hold that is a=inactive.
set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG media mediaIpInterfaceGroupName LIF2 set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG signaling honorMaddrParam enabled set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG policy media packetServiceProfile TEAMS_PSP set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG policy signaling ipSignalingProfile TEAMS_IPSP set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG downstreamForkingSupport enabled set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG signaling rel100Support enabled set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG services dnsSupportType a-only set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG ingressIpPrefix X.X.X.X Y set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG signaling relayNonInviteRequest enabled set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG signaling methods update reject set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG policy media toneAndAnnouncementProfile LRBT_PROF set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG mode inService state enabled set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG media sdpAttributesSelectiveRelay enabled commit
Create a path check profile that is attached to the Teams side.
set profiles services pathCheckProfile Teams_OPTIONS protocol sipOptions sendInterval 20 replyTimeoutCount 1 recoveryCount 1 commit set profiles services pathCheckProfile Teams_OPTIONS transportPreference preference1 tls-tcp commit
set addressContext default zone TEAMS_ZONE ipPeer TEAMS_PEER policy sip fqdn sip.pstnhub.microsoft.com fqdnPort 5060 set addressContext default zone TEAMS_ZONE ipPeer TEAMS_PEER pathCheck profile Teams_OPTIONS set addressContext default zone TEAMS_ZONE ipPeer TEAMS_PEER pathCheck profile Teams_OPTIONS hostName sip.pstnhub.microsoft.com hostPort 5060 state enabled commit
For TLS, the Ribbon SBC Core increments the port number of the IP-Peer with one while sending out any call. Configure a port less what remote peer is listening on. Please note, this is only applicable for TLS protocol.
Microsoft Teams requires the SBC's FQDN in the 'From:' and 'Contact:' header. In below SMM configuration replace;
set profiles signaling sipAdaptorProfile Modify_Options state enabled set profiles signaling sipAdaptorProfile Modify_Options advancedSMM disabled set profiles signaling sipAdaptorProfile Modify_Options profileType messageManipulation set profiles signaling sipAdaptorProfile Modify_Options rule 1 applyMatchHeader one set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 2 type header set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 2 header set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 2 header name Contact set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 2 header condition exist set profiles signaling sipAdaptorProfile Modify_Options rule 1 criterion 2 header hdrInstance all set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 type header set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 operation regsub set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 from set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 from type value set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 from value "<sip:user_input1:user_input2;transport=tls>" set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 to set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 to type header set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 to value Contact set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 regexp set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 regexp string .* set profiles signaling sipAdaptorProfile Modify_Options rule 1 action 1 regexp matchInstance all set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 2 type header set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 2 header set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 2 header name From set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 2 header condition exist set profiles signaling sipAdaptorProfile Modify_Options rule 2 criterion 2 header hdrInstance all set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 type header set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 operation regsub set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 from set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 from type value set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 from value "<sip:user_input1:user_input2;transport=tls>" set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 to set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 to type header set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 to value From set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 regexp set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 regexp string <sip:user_input3> set profiles signaling sipAdaptorProfile Modify_Options rule 2 action 1 regexp matchInstance all set profiles signaling sipAdaptorProfile Modify_Options rule 3 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Options rule 3 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Options rule 3 criterion 1 message messageTypes request set profiles signaling sipAdaptorProfile Modify_Options rule 3 criterion 1 message methodTypes options set profiles signaling sipAdaptorProfile Modify_Options rule 3 criterion 1 message condition exist set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 type header set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 operation add set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 headerPosition last set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 from set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 from type value set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 from value RibbonSBC set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 to set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 to type header set profiles signaling sipAdaptorProfile Modify_Options rule 3 action 1 to value User-Agent commit
set addressContext default zone TEAMS_ZONE messageManipulation outputAdapterProfile Modify_Options commit
Create a smm profile for the modification headers and crypto profile.
Replace 'user_input1' with SBC's FQDN.
set profiles signaling sipAdaptorProfile Modify_Headers rule 1 applyMatchHeader one set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 2 type header set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 2 header set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 2 header name From set profiles signaling sipAdaptorProfile Modify_Headers rule 1 criterion 2 header condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 type token set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 operation modify set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 from set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 from type value set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 from value user_input1 set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 to set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 to type token set profiles signaling sipAdaptorProfile Modify_Headers rule 1 action 1 to tokenValue urihostname set profiles signaling sipAdaptorProfile Modify_Headers rule 2 applyMatchHeader one set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 2 type header set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 2 header set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 2 header name P-Asserted-Identity set profiles signaling sipAdaptorProfile Modify_Headers rule 2 criterion 2 header condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 type token set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 operation modify set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 from set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 from type value set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 from value user_input1 set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 to set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 to type token set profiles signaling sipAdaptorProfile Modify_Headers rule 2 action 1 to tokenValue urihostname set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 1 message condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 2 type messageBody set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 2 messageBody set profiles signaling sipAdaptorProfile Modify_Headers rule 3 criterion 2 messageBody condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 type messageBody set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 operation regstore set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 from set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 from type messageBody set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 from messageBodyValue all set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 to set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 to type variable set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 to variableValue var1 set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 regexp set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 regexp string "a=crypto.*?\r\n" set profiles signaling sipAdaptorProfile Modify_Headers rule 3 action 1 regexp matchInstance one set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 1 message condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 2 type variable set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 2 variable set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 2 variable condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 4 criterion 2 variable variableID var1 set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 type variable set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 operation regsub set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 from set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 from type value set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 from value "|2^31\r\n" set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 to set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 to type variable set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 to variableValue var1 set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 regexp set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 regexp string "\r\n" set profiles signaling sipAdaptorProfile Modify_Headers rule 4 action 1 regexp matchInstance one set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 1 type message set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 1 message set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 1 message condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 2 type variable set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 2 variable set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 2 variable condition exist set profiles signaling sipAdaptorProfile Modify_Headers rule 5 criterion 2 variable variableID var1 set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 type messageBody set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 operation regsub set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 from set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 from type variable set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 from variableValue var1 set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 to set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 to type messageBody set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 to messageBodyValue all set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 regexp set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 regexp string "a=crypto.*?\r\n" set profiles signaling sipAdaptorProfile Modify_Headers rule 5 action 1 regexp matchInstance one commit
set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG signaling messageManipulation outputAdapterProfile Modify_Options commit
Create a default route for the destination IP to come inside the network via a particular interface.
Replace "x.x.x.x" with destination IP, "Y" with the prefix length and "z.z.z.z" with the PKT1 gateway IP address.
set addressContext default staticRoute X.X.X.X Y Z.Z.Z.Z LIF2 PKT1_V4 preference 100 commit
Create a Packet Service Profile (PSP) for the PSTN side. The PSP is specified within the SIP Trunk Group configuration.
set profiles media packetServiceProfile PSTN_PSP set profiles media packetServiceProfile PSTN_PSP codec codecEntry1 G711-default set profiles media packetServiceProfile PSTN_PSP rtcpOptions rtcp enable set profiles media packetServiceProfile PSTN_PSP preferredRtpPayloadTypeForDtmfRelay 101 set profiles media packetServiceProfile PSTN_PSP silenceInsertionDescriptor g711SidRtpPayloadType 13 heartbeat enable commit
If PSTN does not support RTCP, disable RTCP flag in the PSTN PSP, and enable "terminationForPassthrough" flag on TEAMS PSP. Refer Teams PSP configuration.
Create an IP Signaling Profile (IPSP) for the PSTN side. The IPSP is specified within the SIP Trunk Group configuration.
set profiles signaling ipSignalingProfile PSTN_IPSP set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags includeReasonHeader enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags sendPtimeInSdp enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags sendRtcpPortInSdp enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags routeUsingRecvdFqdn enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags minimizeRelayingOfMediaChangesFromOtherCallLegAll enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags relayDataPathModeChangeFromOtherCallLeg enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes relayFlags notify enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes relayFlags statusCode4xx6xx enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes optionTagInRequireHeader suppressReplaceTag enable set profiles signaling ipSignalingProfile PSTN_IPSP commonIpAttributes flags includeTransportTypeInContactHeader enable set profiles signaling ipSignalingProfile PSTN_IPSP egressIpAttributes flags disable2806Compliance enable set profiles signaling ipSignalingProfile PSTN_IPSP egressIpAttributes redirect flags forceRequeryForRedirection enable set profiles signaling ipSignalingProfile PSTN_IPSP egressIpAttributes transport type1 tcp set profiles signaling ipSignalingProfile PSTN_IPSP egressIpAttributes transport type2 udp set profiles signaling ipSignalingProfile PSTN_IPSP ingressIpAttributes flags sendSdpIn200OkIf18xReliable enable commit
Create an IP interface group.
Replace "x.x.x.x" with SBC's pkt0 IP address and 'y' with its subnet mask. Use the SBC system name for "ceName".
set addressContext default ipInterfaceGroup LIF1 ipInterface PKT0_V4 ceName IOTGCM portName pkt0 set addressContext default ipInterfaceGroup LIF1 ipInterface PKT0_V4 ceName IOTGCM ipAddress x.x.x.x prefix y set addressContext default ipInterfaceGroup LIF1 ipInterface PKT0_V4 mode inService state enabled commit
Create a Zone that groups the set of objects that are used for the communication to PSTN.
set addressContext default zone PSTN_ZONE id 2 commit
Create a SIP Signaling port which is the logical address permanently bound to a specific zone which is used to send and receive SIP call signaling packets.
Replace "x.x.x.x" with SBC's pkt0 IP address.
set addressContext default zone PSTN_ZONE id 2 sipSigPort 1 ipInterfaceGroupName LIF1 ipAddressV4 x.x.x.x portNumber 5060 transportProtocolsAllowed sip-tcp,sip-udp,sip-tls-tcp set addressContext default zone PSTN_ZONE id 2 sipSigPort 1 mode inService state enabled commit
Create a SIP Trunk Group towards PSTN side and assign the PSP, IPSP and LRBT Profiles configured above.
For ingressIpPrefix, replace "x.x.x.x" and "y" with the IP address and subnet mask that you want to allow from PSTN.
set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG media mediaIpInterfaceGroupName LIF1 set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG policy media packetServiceProfile PSTN_PSP set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG policy signaling ipSignalingProfile PSTN_IPSP set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG downstreamForkingSupport enabled set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG signaling rel100Support enabled set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG services dnsSupportType a-only set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG ingressIpPrefix X.X.X.X Y set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG mode inService state enabled set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG signaling honorMaddrParam enabled set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG signaling relayNonInviteRequest enabled set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG media sdpAttributesSelectiveRelay enabled set addressContext default zone PSTN_ZONE sipTrunkGroup PSTN_TG policy media toneAndAnnouncementProfile LRBT_PROF commit
Create an IP Peer with the Fully-Qualified Domain Name (FQDN) or IP address of the endpoint and assign it to the PSTN Side.
Replace "x.x.x.x" with PSTN IP address.
set addressContext default zone PSTN_ZONE ipPeer PSTN_IPP ipAddress X.X.X.X ipPort 5060 commit
If FQDN is configured, attach DNS group to the PSTN Zone.
Create a default route for the destination IP to come inside the network via a particular interface.
Replace "x.x.x.x" with destination IP, "Y" with the subnet mask and "z.z.z.z" with the PKT0 gateway IP address.
set addressContext default staticRoute X.X.X.Z Y Z.Z.Z.Z LIF1 PKT0_V4 preference 100 commit
Create a Routing Label with a single Routing Label Route to bind the PSTN or Teams Trunk Group with the PSTN or Teams IP Peer.
set global callRouting routingLabel TEAMS_RL routingLabelRoute 1 trunkGroup TEAMS_TG ipPeer TEAMS_PEER inService inService set global callRouting routingLabel PSTN_RL routingLabelRoute 1 trunkGroup PSTN_TG ipPeer PSTN_IPP inService inService commit
Ensure Routing is put in place to send calls to the correct destination. Number based routing is used for the purpose of this scenario; however, you may use additional routing options. The configuration of both standard and username routes are performed to ensure that no matter how the called party is addressed (a number or a username), the SBC routes the message to the Core.
Create Route entries for standard Trunk Group routing with Matching Criteria and a Routing Label destination.
set global callRouting route none Sonus_NULL Sonus_NULL standard 962042 1 all all ALL none Sonus_NULL routingLabel PSTN_RL set global callRouting route none Sonus_NULL Sonus_NULL standard 777888500 1 all all ALL none Sonus_NULL routingLabel TEAMS_RL set global callRouting route none Sonus_NULL Sonus_NULL username Sonus_NULL Sonus_NULL all all ALL none SIP.PSTNHUB.MICROSOFT.COM routingLabel TEAMS_RL set global callRouting route trunkGroup TEAMS_TG PTFY06 standard Sonus_NULL Sonus_NULL all all ALL none sip.pstnhub.microsoft.com routingLabel TEAMS_RL set global callRouting route trunkGroup TEAMS_TG PTFY06 standard Sonus_NULL Sonus_NULL all all ALL none sip2.pstnhub.microsoft.com routingLabel TEAMS_RL set global callRouting route trunkGroup TEAMS_TG PTFY06 standard Sonus_NULL Sonus_NULL all all ALL none sip3.pstnhub.microsoft.com routingLabel TEAMS_RL commit
# Generate a private key (Use any Linux box to execute openssl cmds) openssl genrsa -out /opt/sonus/csrkey.key 2048 # Generating the CSR requires another openssl command along with file location, name of your newly created key, path and file name for your CSR. # You are also prompted for information to populate the CSR. openssl req -new -key /opt/sonus/csrkey.key -out /opt/sonus/certcsr.csr The Country Name is mandatory and takes a two-letter country code:US The State or Province Name field requires a full name:Taxes The Locality Name field is for your city or town:Plano In the Organization Name field, add your company or organization:Ribbon Organizational Unit Name is an optional field for your department or section:Engineering The Common Name field is used for the Fully Qualified Domain Name (FQDN) of the server (can be * if it is a wildcard): *.example.com Email address is an optional field for this request: You can hit Enter to skip forward The challenge password: <User define> Company name: Ribbon # After receiving the CSR with above information, provide it to CA (Certificate Authority). You will then receive the proper CA signed certificate in .crt format that is convertable into other formats using openssl. # By default, you should receive two or more certificate from CA (depanding upon your CA). One is the SBC certificate, and other is CA's root and intermediate certificate. # Upload the certificates to the SBC at /opt/sonus/external and convert them into SBC-readable format, i.e. SBC certificate is in .pem or .p12 format and root certificate is in .cer or .der. #Converting .crt to .pem USING OPENSSL for SBC certificate. openssl x509 -in sbc_cert.crt -out sbc_cert.der -outform DER openssl x509 -in sbc_cert.der -inform DER -out sbc_cert.pem -outform PEM #After generating sbc_cert.pem file, convert it to .p12 format using below command. openssl pkcs12 -export -out sbc1_cert.p12 -in sbc_cert.pem -inkey /opt/sonus/csrkey.key #CONVERTING CRT to CER USING OPENSSL for CA's root and intermediate certificate. openssl x509 -in root_cert.crt -out root_cert.cer -outform DER ## Use Baltimore's Root Certificate which is downloadable from the below link. It is present in .pem format. Convert it to .cer format using openssl command. ### http://certificate.fyicenter.com/319_Root_CA_Baltimore_CyberTrust_Root_CyberTrust_Baltimore_IE.html #CONVERTING PEM to CER USING OPENSSL openssl x509 -outform der -in Baltimore_cert.pem -out Baltimore_cert.cer After converting all these certificates upload them on SBC at /opt/sonus/external location.
#Create Crypto Suite Profile. set profiles security cryptoSuiteProfile CRYPT_PROF entry 1 cryptoSuite AES-CM-128-HMAC-SHA1-80 #Import Public CA Root Certificate into database. set system security pki certificate CA_ROOT_CERT type remote fileName root_cert.cer state enabled #Import Baltimore Certificate into database. set system security pki certificate BALTIMORE_CERT type remote fileName Baltimore_cert.cer state enabled #Import Public CA Certified SBC Server Certificate into database set system security pki certificate SBC_CERT filename sbc1_cert.p12 passPhrase <Password defined during CSR generation> state enabled type local #Create TLS Profile set profiles security tlsProfile TLS_PROF clientCertName SBC_CERT serverCertName SBC_CERT cipherSuite1 tls_ecdhe_rsa_with_aes_256_cbc_sha384 cipherSuite2 tls_ecdhe_rsa_with_aes_128_cbc_sha authClient true allowedRoles clientandserver acceptableCertValidationErrors invalidPurpose set profiles security tlsProfile TLS_PROF v1_1 enable set profiles security tlsProfile TLS_PROF v1_0 disable set profiles security tlsProfile TLS_PROF v1_2 enable commit #Configure Packet Service Profile with Crypto Suite set profiles media packetServiceProfile TEAMS_PSP secureRtpRtcp cryptoSuiteProfile CRYPT_PROF set profiles media packetServiceProfile TEAMS_PSP secureRtpRtcp flags enableSrtp enable set profiles media packetServiceProfile TEAMS_PSP secureRtpRtcp flags allowFallback disable #Configure SIP Signailng Port set addressContext default zone TEAMS_ZONE sipSigPort 4 state disable mode outOfService set addressContext default zone TEAMS_ZONE sipSigPort 4 tlsProfileName TLS_PROF set addressContext default zone TEAMS_ZONE sipSigPort 4 state enable mode inService commit
Teams SIP Proxy server only supports TLS version 1.2 with specific ciphersuit. At time of documentation Ribbon SBC support tls_ecdhe_rsa_with_aes_128_cbc_sha and tls_ecdhe_rsa_with_aes_256_cbc_sha384.
Attach TLS Profile to SIP Signaling Port
set addressContext default zone Teams_ZONE sipSigPort 4 state disabled mode outOfService commit set addressContext default zone Teams_ZONE sipSigPort 4 tlsProfileName TLS_PROF commit set addressContext default zone Teams_ZONE sipSigPort 4 state enabled mode inService commit
To support Media Bypass on Teams, the SBC must support ICE and RTCP MUX.
#Enabling ICE Lite set addressContext default zone TEAMS_ZONE sipTrunkGroup TEAMS_TG services natTraversal iceSupport iceWebrtc commit #Enabling RTCP Mux set profiles media packetServiceProfile TEAMS_PSP rtcpOptions rtcpMux enable commit
Go to: Configuration --> Profile Management.
Go to: Codec Entry --> +New Codec Entry.
For enabling comfort noise, use G711SS-DEFAULT codec profile.
Go to: All --> System --> Media --> Media RTCP Control.
Go to: All --> Global --> Signaling --> SIP Domain --> + New SIP Domain.
Go to: All --> Profile --> Media --> Tone And Announcement Profile --> + New Tone And Announcement Profile.
After saving, Go to localRingbacktone --> LRBT_PROF (From Dropdown).
Go to: Local RingBack Tone -> Flags
Go to: All --> System --> Media --> Media Profile
This configuration is not required for SWe Core 7.2 release onwards.
Go to: All --> Profile --> Services --> Path check profile --> + New Path check profile.
Go to: Transport preference.
Go to: Configuration --> System Provisioning --> Zone --> + New Zone.
Go to: Configuration --> System Provisioning --> IP Interface Group --> + New IP Interface Group.
Go to: Configuration --> System Provisioning --> Ip Interface --> Ip Interface Group (Created above) --> + New IP Interface.
Choose your address context and zone --> + New SIP Sig Port.
Go to: All --> Address Context --> DNS Group --> + New DNS Group.
Choose DNS Group configured earlier (EXT_DNS).
Go to: Configuration --> System Provisioning --> Zone --> Teams_Zone.
Go to: All --> Profile --> Media --> Packet Service Profile --> + New Packet Service Profile.
Go to: All --> Profile --> Media --> Packet Service Profile --> Codec.
Go to: All --> Profile --> Media --> Packet To Packet Control --> RTCP Options.
Go to: All --> Profile --> Media --> Secure Rtp RTCP --> Flags.
Go to: All --> Profiles --> Media --> Packet Services Profile --> Rtcp Options.
Go to: All --> Profile --> Signaling --> IP Signaling Profile --> + New IP Signaling Profile.
Flags
Option Tag In Require Header
Number Globalization Profile
Domain Name
Flags
Ingress IP Attributes --> Flags
After Configuring Trunk Group, refer to Inbound and Outbound SMM required for Teams Trunk group.
Media (All --> Address Context --> Zone --> Sip Trunk Group --> Media).
Signaling (All --> Address Context --> Zone --> Sip Trunk Group --> Signaling).
Policy (All --> Address Context --> Zone --> Sip Trunk Group --> Policy --> Media).
Policy (All --> Address Context --> Zone --> Sip Trunk Group --> Policy --> Signaling).
Go to: All --> Address Context --> Zone --> IP Peer --> + New IP Peer.
For TLS, the Ribbon SBC Core increments the port number of the IP-Peer with one while sending out any call. Thus always configure a port less what remote peer is listening on. Please note, this is only applicable for TLS protocol.
Go to: All --> Address Context --> Zone --> IP Peer --> Path Check.
Click on Create Routing Label
Click on Create Routing Label Route.
Click on Create Route (Provide number towards Teams side).
For call transfer scenario towards PSTN, you need to create a route with both number and domain name. The screenshot above creates a route for any number starting with 9620XXXXXX and domain name will get routed towards Teams_RL.
Enable RTCP Mux
Refer to Media Bypass Topology diagram.
Go to: All --> Profile --> Media --> Packet Service Profile --> RTCP Options.
Enable ICE Lite
Go to: All --> Address Context --> Zone --> SIP Trunk Group --> Services --> NAT Traversal.
Go to: Configuration --> System Provisioning --> Zone --> + New Zone.
Go to: Configuration --> System Provisioning --> IP Interface Group --> + New IP Interface Group.
Go to: Configuration --> System Provisioning --> Ip Interface --> Ip Interface Group (Created above) --> + New IP Interface.
Go to: All --> Profile --> Signaling --> IP Signaling Profile --> + New IP Signaling Profile.
Flags
Option Tag In Require Header
Relay Flags
Domain Name
Privacy
Transport
Flags
Go to: All --> Profile --> Media --> Packet Service Profile --> + New Packet Service Profile.
Go to: All --> Profile --> Media --> Packet Service Profile --> Codec.
Go to: All --> Profile --> Media --> Packet Service Profile --> Rtcp Options.
Select Address Context and Zone (PSTN_Zone).
Media (All --> Address Context --> Zone --> Sip Trunk Group --> Media)
Policy (All --> Address Context --> Zone --> Sip Trunk Group --> Policy)
Signaling
Go to: All --> Address Context --> Zone --> IP Peer --> + New IP Peer.
You can configure the IP-Peer as the FQDN or IP address. To configure it as FQDN, refer to Teams' IP Peer configuration snapshot.
Click on New “Create Routing Label”.
Click on Routing Label Route.
Click on Create Route.
Go to: All --> System --> Security --> PKI --> Certificate --> New Certificate
After Saving it. Click on the created certificate (MS_CERT) --> Certificate Commands --> Generate CSR.
Provide the required information to generate the CSR.
MS Teams support Key Size2k only.
For converting the certificate format, refer to "TLS Configuration" page under Section A.
Add and upload all required certificates.
Click on “Upload All Files”.
Go to: All --> System --> Security --> PKI --> Certificate.
Similarly create a profile for remote certificates (Root, Intermediate, and Baltimore).
Go to: All --> Profile --> Security --> Crypto Suite Profile --> + New Crypto Suite Profile.
Choose created profile --> New Entry.
Go to: All --> Profile --> Security --> TLS Profile --> + New TLS Profile.
Teams SIP Proxy server only supports TLS version 1.2 with specific ciphersuit.
At the time of publishing this document, the Ribbon SBC supports following ciphersuits:
This feature will allow the SBC to failover to another site of Office 365 when a primary data center site is down.
Currently, Microsoft Office 365 has the following sites:
## Adding IP-Peer set addressContext default zone TEAMS_ZONE ipPeer TEAMS_PEER policy sip fqdn sip.pstnhub.microsoft.com fqdnPort 5060 set addressContext default zone TEAMS_ZONE ipPeer TEAMS1_PEER policy sip fqdn sip2.pstnhub.microsoft.com fqdnPort 5060 set addressContext default zone TEAMS_ZONE ipPeer TEAMS2_PEER policy sip fqdn sip3.pstnhub.microsoft.com fqdnPort 5060 ## Adding IP-Peer in RoutingLabel set global callRouting routingLabel TEAMS_RL routingLabelRoute 1 routeType trunkGroup trunkGroup TEAMS_TG ipPeer TEAMS_PEER inService inService set global callRouting routingLabel TEAMS_RL routingLabelRoute 2 routeType trunkGroup trunkGroup TEAMS_TG ipPeer TEAMS1_PEER inService inService set global callRouting routingLabel TEAMS_RL routingLabelRoute 3 routeType trunkGroup trunkGroup TEAMS_TG ipPeer TEAMS2_PEER inService inService ## Adding Reason Code in Cranckback Profile set profiles callRouting crankbackProfile default reason code 41
Understanding the SBC Hosting Scenario Example
A Microsoft partner sells telephony services delivered to Microsoft Teams to multiple independent enterprise customers (tenants). This partner may or may not be a PSTN carrier. Refer to Configure a Session Border Controller for multiple tenants for more information regarding Microsoft partner requirements in support of multiple tenants. The following example shows an SBC Core device deployed at the Microsoft partner data center. The following steps are configured on each independent enterprise tenant:
Teams Direct Routing in support of multiple tenants requires wildcard certificate support.
This example uses Microsoft partner's SBC FQDN as customers.interopdomain.com, and an example Tenant's SBC FQDN as tenant1.customers.example.com
The requirements for this configuration includes:
The requirements from the Tenant's side:
Using ERE for multi-tenant deployment, the Ribbon SBC Core has limitations to scale up to around 500 tenants. To have more tenants onboard, deploy the Ribbon SBC Core with a PSX.
To re-create multiple sipSigPort, re-use the same public IP with a different port number, and with a difference of two port numbers.
Update SBC Configuration for Each New Tenant
For each tenant, configure a separate zone, SIP signaling port, and trunk group.
You can have common or separate PSP and IPSP groups depending on your requirement. Refer to Section-A for PSP and IPSP configuration.
## Create Zone for tenantA set addressContext default zone TEAMS_Tenant_A id 10 set addressContext default zone TEAMS_Tenant_A domainName tenant1.customers.example.com ## Create SIP Signaling Port set addressContext default zone TEAMS_Tenant_A id 10 sipSigPort 12 ipInterfaceGroupName LIF2 ipAddressV4 115.X.X.X portNumber 5064 transportProtocolsAllowed sip-tls-tcp set addressContext default zone TEAMS_Tenant_A sipSigPort 12 tlsProfileName TLS_PROF set addressContext default zone TEAMS_Tenant_A id 10 sipSigPort 12 state enabled mode inService ## Create DNS Group set addressContext default dnsGroup EXT_DNS set addressContext default dnsGroup EXT_DNS type ip interface LIF2 server DNS2 ipAddress 8.8.8.8 state enabled set addressContext default zone TEAMS_Tenant_A dnsGroup EXT_DNS ## Create SIP Trunk set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG media mediaIpInterfaceGroupName LIF2 set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG signaling honorMaddrParam enabled set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG policy media packetServiceProfile TEAMS_A_PSP set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG policy signaling ipSignalingProfile TEAMS_A_IPSP set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG downstreamForkingSupport enabled set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG signaling rel100Support enabled set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG services dnsSupportType a-only set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG signaling relayNonInviteRequest enabled set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG signaling methods notify allow set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG ingressIpPrefix X.X.X.X X set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG policy media toneAndAnnouncementProfile LRBT_PROF set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG mode inService state enabled set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG media sdpAttributesSelectiveRelay enabled set addressContext default zone TEAMS_Tenant_A sipTrunkGroup TEAMS_A_TG signaling messageManipulation outputAdapterProfile domainname_A
## Create Zone for tenantB set addressContext default zone TEAMS_Tenant_B id 12 set addressContext default zone TEAMS_Tenant_B domainName tenant2.customers.example.com ## Create SIP Signaling Port set addressContext default zone TEAMS_Tenant_B id 12 sipSigPort 14 ipInterfaceGroupName LIF2 ipAddressV4 115.X.X.X portNumber 5066 transportProtocolsAllowed sip-tls-tcp set addressContext default zone TEAMS_Tenant_B sipSigPort 14 tlsProfileName TLS_PROF set addressContext default zone TEAMS_Tenant_B id 12 sipSigPort 14 state enabled mode inService ## Create DNS Group set addressContext default dnsGroup EXT_DNS set addressContext default dnsGroup EXT_DNS type ip interface LIF2 server DNS2 ipAddress 8.8.8.8 state enabled set addressContext default zone TEAMS_Tenant_B dnsGroup EXT_DNS ## Create SIP Trunk set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG media mediaIpInterfaceGroupName LIF2 set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG signaling honorMaddrParam enabled set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG policy media packetServiceProfile TEAMS_B_PSP set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG policy signaling ipSignalingProfile TEAMS_B_IPSP set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG downstreamForkingSupport enabled set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG signaling rel100Support enabled set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG services dnsSupportType a-only set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG signaling relayNonInviteRequest enabled set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG signaling methods notify allow set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG ingressIpPrefix X.X.X.X X set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG policy media toneAndAnnouncementProfile LRBT_PROF set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG mode inService state enabled set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG media sdpAttributesSelectiveRelay enabled set addressContext default zone TEAMS_Tenant_B sipTrunkGroup TEAMS_B_TG signaling messageManipulation outputAdapterProfile domainname_B
SMM Required for Hosting Solution
Create separate SMM Profile with the domain name of each tenant's FQDN and apply it on their respective trunk group.
## SMM Rule set profiles signaling sipAdaptorProfile domainname state enabled set profiles signaling sipAdaptorProfile domainname advancedSMM disabled set profiles signaling sipAdaptorProfile domainname profileType messageManipulation set profiles signaling sipAdaptorProfile domainname rule 1 criterion 1 type message set profiles signaling sipAdaptorProfile domainname rule 1 criterion 1 message set profiles signaling sipAdaptorProfile domainname rule 1 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile domainname rule 1 criterion 2 type header set profiles signaling sipAdaptorProfile domainname rule 1 criterion 2 header set profiles signaling sipAdaptorProfile domainname rule 1 criterion 2 header name contact set profiles signaling sipAdaptorProfile domainname rule 1 criterion 2 header condition exist set profiles signaling sipAdaptorProfile domainname rule 1 criterion 2 header hdrInstance all set profiles signaling sipAdaptorProfile domainname rule 1 criterion 3 type token set profiles signaling sipAdaptorProfile domainname rule 1 criterion 3 token set profiles signaling sipAdaptorProfile domainname rule 1 criterion 3 token condition exist set profiles signaling sipAdaptorProfile domainname rule 1 criterion 3 token tokenType urihostname set profiles signaling sipAdaptorProfile domainname rule 1 action 1 type token set profiles signaling sipAdaptorProfile domainname rule 1 action 1 operation modify set profiles signaling sipAdaptorProfile domainname rule 1 action 1 from set profiles signaling sipAdaptorProfile domainname rule 1 action 1 from type value set profiles signaling sipAdaptorProfile domainname rule 1 action 1 from value tenant1.customers.example.com set profiles signaling sipAdaptorProfile domainname rule 1 action 1 to set profiles signaling sipAdaptorProfile domainname rule 1 action 1 to type token set profiles signaling sipAdaptorProfile domainname rule 1 action 1 to tokenValue urihostname set profiles signaling sipAdaptorProfile domainname rule 2 criterion 1 type message set profiles signaling sipAdaptorProfile domainname rule 2 criterion 1 message set profiles signaling sipAdaptorProfile domainname rule 2 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile domainname rule 2 criterion 2 type header set profiles signaling sipAdaptorProfile domainname rule 2 criterion 2 header set profiles signaling sipAdaptorProfile domainname rule 2 criterion 2 header name From set profiles signaling sipAdaptorProfile domainname rule 2 criterion 2 header condition exist set profiles signaling sipAdaptorProfile domainname rule 2 criterion 2 header hdrInstance all set profiles signaling sipAdaptorProfile domainname rule 2 criterion 3 type token set profiles signaling sipAdaptorProfile domainname rule 2 criterion 3 token set profiles signaling sipAdaptorProfile domainname rule 2 criterion 3 token condition exist set profiles signaling sipAdaptorProfile domainname rule 2 criterion 3 token tokenType urihostname set profiles signaling sipAdaptorProfile domainname rule 2 action 1 type token set profiles signaling sipAdaptorProfile domainname rule 2 action 1 operation modify set profiles signaling sipAdaptorProfile domainname rule 2 action 1 from set profiles signaling sipAdaptorProfile domainname rule 2 action 1 from type value set profiles signaling sipAdaptorProfile domainname rule 2 action 1 from value tenant1.customers.example.com set profiles signaling sipAdaptorProfile domainname rule 2 action 1 to set profiles signaling sipAdaptorProfile domainname rule 2 action 1 to type token set profiles signaling sipAdaptorProfile domainname rule 2 action 1 to tokenValue urihostname set profiles signaling sipAdaptorProfile domainname rule 3 criterion 1 type message set profiles signaling sipAdaptorProfile domainname rule 3 criterion 1 message set profiles signaling sipAdaptorProfile domainname rule 3 criterion 1 message messageTypes all set profiles signaling sipAdaptorProfile domainname rule 3 criterion 2 type header set profiles signaling sipAdaptorProfile domainname rule 3 criterion 2 header set profiles signaling sipAdaptorProfile domainname rule 3 criterion 2 header name To set profiles signaling sipAdaptorProfile domainname rule 3 criterion 2 header condition exist set profiles signaling sipAdaptorProfile domainname rule 3 criterion 2 header hdrInstance all set profiles signaling sipAdaptorProfile domainname rule 3 criterion 3 type toke set profiles signaling sipAdaptorProfile domainname rule 3 criterion 3 token set profiles signaling sipAdaptorProfile domainname rule 3 criterion 3 token condition exist set profiles signaling sipAdaptorProfile domainname rule 3 criterion 3 token tokenType urihostname set profiles signaling sipAdaptorProfile domainname rule 3 action 1 type token set profiles signaling sipAdaptorProfile domainname rule 3 action 1 operation modify set profiles signaling sipAdaptorProfile domainname rule 3 action 1 from set profiles signaling sipAdaptorProfile domainname rule 3 action 1 from type value set profiles signaling sipAdaptorProfile domainname rule 3 action 1 from value tenant1.customers.example.com set profiles signaling sipAdaptorProfile domainname rule 3 action 1 to set profiles signaling sipAdaptorProfile domainname rule 3 action 1 to type token set profiles signaling sipAdaptorProfile domainname rule 3 action 1 to tokenValue urihostname
There are few areas that results in TLS negotiation issue. One of the them is assigning of incorrect port. Please make sure of the following:
By default, MS Teams listens on port number 5061
Configure port number 5060 on Teams IP-Peer as Ribbon SBC Core increments the port by 1 when transport protocol is TLS
For tenant's SBC configuration on Teams, use the same port number that is configured under SBC' sipSigPort
There can be issues during certificate exchange resulting in failure of TLS negotiation. Please note the following points for troubleshooting:
Make sure to install root and all intermediate certificates provided by your CA on the SBC
Make sure that SBC's FQDN configured on the Teams side is the same as that on SBC's certificate
In case of a wildcard certificate, make sure the correct number of spaces exist before the domain name
Example: A wild card certificate generated for *.example.com is not valid for *.customers.example.com. Refer to Tls Configuration section for detailed explanation on SBC supported certificate format.
There can be a situation when Teams SIP Proxy server responds with a SIP 403 to SIP OPTIONS request from SBC Core. This behavior is observed when Core SBC do not send domain information OR sends incorrect domain information to the Teams SIP Proxy. In either case, please verify the following:
Verify that SBC Core sends its FQDN in the 'From' and 'Contact' headers
Also, please make sure to configure the same as above on Teams SIP Proxy Server
Ensure SMM is applied to modify these headers in SIP Options Request