Enabling Layer-2 Pathlet Tracing through Context Encoding in

Download Report

Transcript Enabling Layer-2 Pathlet Tracing through Context Encoding in

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?