This file contains OFSwitch13 release notes (most recent releases first).
Release date: Mar 02, 2024.
Works with: ns-3.38, ns-3.39, and ns-3.40.
- Configuring
OFSwitch13PriorityQueue::QueueFactorywithDropTailQueue<Packet>queues by default. - Renaming
OFSwitch13Helper::ChannelTypeenumeration values to match coding style. - Enabling checksum computations in
OFSwitch13Helper::CreateOpenFlowChannel()methods. - This release automatically handles the integration between OFSwitch13 module and BOFUSS library v5.2.x.
Release date: Sep 01, 2023.
Works with: ns-3.38 and ns-3.39.
- Removing
examples/ofswitch13-qos-controllerdependency from the NetAnim module. - Updating buffer timeout operation with millisecond resolution support.
- Updating the maximum size of the parent
OFSwitch13Queueclass with the sum of the maximum size of all internal queues (the operation mode of all internal queues must be the same). - This release automatically handles the integration between OFSwitch13 module and BOFUSS library v5.2.x.
Release date: Mar 31, 2023.
Works with: ns-3.38.
- Replacing
V4PingHelperbyPingHelperin examples. - This release automatically handles the integration between OFSwitch13 module and BOFUSS library v5.2.x.
Release date: Mar 31, 2023.
Works with: ns-3.36 and ns-3.37.
- Replacing the outdated ofsoftswitch13 name by BOFUSS in the project (source code and documentation).
- Refactoring the BOFUSS ns3lib branch to simplify library compilation.
- Updating
CMakeLists.txtto automatically download, configure and build the BOFUSS library. - Updating the module documentation to reflect the changes in building process.
- This release automatically handles the integration between OFSwitch13 module and BOFUSS library v5.2.x.
Release date: Dec 10, 2022.
Works with: ns-3.36 and ns-3.37.
- Updating the build system to work with CMake introduced by ns-3.36.
- Updating the source code formatting to match ns-3.37 coding style.
- Updating the module documentation, removing outdated figures.
- New CSMA full-duplex patch for improved channel operation.
- Fixing errors when compiling the project with gcc 11.3.0 in Ubuntu 22.04.1.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v5.1.x.
Release date: Dec 20, 2021.
Works with: ns-3.31, ns-3.32, ns-3.33, ns-3.34, and ns-3.35.
- Updating the
OFSwitch13Queueclass to match the changes introduced in the Queue API by ns-3.31. - Removing DL library dependency to prevent issues with boost library.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v5.0.x.
Release date: Dec 19, 2021.
Works with: ns-3.30.
BE AWARE THAT this release brings incompatible API changes.
- Refactoring the
OFSwitch13Controller::Dpctl*()methods:- The
OFSwitch13Controller::DpctlExecute()method has no more overloaded definitions. The target switch (first parameter) must be the switch's datapath IP. Previous signature using thePtr<const RemoteSwitch>pointer was removed. Users can fix compilation errors by just usingRemoteSwitch::GetDpId()method when invokingOFSwitch13Controller::DpctlExecute(). - The
OFSwitch13Controller::DpctlSchedule()method was deprecated in favor ofOFSwitch13Controller::DpctlExecute(). When the switch is not connected to the controller, theOFSwitch13Controller::DpctlExecute()method will automatically schedule the command for execution just after the handshake procedure. This is particularly useful for executing commands when creating the topology, before invokingSimulator::Run().
- The
- New
OFSwitch13Device::TableDroptrace source to notify unmatched packets dropped by flow tables without table-miss entries. - New
TabDrpscolumn in theOFSwitch13StatsCalculatoroutput file. - Updating the
OFSwitch13Queueclass to match the changes introduced in the Queue API by ns-3.30. - Updating the
ofswitch13-external-controllerexample with a custom topology configuration (this example was tested with the Ryu controller). - Fixing incorrect Ethernet 802.3 packet header parsing.
- Fixing errors when compiling the project with gcc 9.3.0 in Ubuntu 20.04.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v5.0.x.
Release date: Apr 02, 2019.
Works with: ns-3.28 and ns-3.29.
BE AWARE THAT this release brings incompatible API changes.
- Refactoring the OFSwitch13 queue API:
- The
OFSwitch13Queueclass implements the queue interface, extending theQueue<Packet>class to allow compatibility with theCsmaNetDeviceused byOFSwitch13Port. Internally, it holds a collection of N (possibly different) queues, identified by IDs ranging from 0 to N-1. TheOFSwitch13Queue::Enqueue()method uses theQueueTagto identify which internal queue will hold the packet. - Specialized
OFSwitch13Queuesubclasses can perform different output scheduling algorithms by implementing the virtualOFSwitch13Queue::Peek(),OFSwitch13Queue::Dequeue(), andOFSwitch13Queue::Remove()methods. The last two methods must call theOFSwitch13Queue::NotifyDequeue()andOFSwitch13Queue::NotifyRemoved(), respectively, to update statistics and keep consistency with the base class. - The
OFSwitch13Port::QueueFactoryattribute can be used to configure OpenFlow port queue at construction time. - The new
OFSwitch13PriorityQueueclass implements the specialized priority queuing discipline for a collection of N priority queues, identified by IDs ranging from 0 to N-1 with decreasing priority (queue ID 0 has the highest priority). The output scheduling algorithm ensures that higher-priority queues are always served first. TheOFSwitch13PriorityQueue::QueueFactoryandOFSwitch13PriorityQueue::NumQueuesattributes can be used to configure the type and the number of internal priority queues.
- The
- Refactoring the
OFSwitch13Deviceclass:- Adjusting
OFSwitch13Device::PipelineTables,OFSwitch13Device::FlowTableSize,OFSwitch13Device::GroupTableSize, andOFSwitch13Device::MeterTableSizeattributes at any time. - New
OFSwitch13Device::GetDpId()method as an alias for theOFSwitch13Device::GetDatapathId()method. - New
OFSwitch13Device::GetDatapathStruct()andOFSwitch13Port::GetPortStruct()methods returning pointers to the BOFUSS library internal structures. - New
OFSwitch13Device::GetDatapathTimeout(),OFSwitch13Device::GetFlowTableUsage(),OFSwitch13Device::GetGroupTableUsage(),OFSwitch13Device::GetMeterTableUsage(),OFSwitch13Device::GetNControllers(),OFSwitch13Device::GetBufferEntries(),OFSwitch13Device::GetBufferUsage(), andOFSwitch13Device::GetBufferSize()methods for datapath statistics. - Renaming
OFSwitch13Device::PipelineCapacityattribute toOFSwitch13Device::CpuCapacity, - Renaming
OFSwitch13Device::PipelineLoadtraced value toOFSwitch13Device::CpuLoad, - Renaming
OFSwitch13Device::LoadDroptrace source toOFSwitch13Device::OverloadDrop. - Renaming
OFSwitch13Device::GetOFSwitch13Port()method toOFSwitch13Device::GetSwitchPort(). - Renaming
OFSwitch13Device::GetPipelineLoad()method toOFSwitch13Device::GetCpuLoad(). - Renaming
OFSwitch13Device::GetPipelineCapacity()method toOFSwitch13Device::GetCpuCapacity(). - Renaming
OFSwitch13Device::GetFlowEntries()method toOFSwitch13Device::GetFlowTableEntries() - Renaming
OFSwitch13Device::GetGroupEntries()method toOFSwitch13Device::GetGroupTableEntries(). - Renaming
OFSwitch13Device::GetMeterEntries()method toOFSwitch13Device::GetMeterTableEntries().
- Adjusting
- Refactoring the
OFSwitch13StatsCalculatorclass:- New
OFSwitch13StatsCalculator::FlowTableDetailsattribute to dump individual flow table statistics. - Renaming
OFSwitch13StatsCalculator::GetEwmaPipelineLoad()method toOFSwitch13StatsCalculator::GetEwmaCpuLoad(). - Renaming
OFSwitch13StatsCalculator::GetAvgPipelineUsage()method toOFSwitch13StatsCalculator::GetAvgCpuUsage(). - Renaming column names in first row, removing any special character from them.
- New
- Overriding the
OFSwitch13Helper::InstallSwitch()method:- When the first parameter is a node container, the method returns an OpenFlow device container.
- When the first parameter is a node pointer, the method returns the OpenFlow device pointer (there's the optional second parameter of a device container that will be configured as switch ports).
- New
OFSwitch13Port::GetPortDevice(),OFSwitch13Port::GetPortQueue()andOFSwitch13Port::GetSwitchDevice()methods. - Increasing the maximum number of OpenFlow switch ports to 4096 (see DP_MAX_PORTS at BOFUSS library)
- Increasing the maximum number of output queues on ports to 32 (see NETDEV_MAX_QUEUES at BOFUSS library)
- Removing the BOFUSS library dependency on the NetBee library.
- Improving the BOFUSS library performance and fixing memory leak errors.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v4.0.x.
Release date: Sep 29, 2018.
Works with: ns-3.28 and ns-3.29.
- Fixing incorrect bitwise comparison in port configuration.
- Fixing incorrect ns-3 version comparison that was preventing module configuration in ns-3.28.1
- New
OFSwitch13Device::PipelineTablesattribute to define the number of flow tables in the pipeline. - Adjusting
OFSwitch13Device::PipelineTables,OFSwitch13Device::FlowTableSize,OFSwitch13Device::GroupTableSize, andOFSwitch13Device::MeterTableSizeattributes at construction time only. - Renaming the
OFSwitch13Device::GetFlowEntries()method toOFSwitch13Device::GetSumFlowEntries(). - Renaming the
OFSwitch13StatsCalculator::GetEwmaFlowEntries()method toOFSwitch13StatsCalculator::GetEwmaSumFlowEntries(). - This release requires manual integration between OFSwitch13 module and BOFUSS library v3.3.x.
Release date: Jul 05, 2018.
Works with: ns-3.28.
- Fixing errors when compiling the project with gcc 7.3.0 in Ubuntu 18.04.
- Replacing Mercurial by Git as version control system.
- Configuring the BOFUSS library as a git submodule that automatically handle version compatibility.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v3.2.x.
Release date: May 22, 2018.
Works with: ns-3.28.
- Updating
OFSwitch13QueueandOFSwitch13InternalHelperclasses to avoid using deprecated ns-3 queue API when setting queue size and queue mode. - This release requires manual integration between OFSwitch13 module and BOFUSS library v3.2.x.
Release date: May 22, 2018.
Works with: ns-3.27.
- Updating
OFSwitch13Queueclass to match the changes introduced in the Queue API by ns-3.27 (special thanks to Stefano Avallone for providing the necessary patches). - This release requires manual integration between OFSwitch13 module and BOFUSS library v3.2.x.
Release date: May 12, 2018.
Works with: ns-3.26.
- New packet counter in
OFSwitch13StatsCalculatorclass to measure the pipeline load. - New
OFSwitch13Queue::QueueFactoryattribute for the object factory used to create internal OpenFlow queues on device ports. - Fixing errors when handling packet tags and refilling meter tokens.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v3.1.x.
Release date: May 29, 2017.
Works with: ns-3.26.
- New
OFSwitch13Device::PipelineCapacityattribute to limit the traffic throughput to a specific data rate. - New
OFSwitch13Device::FlowTableSize,OFSwitch13Device::GroupTableSize, andOFSwitch13Device::MeterTableSizeattributes to define the maximum number of entries in pipeline tables. - New
OFSwitch13Queue::NumQueuesattribute to define the number of output queues available for use. - New
OFSwitch13SocketHandlerclass to assist switches and controllers dealing with TCP sockets used by the OpenFlow channels. - Including the meter ID parameter on the
OFSwitch13Device::MeterDroptrace source. - Including new trace sources in
OFSwitch13Devicefor monitoring datapath performance. - Refactoring the
OFSwitch13StatsCalculatorto dump statistics in a clear way. - Improving the
ofswitch13-logical-portexample with a stateless tunnel application. - Updating the default
OFSwitch13Device::TcamDelayattribute value to better reflect real hardware operation. - This release requires manual integration between OFSwitch13 module and BOFUSS library v3.1.x.
Release date: Feb 10, 2017.
Works with: ns-3.26.
BE AWARE THAT this release brings incompatible API changes.
- Start using the semantic versioning on this project.
- Updating the
OFSwitch13Queueclass to match the changes introduced in the Queue API by ns-3.26. - Supporting multiple controllers in the same OpenFlow network domain.
- Supporting
VirtualNetDeviceas logical OpenFlow port. - Renaming examples files with prefix
ofswitch13-. - New
ofswitch13-logical-portexample. - Removing the need of registering the switch at the controller before starting the connection.
- Removing the
OFSwitch13Device::ControllerAddrattribute (the controller address must be indicated by the helper as a parameter to theOFSwitch13Device::StartControllerConnection()method). - New
OFSwitch13StatsCalculatorclass for switch performance monitoring. - Implementing a simplified OpenFlow version-negotiation in OpenFlow device.
- New
SocketReaderclass for safely reading OpenFlow messages from TCP sockets. - New
RemoteControllerandRemoteSwitchclasses to handle several remote connections. - Refactoring the
OFSwitch13Controllerclass:- Splitting the
DpctlCommand()method intoDpctlExecute()andDpctlSchedule(). - Removing the dependence from the
OFSwitch13Deviceclass. - Renaming the
ConnectionStarted()method toHandshakeSuccessful(). - Implementing the handshake procedure.
- Implementing the barrier reply, hello and features reply handlers.
- Using constant pointers to
RemoteSwitchobjects.
- Splitting the
- Refactoring the
OFSwitch13Helperclass:- Using the
OFSwitch13Helperas a base class and implementing extended helpers for configuring an OpenFlow network domain with internal controller applications (OFSwitch13InternalHelper) or an external controller (OFSwitch13ExternalHelper). - Removing the need of installing the controller before configuring the switches.
- Introducing the
CreateOpenFlowChannels()method to effectively connect switches to controllers after installing switches and controllers into respective nodes (the use of this function is mandatory).
- Using the
- This release requires manual integration between OFSwitch13 module and BOFUSS library v3.0.x.
Release date: Sep 12, 2016.
Works with: ns-3.22, ns-3.23, ns-3.24.1, and ns-3.25.
- Fixing a wrong variable type on priority output queue selection.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v2.0.x.
Release date: Apr 11, 2016.
Works with: ns-3.22, ns-3.23, ns-3.24.1, and ns-3.25.
- Renaming
OFSwitch13NetDevicetoOFSwitch13Device, as the OpenFlow device is not a network device anymore. - New
OFSwitch13DeviceContainerfor handling OpenFlow devices. - New
CsmaNetDeviceOpenFlow receive callback that forwards packets with all headers from the underlying CSMA port to the OpenFlow device. - New
qos-controllerexample. - Creating 8 priority queues for each
OFSwitch13Queue. - Updating the documentation with detailed module design and
qos-controllerexample description. - This release requires manual integration between OFSwitch13 module and BOFUSS library v2.0.x.
Release date: Feb 16, 2016.
Works with: ns-3.22, ns-3.23 and ns-3.24.1.
- Improving documentation with highlights for the differences between the OFSwitch13 module and the existing ns-3 OpenFlow module.
- Patches for integrating OFSwitch13 with ns-3 versions 3.22, 3.23 and 3.24.1.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v2.0.x.
Release date: Feb 15, 2016.
Works with: ns-3.22, ns-3.23, and ns-3.24.1.
- The first public release of the OFSwitch13 module, including source code and documentation.
- This release requires manual integration between OFSwitch13 module and BOFUSS library v2.0.x.