Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
211f87f
Added Launch a VM notes
dreidenbaugh Oct 5, 2018
ce3c28e
Add Intro to S3 notes
dreidenbaugh Oct 28, 2018
85a9bcb
Add Hadoop Intro notes
dreidenbaugh Oct 28, 2018
41d2d27
Add QwikLab: Analyze Big Data with Hadoop notes
dreidenbaugh Oct 29, 2018
58712da
Add QwikLab: Intro to Amazon Redshift notes
dreidenbaugh Oct 29, 2018
3c8bbf0
Add Redshift lab time
dreidenbaugh Oct 29, 2018
d1d710b
Add Video: Short AWS Machine Learning Overview notes
dreidenbaugh Oct 29, 2018
bcf8710
Add AWS Tutorial: Analyze Big Data with Hadoop notes
dreidenbaugh Oct 29, 2018
e98b6f3
Add QwikLab: Intro to Amazon Machine Learning notes
dreidenbaugh Oct 29, 2018
ef3ad68
Add AWS Tutorial: Build a Machine Learning Model notes
dreidenbaugh Oct 29, 2018
3eea54c
Start Video Tutorial: Overview of AWS SageMaker notes
dreidenbaugh Oct 29, 2018
624fec0
Finish Video Tutorial: Overview of AWS SageMaker notes
dreidenbaugh Oct 29, 2018
bdfbd11
Add AWS Tutorial: AWS SageMaker notes
dreidenbaugh Oct 29, 2018
260546c
Add Build a Serverless Real-Time Data Processing App notes
dreidenbaugh Oct 29, 2018
ae9bae3
Upload images for data processing app
dreidenbaugh Oct 29, 2018
1fdde9e
Add images to data processing app notes
dreidenbaugh Oct 29, 2018
a2ab762
Add data app project summary
dreidenbaugh Oct 29, 2018
7edc5cd
Add Video: Why Docker? notes
dreidenbaugh Dec 1, 2018
757620c
Add Lab: DevOps Docker Beginners Guide notes
dreidenbaugh Dec 2, 2018
d1ab6d4
Add Video: Virtualization notes
dreidenbaugh Dec 2, 2018
8371a65
Add php-my-admin.png
dreidenbaugh Dec 9, 2018
f9d005e
Add AWS Tutorial: Install a LAMP Web Server notes
dreidenbaugh Dec 9, 2018
176ed54
Add S3 vs. EC2 Comparison notes
dreidenbaugh Dec 9, 2018
3d3ddf4
Add QwikLab: Intro to DynamoDB notes
dreidenbaugh Dec 9, 2018
b694108
Add elastic-beanstalk.png
dreidenbaugh Dec 9, 2018
ec8b04b
Add Deploy a Scalable Node.js Web App notes
dreidenbaugh Dec 9, 2018
46ea472
Add QwikLab: Intro to AWS Lambda notes
dreidenbaugh Dec 9, 2018
c16ed75
Add wile-rydes-serverless-app.png
dreidenbaugh Dec 9, 2018
bde8e40
Add Build a Serverless Web Application notes
dreidenbaugh Dec 9, 2018
b2b4654
Add QwikLab: Intro to Amazon API Gateway notes
dreidenbaugh Dec 9, 2018
0140480
Add docker-flask-setup.png
dreidenbaugh Dec 9, 2018
eba9d3d
Begin Build a Modern Web Application notes
dreidenbaugh Dec 9, 2018
aba5f17
Add code-pipeline.png
dreidenbaugh Dec 10, 2018
e854285
Add modern-app-architecture.png
dreidenbaugh Dec 10, 2018
729df01
Finish Build a Modern Web Application notes
dreidenbaugh Dec 10, 2018
6880a88
Add technical-report-diagram.png
dreidenbaugh Dec 10, 2018
acb438f
Add technical report
dreidenbaugh Dec 10, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
248 changes: 244 additions & 4 deletions README.md

Large diffs are not rendered by default.

Binary file added aggregate-stream.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added athena-table.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added code-pipeline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data-app-architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docker-flask-setup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# What Happens When You Press Call
Dietrich Reidenbaugh | December 8, 2018

As of 2018, 95% of American adults own a cell phone, with 77% owning smartphones. Clearly it’s easy to get one and start using it - you tell the salesperson from your provider which phone you want, they enter a few numbers on the phone and in the computer, and next thing you know you can surf the web and make calls with a press of a button. While it’s a fairly simple system for the user, wirelessly connecting billions of phones around the world and to the Internet is not a small feat. Here we explore how this system works.

To gain some initial context, let’s consider a cell phone as a computer, which it is. Like most computers, it has a CPU, memory, and storage. It also has a battery, making it mobile. The user interface is implemented with input/output components much like a computer as well, with a display, speakers, microphones, and some kind of input mechanism such as a keypad, keyboard, or touch screen. However, what makes the cell phone a cell phone is its networking device, an antenna, which converts electrical signals to radio waves and vice versa.

The other end of these radio waves is a cell site such as a tower. Oftentimes, each site has three antennas pointing in different directions, and the area within the range of an antenna at the site is called a cell. To plan how the cells fit together, they are often thought of as hexagons, meaning each cell borders six other cells. Cell phone companies are usually permitted to use a certain range of frequencies. To avoid interference in areas of overlap at the borders, adjacent cells must use different frequency ranges.

Many users in the same cell can be connecting to the same site at the same time, so multiplexing techniques must be used to distinguish the signals. This can be done simply by dividing the frequencies or splitting the time, but more complicated and optimized techniques are often employed. Note that cell phones use two frequencies at once during a call: one for sending and one for receiving.

The antennas at the cell site are connected to radios which are part of the base transceiver station (BTS). Since there are so many of them, the BTS is designed to be as simple and cheap as possible. The base station controller (BSC), to which several BTSs are connected, has the database and processing to keep track of which phones are connected to which BTSs and decide when they should be switched.

The cell phone network is designed so that phones can move between cells without interrupting a call. A potential way to decide when to switch, in a process called a handover or handoff, would be for the phone to use whichever cell is providing the strongest signal at all times. However, near cell borders where the signal strengths are close, this could result in handovers occurring too frequently. Instead, each cell has a minimum signal threshold. When the BSC confirms that the phone’s signal strength with its current cell is too low, it will initiate a handover. Handoffs cannot occur instantaneously, so there are two types of handoffs: break-before-make, and make-before-break. Which one is used depends on the specific multiplexing scheme for the network. With a break-before-make handoff, the current connection is cut off while the new one is established. For analog calls, this could mean a gap of 200 milliseconds while the phone tunes to a new frequency. For digital calls, the gap is closer to 20 milliseconds, and since it is digital, techniques can be used to bridge over the gap making it unnoticeable. The make-before-break handoff, on the other hand, allows the phone to temporarily communicate with two BTSs at the same time, so there is no gap during the handover.

The next step for a call after the BSC is the mobile switching center (MSC) or mobile telephone switching office (MTSO), which is connected to all of the BSCs in a region. The MSC is critical for routing the call. It is connected to two databases called the home location register and the visited location register. The home location register (HLR) is a central database - and sometimes a single point of failure - for the mobile network that stores each phone’s subscriber information, billing information, and last known location area. The visited location register (VLR) contains information specifically for devices being served by an MSC. It has the information from the HLR but also additional details, such as encryption and power information, that are updated more frequently while a phone is in use.

The MSCs are all networked together. When a call is being placed, the MSC queries the HLR to determine the last known location area of the target phone. It then routes the call to the appropriate MSC, which in turn attempts to connect the call through the BSC and BTS to the device.

This works great for phones on the same mobile network. However, to make calls to phones using other providers or to landline phones, the MSCs are also connected to the existing landline telephone network, called the Public Switched Telephone Network (PSTN). Historically, every telephone call had to have its own electrical connection on copper wires, and operators at the central office for a local exchange carrier, the local telephone company, would manually connect two lines together when someone wished to place a call. If the caller wanted to place a long-distance call, the operators would work with interexchange carriers to connect the lines from the local exchange central offices at each end. Eventually, this system became automated. The North American Numbering Plan was developed to manage phone numbers, with the idea being that the area code could be used to route long-distance calls, the next three digits would refer to automatic switches owned by local exchange carriers, and the final four digits referred to individual lines on the switch.

Today, this basic format of phone numbers is still used. However, the system has become highly digitized and computerized, which has allowed flexibility in how it actually operates. For example, thousands of phone calls can be simultaneously transmitted on fiber-optic cables, so even though end users may have phones on analog lines, the calls are likely converted to digital signals in transit so they can share wires. In addition, phone companies were legally mandated to allow users to switch phone companies and keep their old numbers, meaning the phone numbers no longer refer to specific switches and lines. But the hierarchical setup, similar to the Internet Protocol, remains the same: there is no central database that knows every connection to connect two phone numbers. Instead, this task is distributed across hundreds of carriers and central offices which know the specific connections to make for a subset of phone numbers, but they must work with each other to connect phones on a wider scale.

![](docs/technical-report-diagram.png)


### Sources

* https://web.archive.org/web/20120417220750/http://www.privateline.com/Cellbasics/Cellbasics02.html
* https://web.archive.org/web/20120511011603/http://www.privateline.com/levine/CELPCS4.PDF
* http://www.cmm.gov.mo/eng/exhibition/secondfloor/MoreInfo/2_6_9_MobileSwitching.html
* https://electronics.howstuffworks.com/cell-phone.htm/printable
* https://electronics.howstuffworks.com/telephone-country-codes.htm/printable
* http://www.pewinternet.org/fact-sheet/mobile/
Binary file added docs/technical-report-diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added elastic-beanstalk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added lambda-monitors.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added modern-app-architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added php-my-admin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added shadowfax.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added wile-rydes-serverless-app.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.