From 4b3f84c53788b477d432a8c8d2bf2e602830907f Mon Sep 17 00:00:00 2001 From: Evan Pratten Date: Mon, 14 Feb 2022 13:14:28 -0500 Subject: [PATCH] wip telephone post --- content/blog/2022-02-14-personal-pbx.md | 32 ++++++++++++++- .../posts/personal-pbx/magic_phones.dot | 7 ++++ .../posts/personal-pbx/magic_phones.png | Bin 0 -> 7895 bytes .../posts/personal-pbx/phone_internet.dot | 38 ++++++++++++++++++ .../posts/personal-pbx/phone_internet.png | Bin 0 -> 42456 bytes templates/page.html | 13 ++++++ templates/section.html | 25 ++++++------ 7 files changed, 102 insertions(+), 13 deletions(-) create mode 100644 static/images/posts/personal-pbx/magic_phones.dot create mode 100644 static/images/posts/personal-pbx/magic_phones.png create mode 100644 static/images/posts/personal-pbx/phone_internet.dot create mode 100644 static/images/posts/personal-pbx/phone_internet.png diff --git a/content/blog/2022-02-14-personal-pbx.md b/content/blog/2022-02-14-personal-pbx.md index 316a1c1..7f46d4f 100644 --- a/content/blog/2022-02-14-personal-pbx.md +++ b/content/blog/2022-02-14-personal-pbx.md @@ -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 + + + diff --git a/static/images/posts/personal-pbx/magic_phones.dot b/static/images/posts/personal-pbx/magic_phones.dot new file mode 100644 index 0000000..4072e6f --- /dev/null +++ b/static/images/posts/personal-pbx/magic_phones.dot @@ -0,0 +1,7 @@ +digraph G { + rankdir=LR; + client -> magic -> client2; + client[label="Phone A"]; + magic[label="Dark Magic"]; + client2[label="Phone B"]; +} \ No newline at end of file diff --git a/static/images/posts/personal-pbx/magic_phones.png b/static/images/posts/personal-pbx/magic_phones.png new file mode 100644 index 0000000000000000000000000000000000000000..5a326ab9bbcb2c939ffc90850361fe65fabefe37 GIT binary patch literal 7895 zcmb_>_fu2f7i|)HF9zvFx=0a0>75V|DWNL{kRl*0^co0CuTli*y+}tObcoVLK~+sRYn`>{MCVK@9%H*YA`uM(fdhK(*yg6royV88;JU4LPf6RZZRbqkde8uF039tVD zjXHYz*;2sy)9;4cwn@tWMY1w*zmOCH`Y#^vhJqF!NIoyA{4WCm5w*lpgUSAjs`rHC zh}s{vA8PLY-yC>VRQCU=q)Kn5z4~wIAlMXn7;CxshNbIIxR_CJ78<_qk-o5#+K_u% zH8nTtgLV`%P7tGa5D9e;*aZa_jUA&Y;9IIwj=G+iN$IVtL}Jos&He}Gqhj=2p)|pN z-kFpA3S7CiSeI~F;Far4#<&=C-`*UQ4UH(d#Lp>S?@l}wVCrAF{dayRk!blclFpV= z54mGlb}$}8xI<5B^8x4NT9qKXQ~oJz+9dBdHsR676jv4v@sovmnXR$$$WO%2sV%g~ z!g9lPXSxNbDyp&4u{qRPofW{@)zF3BEaw!g;d!sMM^99*@3ZfZ8Wp5kydhPry$`)8 z^YqN^UTSm?KWNRdREbcqnegEMJl3V#=F8z1UfsVzTm-h_!1)Pcw-{P<&K8!>&^y&` zNT){um%k%1s=x^DI{zy=j{N!v8+xOT!~N!!;3@AK&zxkrJm{ddycC=E)y{$Zz)O;? zF79X1_HL~HgP6bH5c&zlVO#UU-PoA+we%*^`hNpA#lo*(JVZfDDoBKxR+`vkmn z8BA_Z7hRD-Y+8)~-rRN8AIiFmj7W#V1_|D$e8I!OfqucOP-N$%a4IMT=_mML&Npul z;dZbu_12fVpGa!G*|!A{8TdDQ((^}9P-S}e-}ND_z94c@)my1g(o$ZjB3yUkg@atZ zE6u$X;W>bF>AHl_^X*nI(ZdK<(7^?m_Q1zy%TXWYUqOrtE9-PjuuGSq?N9m#O(kFh z34d3sXBf^&a<>wBFW7dgG}mzFRZ*yP4yEv&FrS}ku+TTf>7_b>ItdL#}0Tn zF9!()0a<%>cb}T)63()DL?p$=VKzaoIc*~@t|{D16ea4j!-gn#Q{rcL3&$Mw0_Vd6 zeU=g(#C>_w@uILi)C!{-R=xz=bTM609}3mq{oX3L807hSINNkcqhX4#We4ghuFm$f ziKT0MU7m8_JBGcnMU{i1L^vTB%)S53LENZ310tx=U6gUN@4sB5&d@OIJ~c-9gdF8| z6%ZxJx}Yw44Ct@GK~`=CsOu+=iJu!1NcH$F;Vhc3{%$JeaXZHrHm+%Mfw8;xN`Wz5 zQjQc*=@g>6$f88#IWJ&w`svwImCaJgI6?Cpyf#V!(U}S3SLp!C@T?^3T)sXT1_Z_V zJ69lW79shKp6@k>KIJ9&XMYluqxI}Kwai%4$iGw)EaP6tyx{Kaq<@hd;09*T=rGBzK^JvEI%Ic=kQ9y!gtf>(l1qM6}2)y}aN)z%Ipfu!omb zUluHxF5)fPW@!-1ebAYZO&U4e5Fp_zF*4z!x!M)skF|c;}s1)Gt2_ph;S7{32`{k{kMECUMd@_^%h zAxRu!v)d{fE~aXOjXUvYM|ti^v4C;NMGt31j_-1-?1BH7`ORTsNYy`lw@d?f>!IH7 zSQqo#&YEg-&|4!D|E^}bP4xV~8CKXUUC&L4w(lAs@#J*%Zq2*>yXkl+cRtho&)a)I zZdv@)|7GAw5htA8>xas=y+;QQe()madU4a$ySDUQ@Lw#asZ{Hbj?g(13--=cgX^k@ zhq(``?@aM>NUuim?;4G%fYRkq<*>!s=c)gZW#=H|Hqg84IH$Jldg&mSdk|mfbjr!{ zdVU9Ic^h!LE*8?N1(&^r=ULqBn3mOJGLG?(rgY`@jGhNhpPbhCcG@=R;gv+J)2)tS z6y0PWk6|aTVRD(1D z=`}sKq`53FznO0Ay9EP@v%~}N9nWCPENH58!6iRU9-wJ&aVELBlXs!+{Ye{M(Y9k; z`+`0AV$Jc*_RrJWkei*4HVIno=HEL3yNulzkSmw+y{D#a2B-hdyOoIErnmI+8At)Q zAJ@3Y?__Vv+n**S1{Ke{w(q4aBaiJz&}4P|ASs(-+2?$(O^K8`vTPC+p7_iE{F}A5 z#tuQW*^~5|3#7e?rOvsP!>ESfkdlhoE7}_qJKCa!8C?B zc#-Cd@0=kxu$K;MWZL@8IKlVYw-X1SdR*&2vct{Ts%ag$p|k!l_FH4?eF9LZ9J=E9Wm)5l=f%}VsdFuq3t$O`T0o2 zlLEqN#`f91+%m>B&T=S#{89}TVdZvM4F7c$cIH&?-v$iz=pk7(<)@J%wr!F$KO=~7OyV)rMlc7 ztOgHhTNo_iX;aH_Jv+dUZjQYROq)F6y?#R1g6-qd+3Fqy#)Dkx&bM`a+iatP&l>WK z$B_G;cMu_`m6kd(q0QYld(qY*cxxKe@scHG1C|(IgVu3 zJ5CkRcqV$GA=L(pDF?mW1%8kyj_MffJYSZBhzovyqBDB@d@R7EEqyQ&Mq&h)ij^z> zSaSgHw#+3^TqDynD{xs)AGD~Slcr^i?=`%-Vo}3Gz>7nzC~{ldG_J1uaRO_OYG-sW zgg41t<3@u1=(opL1GUj69xf8sr1N*2e^>EP28;i0}u+jRPIKy;WDV;1c(fC686K1~*c0B_@JnKtCD{ zX@kqGV^OS5Jew};-FSPl09q`!zdEZ=L<$4D7Nt64&sxWjqT7tuVwvY7CN?j&)0()1 zHYiC9)fub970wquhrPFif>3u1l-TUOSySevS2rZTfJ1*V)cW=58WCvp^*rZi(A6b$ zjY-)&Y}@i@Z((l0@1|VGUrZV1%SUPV(@9%?GM?j$7#wEy)dD?7xQn^)+;XD-@rIHQ zWA}{tamsfL2$|xwu(13DxO*q}Pni1cAO0pMIPS%EE;nQ9y#J_YE@20_`qP{?vblY! zn%+AWeQMnO;}N`hkc#GBnN*EmY?5jCw^jqQK7FDlP9iqs#ElN7`c^<@NXx+DyXpyS zus?tC*WKn>13uk>Es=_OZlbTjn+R(={UsU1gd-i`##xAqVzqxa|9A}QgH%^qcRA?$VZZ8JP zj+yLmapJt3)ZwW^+_TZoXAGH!?^VUJwHzNJ-V`sQ7}y7M78I|P$Xi1GyyN8Ee5?D> za$7iG^WeM8K!WRp$nBF&meR1r- z*Vwv}-O8&wq1mScpTZbx1Ewk~vX*vV+f4DGuBqJo)IQ6N*Vhz;oa094{i>WVWR<+rK~h z#;a6;#>z*btmtaCbVruk9TgF*co?mhoy`T)%&R7AIi*rlPb>)vLh%YDznb0>yrEZd zx+`R3Bt}cIY61vj_~lo4FY5(B3d=uItiQWel&GuAL#+LZ?o8A6kyjwZ&^rD+UbyYlNB>c3R}S}g%}N82xv%SHj7W`A$!t|G|4UEi~Peo=#I%5YxbsX zcR`Krw;$w!5=GhP0j`g=-f}^D@rS0HK{a8{#);!qWX4()aS^B`)V&V2qf$j9Cs-J+ z7|w1Yr&_zU(sjL`MU9KJ7R+u9}j?h)unV^UKh%;&M>EAM-T2`au~~^2}v{Vsm2r76N?IQV1t$w zcHSFW0UuhSKBDZOq4kML^oEOBD}OhJcy`;GfZuDb zC%wA!DcPaR9hXlo|CHiJuLAEN2&6fb;2WeH@uU4|pJ(~jeCZ_h`w;6?h$3>xC<$i} z;v2Nt5xB@iK@4m3ER$Qh51V9zKBFxgPpgJu*w5edfAxtzlKD}utN-iOdv@&^86GpD z^Pf!i0i2kTx-2E#1L>IVk=ZnN$}*MitI}a02_~b&dnh5H=o{{a;{&$ewxX5RkH}oP z8~koP{@5ueWR-wZ6Gf%zIiHz8AanFJ)5Gea+UYOz8M?`Mr=oI?U0_+dZvL=1A-t&- zCFd|DiVj@|WiYhlT}_tp*HNv$=F*>Eo9a{WyGEDwy6a#@%o~uyzjYS$#XbUzte4dl zJJgBi{MwzBf28q^s^w8}H94x}92X;nt*yrGoj|UVkGT42KgrJoUk+QAvXCF^kU)4( zrd~RvpjdIX%P8#sOd~i$s)?-y(q+c0EOeA4*2nFR7yvd0iu=T<)SHe!%U%Mw;#5*2 zKYfl+zwe+iS?XOj6}r$`m>zKII$_p!kyBJ#_)%@i9&5EOyw=i1$VybVmEonG{%len zBl5XP10ZECxSrhbNc^=?d*@mL9+WQ6rirZgybN19HbKO#&_~za^f8ksP-^W|rBal< zMMPDDOnEc@XQ~`2c7<>;^;xR=mz@#YqmBN@L{x>9SBACfJ2Zi_Jrx5A`|jrDor(lXb#P8rTp4!dy!xn92f=_S9Y2IG;{A7z|%jC*FjdKV`6 zNKK;XgMflQ-&Gbt^R1eH<;weGHND|$$0C%u=+v@F-`he@ol%$)sAU95z{BFJLr4B@ zyTieIHNgsF_S^BeABI7lPFV4?fcKmymESmFZT*F4AGgLtWHX|3!m!A)Koo_ zYJ?cP4T_&xrEC?#jQkaTZG8Fkv}!ZCHu$tsppNR@B;n%GV~6Z33&n4|*3sE^aE!+X zkB3EP{f~ZcX>m?<>i8c)?rSep6UVl#6yqjC<&J#HRWC;YxW6ne4@A?KZndskV5mZ= z`^kfq(J#ft>MulEQ}C0=r$^a$%5-8{Y&d;iLOa8`^R?o!n7LQ9kHbGQQJibILwBHg z;L-K#7M>iNcy&=0NUa9%$s9p4p!qs(0c}9yx@jhHViBw$G&xe)nB>rq_$0LuYEw(# zt3DlkM?K#e+PPkdV?(NcI~v_#>2JdS8i)J9M{zlH@^eO(O@n_g$x~Bih+F17d`#aw z^4P86Q!X^eq5>Bc_h&0>bk)d9Dx>6ba~?S={p+pp5CE0e6Hj<~K2vo}*exw2A3iPNSTe5+hK&8jyt z5>TooTCjDo=KOI`ks#9#mw(|g8Pspy*tU2k>)J_zh~#;|`CTivx;14tUJ|0%JluFc z=?stto0Z!MR%UrW-tO>G6R2JF>g*%DlyzJyv-N$#p)w;%>!2$AZvm9evM*C;O1!CF z?aK>;e16i@bJKdoZJ3;Bzt&QiXK}EHf)OROo6UwwIwC<%!>(rKT`77U(g}6G<0*#I zq|3CCe>m9YF4E_`U*g90LSvNWG1_m9hPgZk0jG;mlnAJ?e_7vY04_;9S-Ij)?Bam4 z^#_y6i44*p08~kjucy!MseNJbf~BY@7Qd?#J9&!u8r(;nXI7g%<3}Z_KuhWFI;Xcw zCCB=SM>nzwGe^{st@y-%P?U4DW`QqE+)hj!;*|>bgv);O@1=ik&PI?>H%~d*Q_lZw zz@mQYE#$o9V7%N6CObq&)42y~!QO1|E*4K;R2@Yj1l7&?cC1nB91~hx7T}3u+6lP# zSrK#D^HVZXM8fo8ynTaqpqPQU*?T@XHLiV2*XZ#X@LZ3~9L zbUJ}lFy!v~ewXjwzMz54L>+xf3~Chm){SB2k; zR?%M<-bna1x2?o)r)Sr)(V z#s5u0hu|1mp*6TK3$8HXKMfma@Ykj(eLnM;uGVYsC{(y%bf7d(002|6tC_{2Y0}^H1K7-J5c8ZOu9VeUrmdRr>pOyJoJOKvGO&kjvh}8~ z@SrfurRg;?v4O+c5xZE>Umc5vjZ|p!W&7gZiU{IfNlTEI%Ot-ME|w^xdV-(B)zWzi zDbZ13No)z4Pnrb^DAB*n8Yi3^UNC-QmdY`L4}TE`bcssHElGP|&VFPRbhrh!!M=w` z>RVM}jgydFgLeOZR{dkxDq$CA8`7Nl{!4#^aPgiZv4Maf!PO^0h*AvSyd;gX6NlYa z*?DYtW#6k;7lO&wjU|+&r*9Zn8a(>!v@tKDG9v-b$4as8FMTZA+k(L!^QKh2b332! zwk7|&Jx~*SwZRRl#QT{-HwvEILZj3|x$wcx=6qo6@kz*K3XMH6$|mw5EhXb-Y2#@! z03H2Ga%K9h|FRdRW~^>2>zPNXR|Mp> zxfUc$7e8Q0P~hRV-RvgwMxu&jBx*qxQw%7CF!w1A%uIFSoQ(i@6q{KpYLfC>@#(RzkZlX5O1N} z@mzezYHv?R-uhdeFvMYhDu7dE14!LvT$1vb_IwR7nw9>-jZE~l7k3(9Cm#dP_-i9d zZYHKNeOfum{``tF&aqz3e3;E_0>&Aj4dqdWqpQti5t}_CT#CV880st%#4}GTWTFV@ zMJy`l=q^7qZdM^JOO8GA`H%g`sQYUDGPr`_NaL{O|nota5OwWf%pr zUe6v)t?7)4-xw>-Bf+tYB9>{;-0!}h>Ghdjmib>B&Rq5-F*>GL577^(b~1tb z=61ImC#E{d9N?`*K;=Xf_w;^7CBk;bc#}uxj*o2iH!J12?XKwnHw>KQ@TD}}TG*>N zqRt9(dg2G% z`@0vumc$6d4OG z^Q~&^L06oOGz*=|WH(P{LNpE3c3SJfCY2#bCLe0c+(xG`sv>mq1f!7MdhhMWdZG#1 z{HpE(ocLML>$i_%UxWr__hf$=uXN)ovp)ELGZ|I zwdR4oD;Vpx5~t~hEQ+(C{&VWIp{x8ijkV(#8UmGs`HIGT$(&}ZnmH^m!~(iJXsbmZW>{Q%tOU(c{*gXWkghV2YID_mELw*Cs00qER_bTg7o@;xMj1SGLquA1Y2@cNRnVI!U=^7+9{uC9hR0HKkiig%~STU(e71D)1d A(*OVf literal 0 HcmV?d00001 diff --git a/static/images/posts/personal-pbx/phone_internet.dot b/static/images/posts/personal-pbx/phone_internet.dot new file mode 100644 index 0000000..4a3a119 --- /dev/null +++ b/static/images/posts/personal-pbx/phone_internet.dot @@ -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"]; +} \ No newline at end of file diff --git a/static/images/posts/personal-pbx/phone_internet.png b/static/images/posts/personal-pbx/phone_internet.png new file mode 100644 index 0000000000000000000000000000000000000000..353401d998d39216f873375e661cf3992977783b GIT binary patch literal 42456 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 literal 0 HcmV?d00001 diff --git a/templates/page.html b/templates/page.html index 792d813..37e8b17 100644 --- a/templates/page.html +++ b/templates/page.html @@ -42,6 +42,19 @@ MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMat }] } + + + +{# Handle auto-centering request #} +{% if page.extra.auto_center_images %} + +{% endif %} {% endblock head %} {% block profile %} diff --git a/templates/section.html b/templates/section.html index af33977..a97c886 100644 --- a/templates/section.html +++ b/templates/section.html @@ -52,24 +52,25 @@ {# Blog posts #} {% if section.extra.inject_blog_posts %}
    - {% for page in section.pages %} - {% if not page.extra.hidden %} -
  • {{page.title}} ({{page.date}}) -
  • - {% endif %} - {% endfor %} + {% for page in section.pages %} + {% if not page.extra.hidden %} +
  • {{page.title}} ({{page.date}}) +
  • + {% endif %} + {% endfor %}
{% endif %} {# RFCs #} {% if section.extra.inject_rfcs %}
    - {% for page in section.pages %} - {% if not page.extra.hidden %} -
  • {{page.title}} ({{page.date}}) -
  • - {% endif %} - {% endfor %} + {% for page in section.pages %} + {% if not page.extra.hidden %} +
  • {{page.title}} ({{page.date}}) +
  • + {% endif %} + {% endfor %}
{% endif %} {% endblock content %} \ No newline at end of file