Enabling Layer 2 Pathlet Tracing through Context Encoding in SDN Hui Zhang, Cristian Lumezanu, Junghwan Rhee, Nipun Arora, Qiang Xu, Guofei Jiang NEC Labs America Path Tracing in SDN 1. Correctness: Passively monitor the real packets 2. Scalability: Minimal operational, configuration cost 1. Correctness: Trackdown the real path in the data plane 2 Challenges from Accuracy and Scalability Scalability vs. Flexibility Flow tables @switches Anteater VeriFlow OFRewind Configuratio n @controller Complexity Probe packets Chosen paths Scalability Correctness Correctness vs. Complexity ndb Real packets Anteater Real paths Flexibility 3 Reducing Tracing Space • Monitoring pathlets – # of pathlets is less than # of flows • Tagging packets to differentiate pathlets – Precise calling context encoding (PCCE) is utilized 4 Precise Calling Context Encoding1 1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, 1 A) A 1 B 2. for s in switches: for l = <p, s> in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] C 2 +1 D 2 2 E F 4 +2 G Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise 5 Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 Precise Calling Context Encoding1 0 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) A B 2. for s in switches: for l = <p, s> in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] C +1 D E F +2 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) G Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise 5 Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 Precise Calling Context Encoding1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) A B 2. for s in switches: for l = <p, s> in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] 1 C +1 D E F +2 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) G Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise 5 Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 Precise Calling Context Encoding1 2A 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) B 2. for s in switches: for l = <p, s> in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] C +1 D E F +2 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) G Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise 5 Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 Precise Calling Context Encoding1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) A B 2. for s in switches: for l = <p, s> in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] 3 C +1 D E F +2 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) G Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise 5 Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 Codebook of Path IDs ID site path 0 G ABDEG C 2 G ABDFG +1 1 G ACDEG 3 G ACDFG A B D E F G +2 … … … 6 Codebook of Path IDs A B C D E +1 F G B +2 D E ID dst path 0 G ABDEG 2 G ABDFG 1 G ACDEG 3 G ACDFG 0 B GEDB … G … • `ID` + `dst` can uniquely identify a path – as long as `ID`s can be imprinted into packets, the paths can be determined 6 Tagging Flows with Path IDs • Encoding path IDs – 8bit ToS – 16bit IPID – 20bit flow label in IPv6 • Enabling actions of ID = ID + X A B – Enumerate ingress ports and paths C D E +1 F G +2 7 Enabling actions of ID=ID+X • Enumerate ingress ports and paths – Port with no path, e.g., port ‘a’ – Port with one path, e.g., port ‘b’ – Port with multiple paths, e.g., port ‘c’ path Y no path path X path Z a b switch c flow table switch port IP src IP ToS …… port a port b port c port c * * * * * * u v …… …… …… …… action mod_nw_tos:ID(NULL) mod_nw_tos:ID(X )mod_nw_tos:ID(Y )mod_nw_tos:ID(Z ) 8 Path Tracing System path ABDEG ABDFG PathletTracer ACDEG ACDFG GEDB OpenFlow Controller ID site path ID site path path 0 IDG siteABDEG 0 G ABDEG 0 G ABDEG 2 G ABDFG 2 G ABDFG 2 G ABDFG 1 G ACDEG 1 G ACDEG 1 G ACDEG 3 G ACDFG 3 G ACDFG 3 G ACDFG 0 B GEDB 0 B GEDB 0 B GEDB flow table switc flow table IP IP switc flow h ……table action IP IP switc src tos h …… action port IP IP src tos h …… action port src tos…… mod_nw_tos:1 * 0 port c port …… mod_nw_tos:1 * 0 port c …… mod_nw_tos:1 * 0 port c 9 Conclusions • A scalable data-plane path tracing application for SDN networks – Accuracy: data plane tracing • Tagging flows with path identifiers – Scalability: calling context encoding • Tracing more than 2K paths by re-using K bits in packet headers 10 Thank You! Questions?