Skype for Business

AT&T IP Flex and SfB

If you work for AT&T and reading this, I am sorry, I am just telling my story in hopes that you will see this and make some changes (Or hire me to help make some changes)I recently had to go through and migrate from a traditional PRI (owned by AT&T) to AT&T IP-Flex (SIP trunk).  This was not an enjoyable experience, it took a very long time to get it all up and running, from initial talks to useable was about 1 year.  And there are still problems.  On of which is CID information.  AT&T follows strict SIP RFC.  This means that they support P-Asserted-Identity and CID data.  So if a company has that blocked, your caller ID shows Unknown for inbound calls.  However many companies send P-Preferred-Identity instead (so that call center products can get the name, but consumers do not).  AT&T does not support this, so you will get a lot of calls of Unknown.  I will write a blog post on how to fix this on a Sonus SBC shortly.  Personally, I would never use IP-Flex again (if it is  my choice).  I would rather go with Pure-IP.  They are more flexible, faster, support P-Preferred Identity and understand SIP way better.  I even talked to one AT&T’s senior SIP support engineers who said “Yeah, we don’t really understand SIP here that well”. Pure-IP can also get you a SIP trunk (over the internet) in hours or less, and they support global DID numbers.  AT&T only supports US numbers (and not in every state either).  If you are looking for an outstanding SIP provider that will work with you, and is reliable and easy, I would say look at Pure-IP (they are also less expensive).  And no, I don’t work for them, never have, nor do I get any kick-back, but they are really good people, with outstanding support.  (AT&T support is awful, their web interface is terrible, their support organization as a whole is just bad, I mean really bad.  It took me nearly 4 hours to get a ticket in once, and I had to get my sales rep to do it for me).

But anywys, let’s get started.  When you get your IP-Flex circuit up, you will get a very long and confusing document when you do your test and turn-up.  Which I do like this part of the process, you have an engineer from AT&T who can help look things up for you if there is an issue.  In this article, I am not going to focus on what it takes to get the networking configured, that is an entirely different process, which AT&T is pretty good at helping out with.  So in this letter there are three pieces of information you will need. I also assume you already know how to use a Sonus SBC, and you don’t want to go through the wizard (which is how I figured all this out).

Telephone Number Information:

TN Start TN End Type
4085551212 1532 ATT_NP

IP Border Element Assignments:

IPBE IP Address SD Media IP Address

Digits Sent to PBX:


Right away you will notice they are not sending us E.164, just 10 digits, not a bid deal, this can be handled in the transformation table by just adding the +1 to the beginning. You will also notice there is a Border Element and a Media Range (not one like all other SIP providers do, did I say look at Pure-IP yet?)

Transformation Tables

You will need 2 transformations tables, From AT&T to SfB and From SfB to AT&T.  The basic rules are straight forward for this

From AT&T to SfB.  I like being specific, but I’ll show you a simple way too.

called number: 408555(121[3-9]|13[4-9]\d{1}|15[0-2]\d{1}|153[0-2]) –> +1408555\1 (Not that these numbers DO NOT match the example I have above, check our regex101 on doing it).  Notice I am just putting a +1 in front of it you could simplify it by just doing (.*)–>+1\1 and that would do all, but again, I think you would run into other problems with this.

From SfB to AT&T.  AT&T will accept E.164, so you don’t have to strip off the + or deal with 011, you can send it E.164.  There are two rules you really need, the outbound (calling) and allow for toll free. so here is the first one: calling number \+1408555(121[3-9]|13[4-9]\d{1}|15[0-2]\d{1}|153[0-2]) –> calling number +1408555\1.  This way you ensure that your calling numbers will go out that trunk.  I have several SIP trunks, one to Pure-IP, one to RedSky, and one to an internal PBX Cisco system, so I need to be specific to make sure calls go where they need to go.  The second one is for toll free numbers (pay attention to this one) calling number: ^\+(1800|1822|1833|1844|1855|1866|1877|188?)(.*) –> Redirected number 14085551212 (notice the redirected number).

So now we have our basic transformation tables.  Let’s look the other stuff, we will do the Call route and signaling groups last

Q.850 to SIP Override table. There are two entries for this.

AT&T Ones

SfB Ones, these may already be there


Cause Code reroutes

Tone Tables.

Those are most likely already there from your previous configuration.

Media List

Media Profiles and Media Crypto should already be there from previous configurations.

So now we get to the work

SIP Profile (I am just talking about what needs to be done with AT&T remember).  If this is your first time setting up the SBC and don’t have any other conenctions, especially to SfB, you have read a lot so far.  But I would just run the configuration wizard.  I’ll point out from here on out things that the wizard doesn’t do.

SIP Server Table.  You will need to do one of these for each IP address they give you.  In the report I got, there are 8 IP Addresses, so you will need to make 8 of them, one for each IP address

Signaling Groups.  Remember above, how these things come in pairs, you need to make a signaling group for each pair, and not have all of them in a single group.  So you would have 4 signaling groups.  These then get added to the Call Routing table in order.  You’ll see, it will make sense. Don’t worry that they say down, this is just in my lab.  If you get all the core networking right, this will show as up.  You just need to modify the Federated IPs for each pair

This first one is the From AT&T. The SfB one is probably already done since you are just adding the AT&T trunk (again, first time, just run the wizard)

Call Routing Table This is the final configuration,  This is the From AT&T side.  In general it is best to make it most restrictive to least.  For example, you would put the ones that have the specific numbers at top and the passthru last.

There are two tables, the one from A&T to SfB and the one From SfB to AT&T, this is the key to it all.  By now, you should have all the parts in play, and should show the connections up. The Routing table is what puts everything together.  Since you already have the SfB Component, you should be able to just copy what you already have, however you just need to change this setting

Now at this point you really need to make sure you have everything in the routing table in the correct order. You already have SfB and the SBC connected to a PRI or SIP trunk, and the SBC already talking to SfB.  So you really are not going to be adding any top level routing tables, just rules in a table.  I cannot tell you what the order needs to be in (I don’t know what you have), but for testing I would put them near the bottom, above your catcahll all/passthru.

So let’s start with your inbound calls (from AT&T to SfB), you are just going to add rules to your existing To SFB routing table (most likely). The biggest difference between the inbound rules is the Transformation table.  For inbound though, you will only have 1 rule, which adds…..the +1 in front of it.  Remember, AT&T is only in North America, so you don’t have to worry about +49 or any other country codes..  Now here you are going to add each signaling group pair to the destination signaling group setting.

So the one that goes from SfB To AT&T is pretty much the same.  The only difference is the normalization rule and the Destination signaling group.  You should already have an example of that.  So for here, there would be just one entry, the one for the toll free calls.  Pretty simple.

Now you just need to update your SfB Trunks.  Yes, you need to make a setting on SfB for the Trunk to the Sonus.  Mind you this is trunk specific.  So if you cannot change the one you already have, you will need to make a separate trunk in topology.  But here are the settings you need to make

set-csvoicetrunk -identity xxxx -EnableSessionTimer:$true -RTCPActiveCalls:$false -RTCPCallsOnHold:$false

Then restart the trunk (this will cause an quick outage of service

stop-cswindowsservice RTCMEDSRV

start-cswindowsservice RTCMEDSRV

So, if you follow all of this you should be set to go.