ROFL-pipeline  v0.6.0dev
Data Structures | Typedefs | Variables
Extensible OpenFlow v1.x (1.0, 1.2 and 1.3.2) software matching algorithm API

API to extend ROFL-pipeline with new (software/hybrid) OpenFlow v1.x (1.0, 1.2 and 1.3.2) table matching algorithms. More...

Data Structures

struct  of1x_matching_algorithm_functions
 Set of functions calls to be implemented in order to extend Matching algorithms for OF versions 1.0, 1.2 and 1.3.2. More...
 

Typedefs

typedef struct
of1x_matching_algorithm_functions 
of1x_matching_algorithms_functions_t
 Set of functions calls to be implemented in order to extend Matching algorithms for OF versions 1.0, 1.2 and 1.3.2. More...
 

Variables

rofl_result_t(* of1x_matching_algorithm_functions::init_hook )(struct of1x_flow_table *const table)
 Allows to initialize matching algorithm table state. More...
 
rofl_result_t(* of1x_matching_algorithm_functions::destroy_hook )(struct of1x_flow_table *const table)
 Allows to destroy matching algorithm table state. More...
 
rofl_of1x_fm_result_t(* of1x_matching_algorithm_functions::add_flow_entry_hook )(struct of1x_flow_table *const table, of1x_flow_entry_t *const entry, bool check_overlap, bool reset_counts)
 Adds a flow entry to the table. More...
 
rofl_result_t(* of1x_matching_algorithm_functions::modify_flow_entry_hook )(struct of1x_flow_table *const table, of1x_flow_entry_t *const entry, const enum of1x_flow_removal_strictness strict, bool reset_counts)
 Modifies a set of flow entries in the table. More...
 
rofl_result_t(* of1x_matching_algorithm_functions::remove_flow_entry_hook )(struct of1x_flow_table *const table, of1x_flow_entry_t *const entry, of1x_flow_entry_t *const specific_entry, const enum of1x_flow_removal_strictness strict, uint32_t out_port, uint32_t out_group, of1x_flow_remove_reason_t reason, of1x_mutex_acquisition_required_t mutex_acquired)
 Removes one or more flow entries in the table. More...
 
rofl_result_t(* of1x_matching_algorithm_functions::get_flow_stats_hook )(struct of1x_flow_table *const table, uint64_t cookie, uint64_t cookie_mask, uint32_t out_port, uint32_t out_group, of1x_match_group_t *const matches, of1x_stats_flow_msg_t *msg)
 Retrieves flow stats according to spec The operation MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2. More...
 
rofl_result_t(* of1x_matching_algorithm_functions::get_flow_aggregate_stats_hook )(struct of1x_flow_table *const table, uint64_t cookie, uint64_t cookie_mask, uint32_t out_port, uint32_t out_group, of1x_match_group_t *const matches, of1x_stats_flow_aggregate_msg_t *msg)
 Retrieves aggregate flow stats according to spec The operation MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2. More...
 
of1x_flow_entry_t *(* of1x_matching_algorithm_functions::find_entry_using_group_hook )(struct of1x_flow_table *const table, const unsigned int group_id)
 The find_entry_using_group_hook() must retrieve the first entry in the table that contain actions refering to group_id and return it. More...
 
void(* of1x_matching_algorithm_functions::dump_hook )(struct of1x_flow_table *const table, bool raw_nbo)
 Dump hook. More...
 
char of1x_matching_algorithm_functions::description [OF1X_MATCHING_ALGORITHMS_MAX_DESCRIPTION_LENGTH]
 Description of the matching algorithm. More...
 

Detailed Description

API to extend ROFL-pipeline with new (software/hybrid) OpenFlow v1.x (1.0, 1.2 and 1.3.2) table matching algorithms.

Defines the set of APIs or interfaces to extend core library with new software/hybrid matching algorithms for OpenFlow versions 1.0, 1.2 and 1.3.2 within the table matching process.

Typedef Documentation

Set of functions calls to be implemented in order to extend Matching algorithms for OF versions 1.0, 1.2 and 1.3.2.

Some calls are optional.

Variable Documentation

rofl_of1x_fm_result_t(* of1x_matching_algorithm_functions::add_flow_entry_hook)(struct of1x_flow_table *const table, of1x_flow_entry_t *const entry, bool check_overlap, bool reset_counts)

Adds a flow entry to the table.

The algorithm MUST implement the addition of the flow entry into the table. The addition must behave exactly as defined in the of1x_add_flow_entry_to_table()

The matching algorithm may use internally a different representation of the flow entry, but it MUST always maintain the reference to the of1x_flow_entry instance, and call appropiately of1x_destroy_flow_entry_with_reason() or of1x_update_flow_entry().

The matching algorithm does NOT need to care about statistics or timers.

Remember that the matching algorithm is in charge of mantaining table entry state. The addition MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2

Definition at line 101 of file matching_algorithms.h.

char of1x_matching_algorithm_functions::description[OF1X_MATCHING_ALGORITHMS_MAX_DESCRIPTION_LENGTH]

Description of the matching algorithm.

Use a precise description of the matching algorith, including its strengths and weaknesses.

Definition at line 249 of file matching_algorithms.h.

rofl_result_t(* of1x_matching_algorithm_functions::destroy_hook)(struct of1x_flow_table *const table)

Allows to destroy matching algorithm table state.

The algorithm MUST also destroy all the entries existing in the table, calling the appropiate of1x_destroy_flow_entry_with_reason() function. The matching algorithm does NOT need to care about statistics or timers.

Remember that the matching algorithm is in charge of mantaining table entry state.

Definition at line 79 of file matching_algorithms.h.

void(* of1x_matching_algorithm_functions::dump_hook)(struct of1x_flow_table *const table, bool raw_nbo)

Dump hook.

Optionally implement this hook to dump internal state of the flow table when of1x_dump_switch() is called.

This is optional.

Parameters
raw_nboShow values in the pipeline internal byte order (NBO). Warning: some values are intentionally unaligned.

Definition at line 241 of file matching_algorithms.h.

of1x_flow_entry_t*(* of1x_matching_algorithm_functions::find_entry_using_group_hook)(struct of1x_flow_table *const table, const unsigned int group_id)

The find_entry_using_group_hook() must retrieve the first entry in the table that contain actions refering to group_id and return it.

The matching algorithm may use of1x_apply_actions_has() and of1x_write_actions_has() helper functions to perform the lookup.

This is usually used by the core when group deletion occurs.

Definition at line 227 of file matching_algorithms.h.

rofl_result_t(* of1x_matching_algorithm_functions::get_flow_aggregate_stats_hook)(struct of1x_flow_table *const table, uint64_t cookie, uint64_t cookie_mask, uint32_t out_port, uint32_t out_group, of1x_match_group_t *const matches, of1x_stats_flow_aggregate_msg_t *msg)

Retrieves aggregate flow stats according to spec The operation MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2.

Definition at line 207 of file matching_algorithms.h.

rofl_result_t(* of1x_matching_algorithm_functions::get_flow_stats_hook)(struct of1x_flow_table *const table, uint64_t cookie, uint64_t cookie_mask, uint32_t out_port, uint32_t out_group, of1x_match_group_t *const matches, of1x_stats_flow_msg_t *msg)

Retrieves flow stats according to spec The operation MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2.

Definition at line 191 of file matching_algorithms.h.

rofl_result_t(* of1x_matching_algorithm_functions::init_hook)(struct of1x_flow_table *const table)

Allows to initialize matching algorithm table state.

The algorithm may also initialize table->matching_aux structures with its own data (e.g. smart table structures) for further use during operations.

Remember that the matching algorithm is in charge of mantaining table entry state.

Definition at line 65 of file matching_algorithms.h.

rofl_result_t(* of1x_matching_algorithm_functions::modify_flow_entry_hook)(struct of1x_flow_table *const table, of1x_flow_entry_t *const entry, const enum of1x_flow_removal_strictness strict, bool reset_counts)

Modifies a set of flow entries in the table.

The algorithm MUST implement the modification of the flow entry(ies) into the table. The modification must behave exactly as defined in the of1x_modify_flow_entry_table()

The matching algorithm may use internally a different representation of the flow entry, but it MUST always maintain the reference to the of1x_flow_entry instance(s), and call appropiately of1x_destroy_flow_entry_with_reason() or of1x_update_flow_entry().

The matching algorithm shall use of1x_update_flow_entry() when a modification must take place, regardless of the internal representation it is using.

The matching algorithm does NOT need to care about statistics or timers.

Remember that the matching algorithm is in charge of mantaining table entry state. The modify operation MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2

Definition at line 128 of file matching_algorithms.h.

rofl_result_t(* of1x_matching_algorithm_functions::remove_flow_entry_hook)(struct of1x_flow_table *const table, of1x_flow_entry_t *const entry, of1x_flow_entry_t *const specific_entry, const enum of1x_flow_removal_strictness strict, uint32_t out_port, uint32_t out_group, of1x_flow_remove_reason_t reason, of1x_mutex_acquisition_required_t mutex_acquired)

Removes one or more flow entries in the table.

The algorithm MUST implement the removal of the flow entry into the table. The remvoal must behave exactly as defined in the of1x_remove_flow_entry_table()

The matching algorithm may use internally a different representation of the flow entry, but it MUST always maintain the reference to the of1x_flow_entry instance(s), and call appropiately of1x_destroy_flow_entry_with_reason().

The matching algorithm shall use of1x_destroy_flow_entry_with_reason() when deletion must take place, regardless of the internal representation it is using.

The matching algorithm does NOT need to care about statistics or timers.

Remember that the matching algorithm is in charge of mantaining table entry state. The remove operation MUST comply with the behaviour defined in the OpenFlow specifications for versions 1.0, 1.2 and 1.3.2.

Definition at line 155 of file matching_algorithms.h.