Openflow Switch

OVS_Switch_Model_V6

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 (*)
  • Please make sure the machine has JAVA 14 or higher version installed.
  • 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.
OVS_Switch_Model_V6model <h2>Timing Diagram</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>Power_Stats</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>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>legend</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>fileName</td><td>Enter Filename to save plot</td><td>&quot;Enter Filename to save plot&quot;</td></tr><tr><td>viewPlot</td><td>true</td><td>true</td></tr><tr><td>savePlot</td><td>false</td><td>false</td></tr></table> <h2>Power_Manager</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>This is the Excel spreadsheet import.  The power \\ninformation is maintained here.</td><td>This is the Excel spreadsheet import.  The power \\ninformation is maintained here.</td></tr><tr><td>Manager_Name</td><td>&quot;Manager_1&quot;</td><td>&quot;Manager_1&quot;</td></tr><tr><td>fileOrURL</td><td>&nbsp;</td><td>&quot;&quot;</td></tr><tr><td>Manager_Setup</td><td>/* Power by Battery_Units, File (*.txt, *.csv, *.xml) or text below.              \\n                                                                                  \\n--------Device Name-------  \t---------Power States------  \t    -----Operating States------  -----------State Transitions---------  --Speed--  --Exist-- */\\n    Architecture_Block           Active    Standby   Wait     Idle  Existing  OffState  OnState  t_OnOff      Mhz       Volts   ; \\nScheduler_LB        \t\t  200.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DPI         \t\t  200.0     30.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_FW         \t\t  300.0     40.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_SSL         \t\t  300.0     50.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_IPSec         \t  200.0     35.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_CMPDCMP      \t\t  300.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA1         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA2         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA3         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA4         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DDR         \t\t  500.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nSTR_OVS_Switch         \t\t  800.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; </td><td>/* Power by Battery_Units, File (*.txt, *.csv, *.xml) or text below.              \\n                                                                                  \\n--------Device Name-------  \t---------Power States------  \t    -----Operating States------  -----------State Transitions---------  --Speed--  --Exist-- */\\n    Architecture_Block           Active    Standby   Wait     Idle  Existing  OffState  OnState  t_OnOff      Mhz       Volts   ; \\nScheduler_LB        \t\t  200.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DPI         \t\t  200.0     30.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_FW         \t\t  300.0     40.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_SSL         \t\t  300.0     50.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_IPSec         \t  200.0     35.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_CMPDCMP      \t\t  300.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA1         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA2         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA3         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DMA4         \t\t  400.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nScheduler_DDR         \t\t  500.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; \\nSTR_OVS_Switch         \t\t  800.0     20.0    100.0    100.0  Standby   Standby   Active   1.0e-8    1000.0     1.0     ; </td></tr><tr><td>Async_State_Change</td><td>/* Async_State_Change.  First row contains Column Names, expressions valid for entries except Device Name. \\n                        where State to same State can extend a Power State                                 \\n--------Device Name-------  --Start------Expression------Next--- */\\nArchitecture_Block            State        Time          State   ; \\n</td><td>/* Async_State_Change.  First row contains Column Names, expressions valid for entries except Device Name. \\n                        where State to same State can extend a Power State                                 \\n--------Device Name-------  --Start------Expression------Next--- */\\nArchitecture_Block            State        Time          State   ; \\n</td></tr><tr><td>Expression_List</td><td>/* First row contains Column Names.                                \\n                                                                   \\n---------Reference--------  --------------Expression------------ */\\nName                                        Value                ; \\nCycle_t                     1.0E-6 / Mhz                         ; \\n</td><td>/* First row contains Column Names.                                \\n                                                                   \\n---------Reference--------  --------------Expression------------ */\\nName                                        Value                ; \\nCycle_t                     1.0E-6 / Mhz                         ; \\n</td></tr><tr><td>Battery_Units</td><td>Milli_Watts</td><td>Milli_Watts</td></tr><tr><td>State_Plot_Enable</td><td>false</td><td>false</td></tr></table> <h2>PCIe_DMA4</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>DMA_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>PCIe_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>DDR_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr></table> <h2>PCIe_DMA3</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>DMA_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>PCIe_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>DDR_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr></table> <h2>PCIe_DMA2</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>DMA_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>PCIe_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>DDR_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr></table> <h2>Text_Display(Buffered)</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>Title</td><td>&quot;My_Title&quot;</td><td>&quot;My_Title&quot;</td></tr><tr><td>Lines_Buffered</td><td>5</td><td>5</td></tr><tr><td>Rows_Displayed</td><td>8</td><td>8</td></tr><tr><td>Columns_Displayed</td><td>75</td><td>75</td></tr><tr><td>Font_Type</td><td>Lucida Sans Typewriter</td><td>Lucida Sans Typewriter</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>Resource_Statistics_Report</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Name</td><td>&quot;Multi_Block_Stats&quot;</td><td>&quot;Multi_Block_Stats&quot;</td></tr><tr><td>Scheduler_Name_Array</td><td>{} /* list of all the Schedulers as strings in a array */</td><td>{}</td></tr><tr><td>_explanation</td><td>Results-&gt;Resource_Statistical_Report</td><td>Results-&gt;Resource_Statistical_Report</td></tr><tr><td>Smart_Res_Length</td><td>{15,2} /* Number of Queues in each Smart_Resource and match the order in </td><td>{15, 2}</td></tr><tr><td>Number_of_Samples</td><td>2</td><td>2</td></tr><tr><td>Smart_Res_Name_Array</td><td>{&quot;OVS_Switch&quot;,&quot;PCIe1&quot;}</td><td>{&quot;OVS_Switch&quot;, &quot;PCIe1&quot;}</td></tr><tr><td>Statistics</td><td>true  /* Reset is false and Statistics is true */ </td><td>true</td></tr><tr><td>SimTime</td><td>Sim_Time</td><td>0.5</td></tr></table> <h2>DDR</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>_hideName</td><td>true</td><td>true</td></tr></table> <h2>Hierarchical_Block11</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>_hideName</td><td>true</td><td>true</td></tr></table> <h2>FW_Block</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>No_Cycles</td><td>31.0</td><td>31.0</td></tr><tr><td>Device</td><td>&quot;FW&quot;</td><td>&quot;FW&quot;</td></tr><tr><td>Device_ID</td><td>3</td><td>3</td></tr></table> <h2>DP_Block</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>No_Cycles</td><td>65.0</td><td>65.0</td></tr><tr><td>Device</td><td>&quot;DPI&quot;</td><td>&quot;DPI&quot;</td></tr><tr><td>Device_ID</td><td>2</td><td>2</td></tr></table> <h2>LB_Block</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>No_Cycles</td><td>131.0</td><td>131.0</td></tr><tr><td>Device</td><td>&quot;LB&quot;</td><td>&quot;LB&quot;</td></tr><tr><td>Device_ID</td><td>1</td><td>1</td></tr></table> <h2>CMPR_DCMPR</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>No_Cycles</td><td>93.0</td><td>93.0</td></tr><tr><td>Device</td><td>&quot;CMPDCMP&quot;</td><td>&quot;CMPDCMP&quot;</td></tr><tr><td>Device_ID</td><td>6</td><td>6</td></tr></table> <h2>SSL</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>No_Cycles</td><td>87.0</td><td>87.0</td></tr><tr><td>Device</td><td>&quot;SSL&quot;</td><td>&quot;SSL&quot;</td></tr><tr><td>Device_ID</td><td>4</td><td>4</td></tr></table> <h2>IPSec</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>No_Cycles</td><td>23.0</td><td>23.0</td></tr><tr><td>Device</td><td>&quot;IPSec&quot;</td><td>&quot;IPSec&quot;</td></tr><tr><td>Device_ID</td><td>5</td><td>5</td></tr></table> <h2>PCIe_DMA</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>DMA_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>PCIe_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr><tr><td>DDR_Speed</td><td>1500.0e6</td><td>1.5E9</td></tr></table> <h2>OVS Switch</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>_hideName</td><td>true</td><td>true</td></tr><tr><td>Switch_Speed</td><td>1000.0e6</td><td>1.0E9</td></tr></table> <h2>Ethernet_MAC</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>_hideName</td><td>true</td><td>true</td></tr></table>

Early analysis of OVS Switch based System for Optimal Performance and Power Requirements

Note: VisualSim model will load as a seperate window and the initial download will take 1-4 mins based on the load on our server and your network bandwidth. Please make sure that you have latest Java installed on your web browser and accept all security messages.

Please click on green button in the toolbar or press CTRL+R to start simulation. User can modify the model parameters by double clicking on the parameters and block parameters by double clicking on the library blocks.

Introduction

Open vSwitch, sometimes abbreviated to OVS, is a production-quality open-source implementation of a distributed virtual multilayer switch. The main purpose of Open vSwitch is to provide a switching stack for hardware virtualization environments, while supporting multiple protocols and standards used in computer networks.

Open vSwitch is a software implementation of a virtual multilayer network switch, designed to enable effective network automation through programmatic extensions, while supporting standard management interfaces and protocols such as NetFlow, sFlow, SPAN, RSPAN, CLI, LACP and 802.1ag. In addition, Open vSwitch is designed to support transparent distribution across multiple physical servers by enabling creation of cross-server switches in a way that abstracts out the underlying server architecture. OVS is also used on some dedicated switching hardware and it can be a critical part of the Software Defined Networking. In this document we will be showing you how a OVS based Network architecture can be setup and conduct verities of trade-off analysis studies to meet performance and power requirements even before the implementation details are available. The sample block diagram of the proposed system architecture is shown in figure 1.0 below.

Figure 1.0: OVS based System Block Diagram

We at Mirabilis Design developed an even based simulation model using VisualSim using configurable prebuilt graphical library blocks. The Simulation model of the proposed system architecture is shown in figure 2.0

Figure 2: VisualSim Model

The major purpose of developing statistical level simulation model at the very early stages of product development is to gain more confidence over the selected architecture configurations. Availability of simulation models even before the availability of implementation details and IP’s will enable the designers to select the optimal system configuration that meets user requirements and also make sure that the resources are utilized optimally. Statistical level simulation model can be constructed with very minimal information but it can be extended with details at the later stages for more accuracy. In this model we have considered many assumptions which include clock speed of OVS Switch, PCIe clock speed, Ethernet speed, and abstract details on the functionality of LB Block, DPI, FW, SSL, IPSec and Compression/Decompression block.

We have constructed the complete simulation model in eight man hours and spent fairly good amount of time on conducting analysis. During analysis we focused on end-to-end latency from Host Computer to Ethernet MAC and Ethernet MAC to Host Computer, average power consumption of complete system, utilization of resources and timing diagram to understand resource activity.

Analysis and Reports

As part of the analysis we have parameterized number of values and these includes Traffic rate of Host Computer, Traffic Rate of Ethernet, Clock speed of DMA, DDR, OVS Switch, PCIe, Packet Parser. We ran the simulation on a 2.6 GHz Microsoft Windows 8.1 platform with 4 GB RAM. We simulated the model for 500 ms real time and the VisualSim took 121.610 seconds. Analysis was conducted by varying the model parameters as mentioned above and looked at the latency and utilization of resources.

Analysis 1:

Change the parameters mentioned below and run simulation.

Module – PCIe/DMA

Parameters

Inter_Arrival_Time = 1.0e-4

DMA_Speed = 500.0e6

PCIe_Speed = 500.0e6

DDR_Speed = 500.0e6

Module – OVS Switch

Parameters

Switch Speed = 500.0e6

Module Ethernet_MAC

Parameters

Inter_Arrival_Time = 1.0e-2

Module – Packet Parser

Parameters

Clock_Speed = 500.0e6

The Simulation Results are shown below

Figure 3.0: End-to-End Latency – From Host Computer to Ethernet MAC

Figure 4.0: End-to-End Latency – From Ethernet MAC to Host Computer

Figure 5.0: Average Power Consumption of Complete System (Red)

Analysis 2:

Change the parameters mentioned below and run simulation.

Module – PCIe/DMA

Parameters

Inter_Arrival_Time = 1.0e-4

DMA_Speed = 500.0e6

PCIe_Speed = 500.0e6

DDR_Speed = 500.0e6

Module – OVS Switch

Parameters

Switch Speed = 1000.0e6

Module Ethernet_MAC

Parameters

Inter_Arrival_Time = 1.0e-4

Module – Packet Parser

Parameters

Clock_Speed = 500.0e6

The Simulation Results are shown below

Figure 6.0: End-to-End Latency – From Host Computer to Ethernet MAC

Figure 7.0: End-to-End Latency – From Ethernet MAC to Host Computer

Figure 8.0: Average Power consumption of Complete System (Red)