Skip to content

Releases: ljerezchaves/ofswitch13

Release 5.2.3

02 Mar 13:36
Compare
Choose a tag to compare

Works with: ns-3.38, ns-3.39, and ns-3.40.

  • Configuring OFSwitch13PriorityQueue::QueueFactory with DropTailQueue<Packet> queues by default.
  • Renaming OFSwitch13Helper::ChannelType enumeration 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 5.2.2

01 Sep 15:10
Compare
Choose a tag to compare

Works with: ns-3.38 and ns-3.39.

  • Removing examples/ofswitch13-qos-controller dependency from the NetAnim module.
  • Updating buffer timeout operation with millisecond resolution support.
  • Updating the maximum size of the parent OFSwitch13Queue class 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 5.2.1

31 Mar 15:36
Compare
Choose a tag to compare

Works with: ns-3.38.

  • Replacing V4PingHelper by PingHelper in examples.
  • This release automatically handles the integration between OFSwitch13 module and BOFUSS library v5.2.x.

Release 5.2.0

31 Mar 03:27
Compare
Choose a tag to compare

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.txt to 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 5.1.0

10 Dec 22:30
Compare
Choose a tag to compare

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 5.0.1

20 Dec 18:14
Compare
Choose a tag to compare

Works with: ns-3.31, ns-3.32, ns-3.33, ns-3.34, and ns-3.35.

  • Updating the OFSwitch13Queue class 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 5.0.0

19 Dec 19:34
Compare
Choose a tag to compare

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 the Ptr<const RemoteSwitch> pointer was removed. Users can fix compilation errors by just using RemoteSwitch::GetDpId() method when invoking OFSwitch13Controller::DpctlExecute().
    • The OFSwitch13Controller::DpctlSchedule() method was deprecated in favor of OFSwitch13Controller::DpctlExecute(). When the switch is not connected to the controller, the OFSwitch13Controller::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 invoking Simulator::Run().
  • New OFSwitch13Device::TableDrop trace source to notify unmatched packets dropped by flow tables without table-miss entries.
  • New TabDrps column in the OFSwitch13StatsCalculator output file.
  • Updating the OFSwitch13Queue class to match the changes introduced in the Queue API by ns-3.30.
  • Updating the ofswitch13-external-controller example 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 4.0.0

03 Apr 00:35
Compare
Choose a tag to compare

Works with: ns-3.28 and ns-3.29.

BE AWARE THAT this release brings incompatible API changes.

  • Refactoring the OFSwitch13 queue API:
    • The OFSwitch13Queue class implements the queue interface, extending the Queue<Packet> class to allow compatibility with the CsmaNetDevice used by OFSwitch13Port. Internally, it holds a collection of N (possibly different) queues, identified by IDs ranging from 0 to N-1. The OFSwitch13Queue::Enqueue() method uses the QueueTag to identify which internal queue will hold the packet.
    • Specialized OFSwitch13Queue subclasses can perform different output scheduling algorithms by implementing the virtual OFSwitch13Queue::Peek(), OFSwitch13Queue::Dequeue(), and OFSwitch13Queue::Remove() methods. The last two methods must call the OFSwitch13Queue::NotifyDequeue() and OFSwitch13Queue::NotifyRemoved(), respectively, to update statistics and keep consistency with the base class.
    • The OFSwitch13Port::QueueFactory attribute can be used to configure OpenFlow port queue at construction time.
    • The new OFSwitch13PriorityQueue class 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. The OFSwitch13PriorityQueue::QueueFactory and OFSwitch13PriorityQueue::NumQueues attributes can be used to configure the type and the number of internal priority queues.
  • Refactoring the OFSwitch13Device class:
    • Adjusting OFSwitch13Device::PipelineTables, OFSwitch13Device::FlowTableSize, OFSwitch13Device::GroupTableSize, and OFSwitch13Device::MeterTableSize attributes at any time.
    • New OFSwitch13Device::GetDpId() method as an alias for the OFSwitch13Device::GetDatapathId() method.
    • New OFSwitch13Device::GetDatapathStruct() and OFSwitch13Port::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(), and OFSwitch13Device::GetBufferSize() methods for datapath statistics.
    • Renaming OFSwitch13Device::PipelineCapacity attribute to OFSwitch13Device::CpuCapacity,
    • Renaming OFSwitch13Device::PipelineLoad traced value to OFSwitch13Device::CpuLoad,
    • Renaming OFSwitch13Device::LoadDrop trace source to OFSwitch13Device::OverloadDrop.
    • Renaming OFSwitch13Device::GetOFSwitch13Port() method to OFSwitch13Device::GetSwitchPort().
    • Renaming OFSwitch13Device::GetPipelineLoad() method to OFSwitch13Device::GetCpuLoad().
    • Renaming OFSwitch13Device::GetPipelineCapacity() method to OFSwitch13Device::GetCpuCapacity().
    • Renaming OFSwitch13Device::GetFlowEntries() method to OFSwitch13Device::GetFlowTableEntries()
    • Renaming OFSwitch13Device::GetGroupEntries() method to OFSwitch13Device::GetGroupTableEntries().
    • Renaming OFSwitch13Device::GetMeterEntries() method to OFSwitch13Device::GetMeterTableEntries().
  • Refactoring the OFSwitch13StatsCalculator class:
    • New OFSwitch13StatsCalculator::FlowTableDetails attribute to dump individual flow table statistics.
    • Renaming OFSwitch13StatsCalculator::GetEwmaPipelineLoad() method to OFSwitch13StatsCalculator::GetEwmaCpuLoad().
    • Renaming OFSwitch13StatsCalculator::GetAvgPipelineUsage() method to OFSwitch13StatsCalculator::GetAvgCpuUsage().
    • Renaming column names in first row, removing any special character from them.
  • 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() and OFSwitch13Port::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 3.3.0

29 Sep 23:12
Compare
Choose a tag to compare

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::PipelineTables attribute to define the number of flow tables in the pipeline.
  • Adjusting OFSwitch13Device::PipelineTables, OFSwitch13Device::FlowTableSize, OFSwitch13Device::GroupTableSize, and OFSwitch13Device::MeterTableSize attributes at construction time only.
  • Renaming the OFSwitch13Device::GetFlowEntries() method to OFSwitch13Device::GetSumFlowEntries().
  • Renaming the OFSwitch13StatsCalculator::GetEwmaFlowEntries() method to OFSwitch13StatsCalculator::GetEwmaSumFlowEntries().
  • This release requires manual integration between OFSwitch13 module and BOFUSS library v3.3.x.

Release 3.2.2

05 Jul 18:24
Compare
Choose a tag to compare

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.