Professional Documents
Culture Documents
Martin Casado
Nick McKeown
casado@cs.stanford.edu
nickm@stanford.edu
ABSTRACT
"!$#% " #"! &'#(*)+,*&
$#-$.!*/0#"#"12!$+"
430#5 #6!7!$8"0#5+6 9/
;:<#&
=#"*#
>? /-*1"/-=@ A #B:C#%*#"*D*6 9$
$
E#"*CF/? 9G-1 /$-$C3IH"*
KJLMN!7/N#/&
O
34P%"Q$" "R 6!*#S" 9 -$-*$/T/#"%+N #6!
$#"=? ? $U#*<B/? 9G-1A"-=0V R/@+ -*3B #6!
/*-$Q<3%JXWV#6!(Y#" O
Q3($PSQ$Y$ -?F 6!*#SX" 9.
!4!-4 94!B-* O +"*41 #"!. O S!Q
>3."V*#$
KJZ"[\Q/"
+%-*
~9*M -$##"$-=0#&'
$/M+%-$
%/"-? \(o4gS1
kJ
[\Q/6
k1/ O
i 9#5\ O "
0 #$#SSQ# O *#SD
\!=&
$
+0#X/ O +"
QH64!7
#"
0 $3%*YY#"*C(
0 43*R+&
-$
To161"16nS1,m9kJ
W\! O #0 /? 9# #6!69M*#"*
$$
!$$
+ O *#S
#*/&
F+,
0*@
!$!-4 $!f" ?! 5.#"*C4!
Q/"
O -?"#"$oQ*1M$1419n%1M49kJ
^ O +"
QH64!. -$-$$/T
0#S&'
0 $3%*#*<;/? 9G-\
E #"
Q&
3/oQ4h9
General Terms
Keywords
]V*<N^ O
i 9#12A21~:<#%*#"=Y:C#
i? /"-=1E*
\$/#1"[\]a^
1.
BACKGROUND
a<3+"-4
#6!*? !6 9a#%/S!"-=/3@#"*C#;-$
0 /
#-$
6!*+? OO 0#I //# O $#%$JW-4 ##"-4
aH" 5 &
/# O $#%;$; "!$#%R=)+,=0*#"-$.AQjWVZ:'&C
$$
/%-?*
+? OO #"X8%3N O +
0 O $#%0#X c/ O +
.$8&'-$
$#%;R
i+&
-*
0$#%4JN"/* //0# O $#%T<3+"-4
0
Q3F8"
0!F#F"./%-?*
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
SIGCSE05, February 2327, 2005, St. Louis, Missouri, USA.
Copyright 2005 ACM 1-58113-997-7/11/0002 ... 5.00.
WDV#%/S!-*/3R
$$
64$="=V
0 -?;
4 -=&
#"%
"
9 "!$#%T!$*
0+@ #6!!$+"
43:C#S=#"*
#
i? /"-=-$ O +,#$#%~/"-?R ~*M6 9#S=? -*~AQ
-=6
6 ?!S 9B#I.:<#%*#"=4J9 $-= Y".#"*C
$$
#6!(8,$
9 <3+"-4
37? "%T$=0-$
Q3IY"/#"
/+,$-$0
&'++,/./ O
0 #($#SQ# O $#%$J@^S O "
0 #7$#SSQ&
# O $#%
i$#N4P%"Q;"R 6!*#S5
4 9#F #"!7"/##&
? #"!" 9?!@/-*+0#R#%*/
K -$$E #"!@
8? 9$o S1,n4 #6!@ \#"
!*/0#"4!.R+S0!E4
O a -$-$$/Y\:C#S=#"*4JZ =
-$ O +"=;/-$$#-$5+? O O 43N6 4@
i 8";AQ!4!-4 94!
6 9?! A#;A"-=R 6!*#S-4 #.!$$
+;#*<
"#-*#"
Q&
Q<3B A*#"*
$$
DoQ*1M49kJD\4$*41"/-=B$#SS# O $#%
4P%"QB*)S$#"/@$/-$$(/="+ #6!f #"! O #6 5 #6!
E#"/? 8"
V
>0#%/S!"-*/3-$/$A*EA 6!*#S
O $3.#"V" 4a/G;-$$#%V 3 O A!$$
+ O $#%*)+,*//J
S0#X 6!$#%*)+,*$#"-$.8,$
4"/%-?*T
i $3%=TAQ
/? G;-5.PSQ5!QG-*"
Q9o g9kJW;" O -?"#"B
$$
K1
A6tMw9v x4r(s
>v
x$vSw,vwx$vSu4tMs>u uMw9vSv
>w9u4tMy u$q6sq >q6>vx.y"z~{juwvSvcy"sMs
}yu4>q,zx$vSw,vSwx
A,tMw9v!"$# v&%'%~w9q(;x$vw@y6}}vx4x4z)Iy*Tv+%x$vw,vSw@}q,z-,
zMv}u$v{ju*q*.
/
/6
0
Q3Y4P%"Q$ O S!Q
>3#"V"*#$
K1A0-?;4P%"Q$Z a-$ O &
+*A+,= 6!$#%41" #6!@ R""
Q3@"#" ? 8"
a!$$
+ O $#%$#SSQ&
# O $#%4JB:CY
/X4P%"Q$T$ Y-4 .#7"./$-*Q<3(
#*<,JD A#"*/Q$!#
9 "!$#%ZY/#%+@
$#"=? 98"Q/? /3c? $ : e+6 -=*a#c"Y-4 O +"a#*<,J
WE#6!I$$#fQ
aQ +,//8"
5
>B "!$#%;( O +"
O $#%R
*41Z"
0!;8,-$ O 8,*/ O 8"0
0!; \$
0-E+,
03
Y$ E#" O a#" ? #"-$*$J
:C#R"+6 +,*A+*/$#% #;4!"-4 90#6
%
E!*$
+,4!
./+"+,/V+9 *-*a8,$
4UT/%-?*\
0 43*a 9
$
Q3c #6!5"/#
>*L$/-$$$J"[\Q/"
]\*C^S3 O _ [\]^bD V!*&
/#"4!Ya
9S"#"!4!~
, "!$#%MS#"\ O $
Q3 _ #%3S&
A*a#B"V:<#%*#*=bR!$*
0+B/*/+" -$a+? O 6 9
>"#-*# ;#*<N#
i? /-*5-* O +,#$#%$1A"-=I+&
=? R#5"T -=6
2:C#%*#"*E" #6!
0#.
01,4
Q&k O /? 9G-J
d7R" 9R!$$
+,$! .#S O 8,*\
+? OO #"@ //# O $#%
/#"[V]^6 9 R/"Q? 8
0;
>#6!=? !6 9; #"!? !&
9A
0*$
-$/$$JZWV
"-*/ O 9*0
9A+""8
0-*
3Y 4
0 8"
J
"#6! O $#%?
6Y"a!$/#
2[V]^0 8
0QC3BY/"+"+,/
O "
Q+"
V O a-$
0 //$ES#"Y#5! *$#%A+9 $-=E/ O "
Q&
? #"$"/
Q3%J2[V]^YD a+S!-*#; 3 O -$/$#%
Q3Y8,*0#"/4!
#T A# O 8,*
-*/*~
%-4
Q3Y #6!a O $
Q3%JM:'M" 8,$$#"/4!
#("#6!*? !" ; #6!c? !6 9;#"=<S0#B-*/*"* 9
^%? #
?! #"!j
#".\+"S#"R4 -?f5 O +"
O $#%? 9&
#
6*D #"!T/"++,/2A!$*
0+ O $#%2
,
#"-*#"
+,
3f0Y4 -?6 8"
> O "@:<#%*#* #6!F-4 ##%$? 9
AQ( -*"
~" ?!S R!$S-$$V/"-?c a-* OO S!QC35D\"#&
##"7-* OO #f:<#%*#*/*S-$$$JL5[\]a^I/=*B!" O #
-$ #X/"++,/VS"#6!S4!A
"/*\ #6!@+,
$a
> O ./#
O -=#"J
7[V]^/**X -$-$*+X-$#"#"*-*#"5
i O [\]^-$
$#%
A-=B V"/*/+" -$V+? O D6 DA
0
+,*? \ " #
S/"
,+,
$$J
0*#SE"+,#-$#"#$-*#";-$ #4P%$
" E"/**V
>/ ?!5" O /? 9G-T E/$$#X8%3 ;+6 /-$
0
V#X Y$#+,
3%J-$
0*#S O $3."$#B#"/+,$-*416! &
-$ ?!1 O S!Q
>3# *-*#*/? G;-V#%"E#"*C,1S0S#"TQ
a
0
-4 +6 8
0Q$E
Z #X -*"
" V#B#"*C,J
$$
"#"*CY
"#-*#"
Q<3. 9\ !"!*//4!@#[V]^R8%3;+
i -$#"
XH"*
Aj /#$#%/*;
\
$;8,*C$$#I"B/**
#"!I:C#S=#"*4JIH"=
"
$#"
Q3I+6 /;
0!A
#"!fV +6 -=*RAQ";
>$!/-$X !"!*//$ _ $$/
H6
Q*#%b=J * $386 /4!? c
O # O $.Q" ?!j
O +"
O $#%-*
0$#%/&'#"Q0 4!
:^f <3
X/? G-X+" /*# _ J J
^S\]"%S!< ;
Q""N 3%*X*)+,*$#-$;"<3+,
8,$" 9S=b=J
2<$-*;/0#c[\]^c<3+"-4
0
Q3F#S
0.Q#"( 5-$
$#%R
+,*/
> O /+,$-$QH6-
>"#-*#f#I"#*<,JfdN B!$$
Q&
+,4!N/ O +"
.
08? $Y0#FV1Z #6!* 9 X/*@ T
8" /a
>V-$
0*#S$JD$/
08? $E+9S0!a
4U
$$
+ O Q0$
>Z#%*? -*#YAQY/*=/"-?R ~$/*S#" E" 414 !&
#;#S=/
K -*T#
O 9#X 8,E Y+6 /-$
0 E" 414 !#";
+" -?*~
i O #*< #"!T# $-*#a A+6 -?*~86 -?#%E
#*<,JWE
0
S-$ OO #"-4 #"28,*C$$#T"/=*Z #"!Y-$
$#%
9!#"aS0 T Y++*? 9/3B+%-$
*E RAI-$##"$-=0#J
V/#"; Y/ O +
1"/*/&'
$$
REPRESENTATIVE PROJECTS
0!j/? #"/+,/
0 $3%*@ O +"
O *#S? 9#"A0-?j
>B*) O +"
O $3\" 426 #"!
-=$-?/ OO #"9=: +/$6!&'"4 !*4J
^S"!$#%T-4 #I*)S$#"!N"$Q;-*S!Bc/+"+,/R ? #"!" ?!IA
$ *;/"-?f ;/
4&' ? /41!S3#6 O -.A#6!4&k$/ $#"1 #6!
"\l #&C2 9//i!
0Q O J
dN
/"/[\]a^@#-$
0 / % O ;? +"0-$
Q3X! O #&
/? A#*<R-*#"-*$+$Ja"D*#6!1E!*$
+,4!.
0 -=,1S
-=%&'#"/+"Q4!1 \:[\]a^-$
$#%aQ/$#c0# 4 oQ$mkJT
0 -?
a ? +"0-$
K1-$ O +,#"$#%/&'86 /4!B*V8"0
0!*V" V-4 #c8,
"/$!@Y! O #" /? \ 90"*A /+,$-*A"/#R
a:<#%*/&
#"=/? G-JZ:'-$/*#S
Q3@-$#S? #"A YS#"R/8"/*A
Z
-=,
86 /-Y+SS.*V-$ O +,#"*#SV #"!5/"++,/VWVVj6 #6!
#"1
: c"$ !=D-?"*-=S$1: X
/ ?!0#1S:<(5!$-* O *#S2 #6!T86 9&
/-.:/5U" #6!
0#X #"!($#"*? 9#JX
0 -?(-$#"#$-*"
[\]a^/=*
0A #%3Y"*[V]^-$
0*#SZ #6!R-$ #Y4
#"=<@/? 9G-J
0 -?R!$/#4!RS0/"
Q3;
" /? E#"=<R#
i? /-*&
T-$#"-$$+$JT"a*) O +"
1,R/9 6!*#SV#4
Q&' O
"4"\8"( =#5 Y*A$
$AQ5#*<.-$#$ -# ;
"4 +,=/
O #"-$Y-=" #$V
+6 -==a R!+"+,4!5? #"! O
3
#" 4 !@
M
i O V? 0
,
2 TP%"$ ; #"!A" " ++,$#"D
"
* O &'/4P%"$#-$$Z"\+" -?*$Ja-$
$#%-$#S? #" O #S3
"/=/&C-*#H"? 8"
;-* O +,#$#%$1/"-?N B~: ) : PS$"Y-$ O &
+,#$#%AQ5-$#H6? 8
/ * #6!B!++,
-*3@6 9E!/+"
0 $3
Qa%-$-$+6 #"-*3c#c4
2 O J;P%"$R
/56 @? +"#"
$ BA"-=f+"
;"5 8"/
0X #"! 4=? 5PS$"B%-$-$&
+6 #"-*39*\ ;+,*S!c
O JA"\-$ #c8,"/4!/9 "
Ae/
9&' ? 9/T
O 1\Y $&k%
@Ae"4
#5-$#"* 0#c 40!" #"-$J
a$$
+ O *#SV#(
0 -?Xa#0#Jd7Y+
i #X!$$
+
/*.
a
!" 8
*-$#H6? 90#";" -4 #j8,B"/4!F
! O #" /? 9#"!#T
$-=$ #6!.8%3 6!$#%D#B T
0 8@$#&
SQ# O *#S4J
6 9X:@-$
i!fL-* OO *-$0
0
Q3e# *
#"4J
d7 6 !\#S O *",4P%"$
> O "!$#%
i*MPS" /&
=*R(
4 O 7"/@[\]a^7(*)+,* O $#%YA
0!4 E
~$QE9A#J
d7Y" 4
#6!56 9a "!$#%$,*)+,*$#-$$\ R4
Q3c 9
>&
>$-*4!;8%3T"/? #"/+6 9$#"-=3R
," 3 O J2" D$1S a 6!$#%
O " " 9 -$-*$/Za
+,//8"
A+6 26 2/? 9G- O %2?
#I?!*;!*8""X$Q; O +"
O $#%? 90#"$JN9S0!#" &
-* O +6 98"
! O +H6
$A*/3."/=
"
Y\ "!$#%A #"!.
9-$#%#S"#"Ea*)+"
"= O *"S!~
Z+S0!#a!*8""
-$-$$/A;[V]^B 9"#% O J
5.
6. ACKNOWLEDGMENTS
7. REFERENCES
oQ=T"**4
#"=< #6
3$=4J
S/+ 9J **4
kJ -$ O J
o n4T"#"=<./ O "
0 A&D# &<nSJ
S/+ 9J /KJ 4!6#"/#" O 9#"?SJ
o m9$
:\+"#"=A#"*C./ O
0 4J%/+ 4J +"#*4J -$ O J
o -$+! O +@#*<@/#" *4J%/+ 4J -*+! O +J J
o g4Y^J"WVS%? 41S]YJ"WV
Q&'\
16(J"~0*#+1 J,\J"~#"
*3%1
TJ"^JE%$1, #6!^J"~ ##"KJ6#"*CS-$/
:\
i!@+8"
O $1#"*L/
0#"$
J
16+6 $Vmh @m1M4J
o 9:=J 8VJ6*A 8 #"=/4J6WE#**#"*A+,=/
O #"-$
/ O "
0 A
E#6!=? !6 9#"*CS#""J ! #
$%
'&
( )
*
1,+" $$%+g 64gh12$mJ
o 4]YJ%d (J 8D? !BE0-?6 9?!$JS:C
0
/? #";#*<S#"T-$#-$$+
ABA*
0*/\6 #6!"$
0!@!$S-$$$J"!
$%
-,
0#%*#*
\
0 8X #"!B-$
0 /E*)+,* O $#%$J IC ( J: (8K%L G 1
WV"" Vnhhn%J
oQ9n43
8VJ"l#4
#6!5J 84)J"W SQ/6
*
*
1M4 _ mb= n.m Bn%1
WV VnhhhJ
oQ*3J,(J,5 $3% #6!B2Jl4 9#"$J"W /$-$"#$ /-*4!
! #"-$$!B 3 O
0 8,? /3%J
#
$
C%
*
3I
I
16+" $T$+g 6412$SJ
oQ4g93
8VJV-?6 9?!$J+ZWL/? #"/+,/V
0 $3%*E O +"
O *#S? 9#
+9 *-*4JM! #
$
1"
+6
$
74 m X $
1 1 n h hS J
$
oQ$3J"V-? O #1(J6-$a#6
0!1 J6-$a#"
0!16 #"!
~J"V$$
*4J"Z#6 #"-$#"Y"a-$ O +"*A#"*C#
-$/0-*"
O "J ! #
$
L *
* /
9
$
1,+6 $9g1 "4hS1nhhJ
$%
*
1