piglet: an operating system for network appliances

 !""#
$
%& ' ( ( )
­ !!"
#
$%$ &
* )
(+, ( -% ./ + )
$& %
$
%& 0 1 1
0 2 2
03 & Æ
3&
4 2 1
5&
6 Æ
2 1
3
1 1 1
& 2 1
7 5
& 1
3 0 1 &
5 0
3 Æ
, 3
4 80& 2
3 4 0
0 5
02 3 2 &
4 5
4 2 4 2 2 4 9 &
#&#
#&!
#&;
#&<
. 03 : & & & & & & & &
. 0 :
)
2
& & & & & & &
& & & & & & & & & & &
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
!&# & & & & & & & & & & & & & & & & & & & & & & & & & & & &
!&! ?)
1) )
@ &
!&; %
? & & & & & & & & & & & & & & &
!&;&# ? & & & & & & & & & & & & & & & & &
!&;&! ?
& & & & & & & & & & & & & &
!&< ) & & & & & & & & & & & & & & & & & &
!&= % & & & & & & & & & & & & & & & & & &
!&C ?
% & & & & & & & & & & & & & & & & &
!&C&# +3? ) & & & & & & & &
!&> ) & & & & & & & & & & & & & & & & & & & &
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
;
;
<
=
>
A
B
##
##
#!
#!
#;
#<
#<
;&# & & & & & & & & & & & & & & & & & & & & & & #>
;&#&# %3
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & #B
;&!
;&;
;&<
;&=
;&C
;&#&! '1 & & & & & &
;&#&; 5 ?
/
& & &
& & & & & & & & & & & & & & & &
;&!&# & & & & & & &
;&!&! & & & &
/
& & & & & & & & & &
;&;&# )
%
& & & & & & & & & & &
;&;&! & & & & & &
;&;&; @ )
% & & & & & &
;&;&< & & &
& & & & & & & & & & &
1% )
& & & & & & & &
1 & & & & & & & &
;&C&# * & & & & & & & & & & & & & & & &
;&C&! ) )
& &
;&C&; &
;&C&< & & & & & &
! <&# *
+
59 @2 & & & & &
<&#&# +
5 /
@3 & & & & & & & &
<&#&! @ .
<&#&; @ )
%
<&! 03 2 & & & & & &
<&!&# & & & & & & & &
<&!&! & & & & & & & & & &
<&!&; )
& & & & & & & & &
" #$
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
!#
!!
!<
!<
!=
!C
!>
!>
!B
!B
;"
;!
;C
;>
;A
;B
;B
!
<#
<;
<<
<=
<C
=#
=!
=<
"
=&# & & & & & & & & & & & & & & & & & & & & & & =>
=&#&# %
1 +
& & & & & & & & & & & & & & & & & & =>
=&#&! 1) =&! )
& & & & & & &
=&!&#
&
=&; & & & & & & &
=&;&# & & & & & & &
=&;&! & & & &
=&;&; ) & & & & &
=&;&< & & & & & &
=&;&= ) & & & & & & & & & &
=&;&C & & & &
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
%&$ '
( ) $
C"
C;
C=
C>
C>
CA
CB
>"
>#
>!
!
C&# & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & ><
C&! 6 & & & & & & & & & & & & & & & & & & & & & & & & & >>
* +
>&# & & & & & & & & & & & & & & & & & & & & & & &
>&#&# & & & & & & & & & & & & & & &
>&#&! %
& & & & & & & & & & & &
>&#&; % & & & & & & & & & &
>&! & & &
>&!&# %3
& & & & & & & & & & & & & & & &
>&!&! '1 &
>&!&; 5
2 & & & & & & &
>&; 03 & & &
>&< %12 & & & & & & & & & & & & & &
, .
) *
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
,-
A"
A#
A!
A;
A<
A=
A>
AA
AB
B"
/
A&# & & & & & & & & & & & & & & & & & & & & & B;
A&! ?
2 /
& & & & & & & & & & & & & B;
A&; /
& & & & & & & & & & & & & & & & & & & & & & & & B<
A&< .3 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & B<
A&<&# /
& & & & & & & & & & & & & & & & & & & & & & B<
A&<&! & & & & & & & & & & & & & & & & & B=
&
0
#0
/
!&#
!&!
;&#
=&#
=&!
=&;
=&<
=&=
C&#
C&!
C&;
% & & & & & & & & &
) & & & & & & & & & & &
031 3
& & & & &
%
1 & & & & & & & & & & & & & & & & &
%
& & & & & & & &
D
& & & &
) & & & & & & & & & &
2
E .2
2
3 & &
.2
2
3 & & &
& & & & & & & & & &
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
#=
#=
!A
=B
C>
CB
>"
>#
>>
>>
>A
;&#
;&!
;&;
;&<
;&=
;&C
;&>
<&#
<&!
<&;
<&<
<&=
=&#
=&!
=&;
=&<
=&=
=&C
=&>
C&#
%
& & & & & & & & & & & & & & &
%3
12 & & & & & & & & & & &
'1 & & & & & & & & & & & & & & &
3
12 & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & &
* 2F & & & & & & & & &
& & & & & & & & & &
@2 +
59 3
& & & & & & & & & & & & & & & &
03 & & & & & & & & & & & & & & & & & & & & & &
1 & & & & & & & & & &
& & & & & & & & & & & & & & & & & & &
, 5 )
1 & & & & & & & & & & &
2
1 E & &
+
5 & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & & & & & & & &
2 2
0 & & & & &
%
) &
2 & & & & &
& & & & & & & & & & & & & &
5
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
#A
!"
!#
!!
!>
;<
;C
<!
<>
<A
="
=<
=A
=A
C#
C#
C;
C<
CA
>B
? 24 4 0
& 2, 0 0 0 0 & , 2 4 D
03& 6 0
, /
) G<"H 2 #BBB
0 ;"" 2 !"""4 0
A"I &
) 0 F 034 F & JK 2
03 5 04 2 Æ & 2 /
) 03
0
=L#"I4 0 0 2 E 2 !""C& . 03 0
4 2 2 03 2
20
2 &
0
03 03& 0 2 03 2 0
03&
23 4 03 03 03 7 04
#
4 20
2 & 0 G>#H 0 D
0 03&
4 2
0 M 0
4 M 03 2 F
0
& .
03 0 27 03 2 M1
2 &&4 G=C4 =>H G>!H 2
2 M G;>H G>BH &
. . . .2 #BB" 0 0 03
2 ? .2 .2 & . 2 M12 4 2 2 J
G#H G;H K4 2
2 5 3?
& 4 0 012 0
4
1 2 , ! G!=H ) 03 51
) 2 3 852 0
&
. 4 1 4 0 "# !# &
!
12
( 3+ 3 +
' $
' 3+ $ 4
$ %& ?
4 1
&
2 0 4
0 4 34 0
2 03 5 &
03 2 0 , 0 1
03 4 4 0 7 0 & 0 "
? 2 1
0 &
* 0
2 1 1 0 & @04 1
0 4 '() 9*% )1 2
4 2 9 4 03 &
0 0 , 1
5
4 1 03 4
2 )& 0 2
2 &
1 ;
2 03 3 2 03 1
& % 4 03 4 03? ? 03 03?0
& . 2 F 03 1
&&4 02 54 4 04 4 &4 , 02 02 1
& 02 2 2 02 Æ4
2 4 $ $
4 2 J20K& 4 03 G<CH 1 J)( K
4 #"I4 03&
03 03 2
1
4 2 0 0 2 2 D
1
3& 2 3 3 Æ
2 03
&
4 0 2 2 2 1
0 &&4 4 & )2
0 2
03 03 2
2 5 &
03 0 4 4 03 2 5 0& 0 4
034 3 2
03 ,
<
2 5
&
3
03 &
0 5
1
&
4 2 1 1
2 2
3 &
5
? *
GCBH 02
? &
%
1 2
1
4 1 &
2 2
0 2 5
& ) ; < 0 4 2&
2
3 2
5 4 2 ) =& 0
2 4 *
02 4 +
5 &
2 0
03 0 & 2
03 ) A&
=
2
5
& 5
? 3 2 1
4 0
,
#& ? 0 2
&
!& ' ? 0 &
;& ? 6 JK&
0 5
& 5 4 , 2 5 2 &
C
2
8 0
1 2 4 4 03
34 5
2
& 8
0 0
, 2 0 2 2 5
G="H&
20
1 1
1 2 J >&#&#K& @
0 1 4
)26 3
4 %6 +'#&
2 ?
4 04 0 , & 2 2 2 , 2 2 ?% ? 2 ?
&
2 0 2 2 0 J K 0
54 0 52 &
! "
&&4 4 3 234 03
2
04 2 0
4 0 & 5 4 2 2 4 2 4 2 2 6 0
& 4 3
23 &&4 M 4 03 5 03 2 J 03
K &
. 2 >
& 034 2 2 2 6 1 0 & @04 03 2
&&4 '
$2
6 ) G;AH4 !* G>AH 1 &
# "$% &%
& '
% 0
2 2 1
0 D 2& 5 D 0 2 236 ,-
% . GA=H4 0 2 1 1
0 2 1 2
& 6 2
J
K 4 2 3
&
5 03 2D 80&
2 Æ
? 23 0 23 23& 0 23 2 2 2 7 34 0 23 2
23 N # N ! 0 2 & .
2 1 0 JK 2 0
& 0 2
0 23 0 0 2 & Æ
0
) 0 0 0
A
&&4 1
7 5 ) 0&
03 2D 80 0
03 3 1
0 2D& 0 3 0 3 & 0 3 2 4 4 0 1 4 0 2 2 0&
D
F 3
D
3 0 & 4 5 2 3
0
%
'#4 2 3
4 2 1 0 & 4 3
2 F )
1
%
6 G#"4 >"H 0 2 & 4
* M 0 O6 3
2 &
( "$ # &&4 4 0 & 0 0 4 9 4
2 0 5
4 4 0 &
2 5
4 0 & 4 0 ) 24 0 4 2
O6 2 &
B
@04 0 , 12 2
& 5 0 1
G!;H4 " G#!H4 2 /0 G<<H4
$12 1
2- G<H& % ! / GB#H 0 1
2 22 , 2 2
0
4 3
Æ
2 2 2 6 & GACH 2 ? 2 3 0
3 2& 0 0
4 2 4 2 &
3
2
2 2
0
3
2 3& 2
0 ,
.
0 3 &&4 0 &
.
0 2 3
&&4 03 3&
* 2 4 %
% 0 1
0 5
0
&
@04 1
4 &
. D
20
&
#"
0
5 4
4 0 ) 0 1
5
J K 3
& * 3
0
2 5
4 0 2 4 0 2 2 2
& 1 , 2 &
1 2 &&4 !/4 )
& 4 '() )4 0 5
54 ) 3& 1
01 1 & 3 0
4 0
3
3 4 3
&
0 , 4 3
0
0
4 2 0
2 D 2 7 4 2 0
2
3
0& 4 0
!&> J20K&
* D 2
& % * G=AH 0 5
0 2
4 0 &
##
& ) *& "
0
0 0 6 2& ) 2 ?
4 5 4 0 5
0
3 & 4 4 7 5 &
20
2 1
D4 1
0 2 &&4 4 & 24 4 0
J
1
03 3 2 K &&4 &
2
2 5
J 1
!&C&#K&
+
" ( % 4 1
0 2& 4 2 4 )& 5 &
2 & )
0 #!
3
2 3
0
3 4 +
5 !&" 3
& 03 5
0
3
4 2 5 34 D 2 2 2 34 2 & 4 6 &
2
2 5 2 =&!&
,
" -$ " (
0 *
0,
P 0 !
+' 4 4 5
2 0 J K 0 &
5 4 M 4 2
6 4
5 4 ? 0
0 4 4 2 & J* K M 4
01 J 2
0K& 1
0 O036 0
4 24 3 2 ?2 0 &
0 & 0
2 ?0 5
O036 2 &
#;
3 03 2 #& 5 3 03 4 2
2 3
G><H& M 3
0 2 3 5
2 #""I ) 0 2 &
@
0 4 Æ
4 2 4
2 11 3& 1
&&4 4 2 2&
.
/) "
5 0 +
5 !&" 3
1!""%@E 12 )& +
5 3
0 0 3
5
4
5 0 2 2 2
& 0 2 F
2 5
4 0 0 2 0
0
&
2 !&# 0 12 +
5 3
& 4 4 ) 2 &
. 3
03 2 0
& $
5 0 O6 03 0 2F 2 0 2 0 5
2 & 4 #<
JK
.3 +
9 JK ;!&; !<&A
>&=
<&#
#&;"
#=&A
>&C
#&C#
03 J/ K <<&; !>&=
2 !&#, % ) )
)
)39 9 )
+
5 #&;&;> !""
;
C""
+
5 #&;&;A !#"C<
!>=
!
=="
50 =&<&! !""
<
A""
) 9# ;&" !#"C<
#="
##
#C="
2 !&!, ) 4 21 JO6 K4 2 5 1 9
4 5 04 & 2 !&# 0
4# 4 0 D
20
&&4 4 2
0
-
& % 4 2
3
4 0 20
2
034 0 4 P 4 &
2 0 2
+
5 '()
)4 0 1 & 04 0 D
9 ) 1
: 2 %' 2
3 G<BH 2
4 24 &
2 !&! , = 2
> %'6 4 J 2 %'K &&4 0 &
#=
+
5 2 '() )4 1
4 0'"
-*5 4 2 & +
5 '()4 1
4 2 ) & 4 2
03 1
3 3 ? 4
Æ
&
2 0 1
& 0 O 036 2 4 & 03 &
#C
2 2
0 03 4 0 2 ,
03 &&4 &
2 4 1 0 Æ
2 1 &
@ 5
4 0 03 &
0 1
& * 2
&
0 /) D
0
& ) 0 5 04 0 5 2 & 5 1
#>
privilege boundary
application processes
user
mode
kernel
kernel
mode
devices
application thread
application process
operating system services
virtualisation primitives
physical resources
;&#, %
&&4 /
% / G#=H GCAH4 1
4 1
&&4 *%6
65789 G#CH * +2 +! G<=H4 0 & @04 #BA" 0 4 1 4 ) )12 031
4 & 0 0 0
?
&
4 2
4 0 #A
M & * 2 *3 2
J*K 03
M
2
03
&&4 : 0;4 4 0'4 '&
@
M 2 1
03
4 03
0 ) &
M ;&#4 1
3
& 3
5 3
0 5 14 2
1
& 3
1 &&4 03 34 4 2 0 & 2 2
4 &
;&# 2 25 5
& ) 0
% ) & 2 2 0&
3
D 4 JK M 1
0 & @04 2 3
0 & 4 0
21
2 3
Æ
0 & !&!4
2 5 22 236 #BA# ,-
%
. GA=H4 0
5 0 0
2 0 1
&
#B
privilege boundary
application processes
server
process
user
mode
microkernel
kernel
mode
devices
;&!, %3
12 2 0 3
? # 4 0
;&!& 3
4 1
03
&
2 3
1
/ & * 4 D
4 D D
D
4 ,<3
. 2&
. 3
852 4 3
0 2 )& 3
4 7 G<;H = G!BH4 )4
4 % +'# F G!#H4 )26 3
G<!4 =H4
!"
shared library
privilege boundary
application processes
user
mode
kernel
kernel
mode
devices
;&;, '1 6 /
1 G##H4 ? %
&
!" #
1 0 80 3
,
)4 2 2 5
1 2 & % 4 0
6 &&4 4 4 2 2 & . 2
0
24 %6 G=!H4 2
3
1 &
1 4 0
;&;4 3
01 & 3
4 04 3
!#
privilege boundary
shared library
application processes
user
mode
shared memory objects
kernel
mode
kernel
devices
;&<, 3
12 0 2 &&4 4
01 & 0 2 0
1 4 2 0
& ) 2 & 4 1 Æ F 4 2 1 &
$% &
'1 D 20
1
1 4 4 2 !!
2 03 1 ? & )
2 0 2&
?
4 3
1
? 3
2F4 2 0 &&4 5
5
& 2 J
!&;K 4 2
4
& 2
0 2
2 , 2 2
2
2 &
2
0 5 &&4 4 & 0 , 0 20
2 0 0
&&4 >
1
2 4 6 1
2- G<H7 0
20
&&4 -& 4 03 ? 0
4 2 4
2& @
2
2
&
4 0 , 1& 2
4 3
20
0 2
& 1
2 0 2 2
?
2F&
2F 1
2 4 3
2
& 2F 2 5
3
0 3
!;
2F 4 1
1
& 1
3
5 4 2F ?
3& 1
? 0 5 3
&
#
0
;&<& % 1 4 4 1
2 3
4 1 4 2 12& D
4 04 2 0 01
3 2 , 5
1
2
5 3
1
2F7 2
2 3
&
2 2 3
3
4 2 1
& 2 4 2
1
& 4 03 4 1 4 5 4 5 & 5 J
=&!K 0
3
1
03 0 1
1
2
&
'# '(
6 3 4 2
4 ,
#& # ?3
&
!<
!& # ?3
&
;& % ?01 &
3
2 2
& 3
1
2
4 2 3 & 3
5 & 1 20
1
3
1 4 2 &
" * 2
3 3
0
5&
/% "
? 2 01
4 2
1
) 5 2
0 &
? >
4 G!<4 C"H
/% G;;4 ;!H D &&4 4 24 1 4 03 3 4 2 2
& 2 1
&
/
% ? 212 4 2 +!- GA"H 3
4 4 & 2 4 5 80 * GBH4 2
2 M 2&
!=
0 2 3 4
2 0 1 5
03 2&
&& 1 #
3
& 2 1 4 D
&
3
0 0 2 5 ?
2 5
0 3
3& 3
4 5 3
3
2 & 0 2 J
;&<K4 2 2 0
2
3
&
0 2 2 1 5 2 3
& @04 4 2 J
;&=K4 0
2 & 1 4
0 2 2 0 1 ) 4 2 4 0 2 D
3
&
;&= 0 1 0 3
& 4 04
2 2 &&4 23 4 2 2 0
& 2 2
4 0
03 2 4 2 !C
main
CPM
ISS
HCM
NIFmgr
UserFSet
client
page
monitor
integrated
service
scheduler
host
comm.
module
network
interface
manager
user−space
frameset
controller
;&=, 5
0&
'( / 20
3
&&4 & 1 2F 0 2 3
4 0
& 2 2 0
! & 2
& 2 3
& 5 1 ;&=&
(" "
2 5
1 0 3
& 4 5 0 0
!>
5 @
5 *3
-
-
-
)% -
-
-
' )3 3 2 ;&#, 031 3
2 ;&#& 2 0 0 , 15 4 3 J5K 4 3 J5K # @#& 5 2 4 0
& 3 2 3 5 1 3
7 *3 2 2 3 2 &
5 2 0
2 ;&#& Æ
2F 2 2 3
03 80 7 <&! & , 4 31
3 2 & 2 5
4 31 2 *3& 2 4 2 852 0 *3 03 0 31 &&4 & 4 8 &
0
2 ;&# 15 , )% )% 3 2 3
034 0
' )3 *3 0 2 6
/#
3 GB!H 37 *3 2 31
&&4 3
234 3 23& 2 !A
3 2 Q 4 1
GC;H&
0 3 & .
6 0 3
6 3 ? 23 1
0
O
26 & 0 5 2 2
54 2 2 5
&
2 0
2 2 E
4 2 &
3 4 0 5
0 5 4 0 %( GC<H?0
2
5 0 &
)
##
"
0
;&=4 : /
4 0
2 & 1
) <4 2 2 5 0 & * 2 5 3
1
&&4 0 4 & 3 ? 1
<&#&; &
*
"( '
( 0 0 1
& 0 2 5 4
2 2 & !B
0 4 2 5 03?
1
4 5 4 ) 03 3 4 2
0 & 0 2 ? 031
F 0 & 2
&
2 &
2 3 20
2F Æ
2 4 2 0
2F
0 & 0 2 0 0 0
&&4 4 4 &
5
2
2 12
4 0 2
0 4 1
4 5 0 3 & @04 1
5 3 D
0 2 1
3
4 5 0 1
& 5 ? 3 2 4 3 2
2 0& 1
5 ? 9 3 3 2 2&
"
1
& 0 0, 4 ;"
? #&C# 1
!&>7 4 5 3
& 5 3
6 1
& 2 0 5
4 0 1 4 2 0 2 20
4 &
) 5 1 1
31
2 6 G!"H $
& +
5 !&;&BB 3
& 2 4 1 &&4 1
& 5 C" 0 0 23 0 0 24 34 <" 0 0
2 &
0 0 2 0
2 2& 2 &&4 0 4 0 3
5 2 2
& F 1 3
&&4 5
4 2 & 3
3 2 &
D 20
, 2 0
04 4 5& 3
6 ?0
: %
5
0 0 ;#
J5 0 % GAAHK4 2 2 & @
& 4 2, 5 4 J% K 2 9 JK 2
3
2 3 9 6 2D&
2 2 2 2 2 4 3
D 2& 0 2
2 0 2 3 2 2 O26 0 3
&
3
3
G<!H4 0 2
4 " G#!H4 0 0 1 03&
+
&%( 4 2 4 2 2 0 2F 0 2 20
1
3
& 0 2
2
0 2 2 & 2F 6 &
1 2F 3
2 2F
0 5& 3
2F 2 Æ
0 2
&
;!
2 24 3 3
& 3
2 2 2F 0 0 4 0 4 5 0
2 &
1 2F 2 & 2 ,
%? 5 0 2
2 &
" ? 0
2F 4 2 3 &
#? 2F 4 2
8& +3
2 3 3
&
/
? 2 2F 4 3
2F &
4 5 0 2F 2 2 3
& 5 4 03 3 3
2 4
0 5 2&
0 0 2 2 0 1
23
G=;H & 2D 2 5 E 2
03 4 0 2 2F
& 2 2 0
0 4 2 2? ;;
head
n cache lines
next
status bits D
application
data
tail
next
status bits
application
data
next
status bits
application
data
;&C, * 2F
2
2 &
2 0
;&C& 0 ? 9 4 9 & 0 4 2 0 & 2 E, 20
0
3
F
4 & 0 5 7 0 4 5 207 0 2 1 4 0
&
0,
#& 0 & ' J
2
K 2 0& * &
!&
0 2 4 ;<
5
0 4 '
0 &
;& 2 3
2, & 2 4 2
4 ' 3, 0 24 0 0 &
<& 2
2 2 ?
5 0
3 0
2 &
)
20
0 2 5
&&4 ' '() 1
391
) 4 , 0
0 @ & 5
4 ) 4
0 0 5 5
& 4 0
6 ' & 6
5
@ 6 0 ? 0 4 4 5
6
' & ' 2 5
2
& 0
0 0
0 2 &&4 20
5
6 ' 2
& 2
6 6 ' 2 2
4
2
& @04 0
0 2 &
0 2 0, 1
2 2 4 ;=
inherited
from queue
object
next
status
status word
data word 0
data word 1
reserved
type
refs
data word 2
data word 3
signal
speculate
data word 4
reserved
done
data 5/link
;&>, 2 7 2 2 & 2 1
4 2 3 &
2
3
4
2 0 3 3
4 2
23 03 & 5 2 0
<&! &
,
0 #% "
3 5 & 2 4 2 1
& 3
4 04 D
D
1
& 01 0 7 2
20
0 2&
;C
' +
2 2& 4 0 4 0 & 0 ?
! !?
3
6 2& 0
;&>& 51E &
5 4 ;! 2 '() ) & 0 0 4 2 2 &
5 0 20
3
4
0 0 2
3 & 2 0 0,
! ) 0 0 & 2 0
4 2 &
% 3 2
2 &
0 & # J0 =K &
0
3
1
&
5 2 2
3 6 0& 2 3
2F &&4 03 1
4 4 7 2 ;>
2 0& 3
1 0 2
2 &
. 1 4 2 D
2F 0 & * 1
3
& 4 0
3
5 4 20
3
& 2 D
20
3
1
4 2 &
2 0
& 20
5
3
& @04 0 1
2
5 2
&
1D 3 2 0
&
. 0 0 0
4 3
4 M 4 &
4 2 2
2 & 2 2 23 0 &
;A
, (# " 0 0 2 2
2 5 &
@
0 Æ
, &
0 0 1
2
& 0
4 0 2 3
0
& 0
0 3
0
& 5 0
3
0 2 2
? 2 3
3
0
&
2 3
? 0 2 & 0 , 0
2 4 0
0 4 & 0
0 ?
0 03 JK &
2 <&!4 0 2
03
2 5 &
*
-# 2 2
3 4 5
2
4 0& ;B
4 2 0 &
4 J K,
Æ
2
& * 4 & 4 4 1 2 & 0
2 F
1 & 0 2 3&
2 1 4 0 5 & 1
01 0
3
4 1
& 5 6 /
G=H, 2
1 0 2 &
<"
2 2 & )
O
6 034 1
0 5
4 2
&
3
0 2 4 Æ
3 & )
2 &&4 4 4 4 &4 03& 0 2
03 2 03 2&
2& 345# '&
+
5 0 4 1
2 0 2
& 5 0
0 4 O6 <&<* &
0 2 5 0 +
5 3
4 0
<#
privilege boundary
shared library
application processes
(b)
(a)
shared memory
(c)
objects
Piglet
user
mode
kernel
mode
Linux
devices
<&#, @2 +
59 3
2 3
& 0 0 2
+
5 3
4 5 2 01 3 +
5 31
0 2 &&4 4 )& 3 2 & <&# 0 +
59
2& 0 2 4 4 D
0, 4 +
5 4 +
5&
<!
*
% & )
+
5 2 3
7 2 2
+
5 3
& %
0 ,
? ) 3
4 2 &
/% ? 2 2 2 2 +
54 &
+'
? 5 2 +
5 3
2
4 4 2 0 &
0 0 0, 2 2 )4 2 3 J3
K 2 5 & 0 3
2 2 3
&
2
2 +
5 0 & 3
2 4 !&"&;"4 % 0 4 2 3 3
& 2 O6 3
34 2 2 2 4
3
6 4 4 ) 5
3
&&4 & 5 1
?0
3 2 14 2 3
2 & 3 13 1&
%
0 2 &&4 2 1 <;
4 2 3
3& 3
6 5 2 2&
+
5 3
4 1
4 0 5
?
+
5 23 & 5 4 0
23 4 ) 4
3
&
*
.( )
/ '(
2 2
2 3
5 +
5 +
5 3
6 2 2 & 4 +
5 3
4
12 & % 4
04 6 2 0 +
54 2 2 3
& 2 0 0
0 Æ
JK 5 &
2 0 0 0 +
5 &
5 4 0 03 3 & 3 3 2? 4 23 3 &
5 20
3
03 2
23?
0 3 F 3 4 2 2 6 4 23 4
& @04 5 0 2 +
5 4 0 03 7 2 <<
03 0 3
2 &
"
# &
03 0 2 2 0 +
5 &&4 3
34 4 & .
2 &&4 4 03 3 4 23 1 )4 03 2 5 0 0 5 01
2 &&4 0 3
& 03
3
3 ) 5
3
? ) 3
3 03 &
% 3 13
1
2 0 2
& 3 +
5 3
1
4 0
2 3 1E
23& 2 +
5
&&4 0
4 2 & 2 2 23
0
3
&
*
)
##
"
) ;4 2 0 +
5 3
4 : /
:/& 1
0 , +* 0 +
5 0 +
5 03 2 &
* '() 0 <=
+* 2 & 1
+
5 3
2 1 4 2 ) 24 0 ) 8
+*& * 3
2 14 2 3 0 +
5 3
& 4 5 +
5, 2 3 3
4
5 4 0 3 ) 2 4 R
+*S )4 0 3
0 4 0 2 2 3
3
0 & +
5 2 2 ) 3 2
8 0 3
3? 8 +* 3
0 2 3& F 4 0 @)% 5&
F @)% +
5 0 0 03 & 2 2
0 4 +
54 2 & 4 +
5 3
& 2 2 3 1 03 4 0
03 3 3
0 0 ? @)% 0 3 +
5 &
0 # 03 2 5 0 & <&! 0
4 2 80 & 3
80 03 J)K 0
1
4 3 80 1
&
<C
client
frameset
queues
Tx
Rx
frameset TCP/IP
service
blocks
ARP
(SBlks)
service
Rx
handler
frame mux
frame demux
packet
filter
device driver
<&!, 03 4 &&4 +
5 2 4 03 ? 03 & )
2
3
J 204 <&!&;K4 2
2F 20
& J
0
K4 0 & 4 2 2 1
2D4 03 37 3& 2 <&;&
12 0
<&;& <>
frameset structure
frame header structure
queue pointers
next
user
header 0
sys stat
flags
chain
header 1
page 0
frame
headers
tot. len
len 0
len 1
len 2
data 0
data 1
page 1
header n−1
data 2
header n
user word 0
data
block 0
user
data
words
user word 7
data
blocks
page n+1
data
block n
<&;, 1 ? 4 ? 2
7 &&4 4
2 3
4 2 & 0
4 0 0
& 4 4 4 23 2 &
2 <A
23 1 & D
3
? 2
+
5 & J K4 5 23& 2 5 &
2 & <&; 0 1 , 3
4
2 0 0 5 &&4 4 & 4 3
&
' 2
4 2 2 27 2 2 20& 8 3
4 0 8 2 1 & 3 ? 3
&&4 ) 4 4 &4 & 10 E 3
234 0 0& 2 1
2D 0
9 03 &
& 2 5 2 3
& <&< 0 0
& 2 A 4 4 0
0
& 0
, 5 2 0 0 4 )1
5 5 0 2 2 7 ''A A
# R ' #4 0
<B
prexfer
x=001
enq
x+=1
process
get
x+=1
pending
x=010
skip
cmpxchg(x, pending, skipped)
xfer
x=011
dequeue
skipped
x=101
done
dequeued
x=111
queued
x=100
done
x^=111
dequeue
x^=100
process
x^=001
free
x=000
<&<, S4 5 & 0,
? 3 2
1 2 &
? 0 2
2 &
? 2
&&4 03 &
? 3
2
&
? &
? &
="
% 15 4 0 2 0 0 5 & )
2
2
, 2
2
2
3
2
&&4 2
2 % 03 & 2
2 2 03 4 %
4 0JK4 &
0 2 5, 2 03 ?0 & 4 2 4 2 ?
4 2 & 0
2 2
2 7 2 2 5 0 0 4 &
* # #
2 5 4 0 2
3
'& .
5 0 2
0 2 1 3
2 1 & 4 0
&&4 )% &
0 2D 23 0 & 2 1
&&4 )4 4 31& 3 2 3
4 =#
4 5 ) 2& % 0
3 ) 3 2D&
23 3 3 & 23 0 2 5 ) 0 )& )6 0 )1 34 % 3 &
* # ,
03 3 2 & 6
6 7
% 3 3 3 5
&
%
5
3 54 4 @#%
# * G<AH %
# * G!!H4 0 2
4 2 & 3 31 3 ?
2 4 5 4 2 & 3 3, 3
0
4 0 5 1 4 3 3 & ' 0
4 ,
#& !& J 2K
;& J 2K
<& =!
D
3 2 1 4 ?) ? 5 2 1
& ) 2 4 0
2 4 Æ 1
2 5
4 2 2 3 &
2 013
0
&&4 A" @ 4 3 0 2 & 2 D
4 D
3 0 0 2& 2 3 &
3 5 ? 4 0 3 4
5 & 3 4 5 34 4 3 2 2 1
0 3 &
2 5 1 2 2
& 1 0 2
4 2 24 6 3& 4 0 &&4 +
5 3
4 "
# &
0 3
0
, 6
3 4 Æ
2D4 =;
next
speculate
speculate
next
next
speculate | signal
next
GET_MEM
GET_MEM
GET_FSET
SIGNAL_RX
new_cap
new_cap
new_cap
ref
n=16
n=16
ref
alert_bit=3
ref
flags=0
link
link
link
<&=, , 5 3& 2, 24 2 (D % G=<H4 '() 0 21
2
2D7 03 0
2 5
3 && 6 G>;H&
* # 03 2 0 2
0 & . 03
5 0 2 2
& <&= 0 5 &
0
2 2 5 5 2D & 2 3
B+ + 4 2 2& 0 2 2
2 " 4 2& 4 3 2
=<
3 &
B+ *+ 4 0 2 1
2D 2 4 0 8 &&4 0 2 & 1
0 0
4 2 0 2 2 2 & 3 3 &
4 0 23
3 0
0 3 6 & 2 4 0 2 4 0 2
J
M 2K 2 3 0
& 3 34 4
2 4 2 4 %
0
2
&
)
0 4 0 0
& 0
2
&
==
!
0 , 1
2 4 & % 4 1
0
2 5 2 4 2
&
2 5 2 0
2 4 2 2 3 ,
0 2 3
6
&
% 0 0 3
Æ
&
/
&
+
0 0 &
2 0 , # #& %2
34 %'6 G<BH4
=C
4 0 2
3 1
4 2 O6 &&4 +/ 6 / 0C999 G;#H 2
3& 5 2 2
3 2 7 1
) C&
+
0 )& ) ")
03 1
4 #&!& 0 2 03 4 0 4 14 4 3 1
9 & 2 1
M13 4 01 1 1
4 2 2 & 1
? 0
J !&>K 03 +
5 #;" &&4 ;"I &
0 D
0 20
03 2 +
5 3
3& 1
1
0 2
1 &
3 0 2
2 3 0 3&
0
# ,
"! ? ! ?0 03 0 & 3 M O06 3 0 1 2 3 0 & 0 21
4 0
1 2 & =>
0,
81 #""""" 3
C< 2
4 !"" 99
=&#, )
1 &
60000
50000
linux-64
Frequency
40000
30000
piglet-256
linux-256
20000
piglet-64
piglet-1024
linux-1024
10000
0
0
100
200
300
400
500
600
Round-Trip Time/us
=&!, 2
1 E
0 ,
1 03 0 & 1
3 0 1 2&
)6 0 1 JK 2 1 4 0 % 1
&
0 5
&
2
0 &
=A
% 9
92 +
5 C< #BB
#C#
!#=
!=C !=;
#"!< <CA
<#;
2 =&#, %
1 0 3 0
=&#4 0 0
& D
E 0 4 5 0 0 & 0
=&!4 0 2 0 24 ' &
0 2 E&
& % &&4 1
2 J
K 0
2 =&# 4 0 & 4 0 2
1 &
3 =&! 1 0 +
5 2 5 ;A C<1
2 4 == #"!<12 & E
2 1 3 % 3 J
K 0 +
5 3
2D 0 % 7 2 C<12 0 ;A 2 3
&
D
20
+
5 0 3 7
2 +
5 4 3
& 2 D
1 D
0 03 2
3
& ;A D
=B
5 &
0
#! -"
0 2 3
2 03 2 +
5 3
3&
3 )6 5 03 3& 2 0 0
5
4 2 & 1 0 5 =&; =&< +
5 &
0 3& 0
1 )% 3 E 7
# 0
3 0 2 &
0
54 0 0
0& 25 5 5 4 0 25 3
&
3 25 & 0 2 & +
5 2 2
0 7 +
5 5 &
5
3
&
=&<&
. 2 D
3
2 3 &&4 & . +
5 3 C;""
4 !;"& F D
5
&
C"
0
Kernel
Application
1543
begin_send
2278
Esys_sendto
4000
5466
Eboomerang_tx
6570
Lboomerang_tx
LDK
Lsys_sendto
end_send
7155
7821
8000
Evortex_interrupt
9753
Kernel
0
Application
1655
1828
1888
2462
begin_send
Euser_tx_poll
end_send
Luser_tx_poll
2751
3048
3453
Eboomerang_tx
Lboomerang_tx
begin_select
4000
Lvortex_interrupt
11679
12000
Eboomerang_rx
23603
24000
begin_select
23251
Lboomerang_rx
25319
24000
27379
28000
Evortex_interrupt
28000
29268
29450
Enetif_rx
Lnetif_rx
30178
Lvortex_interrupt
31411
32071
Enet_bh
Eip_rcv
32000
32000
Lip_rcv/Lnet_bh
34228/34313
34616
end_select
35313
got_packet
36000
36000
36942
37848
end_select
Esys_recvfrom
40473
Lsys_recvfrom
41134
got_packet
=&;, +
5
=&<, C#
20
3 2
03 1
J
' K 0 ?#<"" ="""& 5 ;C"" +
5 3
2
#A J0 !""%@E ) 3K 1 &
4 2 D
+
56
3& * +
5 2 1 J* 31
K 5 J% ? 3 7 ? 3 7 " ? 0 37
' ?2 3K 2 3 1
03 & 2
2
2
+
54 4
4 1 &
. D
1 4 5 1
& +
5 ' 2 ) 3 2
7 D 2 3
) 0
3 &
34 23 & 0
3
1 4 2
!&>& 3 2
2 03 ' +
54 ' & 20
2 3
+
5 3
3 0 &
2 2 +
5 & +
5 23 3 27 +
5 2 !"& 1
2 0 5 4 &
C!
horsemen
moocow
100Mb/s
dual 400MHz
Pentium II
logos
100Mb/s
quad 166MHz
Pentium
dual 200MHz
Pentium Pro
=&=, 2 2
0 4 37 +
5
3
4 0 6 & D
J #4 !#" & ;=? D
#>=K 2
&
0 3 & 4 4
#="" 4 ? 5 !=I 5 &
4 14 1 Æ
? 2 &
+
0
0 0
2 03 ? 3 &
1
0 D 4 & 0 D 1
1 0 03 0,
1 #CC%@E J K 3
0 2 1) !""%@E J K 1)
<""%@E J" K4 #""%29 3 J =&=K&
2
3 0 2
0
C;
Mean aggregate throughput (Mb/s)
120
100
Piglet
80
Linux 2.0.36
Linux 2.2.14
60
FreeBSD 4.2
40
20
0
0
1
2
3
4
5
Concurrent connections
=&C, %
) 2 2 ) 2 " & 4 0 &
1
2 0 "4 1
2 &&4 0 ; 0 "4 &
5 1 2 0 5
0
) 3& . 2
2 1
03 4 0 5 7 0
4 0 5 2 5 4 3
2 D&
J ; K =&C& 0 3
, 0 +
5 3
4 !&"&;C !&!&#<4 * <&!& * " 0 +
5 3
!&!&#<& 1
4 0 0 0 2
C<
3 % J@A -@A A +'# K 0 J
K&
0 ( . 0 3 2 +
5 *& . 2 51
2
04 C"4 4 51
#"= 0 0 +
5 !&"&;C !&!&#< A= == & * 2 03
3 0 2 0 ?0
1
0 2 O9 6& @04 0 0 24 24 0 +
5&
2 3 2 2
0 & + &
#& ' CD9D7) 5 & 0 2 5 0
& @04 2 3
3 D
9 2
3 3
&
!& ' CDCD= 0 & 1
+
5 !&! 3
!&" 2 1
3
& @04 0
9 2
3& . 0 O
0 1
6 2 24 5 )9 4 0 2 #""I ) 2 0 04 2
2 3 J ) K&
C=
;& 0 0 4 )9 3
2
1 4 0 2 34 0 +
5& ; 0 5 2 4
2 3
5 0 3
0 D
03 4 2
& 2 +
5 2 3
3 23 2 +
5&
0 5 , 1 34
0 1 4 2?
2 ? +
5 3
34 1
03 2 1 4 2
2 1
4 2& 2 2
3
4 04 &
* 0 D
2
& 0 D +
5 3
3 0 1 3& 2
0 , 2
3 & )
3 ,
2
12 0 ;C"" J#AK D
51
#<"" J L N L K 2 &
5 2
3
1 4 2 1
03 80 3
& @04 5 0 2
? 2 03& %
0
4 04 03 2 3
34 2 &
CC
%
9
!" ##
<C&C
!" $%"
!<&!
!;&;
&'"&( )*"
%" +,
!A&A
;&>
$, ,2 =&!, %
+
#6 # -
2 2 1 0 2 0
O 6 3
& 2
,
@0 3
3 D
! &
. 1 3 2
:
@0 3 :
. 2 :
. ) 2 03:
0 5 =&!& . 2
5 0 2 D 4 &
0
', '
( #
2 4 0 & 0
2 =&!&
C>
35
Polling time/us
30
25
20
15
10
5
0
0
10
20
30
40
50
60
Number of clients
=&>, 2 0, !" ## 23
0 7 !" $%" & &'"&( )*"
2
2 O3 6 4 %" +, 0 &
2 2 4 0 &
$, ,-4 4 2 3 1
4 2
2D 2
2 2
& ;> 1
0 3
&
0
# '
( -"
3
2 2& 0 2 , CA
9
" B<&"I
;&;
#
!&AI
;!&B
"&;I
B;&B
!
;
!&AI
#;=&"
"&#I
#!A&"
<
2 =&;, 3
4 2 7
3
2 4 2 2F D 2 &
=&> 0 3
2 3
1 0
0 & 21 &&4 5
& 5 4 2 ? 5 "C &
0
# #
2 03 & 4 24 3
1 &
0 3
& 3
2 2 0 " <& 0
2 =&; 2 4 0
& 2 & @04 0 B<I E 4 0 2 A!&
CB
9
CA&CI
;&B
1) =&"I
<=&"
#C&<
0
1) #A&"I
*
A&<I
<A&#
2 =&<, D
0*
1 '
( -"
2 2 3
0
1
& 5 2 2 03 0
2 4 0 2 2 & 3 , O0
06 J
K % 4 O 06 %
4 0 2 & 0
0 2
&
2 =&< 0 6 0
,
&&4 4 % 4 2& 4 5 4 2 & 4 0/
3 0 03
24 "/ 4
0 F & 5 ##B&
0 3
7 1D 2
1
&&4 3 2
% & 2 1
0 4 0 & 3 0 2
>"
) 9 9
#
;=I
B&"
C<&;
!
<=I
#"&=
C=&C
=#I
##&"
CA&A
;
!
B#I
#=&"
#"=&"
<=I
B&"
9
2 =&=, ) 4 2 2 2
0
& 0/ "/ 0 ;;A A" &
00
'. .
4 0 2 1
& 0 0 0 3
0 &&4 0 ) O6 034 ? 5
& . 2
0 3 2 2 4 0 &&4 3
4 3
0
&
0 2 4 D
3 E? %1E 34 0 3& 3 4 2 3
7 3
3 E 3 & 0
2 =&=&
0 0 5 0 6 ! 2
3 2 =&!& ) 4 ! ; 4 2 >#
?
& 4
0 2 7 ) 5 &
2
2 2 2
0 +
54 1
!&>& 4 2 4 D ?
3
&
0
'
( 5 0 2
& 2F 0 2 3
0 0
0 0 2 , 21
JK 0
2 & 21
2 0 2F 2 2 4 3
6 & 4 2F 2 3
0 2F&
* 0 0 2 0 & 4 3
2
04 2 2 1
2 3
&&4 1 & 0 %
6 % 3
G<>H7 A&<&#
& 4 0 2
0? 1#CC%@E @013 +& 2 ) 3 0 0 2 2 &
0 0
2 & 1
Æ
0 F
0 1 2F
2 2 0 4 2
>!
0 2 2 0
1
2
& ' 3
2 4 .3& 4 04 2 2 2 2F &&4 & 3
4 2 0 2 2 21
0 0 1 2F&
4 4 2 & 21
; Æ
2 B & 2F 0 21
2 Æ
? 2 0
2 2 4 3
& 1
2 5 2F&
>;
"! #
!
2
3 1
& 2 0
0 &
2
1
& 03 ?
0 03 & 5 02 4 '3 6 *
GCBH & *
0 2 2 0
, & . G#H 1 02
2 5 5 24 0 2 & 4 4 2 5
&
,
# - #
0 0 2 & 5
1 4 ><
6 1 1 03 & . D
Æ 2 F & 0 ? 2 0 2 4 2 2 &
2 0 2 031 & +
5 3
4 3 M12 4 03 &&4 94 & 2 D
0 4 03
2 3
& 5 4 0 4 1 7 0 2 Æ
4 04 3 2 &
@
1 ) 2 G#BH 0
0 F 0 3
& @04 0 03 ,
#& % '? 03 0 2 3
2 1
&
!& % ? 03 3 J
123
M K 9 4 0 &
2 2 ) 3 0
2 0 2 0 3 >=
2& %
231
3 2 5 0 3
2 4 4 4 23 9& 5 &
2 03 2 5& % 1 0 0 2 5 &
?
0 2F &&4 03 4 0
4 0 01
23
& 2F 7 0 2 2313 & 5 &
) 2 03 9 & . 1
0 4 4 5 & 2 6 0 5
2&
1 ) 3 & * 3 2 03 J&&4 @ 2
2D 2
K 1
4 4 2 2 2 2 2F?
03 ?
3
& 2 3
2F4 4 >C
E
="" 2
;=I
=3*
="I
="3*
#<I
=""3*
"&BI
=%*
"&#I
2 C&#, 2
E .2
2
3
./
./
./
./
./
)
) 9 #
>#&;<
<;A&!
#
<=&=
!A#&>
+
5 !
<;&=
!>;&C
!&!&#C ;
<!&A
!CA&<
<
<!&#
!C!&!
2 C&!, .2
2
3
+
5 2
3
2F& @04
2 O6 2 8 2F, 0 +
5 23&
2 0 2F4 0
2 3 2 &
,
/) -7 #
0 2 2 2 &
0 1) 4 4
+
51!&!&#C4 * <&!4 0 2 5 2 2 )?; 4
< +
5 *&
0 D
0 , 4 CDE G==H 02 2
3 4 GA<H 1
&&4 1
4 02 >>
) 9
#
>=&"
B;&>
!
;
BA&A
#
="&A;
+
5 !
=#&#<
!&!&#C ;
="&AC
<
=#&;A
#
=#&;"
* !
=#&!<
<&! ;
;!&"
<
!<&"
2 C&;, .2
0 1E 2
0 0 & 2
0
2 C&# O6 02 Æ& 2 J= K 0 & 5 4 4 Æ 2& 0
2 C&!&
0 2 0 0
2 .2
& 0 +
5 0 12
2 0
2
J=%2K & 0
2 C&;7 2 2
2
3 &
0 F .2
2
3 2 ! ; ) 2 20
.2
)?B=I& * C&#&
4 0
* 0 .2
02
>A
120
Piglet (curl)
Throughput/Mb/s
100
(projected)
Piglet
(WebStone)
(projected)
80
60
Linux 2.2.16
(curl)
40
Linux 2.2.16
(WebStone)
20
FreeBSD 4.2
(curl)
0
0
1
2
3
4
5
C&#, 0 0 4 2 & 2 & @04 0 5 0
7 * 1 % 0 0 0 &
. 0 +
5 2 52 2
2 0 2 0 & 0 # !
)4 2 2
3
) 1 5
2& +
5 4 0
E 2 &
>B
$
%
2
0 & * 2 0 2 2
F & % 4 2
2 F 0 03 &
.
"
. 2
034 2 2
2
& 2 2
3
0
6A"4 5 2
2 & 4 2 F 0 4 5
4 2
&
0 1
0 2 236 GA=H 0 2 1 JMK 1 2 1
J*%K& @ R *% 0 Æ
0 &&& 4 1 A"
D &S
. 23 2 1
2 1 4 1 0 D
0 2 2 2 & @
4 0 1 0 0 &
2
'
236 2 1 2 5 , 1
2D 2D4 Æ
34 1 &
)
5 2 2
2 2
0 0 2 *%& @
4 D
&
1 2
5
,
+ G!H 1 '%
7 @ )
G;"H 1
6FF 2
1
7 4 @
G!AH G!#H 2 1
& @
0 0 Q 4
0 2 0 01 5 2 53
2 Æ
1 &
1 03 0 2
2 ,
)
6 0 GB"H4 6
G#;H 4 0 03 7 33 & GA>H4 0 % G#BH 2 1 03 & A#
852 1 03 9 1
03 2 2 1 03 &
2
# . 1 2
1
4 3
2 & 5 4 & 2 G!#H 0 4 531
4 0 3
01 &
2
4 /3 & G;BH 2
53
& . 4 &&4 0 9 23 034 2 2
2 &
% 3
G=BH 2 0 21
O36 2
2 03 & .
4 2
0
1
4 D 3
0 20
0 0 0 & 0 GA!H # 2
& 0 4 D1
O3
6 & 2 &
& G#AH 2 +
5 3
& 4 2 3
&&4 0
E
34
&
5 1
3
4 2 20& 21
4 F D &&4 +; A!
+< 3
G!B4 <;H4 3
G!CH& 2 20&
2
0 2
& 2 F B"6 0 5
0 03 &
*FT3
(
2 G>H '# G;<H !C1 D
) 3& 4 3 2 D
4
, 2 4 2 )&
& GC=H 5 4 ' 13
2 1 1 3 & 0 0 2 2 5
3
2 & 2 6 2
5 3
4 0 3 D
34 0 0 3 0 3&
2 4 2 1
5 & 0
20
03 804 1 1
4 5
2
& 2 &4 0 180 1
2 3
0 4 0 180 2 2&
03 3 3 03 & ) A;
& G#<H 1
03& /@ ) 0 7 20
) * 20
+
5 2 & F 0
) 3 0 1
) *4 5 ;& @04 2 5 Æ 0
0 2 2 &
.
) %
D
2
2 1
& 3
0 2 0
1 & 1 J)K D
2
1
,
*
/ 12 3
4 0 2 )&
6
% 4 0 2 1
&
+' 3
4 0 1 2 5
1
3
&
4 2 4 ;1
9
&
A<
2 5 3
* +2 +
!
+! G<=H 5 % - GA#4 !>H&
% 0 1
J 3 *%6 '%9;>" G#CHK4 2
1
JMK 1 & 9 0 2
23
2 0 0 2 1
4 & % 9 0
0 Æ
&
* % 9 3
4 2 4 ) & +3 2
3
F 2
D 7 +3 G<=H R % = =" S4
0 @
G!>H 2 R 5 0 5 5 S&
G>>4 >CH 3
& 3
1
1 4 0 2 &
0 1 ) 7 1
12 &&4 <&;* 4 0 0 &
%4 )4 2 & +36 7 G<;H = G!BH
3
2 ) 7 +3 G<;H ) %& 4 G<BH 2 @ G!BH 0 +
5 +
5 +<&
A=
6 3
O6 2 0
20
& 1
4 5
2 0 3 & @04 2 2 4 &
* GACH +!- GA"H 2 2F&
2 2 ?
3 24 0 2 3
)& )
2 0
4 852 & 2
D , 2 0 2 0 2
852 1 0 2 2&
%6 1 3
GC>H J
F K 2 ) 3&
2 2 4 3 & 2 4 F2 0 1 &
. 12 0
3
3
1 & %12 3
)4 1
2 & 4 O6 2D?
3
23 O
6 O6 0
& 4 4 5 12 2 O6 4 &
AC
2 !" -( #
. ) 2 2 0 3
4 0 4 5
&&4 Q 3& @
1 0 & )26 3
G<!H %6 +'# G!#4 ;BH 22
213
0
5 4 2 0 &&4 6 /
# G##H&
1 0 1
0 3
0 " G#!H& 0 20
?
) 20
34 1
2 ) 5 2 & 0 ? 3
0
)4 5 1
&
5 1 & 3
5 1 ? 2 * G=H 4 1
5
& 1 1 ? && 3 234 2 34 0 &&4 90
3 234 0 3
&
%6 53
4 3 1
&&4 5 01 4 1 1
3
& . D 3
5
2 3
& 2 20&
) 3
0 01 0
A>
1 & @04 1
5
4 ) 3
5 2F
J 4 4 3
K 0 2 &
2 3%4 -( #
. 1 1 1
2 5 01 0 0
4 0 5
3
0
0 & 2 .
6 3
GCH 4 4 %6 53
G<>H&
3
5
%1
; GCCH4 1 2F1
& 5
3 5 3
&&4 3 2
03 4
2 & 3
&&4 2 0
3
5 & 4
2 5 01 3
0
5 2 0
1
3
&
53
3
5
& 0
0
2 3
4 53
0 1 2 1
& 5 4 3 5 03 37 4 ; 1 0* 0 3
2 0 &
4 3 53
4 %
6 G<>H 5
1 3
& 0 34 4 AA
4 & D 51
3
5
0 2 3
2 &
2
? 3
2 &
.
2 2 0 2 1
4 2 2
1 &&4 %
6 !
G=#H 03 2 & 2 04 3
4 2
0 03 &
3
& 1 3
1
1
G>=H& 03
2?6 03& 0
0 03 , 0 2 1
3 2 03 &
GC#H 1
80 0
& 0 80 80& 2 3
0
& 2
03 4 %( GC!H )
0 GA;H&
%6/# G<#H4 0 2 +
54 2 & )3 0 4 AB
20
& )3 4 0 0
1E 3& 3 2
2 4 >""%@E 2
<&A #; 0 3&
6 ; 2
0 34 & . 4 3 3 0 2 4 23
3 0 1
& ; 2 5 &
5 031 ?)6 - GAH4 ) &
4 0 3
2 3
3
, 13
3
& D F
2 &
.
(%& 4 0 2 D 3
4 4 & 0 28 2 0 2
2 &
*%6 + % 57G9 G;=H4 1
9;C" 9;>"4 2 0 9 & )
0 ) 3 9& 2 /
/ 44 6 4 0 2 2 9 & 1
2 B"
2
&
% 2
1 & 5 %9
>
G#>H JO$6 F2
4 ) 2 5 4 3 F2
K *3 GABH& $1%
4 % J%K4 0 Æ
& % 1 4 Æ
0 & 12F 4 2 03 &
% F 0 2 0 2 2 , 4 & 0 4 0 5 2 & 4 3
& 2 20
4
3
4 1 0 &
B#
$
5 0 5 2 1 "# ? 0 & 1
2 0 0 1 2 3 & @
03 &
2
4 2 2
,
#& )
D
&
!& 5
0 2 1
&
;& 0 4 1&
<& ? &
=& 01 2
3&
C& 03 ?
*
02 &
B!
0 28 2 5 0
&
8
"
04 0 4 , 2 &&4 9 &
0 8 ?
3
& 2 2 0
2 ?% &
' 2
4 3
1 4 0 2& @04 ?
? 0 & 0
2&
8
#$!& " ) 1
0 0 0 0 1
3
2 & 2 1
2 &
4 1 0 2
5
2
4 1 & 5
14 3
2 &
) ; 2 4 2 3
03 & 2
2 1+
5 2 0
5 6 2 0 5
+
5 3
2 &
B;
8
# ) 1
2
2
2 4 & %2
3
5 ) = 0 1
7 2 0 &
)
3
6 0 2 2F4 1
2F 2 & 2
9 4 04 2 2 2 &
4 5
02 0 2& 0 5 6
2 02 0
0 2
0
&
8
- . 0 0 2 3
5
4 03 2 6 2 03 &
5*
-#( &
2 2 2 3
& 0 2
2 3 2, 2F 4 2F 0 2 &
B<
0 1
1 4 % 3
& 4 4 2
5 1 &
2F 0 2 2 2 3
3
0 2F 2 2 & 5 , 1) 4 2 5
4 2F 2 & 2 2 5
1 2F
3
&&4 03 0 Q &
5*
3
2 0 03 & "
4 0 0 1
2 & 5 4 6 ; C99 03 G;CH ! ) 0 5 3 0
7 ) 2 ) 1 & 2 1 5 J
%K 0 0 2
0? 0 2 &
B=
0 JC<12K J000K 5 J 000K 5 +
5 3
O06 3& =&;&
1 2 344445
12 34535
12 3456
12 3454.6
712 345
1102 3453
102 3453
102 345.
1102 345.6
712 345.65
12 345.55
12 345.
12 34566
01 2 34545
0171 2 3455.
01 2 34.6.
12 346
BC
01 2 346.
01 1 2 3466
102 344
102 3443
01 2 3456
12 3436
12 3456
12 344
12 346
12 343
12 3435
12 34.434
12 346
12 34634
712 346.
712 3444
12 3444
12 34535
1 2 3433
B>
G#H
0 &
G!H & .&
@ & 777/
/ /&
/& +& ' & D = &D /D -
%4 B=L#"B4 2 #BB#&
G;H ' & .2 5 )&
777/8/&
G<H (& *34 .& )& @4 $& + & /D, 4 4 $& D = %D -
%
4 2 !"""&
G=H & & *& -
%& 4 )24 $ #BBC&
GCH *& * & 5
24 &
D E / %D -
% 4 !C>L!A<4
2 #BB=&
G>H % *FT3
(
2& +3
D 1
& D / B/- / A A A / /
4 ><LA;4
2 #BB;&
GAH 'F * & / - "
& ) 4 !"""&
GBH ) )
)
& ) 1!""#1"!4 % '
2 *4
$
!""#& 777//&'/&
BA
G#"H & )
(& & (2
& 9 51
& D 7 %D -
% 4
#L#<4 2 #BBB&
G##H & & )
/& $& & &
D %D -
% 4 #>BL#B;4 2 #BB<&
G#!H & )3& & D 9 / %D -
% 4 #>#L#A"4 #BA=&
G#;H ) ) ) &4 ) 4 % ) & 6
3
6 D94 #BB>& 777//&
G#<H )& ) & &
D / B/- / A A A
/ /
4 #;=L#<<4 2 #BB"&
G#=H $& )2U & 5 1
& * /
> / /4 !#4 ;;=L;<<4
% #BC!&
G#CH & $& )& '%9;>" 1
& @ >
!
4 !=J=K,<A;L<B"4 2 #BA#&
G#>H .& $& & 1
, 0 Æ
& +++ 4 !;L;B4 #BB!&
G#AH )& & E
3 %% 3& D 7
%D -
% 4 !!BL!;C4 2
#BBB&
G#BH 0 %& 5 1 ) 1 & D / B/- / A A
A / /
4 #BCL!"=4 1
2 #BB=&
BB
G!"H & & )3
1 4 10
5
& D = %D -
% 4 2 !"""&
G!#H & & & 53
, 1
& D E / %D -
%
4 !=#L!CC4 2 #BB=&
G!!H 0
& %& /3& , 4 852 1
5
& D / B/- / A A A / /
4 =;L=B4 #BBC&
G!;H & (
2& + & .3
>B4 % +24 2 #B><&
G!<H (
( %& 2 2 1
& D C999 / B 4# % /
4
2 !"""&
G!=H +
(0
& ) 0
4 2 !"""& % ##9C9""1"!&
G!CH (& @
& /& , 3
2F& D 0+; /4 #<>L#C"4 $
#BB;&
G!>H & @
& 5 0 9# 2 & D C +++ / % & / /- /- (94 =A=L=AB4
#BA"&
G!AH & %& @
& 1 & D 7 %D
-
% 4 >;LAC4 2 #BBB&
G!BH @& @ & 13
2 & D ) /
%D -
% 4 CCL>>4 2 #BB>&
#""
G;"H /& @ & & )
&
1
5
1 & D E &D /D -
%4 #A>L#BB4 2 #BB!&
G;#H $
+& @
& ) )!""", %
) 0 1
& +++ /4 ;;J>K,!AL;=4 $ !"""&
G;!H +3 @
& 1 E
2 03 & D & 4# / "#4 #B<! / & 1'4 2 !"""&
G;;H +3 @
$& )
1 &
>
:- % /
4 #!J<K4 2 #BBB&
G;<H & )& @
+& +& & ' 13
, 03 & +++ "
+4 #>J#K,C<L>C4 $
#BB#&
G;=H *% ) & + % 57G9? -
&
*% ) 4 #BB>& 2 !!1>!"#1"<&
G;CH ) & M#!"" 03 , 03 04 !"""& 7//7 65/ &
G;>H 0 )
&
777// 9:*;&
* J*3 K&
G;AH '& $2
& ) )9 01 34 2 #BB"&
)1##<<&
G;BH %& & /3 &
852 53
& D ) / %D -
% 4 =!LC=4 2
#BB>&
#"#
G<"H 2 & /
'
(& )& . J
0 3 03K4
2 #BBB& 777/7/ 7:/ &
G<#H / & )3 & / /
%4 #AJ;K,!C;L!B>4 !"""&
G<!H + & 2 & +++5/ >
/
4 #<J>K,#!A"L#!B>4 2 #BBC&
G<;H $& +3& ) 2 3
& D = / %D -
% 4 #>=L#AA4 2 #BB;&
G<<H *2 +3 & /0 ! & 1'4 0 -34 -4 #BA#&
G<=H @& +3 & +& *& % & @ % >
4 =>JCK,!"<BL!"AC4 $9 #B>A&
G<CH %
% & E& .2 & 0+; %
%4 2 #BB>&
G<>H @
%
& +Æ *
-
% & 4 )2 4 #BB!&
G<AH %)
'
$2
& * 3 , 0 1 3 & D 4 0+; /4 !=BL!CB4
$
#BB;&
G<BH + %' ) & 2
, 2 & D 0+; /4 !>BL!B<4 $
#BBC&
G="H ( @& %& & 4 ) 4 % #BC!&
G=#H %
& , 03 03 & D & 4# / "#4 $
#BBB&
#"!
G=!H )& .& %4 & 4 @& 3& , 2
& D = 4# 4#
-
% 44-64 #!BL#;<4 2 #BB;&
G=;H %& %& % %& +& & 4 4 123
23
& D E % /4 !C>L!>=4 % #BBC&
G=<H (D %& 0 & %6 4 4 2 !"""&
G==H %
4 &
.2
,
777//7&
2
3 02 4 !"""&
G=CH & %3 & ?
4 2 #BA;& ) AA!&
G=>H & %3 & ? 4 2 #BA;&
) AA;&
G=AH $& )& % & *& D 5 0 & D = &D /D -
%4 >=LA<4 #BB#&
G=BH $& )& % /& /& 3
& 3 1
3
& / / %4 #=J;K,!#>L!=!4 #BB>&
GC"H ( % & 2 & / 4 !#J;K,=!AL=CB4 % #BBB&
GC#H & %2& ? %& 4 1
E
4 #BB>&
GC!H & %2 +& +& & %3
5 & D
C %D -
% 4 #=;L#CA4
#BBC&
#";
GC;H % $
& %?
& D +++ / - "#
4 $
#BBA&
GC<H % $
& & D ( & 4# "# -
% 64 $ #BBA&
GC=H %& & E 03 & D
%D -
% 4 #!=L#;>4
2 #BB<&
GCCH ( & % " 7& 1@4
#BB#&
GC>H & 2 1 &
4 ) 4 %4
% #BB!&
GCAH & & 3& %& % 4 )24 % 4 #B>!&
GCBH '& & 4 & 4 .& V0
& , Æ
2 02
& D 0+; /4 $
#BBB&
G>"H & @ & & D E /
%D -
% 4 >BLB=4 2 #BB=&
G>#H $
& 4 2 #BA#& ) >B#&
G>!H $
*& & % 4 #BA!& ) A!#&
G>;H / &
,
777//// /
12 2 &
4 !"""&
G><H /& /& 3
& 03 &
+++5/ >
/
:
/5"# 4 ##J!K4 2 #BB;&
#"<
G>=H /& /& 3
& 1
1
& /56
>
%4 ;4 % #BB=&
G>CH & & %, & D C 4#
4#
-
% 44-4 #"BL##;4 2 #BAB&
G>>H & & %, 0 3
& D 7= +++ /
% & / /- /- (G4 #>CL#>A4 2 #BAB&
G>AH @
& 4 $
!""#&
777//&
G>BH )
& & 777//&
GA"H $& & & , 2 & D 8 / %D
-
% 4 #>"L#A=4 2 #BBB&
GA#H .& 3 $& 2& 9# 2 , 1
& D C +++ / % & /
/- /- (94 =>BL=A<4 #BA"&
GA!H $
%& )& *
& 0& (
(29
03
& +++ "#4 >J<K,<<L=!4 $ #BB;&
GA;H 3 & E
) 0 & +++5/ "#4 AJ;K,#<CL#=>4 $
!"""&
GA<H 2 &
/00/&
+, 3 +4 % !""#&
GA=H %& 23& 2 & /
/4 !<J>K,<#!L<#>4 $ #BA#&
GACH 0 & 2 & 5 0 2 2 & /
/4 ;;J#!K,<CLC;4 2 #BB"&
GA>H )& & 33 & 03 & D /
B/- / A A A / /
4 C<L>;4 2 #BB;&
#"=
GAAH )& *
& 0 $
%& & @090 1 % & +++5/ >
/
: /5"# 4 ##J!K,!<"L
!=;4 2 #BB;&
GABH & 3
& , & D G & % / 4 !=CL!CC4 % #BB!&
GB"H & 3
& 1, 1 03 2
& D E / %D -
% 4 <"L=;4 2 #BB=&
GB#H ) -
4 *3034 & ), +01
C<12 & D 0+; /4 #>=L#AC4 $
#BB;&
GB!H +& V
& ' )3, 0 Æ 3 0
1
03& D / B/- / A A A / /
4 #BL!B4 2
#BB"&
#"C