VoIP

Designing the Routers and phones to meet quality and performance metrics

Voice over IP Telephone Network

Evaluating the response time and the audio quality acoss the Internet. Each device is modeled as a network node and processing capacity.

Browsable image of the model.

  • To download OpenWebStart click on the links -
    Windows- Compatibility:Windows 10 or higher (*)
    macOS - Compatibility:macOS 10.15 (Catalina) or higher (*)
    Linux - Compatibility:Ubuntu 18.04 LTS or higher (*)
  • For an executable version,
  • Mouse over the icons to view parameters. Click on hierarchy and plotters to reveal content (if provided).
  • To simulate, click on Launch button, open downloaded file and click Run on the Java Security Page.
TelephoneModel_V5model <h2>TextDisplay2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>rowsDisplayed</td><td>10</td><td>10</td></tr><tr><td>columnsDisplayed</td><td>40</td><td>40</td></tr><tr><td>suppressBlankLines</td><td>false</td><td>false</td></tr><tr><td>title</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>ViewText</td><td>true</td><td>true</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>IN2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>log_out</td><td>&quot;log_out&quot;</td></tr><tr><td>Destination_Type</td><td>Global</td><td>Global</td></tr></table> <h2>Layer_Table</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Layer_Table_Name</td><td>&quot;LT&quot;</td><td>&quot;LT&quot;</td></tr><tr><td>Layer_Number</td><td>1</td><td>1</td></tr><tr><td>Layer_MBytes_Sec</td><td>100.0</td><td>100.0</td></tr><tr><td>Layer_Frame_Size_Bytes</td><td>128</td><td>128</td></tr><tr><td>Layer_Header_Trailer_Bytes</td><td>16</td><td>16</td></tr><tr><td>Layer_Queue_Size_Frames</td><td>64</td><td>64</td></tr><tr><td>Layer_Retry_Probability</td><td>0.01</td><td>0.01</td></tr><tr><td>Up_Retransmissions</td><td>8</td><td>8</td></tr><tr><td>Up_Internal_Delay</td><td>10.0e-6</td><td>1.0E-5</td></tr><tr><td>Dn_Internal_Delay</td><td>10.0e-6</td><td>1.0E-5</td></tr><tr><td>Layer_Configuration</td><td>Internal_Delay</td><td>Internal_Delay</td></tr></table> <h2>AFE2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>AFE</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>Mapper6</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Parent_Scheduler_Name</td><td>&quot;IP_Phone_2_Processor&quot;</td><td>&quot;&quot;IP_Phone_2_Processor&quot;&quot;</td></tr><tr><td>Task_Number</td><td>1</td><td>&quot;1&quot;</td></tr><tr><td>Task_Priority</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>Task_Time</td><td>1.0e-6</td><td>&quot;1.0e-6&quot;</td></tr><tr><td>Task_Plot_ID</td><td>1</td><td>1</td></tr></table> <h2>Mapper5</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Parent_Scheduler_Name</td><td>&quot;IP_Phone_2_Processor&quot;</td><td>&quot;&quot;IP_Phone_2_Processor&quot;&quot;</td></tr><tr><td>Task_Number</td><td>1</td><td>&quot;1&quot;</td></tr><tr><td>Task_Priority</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>Task_Time</td><td>10.0e-6</td><td>&quot;10.0e-6&quot;</td></tr><tr><td>Task_Plot_ID</td><td>1</td><td>1</td></tr></table> <h2>Mapper4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Parent_Scheduler_Name</td><td>&quot;IP_Phone_2_Processor&quot;</td><td>&quot;&quot;IP_Phone_2_Processor&quot;&quot;</td></tr><tr><td>Task_Number</td><td>1</td><td>&quot;1&quot;</td></tr><tr><td>Task_Priority</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>Task_Time</td><td>12.0e-6</td><td>&quot;12.0e-6&quot;</td></tr><tr><td>Task_Plot_ID</td><td>1</td><td>1</td></tr></table> <h2>Traffic6</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0e-2</td><td>0.01</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Traffic5</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0e-3</td><td>1.0E-3</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Traffic4</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0e-2</td><td>0.01</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Mapper3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Parent_Scheduler_Name</td><td>&quot;IP_Phone_1_Processor&quot;</td><td>&quot;&quot;IP_Phone_1_Processor&quot;&quot;</td></tr><tr><td>Task_Number</td><td>1</td><td>&quot;1&quot;</td></tr><tr><td>Task_Priority</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>Task_Time</td><td>20.0e-6</td><td>&quot;20.0e-6&quot;</td></tr><tr><td>Task_Plot_ID</td><td>1</td><td>1</td></tr></table> <h2>Mapper2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Parent_Scheduler_Name</td><td>&quot;IP_Phone_1_Processor&quot;</td><td>&quot;&quot;IP_Phone_1_Processor&quot;&quot;</td></tr><tr><td>Task_Number</td><td>1</td><td>&quot;1&quot;</td></tr><tr><td>Task_Priority</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>Task_Time</td><td>1.0e-6</td><td>&quot;1.0e-6&quot;</td></tr><tr><td>Task_Plot_ID</td><td>1</td><td>1</td></tr></table> <h2>Mapper</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Parent_Scheduler_Name</td><td>&quot;IP_Phone_1_Processor&quot;</td><td>&quot;&quot;IP_Phone_1_Processor&quot;&quot;</td></tr><tr><td>Task_Number</td><td>1</td><td>&quot;1&quot;</td></tr><tr><td>Task_Priority</td><td>2</td><td>&quot;2&quot;</td></tr><tr><td>Task_Time</td><td>10.0e-6</td><td>&quot;10.0e-6&quot;</td></tr><tr><td>Task_Plot_ID</td><td>1</td><td>1</td></tr></table> <h2>Traffic3</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0e-2</td><td>0.01</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Traffic2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0e-3</td><td>1.0E-3</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Traffic</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Value_1</td><td>1.0e-2</td><td>0.01</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Speaker</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>sampleRate</td><td>8000</td><td>8000</td></tr><tr><td>bitsPerSample</td><td>16</td><td>16</td></tr><tr><td>channels</td><td>1</td><td>1</td></tr><tr><td>transferSize</td><td>1</td><td>1</td></tr></table> <h2>TextDisplay</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>rowsDisplayed</td><td>10</td><td>10</td></tr><tr><td>columnsDisplayed</td><td>40</td><td>40</td></tr><tr><td>suppressBlankLines</td><td>false</td><td>false</td></tr><tr><td>title</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>ViewText</td><td>true</td><td>true</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>IN</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Destination_Name</td><td>Display_Stats</td><td>&quot;Display_Stats&quot;</td></tr><tr><td>Destination_Type</td><td>Global</td><td>Global</td></tr></table> <h2>Operator_2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>A Standard IP Phone will generate voice packet every 10, 20, 30 or 40 ms.\\n20 to 30 ms packet is preferred</td><td>A Standard IP Phone will generate voice packet every 10, 20, 30 or 40 ms.\\n20 to 30 ms packet is preferred</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Task_Class&quot;</td><td>&quot;Task_Class&quot;</td></tr><tr><td>Start_Time</td><td>Connection_Establish_Delay</td><td>1.0E-5</td></tr><tr><td>Value_1</td><td>Packet_Rate</td><td>5.0E-5</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>Operator_1</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>A Standard IP Phone will generate voice packet every 10, 20, 30 or 40 ms.\\n20 to 30 ms packet is preferred</td><td>A Standard IP Phone will generate voice packet every 10, 20, 30 or 40 ms.\\n20 to 30 ms packet is preferred</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Task_Class&quot;</td><td>&quot;Task_Class&quot;</td></tr><tr><td>Start_Time</td><td>Connection_Establish_Delay</td><td>1.0E-5</td></tr><tr><td>Value_1</td><td>Packet_Rate</td><td>5.0E-5</td></tr><tr><td>Value_2</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Value_1)</td><td>Fixed (Value_1)</td></tr></table> <h2>IP_Phone_2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>IP_Phone_1</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr></table> <h2>Router_1</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Enable_Router_Traffic</td><td>true</td><td>true</td></tr></table> <h2>Router_2</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Enable_Router_Traffic</td><td>true</td><td>true</td></tr></table> <h2>VoIP Gateway</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Processor_Speed</td><td>Processor_Speed</td><td>166.0</td></tr></table> <h2>Database</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>*.xml, *.csv files abs or rel (./) path\\n  -- *.csv real columns set to number\\nInput_Fields == Lookup_Fields (num, type)\\nOutput_Expr: match, match_last, match_all\\n  -- match_all.field not allowed</td><td>*.xml, *.csv files abs or rel (./) path\\n  -- *.csv real columns set to number\\nInput_Fields == Lookup_Fields (num, type)\\nOutput_Expr: match, match_last, match_all\\n  -- match_all.field not allowed</td></tr><tr><td>Linking_Name</td><td>&quot;RT&quot;</td><td>&quot;RT&quot;</td></tr><tr><td>fileOrURL</td><td>&nbsp;</td><td>&quot;&quot;</td></tr><tr><td>Data_Structure_Text</td><td>ID Source_Node  Destination_Node  Distance  Speed_Mbps Duplex\t;       \\n0\tIP_Phone_1\tRouter_1\t0.01\t100.0\ttrue\t;\\n1\tRouter_1\tVoIP_Gateway\t1.0\t100.0\ttrue\t;\\n2\tVoIP_Gateway\tRouter_2\t1.0\t100.0\ttrue\t;\\n3\tRouter_2\tIP_Phone_2\t0.02\t100.0\ttrue\t;</td><td>ID Source_Node  Destination_Node  Distance  Speed_Mbps Duplex\t;       \\n0\tIP_Phone_1\tRouter_1\t0.01\t100.0\ttrue\t;\\n1\tRouter_1\tVoIP_Gateway\t1.0\t100.0\ttrue\t;\\n2\tVoIP_Gateway\tRouter_2\t1.0\t100.0\ttrue\t;\\n3\tRouter_2\tIP_Phone_2\t0.02\t100.0\ttrue\t;</td></tr><tr><td>Input_Fields</td><td>&quot;Source_Node&quot;</td><td>&quot;Source_Node&quot;</td></tr><tr><td>Lookup_Fields</td><td>&quot;Source_Node&quot;</td><td>&quot;Source_Node&quot;</td></tr><tr><td>Output_Expression</td><td>&quot;output = match&quot; /* FORMAT output = match.fieldb */</td><td>&quot;output = match&quot;</td></tr><tr><td>Mode</td><td>Read</td><td>Read</td></tr></table> <h2>Routing_Table</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Routing_Table_DB</td><td>&quot;Routing_Table_DB&quot;</td><td>&quot;Routing_Table_DB&quot;</td></tr><tr><td>Routing_Table_Name</td><td>RT</td><td>&quot;RT&quot;</td></tr><tr><td>Propagation_Constant_C</td><td>1.0</td><td>1.0</td></tr><tr><td>Message_Names</td><td>{&quot;Retry&quot;, &quot;Request&quot;, &quot;Acknowledge&quot;}</td><td>{&quot;Retry&quot;, &quot;Request&quot;, &quot;Acknowledge&quot;}</td></tr><tr><td>Message_Bytes</td><td>{16, 16, 16}</td><td>{16, 16, 16}</td></tr><tr><td>NODEs_in_Model</td><td>true</td><td>true</td></tr><tr><td>Routing_Algorithm</td><td>Dijkstra</td><td>Dijkstra</td></tr><tr><td>Routing_Algorithm_Cost</td><td>Link_Load</td><td>Link_Load</td></tr><tr><td>Routing_Latencies</td><td>Length_in_kilometers</td><td>Length_in_kilometers</td></tr></table>

In this model each node is separated by a distance and is connected via Routers and VoIP Gateways. The Operator is represented as a Traffic Generator block
that generates a packet at a fixed rate called “Packet Rate”. Packet Rate is configured to 5.0e-5, 20.0e-5 and 30.0e-5. The initial connection establishment
delay is a parameter.

To simulate failures, the processing units are overloaded with the application of external tasks. These tasks are high priority independent tasks
(which are not connected to the regular flow).

The processing units- IP_Phone1, IP_Phone2 and the CPU are overloaded by enabling the Enable_Load parameter. The new overloading tasks steal
processing cycles that were previously available for VoIP.


The following are the statistics comparison with and without overloading. The overloading increases the resource utilization and the processing latency significantly.
Buffer Occupancy and Throught of the Internet Routers and the VoIP phones