All notable changes to the of_core NApp will be documented in this file.
- Multipart replies clean up now happens before connection gets established to be safer
MatchDLVLAN
can handle values such as"4096/4096"
and 0
- New event
kytos/of_core.table_stats.received
to notify when new table statistics are available.
from_of_instruction
experimenter class deserialization shouldn't usepyof ActionExperimenter.body
- Gracefully handled
kytos/core.openflow.connection.error
when a switch hasn't been created yet
- Removed support for OpenFlow 1.0
- Augmented
InstructionAction.from_of_instruction
to support deserializing ActionExperimenter fromFlowStats
entries. OFPPS_LIVE
is now considered when handling port description and port status- Subscribed to
.*.connection.lost
andkytos/core.openflow.connection.error
to be able to reset multipart replies - Improved log message for PortStatus events
- Made a shallow copy when iterating on switches to avoid RuntimeError dictionary changed
- Added new KytosEvent
kytos/of_core.switch.interfaces.created
meant for bulk updates or insertions. - Added
match_id
attribute onFlow
as a unique match identifier for efficient overlapping matches updates, minimizing extra DB lookups that would be needed otherwise. - Added msg_prios module to define OpenFlow message priorities used in the core queues and covered with unit tests
- Changed Match OF10
as_dict
to only included explicit set values - of_core handles and assembles OpenFlow 1.3 messages with
async
methods - on_multipart_reply is now handled with an
async
method in line - Updated
kytos/of_core.flow_stats.received
to also include the replied flows - KytosEvent put in
msg_in
andmsg_out
now have priority based on their control plane importance to avoid starvation
- OFPT_ERROR message could crash when logging it.
- Fixed inconsistent Flow04 id for empty list actions.
- Added
switch.update_lastseen()
on handle_features_reply
- Changed
update_port_status
onOFPPR_DELETE
to deactivate an interface instead of deleting it to keep the same object reference thattopology
uses when managing the status of a link.
- New event
kytos/of_core.flow_stats.received
to notify when new flow statistics are available. - Added a custom JSON encoder for OF 1.0 flow representation, solving the JSON UBInt serialization error.
- Added new event
switch.interface.created
inhandle_port_desc
to notify when a new interface is created.
- Added class
ActionSetQueue
for OpenFlow 1.3.
- Improved OFPT_ERROR log message adding
dpid
andxid
info.
- Fixed the string formatting in OFPT_ERROR log message.
- Updated the default
table_id
value in theFlowBase
class to fix an error in the consistency check.
- Added support for requesting port statistics.
- Implemented
FlowBase.__eq__
to allow direct comparison between two flows
- Changed
setup.py
to alert when a test fails on Travis. - Changed the behavior of the
handle_port_desc
method, defining theOFPPC_NO_FWD
flag on interfaces that Kytos should not send packets to.
- Removed debug messages with raw OpenFlow packets
- Added new fields for OpenFlow 1.3, including SCTP source/destination, ARP SPA/TPA/SHA/THA, IPv6 source/destination, MPLS label/TC/BOS, Metadata and Tunnel ID match fields.
- Added new unit tests.
- Updated .coveragerc to ignore .eggs in tests.
- Fixed the
handle_port_desc
method. NowInterface
instances are created using the speed attribute.
- Added new unit tests, increasing coverage to 47%.
- Added '.travis.yml' to enable Travis CI.
- Added tags decorator to run tests by type and size.
- Changed default value for the flow priority to
0x8000
(215, the default was 0). Now it is a value in the middle ofrange(0, 2**16)
. - Changed README.rst to include some info badges.
- Fixed some error message log levels from DEBUG to ERROR.
- Fixed Scrutinizer coverage error.
- Fixed __init__.py file in tests folder to solve bug when running tests.
- Changed log level of error messages from debug to error.
- Fixed broken API error on flow module.
- Added OF_ERROR messages on log files
- Added cookie_mask field on v0x4 version of OpenFlow.
- Enabled continuous integration on Scrutinizer.
- Updated requirements.
- Updated README.
- Now, a new interface instance will only be created if the interface does not exists
- Updated NApp installation.
- Removed unnecessary events.
- Removed unused dependencies.
- Removed operational status notification.
- Fixed some linter errors.
- Fixed interface up.down events, removing unnecessary events. Fix #33
- Added kytos/of_core.handshake_completed event.
- Add specific events for port and link up/down.
- Add Abstract actions in V0x04.
- Send kytos/of_core.switch.port.created using v0x04.
- Add statistics and instructions support for OF 1.3.
- Add PortStats for OF 1.0.
- Added v0x04 flow support.
- Generate port Created event.
- Add update_flow_list for v0x04.
- Added method to update interfaces for OF1.3 switches.
- Added changelog for of_core NApp.
- Answer Hello with the same version as the switch's.
- Send SetConfig to datapath right after the handshake.
- Send Echo Requests to datapath periodically.
- Adding dependencies in kytos.json.
- Make unpack get lib version from message header.
- Support more pyof libs versions and emmit version specific events.
- Improvements for the OpenFlow 1.3 Handshake.
- Moved Interface import.
- Adapt the NApp to changes in python-openflow.
- Avoid wrong NApp naming.
- Deal with PortStatus the proper way.
- Deal with multiple flow stats multipart replies.
- Return proper Flow class for a switch.
- Save generic flow for OF 1.3 in controller.switch.
- Also store OF 1.3 flows in controller switch.flows.
- Refactoring: reuse base flow in OF 1.0.
- Improve reachable.mac event content.
- Moved flow.py module to the of_core NApp.
- Change 'not implemented' log INFO to ERROR.
- Change import statement.
- Connection state handling improvement.
- Change fetch_latest to avoid UnboundLocalError.
- Connection state check improvement.
- Update docstrings, logs and comments.
- Handshake intermediary update. New version negotiation. Once version is decided, it will now need to send features_request or hello_failed error_message with the correct version.
- Update of_core utils with a few methods/classes - emit_message_in - emit_message_out - GenericHello - NegotiationException.
- Use switch.id in flow.id.
- Exclude Match fields with None value from JSON.
- Remove nw_tos.
- Remove JSON example from of_topology README.
- Remove unpack from kytos/of_core/utils.py.
- Removed self.versions from kytos/of_core.
- Fix 'reachable' event for OF1.3 packets.
- Fix catch interface modified/deleted.
- Fix converting python-openflow actions.
- Fix flow.switch serialization.
- Fix version-dependent classes in Flow abstract cls.
- Fix different Flow ID after restarting controller.
- Fix error while getting PortStatus Reason.
- Fix import from Kytos Connection module.
- Fix OpenFlow Hello messages in of_core.
- A few napps fixes to check for switch connection version before acting.
- Some bug fixes.
- New request handler alters of_core so that all message parsing and processing happens outside the core tcp_server
- Call 'update_lastseen' when OF message arrives
- Include data field from echo request in echo reply.