Enabling Layer 2 Pathlet Tracing through Context Encoding in SDN Hui Zhang, Cristian Lumezanu,...

Preview:

Citation preview

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?

Recommended