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: Trackdown the real path in the data plane 1. Correctness: Passively monitor the real packets 2. Scalability: Minimal operational, configuration cost 2
Challenges from Accuracy and Scalability Correctness vs. Complexity Scalability vs. Flexibility Complexity Correctness Configuratio Flow Flexibility Scalability Probe packets Chosen paths Real packets Real paths VeriFlow ndb OFRewind 3 Anteater
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 Encoding 1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) 2. for s in switches: for l = in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 (2012): A B C D E F G
Precise Calling Context Encoding 1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) 2. for s in switches: for l = in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 (2012): A B C D E F G
Precise Calling Context Encoding 1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) 2. for s in switches: for l = in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 (2012): A B C D E F G
Precise Calling Context Encoding 1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) 2. for s in switches: for l = in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 (2012): A B C D E F G
Precise Calling Context Encoding 1 1. for s in switches: PP[s] = calculatedPossiblePaths(s, A) 2. for s in switches: for l = in getIncomingEdges(s): if l is the first: continue else: PN[l] = PP[s] 3. for p in DepthFirstSearchPaths(G): ID[p] = sum(PN[l] for l in p) Sumner, William N., Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. "Precise Calling Context Encoding." Software Engineering, IEEE Transactions on 38, no. 5 (2012): A B C D E F G
Codebook of Path IDs IDsitepath 0GABDEG 2GABDFG 1GACDEG 3GACDFG … … … A B C D E F G
Codebook of Path IDs IDdstpath 0GABDEG 2GABDFG 1GACDEG 3GACDFG 0BGEDB … … `ID` + `dst` can uniquely identify a path – as long as `ID`s can be imprinted into packets, the paths can be determined A B C D E F G B D E G 6
Tagging Flows with Path IDs Encoding path IDs –8bit ToS –16bit IPID –20bit flow label in IPv6 Enabling actions of ID = ID + X –Enumerate ingress ports and paths A B C D E F G
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’ switch path Y path Z path Xno path a b c flow table IP src …… IP ToS switch port action * port amod_nw_tos:ID(NULL) * …… * port b mod_nw_tos:ID(X ) * …… * port c mod_nw_tos:ID(Y ) u …… * port c mod_nw_tos:ID(Z ) v …… 8
Path Tracing System flow table IP src …… IP tos switc h port action * port cmod_nw_tos:1 0 …… flow table IP src …… IP tos switc h port action * port cmod_nw_tos:1 0 …… flow table IP src …… IP tos switc h port action * port cmod_nw_tos:1 0 …… PathletTracer IDsitepath 0GABDEG 2GABDFG 1GACDEG 3GACDFG 0BGEDB IDsitepath 0GABDEG 2GABDFG 1GACDEG 3GACDFG 0BGEDB IDsitepath 0GABDEG 2GABDFG 1GACDEG 3GACDFG 0BGEDB path ABDEG ABDFG ACDEG ACDFG GEDB OpenFlow Controller 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 2 K paths by re-using K bits in packet headers 10
Thank You! Questions?