nmeta2 module

This is the main module of the nmeta2 suite running on top of the Ryu SDN controller to provide network identity and flow (traffic classification) metadata. . It supports OpenFlow v1.3 switches and Data Path Auxiliary Engines (DPAE) . Do not use this code for production deployments - it is proof of concept code and carries no warrantee whatsoever. . You have been warned.

class nmeta2.Nmeta(*args, **kwargs)

Bases: ryu.base.app_manager.RyuApp

This is the main class of nmeta2 and is run by Ryu

OFP_VERSIONS = [4]
desc_stats_reply_handler(ev)

Receive a reply from a switch to a description statistics request

dpae_join(pkt, datapath, in_port)

A DPAE may have sent us a join discovery packet (Phase 2) Check the packet payload to see if it is valid

error_msg_handler(ev)

A switch has sent us an error event

flow_removed_handler(ev)

A switch has sent an event to us because it has removed a flow from a flow table

switch_connection_handler(ev)

A switch has connected to the SDN controller. We need to do some tasks to set the switch up properly:

  • Instantiate a class to represent the switch and flow tables
  • Delete all existing flow entries
  • Set config for fragment handling and table miss packet length
  • Set up initial flow entries in flow tables
  • Install non-DPAE TC flows from optimised policy to switch
  • Request the switch send us its description

Supported OpenFlow versions is controlled by the OFP_VERSIONS constant set in class base.

tc_advice_id(dpid, tc_type, tc_subtype, src_mac, detail1)

Process a Traffic Classification advice message from a DPAE that relates to an identity

tc_start(datapath, dpae_port)

Add a Flow Entry to switch to clone selected packets to a DPAE so that it can perform Traffic Classification analysis on them