Enabling Layer 2 Pathlet Tracing through Context Encoding in SDN Hui Zhang, Cristian Lumezanu,...
-
Upload
leslie-glenn -
Category
Documents
-
view
216 -
download
0
Transcript of Enabling Layer 2 Pathlet Tracing through Context Encoding in SDN Hui Zhang, Cristian Lumezanu,...
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
2
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
3
Challenges from Accuracy and Scalability
Correctness vs. Complexity Scalability vs. Flexibility
Complexity
Corr
ect
ness
Configuration
@controller
Flow tables@switches
Flexibility
Sca
lab
ility
Probe packetsChosen paths
Real packetsReal paths
VeriFlow
ndb
OFRewind
Anteater
Anteater
4
Reducing Tracing Space
• Monitoring pathlets–# of pathlets is less than # of flows
• Tagging packets to differentiate pathlets– Precise calling context encoding (PCCE) is
utilized
5
Precise Calling Context Encoding1
1. for s in switches:PP[s] =
calculatedPossiblePaths(s, A)
2. for s in switches:for l = <p, s> 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): 1160-1177.
A
BC
D
E F
G
1 1
2
22
4
1
+1
+2
Precise Calling Context Encoding1
1. for s in switches:PP[s] =
calculatedPossiblePaths(s, A)
2. for s in switches:for l = <p, s> 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): 1160-1177.
A
BC
D
E F
G
0
5
+1
+2
Precise Calling Context Encoding1
1. for s in switches:PP[s] =
calculatedPossiblePaths(s, A)
2. for s in switches:for l = <p, s> 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): 1160-1177.
A
BC
D
E F
G
1
5
+1
+2
Precise Calling Context Encoding1
1. for s in switches:PP[s] =
calculatedPossiblePaths(s, A)
2. for s in switches:for l = <p, s> 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): 1160-1177.
A
BC
D
E F
G
2
5
+1
+2
Precise Calling Context Encoding1
1. for s in switches:PP[s] =
calculatedPossiblePaths(s, A)
2. for s in switches:for l = <p, s> 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): 1160-1177.
A
BC
D
E F
G
3
5
+1
+2
Codebook of Path IDs
ID site path
0 G ABDEG
2 G ABDFG
1 G ACDEG
3 G ACDFG
…
…
…
A
B C
D
E F
G
+1
+2
6
Codebook of Path IDs
ID dst path
0 G ABDEG
2 G ABDFG
1 G ACDEG
3 G ACDFG
0 B GEDB
…
…
• `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
+1
+2
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
+1
+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’
switch
path Ypath Zpath Xno path
a b c
flow table
IPsrc
…… IPToS
switchport
action
*port amod_nw_tos:ID(NULL)
* ……
*port bmod_nw_tos:ID(X)
* ……
*port cmod_nw_tos:ID(Y)
u ……
*port cmod_nw_tos:ID(Z)
v ……
8
Path Tracing System
flow tableIPsrc
…… IPtos
switchport
action
*port c mod_nw_tos:10 ……
flow tableIPsrc
…… IPtos
switchport
action
*port c mod_nw_tos:10 ……
flow tableIPsrc
…… IPtos
switchport
action
*port c mod_nw_tos:10 ……
PathletTracer
ID site
path
0 G ABDEG
2 G ABDFG
1 G ACDEG
3 G ACDFG
0 B GEDB
ID site
path
0 G ABDEG
2 G ABDFG
1 G ACDEG
3 G ACDFG
0 B GEDB
ID site
path
0 G ABDEG
2 G ABDFG
1 G ACDEG
3 G ACDFG
0 B GEDB
path
ABDEG
ABDFG
ACDEG
ACDFG
GEDBOpenFlo
wControlle
r
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?