How much overhead is used to send the message “K” back to an SMS?
Latest Posts
Charging problem on Fluke 990 CopperPro
Charging issues on Fluke 990 CopperPro test set.
Kamailio Diameter Routing Agent Support
Using Kamailio with a Diameter Routing Agent
Ericsson & Nokia RRU Power Connectors – Wiring and Tricks
Assembling Amphenol RRU power connectors and modifying them to work with Ericsson and Nokia RRUs.
Diameter Routing Agents – Part 5 – AVP Transformations with FreeDiameter and Python in rt_pyform
Using FreeDiameter, Python and our newly released “rt_pyform” module to rewrite AVPs in your FreeDiameter based Diameter Routing Agent.
NB-IoT NIDD Basics
An overview of the who, how and why of Non-IP Data Deliver in NB-IoT cellular services.
Diameter Routing Agents – Part 5 – AVP Transformations
A look at why we’d want to apply translations to Diameter AVPs inside a Diameter Routing Agent
Diameter Routing Agents – Part 4 – Advanced FreeDiameter DRA Routing
Looking at overriding the default Diameter routing logic in FreeDiameter with rt_default
Diameter Routing Agents – Part 3 – Building a DRA with FreeDiameter
Using FreeDiameter as a DRA
Diameter Routing Agents (Why you need them, and how to build them) – Part 2 – Routing
Diving back into the world of Diameter Routing Agents with a look at the logic that defines how a DRA routes traffic from one place to another.
Diameter Routing Agents (Why you need them, and how to build them) – Part 1
Answer Question 1: Because they make things simpler and more flexible for your Diameter traffic.
Answer Question 2: With free software of course!
All about DRAs
But let’s dive a little deeper. Let’s look at the connection between an MME and an HSS (the S6a interface).

We configure the Diameter peers on MME1 and HSS01 so they know about each other and how to communicate, the link comes up and presto, away we go.
But we’re building networks here! N+1 redundancy and all that, so now we have two HSSes and two MMEs.

Okay, bit messy, but that’s okay…
But then our network grows to 10 MMEs, and 3 HSSes and you can probably see where this is going, but let’s drive the point home.

Now imagine once you’ve set all this up you need to do some maintenance work on HSS03, so need to shut down the Diameter peer on 10 different MMEs in order to isolate it and deisolate it.
The problem here is pretty evident, all those links are messy, cumbersome and they just don’t scale.
If you’re someone with a bit of networking experience (and let’s face it, you’re here after all), then you’re probably thinking “What if we just had a central system to route all the Diameter messages?”
An Agent that could Route Diameter, a Diameter Routing Agent perhaps…
By introducing a DRA we build Diameter peer links between each of our Diameter devices (MME / HSS, etc) and the DRA, rather than directly between each peer.


Then from the DRA we can route Diameter requests and responses between them.
Let’s go back to our 10x MME and 3x HSS network and see how it looks with a DRA instead.

Not only does this look better, but it makes our life operating the network a whole lot easier.
Each MME sends their S6a traffic to the DRA, which finds a healthy HSS from the 3 and sends the requests to it, and relays the responses as well.
We can do clever load balancing now as well.
Plus if a peer goes down, the DRA detects the failure and just routes to one of the others.
If we were to introduce a new HSS, we wouldn’t need to configure anything on the MMEs, just add HSS04 to the DRA and it’ll start getting traffic.
Plus from an operations standpoint, now if we want to to take an HSS offline for maintenance, we just shut down the link on the HSS and all HSS traffic will get routed to the other two HSS instances.
In our next post we’ll talk about the Routing part of the DRA, how the decisions are made and all the nuances, and then in the following post we’ll actually build a DRA and start routing some traffic around!
Filtering for 3GPP DNS in Wireshark
Filtering for 3gppnetwork.org domains in Wireshark to make your troubleshooting easier
FreeDiameter – Generating Certificates
Using OpenSSL to generate self-signed certs for use in FreeDiameter
Cisco ITP / SS7 STP – Viewing MTP3 traffic from TDM Links
Okay, so a little late to the party on this one… The other day I had to setup a TDM (E1) based SS7 link (oh yes my friend – they still exist) to interconnect with another operator. I’m using Cisco’s ITP product as the STP / Signaling Gateway, and my trusty port mirror for what’s … Continue reading Cisco ITP / SS7 STP – Viewing MTP3 traffic from TDM Links
Sangoma Transcoding Cards Setup
Updated documentation for managing D150 transcoding cards
Adding USB-C Charging to an old ThinkPad
Long after humans reduce this planet to an inhospitable wasteland, cockroaches and my Lenovo ThinkPad will continue to survive.
My only gripe with my almost decade old laptop, is the charger. It has a standalone charger, and I can’t charge it on USB-C.
Way back in when Lenovo took over from IBM, the barrel jack style charger that ThinkPads had used was replaced with a slimmer rectangular charger port, to allow for more slimmer laptops. You can get adapters to allow you to use your old chargers with the new(er) laptops, and luckily for us, this means we have a cheap and readily available source of male slimline charger plugs, without having to resort to cutting up a charger.
And for a few bucks online, you can buy USB-C Power Delivery converters that you plug USB-C into one end of, and get out 20v on the other side…


So I combined the two; USB-C to 20v adapter on one side, and a cut up barrel-charger to slimline charger adapter on the other using the male slimline charger plug.

And bingo, just like that I’ve got a USB-C charging capability for my Thinkpad.
After potting in silicone, I’ve got something that can go in my backpack and allow me to charge my laptop on the go with a USB-C charger, for under $5 of parts.

Get all the FreeSWITCH Folder Paths
A simple trick to find all the system paths used in FreeSWITCH
CGrateS in Baby Steps – Part 4 – Rating Calls
In our last few posts we got CGrateS setup in order to have rates and tariffs in the system, so we can price a call. Where we ended we were able to use the APIerSv1.GetCost method to get the cost of a call, and today, we’re going to actually create some rated CDRs. So again … Continue reading CGrateS in Baby Steps – Part 4 – Rating Calls
Testing Mobile Networks with Remote Test Phones
Using Android’s development features to allow remote control of a UE in the field for testing the cellular network.
CGrateS in Baby Steps – Part 3 – RatingProfiles & RatingPlans
Finally rating a call end-to-end with CGrates!