Reclaiming the Brain: Useful OpenFlow Functions in the Data Plane Liron Schiff (Tel Aviv Uni, Israel) Michael Borokhovich (UT Austin, United States) Stefan Schmid (TU Berlin & T-Labs, Germany) 1
My Talk in One Slide Separation of the planes enables: simplified network management and operation faster innovation ctrl plane N S data plane 2
My Talk in One Slide Separation of the planes enables: simplified network management and operation faster innovation ctrl plane However: N controller may miss certain data plane events indirection => latency S data plane 2
My Talk in One Slide Separation of the planes enables: simplified network management and operation faster innovation ctrl plane However: N controller may miss certain data plane events indirection => latency S What functionality should be kept in data plane? — A big question! data plane 2
My Talk in One Slide Separation of the planes enables: simplified network management and operation faster innovation ctrl plane However: N controller may miss certain data plane events indirection => latency S What functionality should be kept in data plane? — A big question! In this talk: example of functions data plane that can be kept in the data plane. 2
SDN and OpenFlow Controller OpenFlow Actions Match OpenFlow - - - - - - Set VLAN = 11 IP.src=10.0.*.* - - Forward port 3 … … Drop TCP.port = 23 IP.dst=192.*.*.* Send Controller and VLAN=13 … … 3
OpenFlow in a Nutshell Switch pipeline Table 2 Table 1 Table n Packet Packet - - - - - - Out In - - - - - - - - - - - - … … … … … … Basic Actions Set a field Append a label Forward to a port/controller/flood Goto Table x 4
OpenFlow in a Nutshell Switch pipeline Table 2 Table 1 Table n Packet Packet - - - - - - Out In - - - - - - - - - - - - … … … … … … Basic Actions Set a field Append a label Forward to a port/controller/flood Goto Table x Failover Group Action1 Port-1 Advanced/optional Actions Table 1 Link state based Action2 Port-2 Gr1 - Round-robin selection - - … … Gr2 - Action-k Port-k … … 4
OpenFlow in a Nutshell Switch pipeline Table 2 Table 1 Table n Packet Packet - - - - - - Out In - - - - - - - - - - - - … … … … … … Basic Actions Set a field Append a label Forward to a port/controller/flood Goto Table x Failover Group Round Robin Group Action1 Port-1 Advanced/optional Actions Table 1 Link state based Action1 Action2 Port-2 Gr1 - Round-robin selection - - … … Action2 Gr2 - Action-k Port-k … … … Action-k 4
Fast Failover - Adding Brains to the South Proactive reaction to link failures Failover Group Port 1 Fwd ctrl plane N Port 3 Fwd … … Action-k Port-k S 1 3 data plane 5
Fast Failover - Adding Brains to the South Proactive reaction to link failures Failover Group Port 1 Fwd ctrl plane N Port 3 Fwd … … Action-k Port-k S 1 3 data plane 5
Fast Failover - Adding Brains to the South Proactive reaction to link failures Failover Group Port 1 Fwd ctrl plane N Port 3 Fwd … … Action-k Port-k S Non-trivial to use 1 May quickly introduce loops May introduce high load 3 Much better with Tags data plane Tag 5
Fast Failover - Adding Brains to the South Proactive reaction to link failures Failover Group Port 1 Fwd ctrl plane N Port 3 Fwd … … Action-k Port-k S Non-trivial to use 1 May quickly introduce loops May introduce high load 3 Much better with Tags data plane Tag 5
Fast Failover - Adding Brains to the South Proactive reaction to link failures Failover Group Port 1 Fwd ctrl plane N Port 3 Fwd … … Action-k Port-k S Non-trivial to use 1 May quickly introduce loops May introduce high load 3 Much better with Tags data plane Tag 5
Functions in the South Reduce interactions with the control plane Make data plane more robust Monitoring functions: Topology snapshot Blackhole detection N Critical node detection S Communication functions: Anycast 6
How it is possible? SmartSouth template. SmartSouth — in-band graph DFS traversal State of each node stored in the packet: parent current neighbor the node traverses Implemented using a simple match-action paradigm Uses Fast Failover technique. … payload par, cur par, cur par, cur 7
How it is possible? SmartSouth template. Pseudocode —> Match&Action tables Algorithm 1 Algorithm SmartSouth – Template Input: current node: v i , input port: in , packet global params: pkt.start , packet tag array: { pkt.v j } j ∈ [ n ] Output: output port: out 1: if pkt.start = 0 then 2: pkt.start ← 1 3: out ← 1 4: else 5: if pkt.v i .cur = 0 then 6: pkt.v i .par ← in ; out ← 1; First visit () 7: else if in = pkt.v i .cur then 8: out ← pkt.v i .cur + 1; V isit from cur () 9: else 10: out ← in ; V isit not from cur () 11: goto 26 12: if out = ∆ i + 1 then 13: out ← pkt.v i .par 14: goto 22 15: while out failed or out = pkt.v i .par do 16: out ← out + 1 17: if out = ∆ i + 1 then 18: out ← pkt.v i .par 19: goto 22 20: Send next neighbor () 21: goto 23 22: Send parent () … 23: pkt.v i .cur ← out payload par, cur par, cur par, cur 24: if out = 0 then 25: Finish () 26: return out 8
How it is possible? SmartSouth template. Pseudocode —> Match&Action tables Flow Table B Match if pkt.v i .cur = 0 then Instructions in pkt.v i .cur pkt.v i .par ∆ i � 1 ∆ i � 1 Table C ∆ i pkt.v i .par ← in ; out ← 1; Fi ⇤ 0 ⇤ pkt.v i .par in , Table 1 else if in = pkt.v i .cur then 1 1 ⇤ Table 2 2 2 ⇤ Table 3 out ← pkt.v i .cur + 1; V isit 3 3 ⇤ Table 4 else . . . . . . . . . . . . … payload par, cur par, cur par, cur 9
How it is possible? SmartSouth template. Pseudocode —> Match&Action tables Flow Table B Match if pkt.v i .cur = 0 then Instructions in pkt.v i .cur pkt.v i .par ∆ i � 1 ∆ i � 1 Table C ∆ i pkt.v i .par ← in ; out ← 1; Fi ⇤ 0 ⇤ pkt.v i .par in , Table 1 else if in = pkt.v i .cur then 1 1 ⇤ Table 2 2 2 ⇤ Table 3 out ← pkt.v i .cur + 1; V isit 3 3 ⇤ Table 4 else . . . . . . . . . . . . Flow Table 2 Flow Table 1 15: while out failed Match Match Instructions Instructions … sb sb 16: out ← out + 1 0 Gr 1, Table 2 0 Gr 2, Table 3 1 Drop 1 Drop Group Actions h i Gr 0.1 Gr 1 h sb 1 , Fwd Route (1) i h sb 1 , pkt.v i .cur 1 , pkt.start 1 , Fwd 1 i Gr 2 h sb 1 , pkt.v i .cur 2 , pkt.start 1 , Fwd 2 i . . . . . . port 1 … payload par, cur par, cur par, cur port 2 9
Functions in the South: Topology Snapshot Fault tolerant No connectivity assumption Requires a single connection to controller Unlike built-in “Topology service” in OpenFlow N t o h s p a n S s a e m e v i g 10
Functions in the South: Topology Snapshot Fault tolerant No connectivity assumption Requires a single connection to controller Unlike built-in “Topology service” in OpenFlow N t o h s p a n During the DFS traversal, topology S s information is written to the packet a e header m e v i g … snapshot data par, next par, next par, next 10
Functions in the South: Blackhole Detection Detects connectivity loss regardless of the cause physical failure configuration errors unsupervised carrier network errors N ? e l o h k c a S l b a e r e h t s I 11
Functions in the South: Blackhole Detection Detects connectivity loss regardless of the cause physical failure configuration errors unsupervised carrier network errors Two possible implementations: N ? e l o h k c a S l b a e r e h t s I 11
Functions in the South: Blackhole Detection Detects connectivity loss regardless of the cause physical failure configuration errors unsupervised carrier network errors Two possible implementations: N ? e DFS traversal with TTL l o (log n) DFS traversals (binary search) h k c a S l b a DFS failed e r e h t s DFS failed I Blackhole found … TTL par, next par, next par, next 11
Functions in the South: Blackhole Detection Smart “In-band” Counters General counters - access only by controller Our counters: access during packet processing N counter value can be written to packet or ? metadata e l o implemented using Round-Robin action group h k c a S l b Round Robin Group a e Action1 r e Table 2 Table 1 h t Action2 1 - - - s I 2 - - - … … … - - K Action-k . … … 12
Functions in the South: Blackhole Detection Blackhole detection with SmartCounters Install SmartCounter for each port Only two DFS traversals required: First - back&forth on each link N ? 3 e 3 l o h k c a S l b a e 1 0 r e h t s I 13
Functions in the South: Blackhole Detection Blackhole detection with SmartCounters Install SmartCounter for each port Only two DFS traversals required: First - back&forth on each link N ? 3 e 3 l o h k c a S l b a e 1 0 r e h t s I 3 3 3 Second - find port with counter value 1 3 3 3 1 13
Recommend
More recommend