Okay! I sat down to write a post about how we’re building CoLTE, but it quickly degraded into a rambling, long-winded, poorly written discussion of cellular networks. I realized that before I can talk about CoLTE, we need to talk about LTE – so this is the first in a series of several posts about how LTE works. My goal is to keep each post relatively short, to-the-point, relevant, and layperson-accessible.
In this post, I’m going to present a super high level description of the different components of an LTE network and what they do.
Components of an LTE Network
“How do cell networks work, anyway?” is, literally, the first question I get when I tell people what I do for work. The answer could take weeks (months?) if I let it, but it’s sunny outside and the grill’s heating now, so let’s get to it.
You can think of a normal cell network, like that of AT&T or Verizon, as having three main parts: the phones themselves, called “UEs” in LTE-speak (Rule #1: everything in cellular has silly names), the cell towers, called “eNodeBs” (I wasn’t joking), and the network core, called the EPC (three for three!). A large scale network might have millions of UEs and thousands of eNBs, but only one EPC.
What is the eNodeB and what does it do?
For each cell tower you see, there’s an eNodeB powering it. The eNodeB sits between the UE and the EPC, and is essentially the “middleman” in charge of turning wired signals into wireless signals: the connection between the eNodeB and the EPC is a wired connection (ethernet in our case), but the connection between the eNodeB and the UE is the cellular link.
The eNodeB is the first thing that a UE talks to, and is responsible for setting up and maintaining a radio link with the UE – that may sound simple, but actually takes a ton of work. Things that the eNB has to keep track of include (1) how many cell phones are talking to it, (2) how much bandwidth each cell phone is allowed to have, (3) making sure that different phones who want to talk at the same time do so on different frequencies, (4) making sure that phones using the same frequency are talking at different times, (5) monitoring the area for new phones who might be trying to join the network, and (6) kicking off phones that haven’t said anything in a while, just in case they disappeared.
There’s a lot more to be said here, in another post, but the key takeaway is that the eNodeB sets up and maintains the radio link with the UE. Aside from this task, it’s a simple “dumb pipe” that forwards traffic between the UE and the EPC. Everything else is handled by the EPC.
Why is there only one EPC, and what does it do?
The EPC (which stands for “Evolved Packet Core”) is responsible for the vast majority of functionality in an LTE network, and can be thought of as the “brains” of the operation. These tasks include simple stuff like authenticating users and and routing calls, but also more complicated stuff like interconnecting with other phone networks and the Internet and keeping track of which tower each phone’s connected to (this is known as mobility management). The EPC also handles a bunch of other stuff you may not have thought of, like billing and spam detection/prevention.
The main reason there’s only a single EPC for the entire network is for consistency. Say my account was overdue, and I paid it up – or I didn’t, and my provider decided to cut me off. Either way, if the change was made at my eNodeB, then some towers might get the memo and kick me off, but others might not, and other-others might get confused by the lack of consistency across the network. If this change should be made network-wide (and most changes should be) then the best/easiest/simplest way for this to happen is to keep track of the information in one central location (the EPC), and have each cell tower simply check-in and ask it “is this account paid up?” whenever a phone connects.
To throw some more stuff into the alphabet soup, the EPC is actually divided into three separate parts that work together. The Home Subscriber Service (HSS) keeps track of users and account and ensures that only the correct users can use the network, like in the above example. The Mobility Management Entity (MME) keeps track of which user is connected to which tower at any given point in time, so that calls/texts/data gets sent to the right place. Finally, the Serving-Packet Gateway (S-PGW) is in charge of forwarding communication, either within the network (i.e. from one phone to another) or outside the network.
I’m a visual learner. What the heck does this look like?
The eNodeBs that we work with are typically about two feet long, one foot wide, and a half foot deep. These boxes come with two types of connectors: one upstream to the EPC, and one downstream to an antenna. Depending on many factors, antennas can come in a wide range of shapes and sizes, ranging from pencil-sized to the big antennas mounted on towers.
The EPC is just a set of software packages. In practice, each component (the HSS, MME, and S-PGW) of a national-scale network are probably powered by many physical machines working together, so just think of it as a datacenter.
What Our Network Looks Like
CoLTE is designed for small-scale community networks, as opposed to the larger-scale deployments discussed above. In a CoLTE network, we expect there to be a relatively low number of customers (under a thousand) connected one or two eNodeBs talking to a single EPC… and that’s it! Compared to most larger-scale telecom operations, our EPC will have a lot less work to do, and in practice we’ve been able to run it on a single piece of low-cost hardware: a laptop, NUC, or Zotac box have all worked fine.
For a number of reasons, it’s remarkably easier to write open source software than hardware – and when it comes to wireless, this is doubly true. Because of this, our EPC is an open source project that we contribute to, and we just plug it into an industry-grade commercial eNodeB that we bought from BaiCells. To give a sense of cost, the EPC was free, the Zotac box cost about $150, and the eNodeB about $3k.