Research Article
SDN Programming for Heterogeneous Switches with Flow Table Pipelining
Algorithm 1
Algorithm to recursively compress forwarding tree.
| Parameters: ft: Forwarding Tree | (1) | Procedure CompressFT(ft) | (2) | for node in ft: | (3) | node.compressed = false; /∗ Initialization. ∗/ | (4) | Compress(ft.root); | (5) | return; | (6) | def Compress(node): /∗ A depth-first tree traversal. ∗/ | (7) | if == Leaf: /∗ Check if node is a leaf. ∗/ | (8) | node.compressed = true; | (9) | return | (10) | else: | (11) | for child_t1 in node.children: /∗ Find a child. ∗/ | (12) | if child_t1.compressed == false: | (13) | Compress(child_t1); /∗ Recursively compress the child. ∗/ | (14) | return; | (15) | for child_t2 in (node.children-child_t1): /∗ Find a child that is the same as child_t1. ∗/ | (16) | if child_t2.compressed and child_t1 == child_t2: | (17) | child_t2 points to the same node of child_t1; /∗ Remove redundancies. ∗/ | (18) | node.children.delete(child_t2); | (19) | node.compressed = true; | (20) | return |
|