1

wip telephone post

This commit is contained in:
Evan Pratten 2022-02-14 13:14:28 -05:00
parent 7c23649d50
commit 4b3f84c537
7 changed files with 102 additions and 13 deletions

View File

@ -3,8 +3,38 @@ layout: page
title: "I built my own private telephone network"
description: "Nobody makes phone calls anymore"
date: 2022-02-14
tags: random 3d-pipeline
tags: project pbx
draft: true
extra:
uses_katex: false
auto_center_images: true
---
Over the past few months, I have built my own [internet backbone router](/blog/amprnet-bgp) (and an [internet exchange](https://ffixp.net)). So logically, the next step is to branch off into telephony... *right?*
Eh, even if I never get any practical use out of any of this in the end, at least its content for the blog.
## A simplistic introduction to telephone networking
This is all coming from someone that has very little experience with the telephony world, but I *have* managed to make all my gear work, so this can't go too badly.
As far as I have ever been concerned, the telephone network looks as follows:
![The magical phone network](/images/posts/personal-pbx/magic_phones.png)
But in reality, it looks a little more like the internet (I guess that makes sense, since dialup was a thing).
![The magical phone network, with more phones](/images/posts/personal-pbx/phone_internet.png)
The *Dark Magic* still exists, and I am still not entirely sure whats going on there. Presumably some kind of routing protocols exists to handle country codes and such, but I have had no need (yet) to explore this further.
Continuing on with terminology, **Phones** are simply endpoints. Such endpoints could be cellphones, VOIP clients, automated answering machines, etc. **Carriers** are the same as the internet world. Big companies that own switching gear and phone number blocks they charge you to connect up to.
Finally, **PBX**es. A [Private Branch eXchange](https://en.wikipedia.org/wiki/Business_telephone_system#Private_branch_exchange) (PBX) combines the concepts of routers and [NATs](https://en.wikipedia.org/wiki/Network_address_translation) in the telephony world. A PBX can be hardware-controlled, or software-defined through something like [Asterisk](https://en.wikipedia.org/wiki/Asterisk_(PBX)).
I have personally used Asterisk a fair bit due to its heavy use in the Amateur Radio world as the backbone for repeater interconnections. More on this in a bit.
## The goals for this project

View File

@ -0,0 +1,7 @@
digraph G {
rankdir=LR;
client -> magic -> client2;
client[label="Phone A"];
magic[label="Dark Magic"];
client2[label="Phone B"];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -0,0 +1,38 @@
graph G {
rankdir=LR;
client1 -- pbx1;
client2 -- pbx1;
client3 -- pbx2, pbx1;
client4 -- pbx2;
pbx1 -- carrier1;
pbx2 -- carrier1;
carrier1 -- magic;
magic -- carrier2;
carrier2 -- client5;
carrier2 -- pbx3;
pbx3 -- client6;
pbx3 -- client7;
client1 [label="Phone A"];
client2 [label="Phone B"];
client3 [label="Phone C"];
client4 [label="Phone D"];
client5 [label="Phone E"];
client6 [label="Phone F"];
client7 [label="Phone G"];
carrier1 [label="Carrier A"];
carrier2 [label="Carrier B"];
magic [label="Dark Magic"];
pbx1 [label="PBX A"];
pbx2 [label="PBX B"];
pbx3 [label="PBX C"];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -42,6 +42,19 @@ MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMat
}]
}
</script>
{# Handle auto-centering request #}
{% if page.extra.auto_center_images %}
<style>
img {
display: block;
margin-left: auto;
margin-right: auto;
}
</style>
{% endif %}
{% endblock head %}
{% block profile %}

View File

@ -52,24 +52,25 @@
{# Blog posts #}
{% if section.extra.inject_blog_posts %}
<ul>
{% for page in section.pages %}
{% if not page.extra.hidden %}
<li class="blog-post-li"><a href="{{page.path}}">{{page.title}}</a> <span style="color:{%if page.draft%}red{%else%}gray{%endif%};">({{page.date}})</span>
</li>
{% endif %}
{% endfor %}
{% for page in section.pages %}
{% if not page.extra.hidden %}
<li class="blog-post-li"><a href="{{page.path}}">{{page.title}}</a> <span
style="color:{%if page.draft%}red{%else%}gray{%endif%};">({{page.date}})</span>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
{# RFCs #}
{% if section.extra.inject_rfcs %}
<ul>
{% for page in section.pages %}
{% if not page.extra.hidden %}
<li class="blog-post-li"><a href="{{page.path}}">{{page.title}}</a> <span style="color:gray;">({{page.date}})</span>
</li>
{% endif %}
{% endfor %}
{% for page in section.pages %}
{% if not page.extra.hidden %}
<li class="blog-post-li"><a href="{{page.path}}">{{page.title}}</a> <span style="color:gray;">({{page.date}})</span>
</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endblock content %}