Research Article

SDN Programming for Heterogeneous Switches with Flow Table Pipelining

Table 3

Flow table pipeline and forwarding rules generated by Maple++ for Switch 2. For concreteness, MAC address 00:00:00:00:00:xx is represented as :xx in the table.

ā€‰PriMatchAction

Table-00srcMac = (:03-:04)reg0 = 1; goto Table-1
0srcMac = (:01-:02)reg0 = 2; goto Table-2
0srcMac = (:05ā€“:08)reg0 = 2; goto Table-2
0OtherwisePunt

Table-10dstMac = (:01-:02)reg1 = 1; goto Table-ACTION
0dstMac = :03reg1 = 2; goto Table-ACTION
0dstMac = :04reg1 = 3; goto Table-ACTION
0dstMac = :05reg1 = 4; goto Table-ACTION
0dstMac = :06reg1 = 5; goto Table-ACTION
0dstMac = (:07-:08)reg1 = 6; goto Table-ACTION
0OtherwisePunt

Table-20dstMac = :03reg2 = 1; goto Table-ACTION
0dstMac = :04reg2 = 2; goto Table-ACTION
0OtherwisePunt

Table-ACTION0reg0 == 1 && reg1 == 1To port 3 (secure path)
0reg0 == 1 && reg1 == 2To port 0
0reg0 == 1 && reg1 == 3To port 1
0reg0 == 1 && reg1 == 4To port 2 (shortest path)
0reg0 == 1 && reg1 == 5DROP
0reg0 == 1 && reg1 == 6To port 2 (shortest path)
0reg0 == 2 && reg2 == 1To port 0
0reg0 == 2 && reg2 == 2To port 1
0OtherwisePunt