Efficient One-way Communication Using Erasure Correcting Codes

Imagine the following problem: you have to communicate a long and important message to a group of friends in a noisy environment. But your friends have no way of communicating back to you. How can this be solved? Because your friends cannot communicate back to you, you cannot know which parts of the message have been heard and which are missing. One simple way to solve this problem would be to repeat the message again and again - eventually the entire message will get through. For humans this would probably be a reasonable solution, but if the entities communicating were computers we could actually solve this problem in a much more efficient way.

Since computers communicate with bits and bytes we can encode the message with something called an erasure correcting code (ECC). In this post we will simulate the performance difference between communicating by repeating a message and by using an ECC.

First we will describe the setup, but if you want to jump straight to the simulations you can use the links below:

 
image/svg+xml
 

The Setup

To illustrate the benefits of an ECC we have built a small interactive simulation. In the simulation we have a bunch of cars that needs to receive a message from a transmitting tower. The message has been broken up into several data packets. As in our initial problem the cars have no way of informing the tower of which packets they have already received. In addition, the tower doesn’t know which cars are currently within its transmitting range - it is sending blindly.

Before we go to the actual simulation - here is our setup:

<svg id="SvgjsSvg1006" width="400" height="300" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"><path id="SvgjsPath1009" d="M95 25H305A70 70 0 0 1 375 95V185A70 70 0 0 1 305 255H95A70 70 0 0 1 25 185V95A70 70 0 0 1 95 25Z " stroke="lightgrey" stroke-width="35" fill="none" data-topath-type="rect" data-topath-id="SvgjsRect1008"></path><path id="SvgjsPath1011" d="M95 75H305A25 25 0 0 1 330 100V185A25 25 0 0 1 305 210H95A25 25 0 0 1 70 185V100A25 25 0 0 1 95 75Z " stroke="lightgrey" stroke-width="35" fill="none" data-topath-type="rect" data-topath-id="SvgjsRect1010"></path><circle id="SvgjsCircle1055" r="90" cx="200" cy="80" fill="#fafafa44"></circle><defs id="SvgjsDefs1007"></defs><g id="SvgjsG1012" transform="matrix(1,0,0,1,101.29473876953125,210)"><use id="SvgjsUse1016" xlink:href="#SvgjsSymbol1013" x="-12.5" y="-12.5" transform="matrix(-1.7598803545102598e-16,-0.9999999999999997,0.9999999999999997,-1.7598803545102598e-16,0.0018901824951171868,-0.0018901824951171888)"></use></g><symbol id="SvgjsSymbol1013" y="-12.5"><path id="SvgjsPath1014" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#ff86af"></path><path id="SvgjsPath1015" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1017" transform="matrix(1,0,0,1,239.39564514160156,25)"><use id="SvgjsUse1021" xlink:href="#SvgjsSymbol1018" x="-12.5" y="-12.5" transform="matrix(5.819997261902188e-16,-1.0000000000000078,1.0000000000000078,5.819997261902188e-16,0.0018901824951172022,-0.0018901824951171925)"></use></g><symbol id="SvgjsSymbol1018" y="-12.5"><path id="SvgjsPath1019" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#00a1f1"></path><path id="SvgjsPath1020" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1022" transform="matrix(1,0,0,1,111.92973327636719,75)"><use id="SvgjsUse1026" xlink:href="#SvgjsSymbol1023" x="-12.5" y="-12.5" transform="matrix(-6.245004513516506e-16,0.9999999999999934,-0.9999999999999934,-6.245004513516506e-16,-0.0018901824951171751,-0.0018901824951171808)"></use></g><symbol id="SvgjsSymbol1023" y="-12.5"><path id="SvgjsPath1024" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#555555"></path><path id="SvgjsPath1025" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1027" transform="matrix(1,0,0,1,375,182.25558471679688)"><use id="SvgjsUse1031" xlink:href="#SvgjsSymbol1028" x="-12.5" y="-12.5" transform="matrix(1.0000000000000073,-3.8163916471489756e-16,3.8163916471489756e-16,1.0000000000000073,7.213676685952444e-19,3.0357660829594124e-17)"></use></g><symbol id="SvgjsSymbol1028" y="-12.5"><path id="SvgjsPath1029" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#ddcf0f"></path><path id="SvgjsPath1030" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1032" transform="matrix(1,0,0,1,298.7052307128906,75)"><use id="SvgjsUse1036" xlink:href="#SvgjsSymbol1033" x="-12.5" y="-12.5" transform="matrix(3.469446951953614e-16,1.000000000000003,-1.000000000000003,3.469446951953614e-16,-0.0018901824951171934,-0.0018901824951171934)"></use></g><symbol id="SvgjsSymbol1033" y="-12.5"><path id="SvgjsPath1034" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#264089"></path><path id="SvgjsPath1035" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1037" transform="matrix(1,0,0,1,157.08447265625,255)"><use id="SvgjsUse1041" xlink:href="#SvgjsSymbol1038" x="-12.5" y="-12.5" transform="matrix(6.42715047849407e-16,1.0000000000000282,-1.0000000000000282,6.42715047849407e-16,-0.0018901824951172408,-0.0018901824951171988)"></use></g><symbol id="SvgjsSymbol1038" y="-12.5"><path id="SvgjsPath1039" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#73d68d"></path><path id="SvgjsPath1040" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1042" transform="matrix(1,0,0,1,288.07025146484375,209.99996948242188)"><use id="SvgjsUse1046" xlink:href="#SvgjsSymbol1043" x="-12.5" y="-12.5" transform="matrix(-1.249000902703301e-16,-0.9999999999999968,0.9999999999999968,-1.249000902703301e-16,0.0018901824951171814,-0.0018901824951171836)"></use></g><symbol id="SvgjsSymbol1043" y="-12.5"><path id="SvgjsPath1044" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#86ccc5"></path><path id="SvgjsPath1045" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><g id="SvgjsG1047" transform="matrix(1,0,0,1,25,95.1043701171875)"><use id="SvgjsUse1051" xlink:href="#SvgjsSymbol1048" x="-12.5" y="-12.5" transform="matrix(-0.999988086848355,-0.004881204908101341,0.004881204908101341,-0.999988086848355,0.000009226368072373254,-0.003780342472203679)"></use></g><symbol id="SvgjsSymbol1048" y="-12.5"><path id="SvgjsPath1049" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865Z " fill="#73a3d6"></path><path id="SvgjsPath1050" d="M13.461829641899968 0.000004425619496964865C17.690854731536707 -0.003774863732416125 21.919879821173446 1.772491131666736 23.51474004264503 5.328802411816954C24.935752941396967 8.484509020664385 25.000000865010747 9.327290546141002 25.000000865010747 25.264553743158505C24.947090810269984 48.85865716715193 24.935752941396963 48.85865716715193 17.781557682520873 49.99622326207776H7.218443182489875C0.06424792361378424 48.85865716715193 0.04913076511642324 48.85865716715193 0 25.2645537431585C0 9.327290546141002 0.06424792361378424 8.484509020664381 1.4814815327413777 5.328802411816951C3.0801210438373032 1.776270421018649 7.309146133474042 0.000004425619496964865 11.53439193348644 0.000004425619496964865H13.46182964189997ZM13.613001226873576 4.353745759023377H11.38322034851283C3.7112624111021253 4.353745759023377 3.673469514858722 4.467124439580769 3.6961452526047647 25.56311760195964C3.718820990350806 45.597130456450934 3.6545730667370213 45.10204355135032 6.254724328283113 45.7634191879351H18.745276536727637C21.349207087898066 45.0982642619984 21.28495916428428 45.59713045645093 21.307634902030323 25.56311760195964C21.330310639776364 4.467124439580771 21.292517743532965 4.357525048375291 13.620559806122259 4.353745759023377ZM13.48450537964601 13.174607106388528C15.702948389133734 13.174607106388528 17.91005352974844 13.862437768436711 19.349962876622076 15.253216249940726C20.05291074674936 15.925929754581256 19.996221402384258 16.22449361338239 18.204838120446983 21.59108449309898C18.05366653547337 22.044599215328546 18.05366653547337 22.044599215328546 13.48072609002167 22.044599215328546H11.515495485364738C11.20559373616884 22.044599215328546 11.885865868550084 22.044599215328546 11.515495485364738 22.044599215328546C6.942555039913038 22.044599215328546 6.942555039913038 22.044599215328546 6.791383454939428 21.59108449309898C5.00000017300215 16.22449361338239 4.947090118261387 15.925929754581254 5.650037988388672 15.249436960588811C7.086168045637967 13.862437768436708 9.297052475877013 13.170827817036614 11.5117161957404 13.174607106388525ZM18.170824513827917 33.14059275254539C18.269086044060764 33.1443720418973 18.329554678050204 33.15193062060113 18.34467183654757 33.16704777800877C18.435374787531735 33.272867879862346 19.584278833331172 38.83598180587841 19.584278833331172 39.172338558198675C17.354497954970427 40.525324146183564 7.690854385532409 40.483751963312514 5.411942742055238 39.172338558198675C5.411942742055238 38.8322025165265 6.560846787854675 33.27664716921425 6.651549738838841 33.16704777800877C6.666666897336201 33.15193062060113 6.727135531325645 33.14059275254539 6.829176351182832 33.14059275254539C7.131519521130052 33.14059275254539 7.766440178019214 33.19728209282408 8.48072591701952 33.29932290532574C11.216931605041859 33.46939092616182 13.922902976069478 33.59788676412687 16.519274947991228 33.29932290532574C17.229781397367198 33.19728209282408 17.87226063350504 33.13681346319347 18.17082451382792 33.14059275254539Z "></path></symbol><symbol id="SvgjsSymbol1052"><path id="SvgjsPath1053" d="M8.570113652948125 0A20.550763116210298 20.55076115721749 0 0 0 2.212970976921982 6.577043210821552A16.492587131199897 16.492585559051 0 0 0 2.212970976921982 23.129601808269104A19.79110455743988 19.791102670861203 0 0 0 8.430176550016732 29.646671980694105L9.809556564626178 27.667561713607984A17.25224568997032 17.25224404540729 0 0 1 4.352009550301848 21.930141040338118A13.893755219616885 13.893753895200541 0 0 1 4.391991579710818 7.736521953154832A17.512128881128618 17.512127211792336 0 0 1 9.969484682262056 1.99910127988497L8.570113652948125 0ZM8.450167564721218 29.646671980694105V29.666662993492952H8.490149594130187L8.450167564721218 29.646671980694105ZM31.399852445469683 0.0399820255976994L30.00048141615575 2.0390833054826696C32.27945709246701 3.4784362269998477 34.19859450409754 5.437555481287118 35.57797451870699 7.776503978752533A14.133647396070701 14.133646048786739 0 0 1 35.597965533411475 21.950132053136972A17.25224568997032 17.25224404540729 0 0 1 30.14041851908714 27.707543739205683H30.08044547497369L31.479816504287623 29.706645019090654A19.431266292759155 19.43126444048191 0 0 0 37.737004106791346 23.169583833866803A16.352650028268506 16.352648469459055 0 0 0 37.737004106791346 6.617025236419252A19.79110455743988 19.791102670861203 0 0 0 31.399852445469683 0.0399820255976994ZM11.84864006448362 3.678346354988345A14.71338682250076 14.71338541995338 0 0 0 6.890868417771408 8.576144490706522A12.754267381461254 12.294472871292566 0 0 0 6.850886388362439 21.170482553981834A15.073225087181484 15.073223650332674 0 0 0 11.72869397625671 26.02829866410231L13.08808297616167 24.02919738421734A12.39442911678053 12.394427935286814 0 0 1 9.00991597644679 19.97102178605085A9.935534308128908 9.9355333610283 0 0 1 7.57056291772389 14.893304535143026A9.955525322833395 9.955524373827153 0 0 1 9.00991597644679 9.775605258637505A11.854671719759443 11.854670589717871 0 0 1 13.148056020275128 5.717429660471016L11.828649049779136 3.6783463549883466ZM28.241272122161092 3.678346354988345L26.90187413696062 5.717429660471015A12.674303322643317 12.67430211447071 0 0 1 31.040014180788955 9.775605258637505A10.395327646332058 9.99550639942485 0 0 1 31.040014180788955 19.97102178605085A12.034590852099804 12.034589704907518 0 0 1 26.981838195778558 24.02919738421734L28.341227195683516 26.02829866410231A14.71338682250076 14.71338541995338 0 0 0 33.21903478357779 21.170482553981834A13.03414158732404 12.554356037677612 0 0 0 33.17905275416882 8.576144490706522A14.71338682250076 14.71338541995338 0 0 0 28.241272122161092 3.6783463549883444ZM15.207130534837054 7.476638786769788C13.807759505523123 8.316261324321475 12.728244711480947 9.43575804105706 11.92860412330156 10.67520083458574A7.796495734749043 7.796494991551383 0 0 0 11.92860412330156 19.031444184504913C12.708253696776463 20.330860016430147 13.787768490818637 21.410374707568028 15.067193431905661 22.210015219522013L16.426582431810623 20.190922926838198A7.256738337727955 7.256737645982441 0 0 1 14.027660667272457 17.83198341657393A5.697439190778147 5.697438647672164 0 0 1 14.08763371138591 11.91464362811442C14.627391108406998 10.975066026568486 15.487004740699842 10.155434501815648 16.546528520037533 9.515722092252457L15.207130534837054 7.476638786769788ZM15.067193431905661 22.210015219522013ZM24.78282657828524 7.4766387867697865L23.44342859308476 9.515722092252457C24.502952372422452 10.155434501815648 25.322583975306326 10.975066026568486 25.902323401736382 11.91464362811442C27.0618022545965 13.713834780010895 27.081793269300984 16.01280125187861 25.942305431145357 17.83198341657393A7.596585587704196 7.596584863562885 0 0 1 23.583365696016156 20.190922926838198H23.523392651902704L24.922763681216633 22.230006232320864A10.19541749928721 10.195416527413347 0 0 0 28.121326033934185 19.031444184504913A7.996405881793891 7.99640511953988 0 0 0 28.061352989820737 10.67520083458574A9.475740969925761 9.475740066654758 0 0 0 24.78282657828524 7.476638786769787ZM20.02496507861788 11.23494919295353C18.145809696396313 11.23494919295353 16.26665431417475 12.434409960884512 16.26665431417475 14.853322509545327C16.26665431417475 16.6924956870395 17.366160122921414 17.811992403775083 18.70555810812189 18.251794685349772V57.574116860687134H10.009466711671026V59.9730383965491H30.00048141615575V57.574116860687134H21.204434946182474V18.271785698148626A3.3984724997624034 3.398472175804449 0 0 0 23.803266857765486 14.853322509545329C23.803266857765486 12.454400973683365 21.90412046083944 11.254940205752382 20.044956093322355 11.254940205752382Z "></path></symbol><use id="SvgjsUse1054" xlink:href="#SvgjsSymbol1052" x="180.00000190734863" y="65.00674057006836"></use><text id="SvgjsText1056" font-family="Helvetica, Arial, sans-serif" y="124.97977828979492" x="194.5"><tspan id="SvgjsTspan1697" dy="20.8" x="194.5">Σ</tspan></text><circle id="SvgjsCircle1698" r="79.31449838150999" cx="200" cy="80" fill="#11111111" opacity="30.275587919055"></circle></svg>

When running the simulations, you should be able to observe the following benefits of an ECC:

  • Using ECC significantly reduces the number of transmissions needed to send the message to all receivers.

  • With ECC we can efficiently transmit to several receivers at the same time - even if they are missing different data packets.

  • Using ECC, there is a high probability that all data packets sent from the tower will be useful to the cars.

  • Without ECC only data packets which have not been received before will be counted as useful.

To be able to see what is happening in the simulation we have added some details to the animations, these are outlined below:

Simulation Interface

Below is a detailed explanation of the simulation with a single car:

 
Simulator overview
 

Once all packets are received, the simulation will stop and the number of transmissions used will be listed below the simulation.

Each simulation can be executed with or without ECC. Let’s get started.

Single Car Simulation

We start off with just having a single car in the simulation. Notice that each run of the simulation will be slightly different, since the transmission tower sends out the data packets in random order. The tower has no information about which packets the car has already received - therefore, random is as good as it gets.

01234567
Results with ECC enabled:
Results with ECC disabled:
100

By running the simulation a few times, you should start to notice the difference with or without ECC. By encoding the data packets the tower does not need to know the exact state of the car - pretty amazing! Another benefit of ECC comes when we add multiple cars. With ECC the same coded data packet can be useful to multiple cars - even if they are missing different packets. Let’s have a look.

Multi Car Simulation

In this simulation we have multiple receiving cars. Notice how multiple cars are sometimes in range of the tower. In such cases sending a packet which is useful for all receivers is difficult or even impossible in an uncoded setting. For instance, in a setting of 8 packets; if one car has received the packets 0, 1, 2, and 3 and another car has received packets 4, 5, 6, and 7. Then no uncoded packet would be useful for both of these receivers.

In a coded setting however, all receivers would find the sent packet useful.

0123456701234567012345670123456701234567012345670123456701234567
Results width ECC enabled:
Results width ECC disabled:
100

As shown in the above simulation an ECC is very useful in cases with multiple receivers. Two receivers may benefit from the same transmission even if they are missing different parts of the message.

Takeaway

Hopefully these small simulations provided some insight into how ECC can make communication systems much more efficient. As we have shown here they offer an elegant solution to one-way and multi-user scenarios. However, they can also be leveraged in many other scenarios e.g. for low-latency communication, fault tolerance, multi path, peer-to-peer etc.

Unfortunately, and despite their significant advantages, ECCs are little known in many industries and therefore many miss out on the advantages they bring. At Steinwurf we are committed to changing this situation and by leveraging our software libraries we hope to educate and benefit all of these industries and their consumers too.

So, reach out to us if you are working in an industry where efficient communication is important, for example satellite, vehicular, broadcasting, military or similar and would like to understand better how ECC can help you!

Previous
Previous

Streaming Video and Audio with Low Delay

Next
Next

IETF 101 in London