Top Banner

of 56

Advanced Networking Overview

Apr 05, 2018

Download

Documents

Calin Mos
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 8/2/2019 Advanced Networking Overview

    1/56

    L i n u x - A d v a n c e d N e t w o r k i n g O v e r v i e w

    V e r s i o n 1

    S a r a v a n a n R a d h a k r i s h n a n

    I n f o r m a t i o n a n d T e l e c o m m u n i c a t i o n s T e c h n o l o g y C e n t e r

    D e p a r t m e n t o f E l e c t r i c a l E n g i n e e r i n g & C o m p u t e r S c i e n c e

    T h e U n i v e r s i t y o f K a n s a s

    L a w r e n c e , K S 6 6 0 4 5 - 2 2 2 8

    A u g u s t 2 2 , 1 9 9 9

    1 D i s c l a i m e r

    A l l t h e t e x t i n t h i s d o c u m e n t i s p u r e l y b a s e d o n m y u n d e r s t a n d i n g o f i m -

    p l e m e n t a t i o n o f v a r i o u s f e a t u r e s . I h a v e r e a d s o m e d o c u m e n t s a n d I h a v e

    s e e n t h e c o d e m y s e l f , a n d I d e s c r i b e t h e m b a s e d o n m y u n d e r s t a n d i n g . I f t h e

    r e a d e r s n o t i c e a n y d e s c r i p t i o n o f a c o n c e p t w h i c h a p p e a r s c o n t r a r y t o t h e i r

    u n d e r s t a n d i n g o f t h e c o n c e p t , t h e i s s u e c a n b e t a k e n u p f o r d i s c u s s i o n a n d

    c o r r e c t i o n s w i l l b e m a d e t o t h e d o c u m e n t a s n e c e s s a r y . I w o u l d a p p r e c i a t e

    a l l s u g g e s t i o n s a n d c o m m e n t s m a d e i n a n a t t e m p t t o m a k e t h e q u a l i t y o f t h i s

    d o c u m e n t b e t t e r .

    1

  • 8/2/2019 Advanced Networking Overview

    2/56

    2 I n t r o d u c t i o n

    L i n u x , a s h a r e w a r e o p e r a t i n g s y s t e m , s u p p o r t s a n u m b e r o f a d v a n c e d n e t -

    w o r k i n g f e a t u r e s , t h a n k s l a r g e l y t o t h e h u g e l i n u x n e t w o r k i n g c o m m u n i t y .

    B e s i d e s t h e r e l i a b l e T C P U D P I P p r o t o c o l s u i t e , a n u m b e r o f n e w f e a t u r e s

    l i k e r e w a l l s , Q o S , t u n n e l i n g e t c . h a s b e e n a d d e d t o t h e n e t w o r k i n g k e r n e l .

    T h i s d o c u m e n t r e v i e w s t h e s e a d v a n c e d n e t w o r k i n g f e a t u r e s t h a t h a v e b e e n

    i m p l e m e n t e d i n t h e l i n u x k e r n e l , f r o m a c o n g u r a t i o n , i m p l e m e n t a t i o n a n d

    u s a g e s t a n d p o i n t . E x a m p l e s o f u s a g e a n d p o i n t e r s t o r e f e r e n c e s h a v e b e e n

    g i v e n w h e n a p p r o p r i a t e .

    T h e a d v a n c e d n e t w o r k i n g f e a t u r e s t h a t h a v e b e e n d e a l t w i t h i n t h i s d o c -

    u m e n t i n c l u d e t h e Q u a l i t y o f S e r v i c e s u p p o r t i n l i n u x , w h i c h e n c o m p a s s e s

    a d e s c r i p t i o n o f t h e d i e r e n t i a t e d s e r v i c e s e o r t , t h e r e w a l l i m p l e m e n t a -

    t i o n u s i n g i p c h a i n s , t h e V P N i m p l e m e n t a t i o n u s i n g G R E t u n n e l s a n d t h e

    a d v a n c e d r o u t i n g i m p l e m e n t a t i o n u s i n g n e t l i n k s o c k e t s .

    T h e l a t e r p a r t o f t h i s d o c u m e n t d i s c u s s e s b r i e y s o m e o f t h e c o m m o n t o o l s

    t h a t a r e a v a i l a b l e o n l i n u x . T h i s s e c t i o n w i l l d i s c u s s " z e b r a " , a d i s t r i b u t e d

    r o u t i n g s o f t w a r e t h a t i s u s e d t o c o n g u r e a l i n u x b o x a s a r o u t e r , a n d a

    c o n g u r a t i o n t o o l t o s e t u p r e w a l l s .

    3 Q o S S u p p o r t i n L i n u x

    3 . 1 I n t r o d u c t i o n

    T h i s s e c t i o n d i s c u s s e s t h e Q o S s u p p o r t t h a t i s a v a i l a b l e i n t h e r e c e n t l i n u x

    k e r n e l s . T h e Q o S s u p p o r t i n t h e k e r n e l p r o v i d e s t h e f r a m e w o r k f o r t h e i m -

    p l e m e n t a t i o n o f v a r i o u s I P Q o S t e c h n o l o g i e s l i k e i n t e g r a t e d s e r v i c e s 1 a n d

    d i e r e n t i a t e d s e r v i c e s 2 . L e t u s b e g i n b y d i s c u s s i n g t h e d e t a i l s o f t h e c o n -

    g u r a t i o n , i m p l e m e n t a t i o n a n d u s a g e o f t h e Q o S s u p p o r t i n l i n u x .

    3 . 2 C o n g u r a t i o n

    T h e s u p p o r t f o r q u a l i t y o f s e r v i c e i s a v a i l a b l e f r o m l i n u x k e r n e l v e r s i o n s

    2 . 1 . 9 0 . H o w e v e r , t h e s u p p o r t i s m o r e c o m p r e h e n s i v e i n t h e m o r e r e c e n t k e r -

    n e l s . T h i s d o c u m e n t i s w r i t t e n w i t h r e f e r e n c e t o t h e k e r n e l v e r s i o n 2 . 2 . 1 . T h i s

    k e r n e l a l s o h a s s u p p o r t f o r d i e r e n t i a t e d s e r v i c e s i n t h e f o r m o f a p a t c h , t h a t

    c a n b e d o w n l o a d e d f r o m f t p : l r c f t p . e p . c h p u b l i n u x d i s e r v p a t c h e s d s -

    3 . p a t c h . g z . T h i s p a t c h n e e d s t o b e a p p l i e d i n o r d e r t o e x e r c i s e a l l t h e Q o S

    2

  • 8/2/2019 Advanced Networking Overview

    3/56

    f e a t u r e s s u p p o r t e d i n l i n u x . T h e l a t e s t l i n u x k e r n e l s c a n b e d o w n l o a d e d f r o m

    h t t p : w w w . k e r n e l n o t e s . o r g .

    1 . A p p l y t h e d i - s e r v p a t c h t o t h e l i n u x - 2 . 2 . 1 s o u r c e t r e e .

    2 . D o a ' m a k e x c o n g ' o r ' m a k e m e n u c o n g ' o r ' m a k e m a k e c o n g ' i n t h e

    u s r s r c l i n u x d i r e c t o r y .

    3 . S e t t h e E X P E R I M E N T A L O P T I O N S t o ' y ' .

    4 . U n d e r n e t w o r k i n g o p t i o n s , s a y ' y ' t o t h e f o l l o w i n g k e r n e l o p t i o n s : K e r -

    n e l U s e r n e t l i n k s o c k e t , R o u t i n g m e s s a g e s , T C P I P n e t w o r k i n g a n d

    Q o S a n d o r f a i r q u e u e i n g . A f t e r t u r n i n g o n t h e Q o S a n d o r f a i r q u e u -

    i n g o p t i o n , e n a b l e t h e C B Q , C S Z , P R I O , R E D , S F Q , T E Q L , T B F ,

    G R E D , D S M A R K , ' t c i n d e x ' c l a s s i e r , P a c k e r C l a s s i e r A P I , U 3 2 c l a s -

    s i e r s a n d r o u t i n g t a b l e b a s e d c l a s s i e r .

    5 . D o a ' m a k e d e p ; m a k e c l e a n ; m a k e b z i l o '

    6 . R e b o o t t h e l i n u x b o x u s i n g t h e n e w k e r n e l i m a g e .

    H a v i n g d i s c u s s e d t h e c o n g u r a t i o n o f t h e Q o S s u p p o r t i n l i n u x , l e t u s

    n o w d i s c u s s t h e d e t a i l s i n v o l v e d i n t h e i m p l e m e n t a t i o n o f t h e s e f e a t u r e s . T h e

    l o c a t i o n o f a l l t h e k e r n e l r e l a t e d l e s r e f e r r e d t o i n t h e r e s t o f t h i s d o c u m e n t

    a r e s p e c i e d w i t h r e s p e c t t o t h e u s r s r c l i n u x d i r e c t o r y .

    3 . 3 I m p l e m e n t a t i o n

    3 . 3 . 1 B a s i c P r i n c i p l e

    T h e b a s i c p r i n c i p l e i n v o l v e d i n t h e i m p l e m e n t a t i o n o f Q o S i n l i n u x i s s h o w n

    i n F i g u r e 1 . T h i s g u r e s h o w s h o w t h e k e r n e l p r o c e s s e s i n c o m i n g p a c k e t s , a n d

    h o w i t g e n e r a t e s p a c k e t s t o b e s e n t t o t h e n e t w o r k . T h e i n p u t d e - m u l t i p l e x e r

    e x a m i n e s t h e i n c o m i n g p a c k e t s t o d e t e r m i n e i f t h e p a c k e t s a r e d e s t i n e d f o r

    t h e l o c a l n o d e . I f s o , t h e y a r e s e n t t o t h e h i g h e r l a y e r f o r f u r t h e r p r o c e s s i n g .

    I f n o t , i t s e n d s t h e p a c k e t s t o t h e f o r w a r d i n g b l o c k . T h e f o r w a r d i n g b l o c k ,

    w h i c h m a y a l s o r e c e i v e d l o c a l l y g e n e r a t e d p a c k e t s f r o m t h e h i g h e r l a y e r , l o o k s

    u p t h e r o u t i n g t a b l e a n d d e t e r m i n e s t h e n e x t h o p f o r t h e p a c k e t . A f t e r t h i s ,

    i t q u e u e s t h e p a c k e t s t o b e t r a n s m i t t e d o n t h e o u t p u t i n t e r f a c e . I t i s a t t h i s

    p o i n t t h a t t h e l i n u x t r a c c o n t r o l c o m e s i n t o p l a y . L i n u x t r a c c o n t r o l c a n

    3

  • 8/2/2019 Advanced Networking Overview

    4/56

    OUTPUT QUEUEInput De-Multiplexing FORWARDING

    TRAFFIC CONTROL

    TCP, UDP

    Packets inPacket out

    F i g u r e 1 : L i n u x T r a c C o n t r o l

    b e u s e d t o b u i l d a c o m p l e x c o m b i n a t i o n o f q u e u i n g d i s c i p l i n e s , c l a s s e s a n d

    l t e r s t h a t c o n t r o l t h e p a c k e t s t h a t a r e s e n t o n t h e o u t p u t i n t e r f a c e .

    F r o m a n i m p l e m e n t a t i o n s t a n d p o i n t , w h a t t h i s m e a n s i s t h i s . W h e n q u e u -

    i n g d i s c i p l i n e s a r e c r e a t e d f o r a d e v i c e , a p o i n t e r t o t h e q u e u e i s m a i n t a i n e d

    i n t h e d e v i c e s t r u c t u r e i n i n c l u d e n e t d e v i c e . h . T h e I P l a y e r , a f t e r a d d i n g

    t h e n e c e s s a r y h e a d e r i n f o r m a t i o n t o a p a c k e t i n n e t i p v 4 i p o u t p u t . c , c a l l s

    t h e f u n c t i o n d e v q u e u e x m i t i n n e t c o r e d e v . c . A p o r t i o n o f t h i s c o d e i s

    s h o w n b e l o w .

    q = d e v - q d i s c ;

    i f q - e n q u e u e

    q - e n q u e u e s k b , q ;

    q d i s c _ w a k e u p d e v ;

    r e t u r n 0 ;

    .

    .

    .

    .

    i f d e v - h a r d _ s t a r t _ x m i t s k b , d e v = = 0

    .

    .

    .

    T h i s f u n c t i o n s h o w s t h a t b e f o r e a c t u a l l y s e n d i n g t h e p a c k e t o n t h e o u t p u t

    i n t e r f a c e b y d o i n g a h a r d s t a r t x m i t , t h e p a c k e t i s e n q u e u e d i n t h e q u e u e

    m a i n t a i n e d b y t h e d e v i c e , i f o n e e x i s t s . T h u s , a n m e n t i o n e d b e f o r e , t r a c

    c o n t r o l i s i m p l e m e n t e d j u s t b e f o r e t h e p a c k e t i s s e n t t o t h e d e v i c e d r i v e r .

    A s a l r e a d y m e n t i o n e d , t h e l i n u x t r a c c o n t r o l m e c h a n i s m p r o v i d e s t h e

    b a s i c f r a m e w o r k f o r t h e d e v e l o p m e n t o f i n t e g r a t e d s e r v i c e s 1 a n d d i e r e n -

    t i a t e d s e r v i c e s 2 s u p p o r t i n l i n u x . T h i s i s s h o w n i n F i g u r e 2 .

    4

  • 8/2/2019 Advanced Networking Overview

    5/56

    CLASSPOLICEFILTER

    CLASSIFIER

    POLICINGPACKET

    SCHEDULER

    SHAPER/

    DROPPER

    METER

    MARKER

    CLASSIFIER

    QUEUING DISCIPLINE

    CLASSIFIER

    LINUX KERNELTRAFFIC CONTROL

    TRAFFICDIFFSERV

    CONDITIONER

    INTSERV NODE

    F i g u r e 2 : F r a m e w o r k f o r d e v e l o p i n g " i n t s e r v " a n d " d i s e r v "

    A s s h o w n i n F i g u r e 2 , t h e Q o S s u p p o r t i n l i n u x c o n s i s t s o f t h e f o l l o w i n g

    t h r e e b a s i c b u i l d i n g b l o c k s , n a m e l y :

    Q u e u e i n g d i s c i p l i n e

    C l a s s e s

    F i l t e r s P o l i c e r s

    L e t u s n o w d i s c u s s t h e s e b a s i c b l o c k s i n d e t a i l .

    3 . 4 Q u e u i n g D i s c i p l i n e s

    T h i s s e c t i o n d i s c u s s e s q u e u i n g d i s c i p l i n e s , w h i c h f o r m a b a s i c . b u i l d i n g b l o c k

    f o r t h e s u p p o r t o f Q o S i n l i n u x . I t a l s o d i s c u s s e s t h e v a r i o u s q u e u i n g d i s c i -

    p l i n e s t h a t a r e s u p p o r t e d i n l i n u x . E a c h n e t w o r k d e v i c e h a s a q u e u e a s s o -

    c i a t e d w i t h i t . T h e r e a r e 1 1 t y p e s o f q u e u i n g d i s c i p l i n e s t h a t a r e c u r r e n t l y

    s u p p o r t e d i n l i n u x , w h i c h i n c l u d e s :

    C l a s s B a s e d Q u e u e C B Q

    T o k e n B u c k e t F l o w T B F

    5

  • 8/2/2019 Advanced Networking Overview

    6/56

    C l a r k - S h e n k e r - Z h a n g C S Z

    F i r s t I n F i r s t O u t F I F O

    P r i o r i t y

    T r a c E q u a l i z e r T E Q L

    S t o c h a s t i c F a i r Q u e u i n g S F Q

    A s y n c h r o n o u s T r a n s f e r M o d e A T M

    R a n d o m E a r l y D e t e c t i o n R E D

    G e n e r a l i z e d R E D G R E D

    D i - S e r v M a r k e r D S M A R K

    Q u e u e s a r e i d e n t i e d b y a h a n d l e m a j o r n u m b e r : m i n o r n u m b e r , w h e r e

    t h e m i n o r n u m b e r i s z e r o f o r q u e u e s . H a n d l e s a r e u s e d t o a s s o c i a t e c l a s s e s

    t o q u e u i n g d i s c i p l i n e s . C l a s s e s a r e d i s c u s s e d i n t h e n e x t s u b s e c t i o n .

    Q u e u i n g d i s c i p l i n e s a n d c l a s s e s a r e t i e d t o o n e a n o t h e r . T h e p r e s e n c e

    o f c l a s s e s a n d t h e i r s e m a n t i c s a r e f u n d a m e n t a l p r o p e r t i e s o f t h e q u e u i n g

    d i s c i p l i n e s . I n c o n t r a s t , l t e r s c a n b e a r b i t r a r i l y c o m b i n e d w i t h q u e u i n g

    d i s c i p l i n e s a n d c l a s s e s , a s l o n g a s t h e q u e u i n g d i s c i p l i n e s h a v e c l a s s e s . N o t

    a l l q u e u i n g d i s c i p l i n e s a r e a s s o c i a t e d w i t h c l a s s e s . F o r e x a m p l e , t h e T o k e n

    B u c k e t F l o w T B F d o e s n o t h a v e a n y c l a s s e s a s s o c i a t e d w i t h i t .

    F i g u r e 3 s h o w s a n e x a m p l e q u e u e . I n t h i s e x a m p l e , t h e r e a r e t w o t y p e s o f

    q u e u i n g d i s c i p l i n e s , o n e f o r h i g h p r i o r i t y a n d o n e f o r l o w p r i o r i t y . T h e l t e r

    s e l e c t s t h e o n e f o r h i g h p r i o r i t y , w h i l e t h e r e m a i n i n g a r e t r e a t e d l o w p r i o r i t y .

    T h e l o w p r i o r i t y p a c k e t s a r e s e r v e d b y a F I F O q u e u e , w h i l e t h e h i g h p r i o r i t y

    p a c k e t s a r e s e r v e d b y a T o k e n B u c k e t F l o w A l g o r i t h m . T h e T B F q u e u e i s

    u s e d t o e n s u r e t h a t t h e l o w p r i o r i t y p a c k e t s a r e n o t s t a r v e d .

    O n e o f t h e m a i n a d v a n t a g e s o f t h e Q o S s u p p o r t i n l i n u x i s t h e e x i b i l -

    i t y w i t h w h i c h t h e c o m b i n a t i o n o f q u e u e s a n d c l a s s e s c a n b e s e t u p . E a c h

    q u e u i n g d i s c i p l i n e m a y h a v e a n u m b e r o f c l a s s e s . T h e s e c l a s s e s d o n ' t s t o r e

    t h e p a c k e t s t h e m s e l v e s , b u t i n s t e a d , u s e a n o t h e r q u e u i n g d i s c i p l i n e f o r t h i s

    p u r p o s e , w h i c h i n t u r n , m a y h a v e a n u m b e r o f c l a s s e s a n d s o o n . I t i s t h i s

    e x i b i l i t y t h a t m a k e s t h e Q o S s u p p o r t i n l i n u x u n i q u e .

    W h e n a l i n u x k e r n e l c o n g u r e d f o r Q o S s u p p o r t i s b o o t e d u p , t h e f u n c t i o n

    n e t d e v i n i t i n n e t c o r e d e v . c c a l l s t h e f u n c t i o n p k t s c h e d i n i t i n n e t s c h e d s c h a p i . c

    6

  • 8/2/2019 Advanced Networking Overview

    7/56

    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1FILTER "HIGH"

    "LOW"

    QUEUEING DISCIPLINE WITH TWO DELAY PRIORITIES

    FIFO

    TBF, rate = 1Mbps

    F i g u r e 3 : A n E x a m p l e Q u e u e

    t o i n i t i a l i z e t h e t r a c c o n t r o l u n i t i n t h e l i n u x k e r n e l . I n p k t s c h e d i n i t , t h e

    q u e u i n g d i s c i p l i n e s t h a t h a v e b e e n c o m p i l e d i n t o t h e k e r n e l a r e a l l r e g i s -

    t e r e d a n d i n i t i a l i z e d . T h e p o i n t e r s t o a c c e s s t h e t h e f u n c t i o n s t c c t l q d i s c ,

    t c d u m p q d i s c , t c c t l t c l a s s a n d t c d u m p t c l a s s , w h i c h a r e u s e d t o p e r f o r m

    v a r i o u s f u n c t i o n s o n q u e u i n g d i s c i p l i n e s a n d c l a s s e s a r e a l s o i n i t i a l i z e d i n

    p k t s c h e d i n i t .

    T h e f u n c t i o n s t h a t a r e s u p p o r t e d o n t h e v a r i o u s q u e u i n g d i s c i p l i n e s a r e

    d i s c u s s e d i n t h e f o l l o w i n g s e c t i o n s . T h e s e f u n c t i o n s a r e d e n e d i n t h e Q d i s c o p s

    s t r u c t u r e i n i n c l u d e n e t p k t s c h e d . h .

    3 . 4 . 1 E n q u e u e

    T h e e n q u e u e f u n c t i o n e n q u e u e s a p a c k e t w i t h t h e q u e u e i n g d i s c i p l i n e . P a c k -

    e t s a r e e n q u e u e d i n t h e f o l l o w i n g m a n n e r . A s a l r e a d y s h o w n i n t h e p r e v i o u s

    s e c t i o n , w h e n t h e I P l a y e r c a l l s d e v q u e u e x m i t , t h e e n q u e u e f u n c t i o n o f t h e

    q u e u i n g d i s c i p l i n e a t t a c h e d t o t h e d e v i c e i s c a l l e d . T h i s p o r t i o n o f t h e c o d e

    i n n e t c o r e d e v . c i s s h o w n b e l o w :

    q = d e v - q d i s c ;

    i f q - e n q u e u e

    q - e n q u e u e s k b , q ;

    q d i s c _ w a k e u p d e v ;

    r e t u r n 0 ;

    I n t h e e n q u e u e f u n c t i o n o f a q u e u i n g d i s c i p l i n e , t h e l t e r s a r e r u n o n e b y

    o n e u n t i l a m a t c h o c c u r s . O n c e t h e m a t c h o c c u r s , t h e e n q u e u e f u n c t i o n o f

    t h e q u e u e i n g d i s c i p l i n e " o w n e d " b y t h a t c l a s s i s e x e c u t e d . F o r e x a m p l e , i n

    t h e c b q e n q u e u e f u n c t i o n i n n e t s c h e d s c h c b q . c ,

    7

  • 8/2/2019 Advanced Networking Overview

    8/56

    s t r u c t c b q _ c l a s s * c l = c b q _ c l a s s i f y s k b , s c h ;

    i n t l e n = s k b - l e n ;

    i f c l & & c l - q - e n q u e u e s k b , c l - q = = 1

    .

    .

    T h e f u n c t i o n c b q c l a s s i f y i s u s e d t o a p p l y t h e l t e r s a n d d e t e r m i n e t h e

    c l a s s t o w h i c h t o t h e p a c k e t b e l o n g s . A f t e r t h a t , t h e e n q u e u e f u n c t i o n o f

    t h e q u e u i n g d i s c i p l i n e o w n e d b y t h a t c l a s s i s c a l l e d . T h i s q u e u i n g d i s c i p l i n e

    m a y h a v e i t s o w n c l a s s e s , w h i c h i n t u r n m a y b e a s s o c i a t e d w i t h s o m e o t h e r

    q u e u i n g d i s c i p l i n e , a n d s o o n , w h i c h m a k e s t h e u s a g e e x i b l e , a s w a s d i s c u s s e d

    e a r l i e r .

    A t t h i s p o i n t , i t i s w o r t h m e n t i o n i n g t h a t w h e n a c l a s s i s c r e a t e d , t h e

    d e f a u l t q u e u i n g d i s c i p l i n e t h a t i t o w n s i s a P r i o r i t y F I F O q u e u e . T h e p o r t i o n

    o f t h e c o d e i n n e t s c h e d s c h c b q . c t h a t d o e s t h i s i s s h o w n b e l o w .

    s t a t i c i n t c b q _ i n i t s t r u c t Q d i s c * s c h , s t r u c t r t a t t r * o p t

    .

    .

    .

    i f ! q - l i n k . q = q d i s c _ c r e a t e _ d f l t s c h - d e v , & p f i f o _ q d i s c _ o p s

    q - l i n k . q = & n o o p _ q d i s c ;

    .

    .

    .

    T h i s c a n b e c h a n g e d b y d o i n g a g r a f t o p e r a t i o n , t h a t w i l l b e d i s c u s s e d

    l a t e r i n t h e s e c t i o n o n c l a s s e s .

    3 . 4 . 2 D e q u e u e

    T h e d e q u e u e f u n c t i o n d e q u e u e s a p a c k e t f o r s e n d i n g . I t r e t u r n s t h e n e x t

    p a c k e t t h a t n e e d s t o b e s e n t o u t o n t h e o u t p u t i n t e r f a c e . T h i s p a c k e t i s

    d e t e r m i n e d b y t h e s c h e d u l e r i n t h e q u e u i n g d i s c i p l i n e . T h e s c h e d u l e r c a n b e

    v e r y c o m p l i c a t e d f o r c o m p l e x q u e u i n g d i s c i p l i n e s l i k e t h e C B Q . A t t h e s a m e

    8

  • 8/2/2019 Advanced Networking Overview

    9/56

    t i m e , i t c a n b e v e r y s i m p l e t o o , a s i n t h e c a s e o f a F I F O q u e u e . T h e d e q u e u e

    f u n c t i o n f o r a s i m p l e F I F O q u e u i n g d i s c i p l i n e i n n e t s c h e d s c h f o . c i s

    s h o w n b e l o w :

    s t a t i c s t r u c t s k _ b u f f *

    p f i f o _ d e q u e u e s t r u c t Q d i s c * s c h

    r e t u r n _ _ s k b _ d e q u e u e & s c h - q ;

    A s s h o w n i n t h i s e x a m p l e , t h e n e x t p a c k e t i n t h e q u e u e i s d e q u e u e d a n d

    r e t u r n e d , w h i c h i s d e s i r e d b e h a v i o r f r o m a s i m p l e F I F O .

    T h e d e q u e u e f u n c t i o n f o r a p r i o r i t y F I F O i s s h o w n n e x t .

    s t a t i c s t r u c t s k _ b u f f *

    p r i o _ d e q u e u e s t r u c t Q d i s c * s c h

    .

    .

    .

    f o r p r i o = 0 ; p r i o q - b a n d s ; p r i o + +

    q d i s c = q - q u e u e s p r i o ;

    s k b = q d i s c - d e q u e u e q d i s c ;

    i f s k b

    s c h - q . q l e n - - ;

    r e t u r n s k b ;

    .

    .

    .

    A s s h o w n i n t h i s e x a m p l e , w h e n e v e r t h e p r i o d e q u e u e f u n c t i o n i s c a l l e d ,

    p a c k e t s f r o m t h e h i g h e s t p r i o r i t y q u e u e a r e s e n t r s t . A f t e r a l l t h e p a c k e t s

    i n t h e h i g h e s t p r i o r i t y l e v e l a r e s e n t , p a c k e t s f r o m t h e n e x t p r i o r i t y l e v e l a r e

    d e q u e u e d . T h i s r e q u i r e d b e h a v i o r i s p r o v i d e d b y t h e p o r t i o n o f t h e c o d e

    g i v e n a b o v e .

    9

  • 8/2/2019 Advanced Networking Overview

    10/56

    H a v i n g d i s c u s s e d t h e d e q u e u e f u n c t i o n o f t h e q u e u i n g d i s c i p l i n e s , l e t

    u s n o w s e e t h e p l a c e s w h e r e t h e d e q u e u e f u n c t i o n i s i n v o k e d . W h e n e v e r

    a p a c k e t i s e n q u e u e d i n d e v q u e u e x m i t , t h e q d i s c w a k e u p f u n c t i o n i n i n -

    c l u d e n e t p k t s c h e d . h i s i n v o k e d i n a n a t t e m p t t o s e n d t h e p a c k e t t h a t w a s

    j u s t e n q u e u e d . q d i s c w a k e u p i n v o k e s t h e q d i s c r e s t a r t f u n c t i o n i n n e t s c h e d s c h g e n e r i c . c ,

    w h i c h i n v o k e s t h e d e q u e u e f u n c t i o n o f t h e q u e u i n g d i s c i p l i n e a t t a c h e d t o t h e

    d e v i c e . T h e d e q u e u e f u n c t i o n r e t u r n s t h e n e x t p a c k e t t h a t n e e d s t o b e s e n t

    o u t o n t h e i n t e r f a c e . q d i s c r e s t a r t t h e n i n v o k e s h a r d s t a r t x m i t o f t h e d e v i c e

    t o s e n d t h e p a c k e t d o w n t o t h e d e v i c e . I f h a r d s t a r t x m i t f a i l s f o r s o m e r e a -

    s o n , t h e p a c k e t i s r e q u e u e d i n t h e q u e u i n g d i s c i p l i n e . T h e r e q u e u e f u n c t i o n

    i s d i s c u s s e d i n a l a t e r s e c t i o n .

    q d i s c w a k e u p c a n a l s o b e i n v o k e d f r o m t h e w a t c h d o g t i m e r h a n d l e r s i n

    t h e C B Q , T B F a n d C S Z s c h e d u l e r s . I n t h e d e q u e u e f u n c t i o n o f t h e s e q u e u i n g

    d i s c i p l i n e s , w h e n a p a c k e t i s d e q u e u e d t o b e s e n t o n t h e o u t p u t i n t e r f a c e , a

    w a t c h d o g t i m e r i s i n i t i a t e d . I f f o r s o m e r e a s o n , q d i s c r e s t a r t d o e s n o t s e n d

    t h e p a c k e t o u t i n t i m e , t h e w a t c h d o g t i m e r w i l l g o o a n d q d i s c r e s t a r t i s

    c a l l e d . F o r e x a m p l e , t h e s e t t i n g o f t h e T B F w a t c h d o g t i m e r i n t b f d e q u e u e

    i n n e t s c h e d s c h t b f . c i s s h o w n b e l o w :

    s t a t i c s t r u c t s k _ b u f f *

    t b f _ d e q u e u e s t r u c t Q d i s c * s c h

    .

    .

    .

    i f ! s c h - d e v - t b u s y

    .

    .

    d e l _ t i m e r & q - w d _ t i m e r ;

    q - w d _ t i m e r . e x p i r e s = j i f f i e s + d e l a y ;

    a d d _ t i m e r & q - w d _ t i m e r ;

    .

    .

    .

    1 0

  • 8/2/2019 Advanced Networking Overview

    11/56

    T h i s e x a m p l e s h o w s t h e w a y t h e w a t c h d o g t i m e r i s s e t . Y e t a n o t h e r

    w a y o f c a l l i n g t h e d e q u e u e f u n c t i o n o n a d e v i c e i s v i a q d i s c r u n q u e u e s i n

    n e t s c h e d s c h g e n e r i c . c f r o m n e t b h i n n e t c o r e d e v . c . n e t b h i s t h e b o t -

    t o m h a l f h a n d l e r o f t h e n e t w o r k i n g s t a c k i n l i n u x a n d i s e x e c u t e d w h e n e v e r

    p a c k e t s a r e q u e u e d u p f o r p r o c e s s i n g . I n q d i s c r u n q u e u e s , q d i s c r e s t a r t i s

    i n v o k e d a n d t h e r e s t o f t h e a c t i o n s a r e s i m i l a r t o t h o s e e x p l a i n e d a l r e a d y .

    H a v i n g d i s c u s s e d t h e d e q u e u e f u n c t i o n o f a q u e u i n g d i s c i p l i n e , l e t u s n o w

    d i s c u s s t h e r e q u e u e f u n c t i o n .

    3 . 4 . 3 R e q u e u e

    T h e r e q u e u e f u n c t i o n o f a q u e u i n g d i s c i p l i n e r e q u e u e s a p a c k e t f o r t r a n s -

    m i s s i o n . A f t e r d e q u e u e i n g t h e p a c k e t , i f f o r s o m e r e a s o n , t h e p a c k e t i s n o t

    t r a n s m i t t e d , t h e p a c k e t n e e d s t o b e p u t b a c k i n t h e q u e u e a t t h e s a m e p o -

    s i t i o n f r o m w h e r e i t w a s d e q u e u e d . T h e r e a s o n s f o r w h i c h a h a r d s t a r t x m i t

    m a y f a i l i n c l u d e :

    I f t h e d e v i c e c a n n o t e s t a b l i s h i t s b u s y s t a t u s b e f o r e t h e s t a r t o f t h e

    t r a n s m i s s i o n .

    I f t h e d e v i c e i s i t s e l f b u g g y .

    I f t h e f a s t r o u t e o p t i o n i s e n a b l e d .

    T h e s i m p l e s t e x a m p l e t o d e m o n s t r a t e t h e r e q u e u e f u n c t i o n i s t h e p f o r e q u e u e

    i n n e t s c h e d s c h f o . c . T h e p o r t i o n o f t h e c o d e t h a t d o e s t h e r e q u e u i n g i s

    s h o w n b e l o w :

    s t a t i c i n t

    p f i f o _ r e q u e u e s t r u c t s k _ b u f f * s k b , s t r u c t Q d i s c * s c h

    _ _ s k b _ q u e u e _ h e a d & s c h - q , s k b ;

    r e t u r n 1 ;

    F o r a s i m p l e F I F O q u e u e , t h e r e q u e u e f u n c t i o n s h o u l d p u t t h e p a c k e t b a c k

    a t t h e h e a d o f t h e q u e u e . T h i s i s w h a t i s d o n e i n t h e p o r t i o n o f t h e c o d e

    s h o w n a b o v e . T h e r e q u e u e f u n c t i o n i s d i e r e n t f r o m a n e n q u e u e f u n c t i o n i n

    t h a t t h e r e q u e u e f u n c t i o n s h o u l d p u t t h e p a c k e t b a c k i n t h e s a m e p l a c e f r o m

    1 1

  • 8/2/2019 Advanced Networking Overview

    12/56

    w h e r e i t w a s d e q u e u e d , a n d i t s h o u l d n o t b e r e e c t e d i n t h e s t a t i s t i c s t h a t

    a r e m a i n t a i n e d f o r t h e q u e u e , s i n c e i t w a s a l r e a d y p r o c e s s e d b y a n e n q u e u e

    f u n c t i o n .

    L e t u s n o w d i s c u s s t h e d r o p f u n c t i o n o f a q u e u i n g d i s c i p l i n e .

    3 . 4 . 4 D r o p

    T h e d r o p f u n c t i o n i s u s e d t o d r o p a p a c k e t f r o m t h e q u e u e . T h i s i s a v e r y

    s i m p l e f u n c t i o n w h i c h m a y b e n e e d e d i n t h e c a s e o f c e r t a i n q u e u i n g d i s c i p l i n e s

    l i k e t h e R E D a n d t h e G R E D . T h e s e q u e u i n g d i s c i p l i n e s w i l l n e e d t o d r o p

    s o m e p a c k e t s u n d e r c e r t a i n c o n d i t i o n s . A p o r t i o n o f t h e G R E D c o d e i n

    n e t s c h e d s c h g r e d . c i s s h o w n b e l o w :

    s t a t i c i n t

    g r e d _ d r o p s t r u c t Q d i s c * s c h

    .

    .

    .

    s k b = _ _ s k b _ d e q u e u e _ t a i l & s c h - q ;

    i f s k b

    q = t - t a b s k b - t c _ i n d e x & 0 x f ;

    s c h - s t a t s . b a c k l o g - = s k b - l e n ;

    s c h - s t a t s . d r o p s + + ;

    q - b a c k l o g

    - =

    s k b - l e n ;

    q - o t h e r + + ;

    k f r e e _ s k b s k b ;

    r e t u r n

    1 ;

    .

    .

    A s c a n b e s e e n f r o m a b o v e , t h e d r o p f u n c t i o n s i m p l y i n v o l v e s d e q u e u i n g

    t h e p a c k e t f r o m t h e q u e u e a n d f r e e i n g t h e m e m o r y o c c u p i e d b y i t .

    N e x t , l e t u s d i s c u s s t h e i n i t f u n c t i o n o f a q u e u i n g d i s c i p l i n e s .

    1 2

  • 8/2/2019 Advanced Networking Overview

    13/56

    3 . 4 . 5 I n i t

    T h e i n i t f u n c t i o n o f a q u e u i n g d i s c i p l i n e i s u s e d t o i n i t i a l i z e a n d c o n g u r e t h e

    p a r a m e t e r s o f a q u e u i n g d i s c i p l i n e w h e n i t i s c r e a t e d . T h e i n i t f u n c t i o n c a n

    b e p a s s e d t h e a r g u m e n t s t h a t w i l l u s e d t o c o n g u r e t h e q u e u i n g d i s c i p l i n e .

    E a c h o f t h e q u e u i n g d i s c i p l i n e s n e e d d i e r e n t s e t s o f p a r a m e t e r s d u r i n g t h e

    p r o c e s s o f t h e i n i t i a l c o n g u r a t i o n . T h e s e p a r a m e t e r s w i l l b e d i s c u s s e d i n

    d e t a i l d u r i n g t h e d i s c u s s i o n o n t h e u s a g e o f t h e t r a c c o n t r o l f e a t u r e s i n

    l i n u x . A l l t h e s c h e d u l e r r e l a t e d l e s , f o r e x a m p l e , s c h c b q . c , s c h t b f . c e t c .

    c o n t a i n t h e s c h e d u l e r d a t a s t r u c t u r e , t h a t i s t h e p a r a m e t e r s t h a t w i l l u s e d b y

    t h e s c h e d u l e r t o d e t e r m i n e t h e p a c k e t t h a t n e e d s t o b e s e n t n e x t . T h i s d a t a

    s t r u c t u r e c a n b e v e r y s i m p l e f o r c e r t a i n q u e u i n g d i s c i p l i n e s , f o r e x a m p l e , p r i -

    o r i t y F I F O , o r i t c a n r e a l l y v e r y c o m p l i c a t e d f o r c e r t a i n q u e u i n g d i s c i p l i n e s ,

    f o r e x a m p l e C B Q .

    T h e s c h e d u l e r d a t a s t r u c t u r e , f o r a s i m p l e F I F O i n n e t s c h e d s c h f o . c

    i s s h o w n b e l o w :

    s t r u c t f i f o _ s c h e d _ d a t a

    u n s i g n e d l i m i t ;

    ;

    T h e o n l y p a r a m e t e r t h a t a F I F O s c h e d u l e r n e e d s i s t h e m a x i m u m l e n g t h

    o f t h e q u e u e . T h e a b o v e s t r u c t u r e s h o w s t h e l i m i t a r g u m e n t w h i c h i n d i c a t e s

    t h e m a x i m u m l e n g t h o f t h e q u e u e , b e y o n d w h i c h p a c k e t s a r e d r o p p e d . I n

    t h e f o i n i t f u n c t i o n i n n e t s c h e d s c h f o . c , t h e f o l l o w i n g p o r t i o n o f c o d e

    d e m o n s t r a t e s t h e i n i t i a l i z a t i o n a n d c o n g u r a t i o n t h a t i s d o n e i n g e n e r a l , i n

    t h e i n i t f u n c t i o n o f a q u e u i n g d i s c i p l i n e .

    s t a t i c i n t f i f o _ i n i t s t r u c t Q d i s c * s c h , s t r u c t r t a t t r * o p t

    s t r u c t f i f o _ s c h e d _ d a t a * q = v o i d * s c h - d a t a ;

    i f o p t = = N U L L

    q - l i m i t = s c h - d e v - t x _ q u e u e _ l e n ;

    i f s c h - o p s = = & b f i f o _ q d i s c _ o p s

    q - l i m i t * = s c h - d e v - m t u ;

    e l s e

    1 3

  • 8/2/2019 Advanced Networking Overview

    14/56

    s t r u c t t c _ f i f o _ q o p t * c t l = R T A _ D A T A o p t ;

    i f o p t - r t a _ l e n R T A _ L E N G T H s i z e o f * c t l

    r e t u r n - E I N V A L ;

    q - l i m i t = c t l - l i m i t ;

    r e t u r n 0 ;

    I n t h e a b o v e f u n c t i o n , i f t h e l i m i t a r g u m e n t i s s p e c i e d , t h e i n i t f u n c t i o n

    s e t s t h e l i m i t t o t h e s p e c i e s v a l u e . I f t h i s i s n o t s p e c i e d , i t d e f a u l t s t h e

    l i m i t t o t h e M T U o f t h e d e v i c e .

    3 . 4 . 6 R e s e t

    T h e r e s e t f u n c t i o n o f a q u e u i n g d i s c i p l i n e i s u s e d t o r e s e t t h e q u e u i n g d i s c i -

    p l i n e t o i t s i n i t i a l s t a t e . I t c l e a r s a l l q u e u i n g d i s c i p l i n e s , t i m e r s a r e s t o p p e d

    e t c . T h e r e s e t o f a q u e u i n g d i s c i p l i n e a l s o r e s u l t s i n a r e s e t o f t h e q u e u i n g

    d i s c i p l i n e o f t h e c l a s s e s o f t h i s q u e u i n g d i s c i p l i n e . A s a n e x a m p l e , l e t u s t a k e

    a l o o k a t t h e F I F O q u e u i n g d i s c i p l i n e . T h e f o r e s e t i n n e t s c h e d s c h f o . c

    f u n c t i o n i s s h o w n b e l o w :

    s t a t i c v o i d

    f i f o _ r e s e t s t r u c t Q d i s c * s c h

    s t r u c t s k _ b u f f * s k b ;

    w h i l e s k b = _ _ s k b _ d e q u e u e & s c h - q ! = N U L L

    k f r e e _ s k b s k b ;

    s c h - s t a t s . b a c k l o g = 0 ;

    I n t h i s e x a m p l e , t h e r e s e t f u n c t i o n r e s u l t s i n t h e q u e u e b e i n g d r a i n e d , a n d

    t h e m e m o r y o c c u p i e d b y t h e s e p a c k e t s a r e r e c o v e r e d . T h e b a c k l o g i s s e t t o

    z e r o . T h i s i s a s i m p l e e x a m p l e , w h i c h d i d n o t i n v o l v e t i m e r s . A s l i g h t l y m o r e

    c o m p l i c a t e d e x a m p l e i s d i s c u s s e d n e x t . L e t u s t a k e a l o o k a t t h e f u n c t i o n

    t b f r e s e t i n n e t s c h e d s c h t b f . c :

    s t a t i c v o i d

    t b f _ r e s e t s t r u c t Q d i s c * s c h

    1 4

  • 8/2/2019 Advanced Networking Overview

    15/56

    s t r u c t t b f _ s c h e d _ d a t a * q = s t r u c t t b f _ s c h e d _ d a t a * s c h - d a t a ;

    s k b _ q u e u e _ p u r g e & s c h - q ;

    s c h - s t a t s . b a c k l o g = 0 ;

    P S C H E D _ G E T _ T I M E q - t _ c ;

    q - t o k e n s = q - b u f f e r ;

    q - p t o k e n s = q - m t u ;

    s c h - f l a g s & = ~ T C Q _ F _ T H R O T T L E D ;

    d e l _ t i m e r & q - w d _ t i m e r ;

    T h i s e x a m p l e i n v o l v e s c l e a r i n g o f t h e b a c k l o g a s w e l l a s r e s e t t i n g o f t h e t i m e r s .

    T h i s e x p l a i n s t h e o p e r a t i o n s o f t h e r e s e t f u n c t i o n o f a q u e u i n g d i s c i p l i n e .

    3 . 4 . 7 D e s t r o y

    T h e d e s t r o y f u n c t i o n o f a q u e u i n g d i s c i p l i n e i s u s e d t o r e m o v e t h e q u e u -

    i n g d i s c i p l i n e . I t a l s o r e m o v e s a l l t h e c l a s s e s a n d l t e r s a s s o c i a t e d w i t h

    q u e u i n g d i s c i p l i n e . T h i s i s i m p l e m e n t e d i n t h e q d i s c d e s t r o y f u n c t i o n i n

    n e t s c h e d s c h g e n e r i c . c . A n i m p o r t a n t p o r t i o n o f t h i s f u n c t i o n i s s h o w n i s

    b e l o w :

    v o i d q d i s c _ d e s t r o y s t r u c t Q d i s c * q d i s c

    .

    .

    .

    f o r q p = & q d i s c - d e v - q d i s c _ l i s t ; q = * q p ! = N U L L ; q p = & q - n e x t

    .

    .

    .

    T h i s p o r t i o n o f t h e c o d e s h o w s t h a t a l i n e a r s e a r c h i s p e r f o r m e d t o d e t e r -

    m i n e t h e q u e u i n g d i s c i p l i n e t h a t n e e d s t o b e d e s t r o y e d , a f t e r w h i c h t h e m e m -

    o r y o c c u p i e d b y t h e q u e u e i s r e l e a s e d . A s a n e x a m p l e o f t h e d e s t r o y f u n c t i o n ,

    l e t u s t a k e a l o o k a t t h e c b q d e s t r o y f u n c t i o n i n n e t s c h e d s c h c b q . c :

    s t a t i c v o i d

    1 5

  • 8/2/2019 Advanced Networking Overview

    16/56

    c b q _ d e s t r o y s t r u c t Q d i s c * s c h

    s t r u c t c b q _ s c h e d _ d a t a * q = s t r u c t c b q _ s c h e d _ d a t a * s c h - d a t a ;

    s t r u c t c b q _ c l a s s * c l ;

    u n s i g n e d h ;

    f o r h = 0 ; h 1 6 ; h + +

    f o r c l = q - c l a s s e s h ; c l ;

    c l = c l - n e x t

    c b q _ d e s t r o y _ f i l t e r s c l ;

    f o r h = 0 ; h 1 6 ; h + +

    f o r c l = q - c l a s s e s h ; c l ; c l = c l - n e x t

    i f c l ! = & q - l i n k c b q _ d e s t r o y _ c l a s s c l ;

    q d i s c _ p u t _ r t a b q - l i n k . R _ t a b ;

    T h i s f u n c t i o n r e s u l t s i n t h e l t e r s a n d t h e c l a s s e s a s s o c i a t e d w i t h t h e

    q u e u i n g d i s c i p l i n e b e i n g d e l e t e d . A s w a s a l r e a d y m e n t i o n e d , t h e d e s t r u c t i o n

    o f a c l a s s r e s u l t s i n t h e d e s t r u c t i o n o f t h e q u e u i n g d i s c i p l i n e o w n e d b y t h a t

    c l a s s , w h i c h c a n b e s e e n f r o m t h e c b q d e s t r o y c l a s s f u n c t i o n s h o w n b e l o w :

    s t a t i c v o i d c b q _ d e s t r o y _ c l a s s s t r u c t c b q _ c l a s s * c l

    c b q _ d e s t r o y _ f i l t e r s c l ;

    q d i s c _ d e s t r o y c l - q ;

    q d i s c _ p u t _ r t a b c l - R _ t a b ;

    i f d e f C O N F I G _ N E T _ E S T I M A T O R

    q d i s c _ k i l l _ e s t i m a t o r & c l - s t a t s ;

    e n d i f

    k f r e e c l ;

    L e t u s n o w d i s c u s s t h e l a s t f u n c t i o n a s s o c i a t e d w i t h a q u e u i n g d i s c i p l i n e ,

    n a m e l y t h e d u m p f u n c t i o n .

    1 6

  • 8/2/2019 Advanced Networking Overview

    17/56

    3 . 4 . 8 D u m p

    T h e d u m p f u n c t i o n i s u s e d t o d u m p d i a g n o s t i c d a t a a s s o c i a t e d w i t h a q u e u i n g

    d i s c i p l i n e . E a c h q u e u i n g d i s c i p l i n e m a i n t a i n s d i e r e n t d i a g n o s t i c d a t a t h a t

    i s d u m p e d w h e n t h e d u m p f u n c t i o n i s i n v o k e d . T h e r e i s n o t h i n g m o r e t h a t

    n e e d s t o b e e l a b o r a t e d a b o u t t h i s f u n c t i o n .

    T h i s c o n c l u d e s t h e d i s c u s s i o n o n t h e i m p l e m e n t a t i o n o f q u e u i n g d i s c i -

    p l i n e s . L e t u s n o w d i s c u s s t h e i m p l e m e n t a t i o n o f c l a s s e s i n t h e l i n u x k e r n e l .

    3 . 5 C l a s s e s

    A s a l r e a d y m e n t i o n e d , q u e u e s a n d c l a s s e s a r e t i e d t o o n e a n o t h e r . E a c h c l a s s

    o w n s a q u e u e , w h i c h b y d e f a u l t i s a F I F O q u e u e . W h e n t h e e n q u e u e f u n c t i o n

    o f a q u e u i n g d i s c i p l i n e i s c a l l e d , t h e q u e u i n g d i s c i p l i n e a p p l i e s t h e l t e r s t o

    d e t e r m i n e t h e c l a s s t o w h i c h t h e p a c k e t b e l o n g s . I t t h e n c a l l s t h e e n q u e u e

    f u n c t i o n o f t h e q u e u i n g d i s c i p l i n e t h a t i s o w n e d b y t h i s c l a s s .

    T h e r e a r e t w o w a y s b y w h i c h a c l a s s c a n b e i d e n t i e d . O n e i s v i a t h e c l a s s

    i d e n t i e r , w h i c h i s s p e c i e d b y t h e u s e r . T h e o t h e r i d e n t i e r , w h i c h i s u s e d

    w i t h i n t h e k e r n e l t o i d e n t i f y a c l a s s , i s r e f e r r e d t o a s t h e i n t e r n a l i d e n t i e r .

    T h i s I D i s u n i q u e a n d i s a s s i g n e d b y t h e q u e u i n g d i s c i p l i n e . T h e c l a s s I D i s

    a u 3 2 d a t a t y p e , w h i l e t h e i n t e r n a l I D i s a n u n s i g n e d l o n g i n t e g e r . M o s t o f

    t h e f u n c t i o n s o n c l a s s e s u s e t h e i n t e r n a l I D t o i d e n t i f y t h e c l a s s . H o w e v e r ,

    t h e r e a r e a f e w f u n c t i o n s l i k e t h e g e t a n d t h e c h a n g e f u n c t i o n , w h i c h w i l l b e

    d i s c u s s e d l a t e r t h a t u s e t h e c l a s s I D t o o .

    M u l t i p l e c l a s s I D s m a y m a p t o t h e s a m e i n t e r n a l I D , h o w e v e r , t h e c l a s s

    I D w i l l c o n v e y s o m e a d d i t i o n a l i n f o r m a t i o n f r o m t h e c l a s s i e r t o t h e q u e u i n g

    d i s c i p l i n e o r c l a s s .

    T h e c l a s s I D , s i m i l a r t o a q u e u i n g d i s c i p l i n e i d e n t i e r , i s s t r u c t u r e d i n t h e

    f o r m o f a m a j o r n u m b e r : m i n o r n u m b e r . T h e m a j o r n u m b e r c o r r e s p o n d s

    t o t h e i r i n s t a n c e o f t h e q u e u i n g d i s c i p l i n e w h i l e t h e m i n o r n u m b e r i d e n t i e s

    t h e c l a s s w i t h i n t h a t i n s t a n c e .

    N o t a l l q u e u i n g d i s c i p l i n e s s u p p o r t c l a s s e s . T h e o n e s t h a t s u p p o r t c l a s s e s

    i n c l u d e t h e C B Q , t h e D S M A R K , t h e C S Z a n d t h e p - F I F O q u e u i n g d i s c i -

    p l i n e s . T h e r e s t o f t h e q u e u i n g d i s c i p l i n e s d o n o t s u p p o r t c l a s s e s .

    W i t h t h i s i n t r o d u c t i o n o n c l a s s e s , l e t u s n o w d i s c u s s t h e f u n c t i o n s t h a t c a n

    b e p e r f o r m e d o n c l a s s e s . T h e s e f u n c t i o n s a r e d e n e d i n t h e Q d i s c c l a s s o p s

    s t r u c t u r e i n i n c l u d e n e t p k t s c h e d . h .

    T h e f o l l o w i n g o p e r a t i o n s a r e p e r m i t t e d f o r t h e m a n i p u l a t i o n o f t h e c l a s s e s

    1 7

  • 8/2/2019 Advanced Networking Overview

    18/56

    w i t h i n t h e v a r i o u s q u e u i n g d i s c i p l i n e s t h a t s u p p o r t c l a s s e s . T h i s i s d e n e d

    i n i n c l u d e n e t p k t s c h e d . h .

    3 . 5 . 1 G r a f t

    T h e g r a f t f u n c t i o n o n a c l a s s i s u s e d t o a t t a c h a n e w q u e u i n g d i s c i p l i n e t o

    a c l a s s . A s m e n t i o n e d i n t h e p r e v i o u s s e c t i o n , t h e d e f a u l t q u e u i n g d i s c i p l i n e

    a t t a c h e d t o a c l a s s w h e n i t i s c r e a t e d , i s a F I F O q u e u e . T o c h a n g e t h i s q u e u -

    i n g d i s c i p l i n e , a g r a f t o p e r a t i o n i s p e r f o r m e d o n t h e c l a s s . A s a n e x a m p l e ,

    l e t u s t a k e a l o o k a t t h e c b q g r a f t f u n c t i o n i n n e t s c h e d s c h c b q . c .

    s t a t i c i n t c b q _ g r a f t s t r u c t Q d i s c * s c h , u n s i g n e d l o n g a r g ,

    s t r u c t Q d i s c * n e w , s t r u c t Q d i s c * * o l d

    s t r u c t c b q _ c l a s s * c l = s t r u c t c b q _ c l a s s * a r g ;

    i f c l

    i f n e w = = N U L L

    i f n e w = q d i s c _ c r e a t e _ d f l t s c h - d e v , & p f i f o _ q d i s c _ o p s = = N U L L

    r e t u r n - E N O B U F S ;

    n e w - c l a s s i d = c l - c l a s s i d ;

    i f * o l d = x c h g & c l - q , n e w ! = N U L L

    q d i s c _ r e s e t * o l d ;

    r e t u r n 0 ;

    r e t u r n - E N O E N T ;

    A s s h o w n a b o v e , t h e c b q g r a f t f u n c t i o n i s c a l l e d w i t h t h e n e w q u e u i n g

    d i s c i p l i n e . B y d e f a u l t , i f n o q u e u i n g d i s c i p l i n e i s s p e c i e d , a F I F O q u e u i n g

    d i s c i p l i n e i s a t t a c h e d t o t h e c l a s s . I f t h e n e w q u e u i n g d i s c i p l i n e i s s p e c i e d ,

    t h e n t h e c l a s s i s a t t a c h e d t o i t . T h a t i s , w h e n a p a c k e t t o b e e n q u e u e d i s

    c l a s s i e d t o t h i s c l a s s , t h e e n q u e u e f u n c t i o n o f t h e q u e u i n g d i s c i p l i n e a t t a c h e d

    t o t h i s c l a s s i s c a l l e d . T h e o l d q u e u i n g d i s c i p l i n e t h a t w a s a t t a c h e d t o t h e

    c l a s s i s r e t u r n e d i n t h e " o l d " v a r i a b l e .

    1 8

  • 8/2/2019 Advanced Networking Overview

    19/56

    T h e q d i s c g r a f t f u n c t i o n i n n e t s c h e d s c h a p i . c i s a n o t h e r e x a m p l e f o r

    t h e g r a f t f u n c t i o n . T h i s f u n c t i o n i s c a l l e d f r o m t h e t c c t l q d i s c f u n c t i o n i n

    t h e s a m e l e . T h e t c c t l q d i s c f u n c t i o n i s i n v o k e d w h e n e v e r a n a t t e m p t i s

    m a d e t o c r e a t e , d e l e t e , c h a n g e o r g e t a q u e u i n g d i s c i p l i n e .

    3 . 5 . 2 G e t

    T h e g e t f u n c t i o n i s u s e d t o r e t u r n t h e i n t e r n a l I D o f a c l a s s , g i v e n i t s c l a s s

    I D . T h e g e t f u n c t i o n i n c r e m e n t s t h e u s a g e c o u n t o f t h e c l a s s . A s a n e x a m p l e ,

    l e t u s t a k e a l o o k a t t h e c b q g e t f u n c t i o n i n n e t s c h e d s c h c b q . c .

    s t a t i c u n s i g n e d l o n g c b q _ g e t s t r u c t Q d i s c * s c h , u 3 2 c l a s s i d

    s t r u c t c b q _ s c h e d _ d a t a * q = s t r u c t c b q _ s c h e d _ d a t a * s c h - d a t a ;

    s t r u c t c b q _ c l a s s * c l = c b q _ c l a s s _ l o o k u p q , c l a s s i d ;

    i f c l

    c l - r e f c n t + + ;

    r e t u r n u n s i g n e d l o n g c l ;

    r e t u r n 0 ;

    s t a t i c _ _ i n l i n e _ _ s t r u c t c b q _ c l a s s *

    c b q _ c l a s s _ l o o k u p s t r u c t c b q _ s c h e d _ d a t a * q , u 3 2 c l a s s i d

    s t r u c t c b q _ c l a s s * c l ;

    f o r c l = q - c l a s s e s c b q _ h a s h c l a s s i d ; c l ; c l = c l - n e x t

    i f c l - c l a s s i d = = c l a s s i d

    r e t u r n c l ;

    r e t u r n N U L L ;

    A s s h o w n i n t h i s f u n c t i o n , t h e g e t f u n c t i o n c a l l s t h e c b q c l a s s l o o k u p

    f u n c t i o n t o m a p t h e c l a s s I D t o t h e i n t e r n a l I D . T h e c b q c l a s s l o o k u p f u n c -

    t i o n s e a r c h e s t h e l i s t o f c l a s s e s t o d e t e r m i n e t h e c l a s s w i t h t h e s p e c i e d c l a s s

    I D a n d r e t u r n a p o i n t e r t o t h e c o r r e s p o n d i n g c b q c l a s s s t r u c t u r e , w h i c h c o n -

    t a i n s t h e i n t e r n a l I D o f t h e c l a s s , i n a d d i t i o n t o o t h e r i n f o r m a t i o n . T h e

    1 9

  • 8/2/2019 Advanced Networking Overview

    20/56

    g e t f u n c t i o n i s i n v o k e d i n t h e t c c t l t c l a s s f u n c t i o n i n n e t s c h e d s c h a p i . c .

    T h e t c c t l t c l a s s f u n c t i o n i s i n v o k e d w h e n e v e r a n a t t e m p t i s m a d e t o c r e a t e ,

    d e l e t e o r c h a n g e a c l a s s .

    3 . 5 . 3 P u t

    T h e p u t f u n c t i o n i s i n v o k e d w h e n a c l a s s p r e v i o u s l y r e f e r e n c e d u s i n g t h e g e t

    f u n c t i o n i s d e - r e f e r e n c e d . I t d e c r e m e n t s t h e u s a g e c o u n t o f t h e c l a s s . I f t h e

    u s a g e c o u n t r e a c h e s z e r o , p u t m a y r e m o v e t h e c l a s s i t s e l f . A s a n e x a m p l e ,

    l e t u s t a k e a l o o k a t t h e c b q p u t f u n c t i o n i n n e t s c h e d s c h c b q . c .

    s t a t i c v o i d c b q _ p u t s t r u c t Q d i s c * q , u n s i g n e d l o n g a r g

    s t r u c t c b q _ c l a s s * c l = s t r u c t c b q _ c l a s s * a r g ;

    s t a r t _ b h _ a t o m i c ;

    i f - - c l - r e f c n t = = 0

    c b q _ d e s t r o y _ c l a s s c l ;

    e n d _ b h _ a t o m i c ;

    r e t u r n ;

    A s s h o w n a b o v e , t h e c b q p u t f u n c t i o n d e c r e m e n t s t h e u s a g e c o u n t o f

    t h e c l a s s , a n d i f z e r o , d e s t r o y s t h e c l a s s . T h e p u t f u n c t i o n i s i n v o k e d i n

    t h e t c c t l t c l a s s f u n c t i o n i n n e t s c h e d s c h a p i . c . T h e t c c t l t c l a s s f u n c t i o n i s

    i n v o k e d w h e n e v e r a n a t t e m p t i s m a d e t o c r e a t e , d e l e t e o r c h a n g e a c l a s s .

    3 . 5 . 4 C h a n g e

    T h e c h a n g e f u n c t i o n o n a c l a s s i s u s e d t o c h a n g e t h e p r o p e r t i e s a s s o c i -

    a t e d w i t h a c l a s s . H o w e v e r , t h e c h a n g e f u n c t i o n i s a l s o u s e d t o c r e a t e

    c l a s s e s a t t i m e s . A s a n e x a m p l e , l e t u s s e e t h e c b q c h a n g e f u n c t i o n i n

    n e t s c h e d s c h c b q . c i n d e t a i l . T h e c b q c h a n g e f u n c t i o n i s i n v o k e d w i t h t h e

    q u e u i n g d i s c i p l i n e , t h e c l a s s I D o f t h e c l a s s w h o s e p r o p e r t i e s n e e d t o b e

    c h a n g e d o r a d d e d a n d t h e n e w p r o p e r t i e s t h a t n e e d t o a s s o c i a t e d t o t h e

    c l a s s . T h i s c a n b e s e e n b e l o w :

    s t a t i c i n t

    c b q _ c h a n g e s t r u c t Q d i s c * s c h , u 3 2 c l a s s i d , u 3 2 p a r e n t i d , s t r u c t r t a t t r * * t c a

    2 0

  • 8/2/2019 Advanced Networking Overview

    21/56

    u n s i g n e d l o n g * a r g

    .

    .

    A f t e r p e r f o r m i n g s o m e i n i t i a l c h e c k s , t h e p r o p e r t i e s s p e c i e d a r e a s s o c i -

    a t e d t o t h e c l a s s o n e b y o n e . T h i s c a n b e s e e n t h e f o l l o w i n g p o r t i o n o f t h e

    c o d e :

    i f t b T C A _ C B Q _ W R R O P T - 1

    c b q _ r m p r i o q , c l ;

    c b q _ s e t _ w r r c l , R T A _ D A T A t b T C A _ C B Q _ W R R O P T - 1 ;

    i f t b T C A _ C B Q _ O V L _ S T R A T E G Y - 1

    c b q _ s e t _ o v e r l i m i t c l , R T A _ D A T A t b T C A _ C B Q _ O V L _ S T R A T E G Y - 1 ;

    T h i s p o r t i o n o f t h e c o d e s e t s t h e p r i o r i t i e s a n d w e i g h t e d r o u n d r o b i n

    p a r a m e t e r s f o r a c l a s s . I t a l s o s e t s t h e o v e r l i m i t i n f o r m a t i o n . T h e s e d e t a i l s

    a b o u t t h e C B Q w i l l b e d i s c u s s e d i n m o r e d e t a i l i n a l a t e r s e c t i o n . I t s h o u l d

    b e n o t e d t h a t t h i s f u n c t i o n c a n b e u s e d t o n o t o n l y c h a n g e t h e p r o p e r t i e s

    o f a n e x i s t i n g c l a s s , b u t i t c a n a l s o b e u s e d t o c r e a t e a n e w c l a s s w i t h t h e

    p r o p e r t i e s s p e c i e d . T h i s f a c t i s c l e a r f r o m t h e f o l l o w i n g p o r t i o n s o f t h e c o d e .

    s t a t i c i n t

    c b q _ c h a n g e s t r u c t Q d i s c * s c h , u 3 2 c l a s s i d , u 3 2 p a r e n t i d , s t r u c t r t a t t r * * t c a

    u n s i g n e d l o n g * a r g

    s t r u c t c b q _ c l a s s * c l = s t r u c t c b q _ c l a s s * * a r g ;

    .

    .

    i f c l

    * C h a n g e p r o p e r t i e s *

    .

    .

    r e t u r n 0 ;

    2 1

  • 8/2/2019 Advanced Networking Overview

    22/56

    * C r e a t e a n e w c l a s s a n d a s s i g n t h e p r o p e r t i e s t o t h e c l a s s *

    .

    .

    .

    T h e c h a n g e f u n c t i o n i s i n v o k e d i n t h e t c c t l t c l a s s f u n c t i o n i n n e t s c h e d s c h a p i . c .

    T h e t c c t l t c l a s s f u n c t i o n i s i n v o k e d w h e n e v e r a n a t t e m p t i s m a d e t o c r e a t e ,

    d e l e t e o r c h a n g e a c l a s s .

    3 . 5 . 5 D e l e t e

    T h e d e l e t e f u n c t i o n o n a c l a s s i s u s e d t o d e l e t e t h e c l a s s . I t d e t e r m i n e s t h e

    u s a g e o f t h e c l a s s , b y c h e c k i n g t h e r e f e r e n c e c o u n t , a n d i f z e r o , d e - a c t i v a t e s

    a n d r e m o v e s t h e c l a s s . A s a n e x a m p l e , l e t u s t a k e a l o o k a t t h e c b q d e l e t e

    f u n c t i o n i n n e t s c h e d s c h c b q . c .

    s t a t i c i n t c b q _ d e l e t e s t r u c t Q d i s c * s c h , u n s i g n e d l o n g a r g

    s t r u c t c b q _ s c h e d _ d a t a * q = s t r u c t c b q _ s c h e d _ d a t a * s c h - d a t a ;

    s t r u c t c b q _ c l a s s * c l = s t r u c t c b q _ c l a s s * a r g ;

    i f c l - f i l t e r s | | c l - c h i l d r e n | | c l = = & q - l i n k

    r e t u r n - E B U S Y ;

    s t a r t _ b h _ a t o m i c ;

    i f c l - n e x t _ a l i v e

    c b q _ d e a c t i v a t e _ c l a s s c l ;

    i f q - t x _ b o r r o w e d = = c l

    q - t x _ b o r r o w e d = q - t x _ c l a s s ;

    i f q - t x _ c l a s s = = c l

    q - t x _ c l a s s = N U L L ;

    q - t x _ b o r r o w e d = N U L L ;

    c b q _ u n l i n k _ c l a s s c l ;

    c b q _ a d j u s t _ l e v e l s c l - t p a r e n t ;

    2 2

  • 8/2/2019 Advanced Networking Overview

    23/56

    c l - d e f m a p = 0 ;

    c b q _ s y n c _ d e f m a p c l ;

    c b q _ r m p r i o q , c l ;

    i f - - c l - r e f c n t = = 0

    c b q _ d e s t r o y _ c l a s s c l ;

    e n d _ b h _ a t o m i c ;

    r e t u r n 0 ;

    T h e a b o v e f u n c t i o n i s a n e x a m p l e o f t h e d e l e t e f u n c t i o n o n a c l a s s . L e t

    u s n o w l o o k i n t o t h e w a l k f u n c t i o n .

    3 . 5 . 6 W a l k

    T h e w a l k f u n c t i o n o n a c l a s s i s u s e d t o i t e r a t e o v e r a l l t h e c l a s s e s o f a

    q u e u i n g d i s c i p l i n e a n d i n v o k e s a c a l l b a c k f u n c t i o n f o r e a c h o f t h e c l a s s e s .

    T h i s i s u s u a l l y u s e d t o o b t a i n d i a g n o s t i c d a t a f o r a l l t h e c l a s s e s o f a q u e u -

    i n g d i s c i p l i n e . F o r e x a m p l e , l e t u s t a k e a l o o k a t t h e c b q w a l k f u n c t i o n i n

    n e t s c h e d s c h c b q . c .

    s t a t i c v o i d c b q _ w a l k s t r u c t Q d i s c * s c h , s t r u c t q d i s c _ w a l k e r * a r g

    s t r u c t c b q _ s c h e d _ d a t a * q = s t r u c t c b q _ s c h e d _ d a t a * s c h - d a t a ;

    u n s i g n e d h ;

    .

    .

    f o r h = 0 ; h 1 6 ; h + +

    s t r u c t c b q _ c l a s s * c l ;

    f o r c l = q - c l a s s e s h ; c l ; c l = c l - n e x t

    i f a r g - c o u n t a r g - s k i p

    a r g - c o u n t + + ;

    c o n t i n u e ;

    2 3

  • 8/2/2019 Advanced Networking Overview

    24/56

    i f a r g - f n s c h , u n s i g n e d l o n g c l , a r g

    a r g - s t o p = 1 ;

    b r e a k ;

    .

    .

    T h i s p o r t i o n o f t h e c o d e s h o w s t h a t t h e w a l k c o m m a n d i t e r a t e s o v e r a l l t h e

    c l a s s e s o f a s p e c i e d q u e u i n g d i s c i p l i n e a n d i n v o k e s a c a l l b a c k f u n c t i o n . T h e

    w a l k f u n c t i o n i s c a l l e d f r o m t h e t c d u m p t c l a s s f u n c t i o n i n n e t s c h e d s c h a p i . c ,

    w h i c h i s i n v o k e d w h e n a d u m p r e q u e s t i s m a d e o n t h e c l a s s . T h e p o r t i o n o f

    t h e c o d e i n t c d u m p t c l a s s t h a t d o e s t h i s s h o w n b e l o w :

    s t a t i c i n t t c _ d u m p _ t c l a s s s t r u c t s k _ b u f f * s k b , s t r u c t n e t l i n k _ c a l l b a c k * c b

    s t r u c t d e v i c e * d e v ;

    s t r u c t Q d i s c * q ;

    .

    .

    .

    f o r q = d e v - q d i s c _ l i s t , t = 0 ; q ; q = q - n e x t , t + +

    .

    a r g . w . f n = q d i s c _ c l a s s _ d u m p ;

    .

    q - o p s - c l _ o p s - w a l k q , & a r g . w ;

    .

    .

    T h e c a l l b a c k f u n c t i o n m a p s t o t h e q d i s c c l a s s d u m p f u n c t i o n i n t h e s a m e

    l e . I n q d i s c c l a s s d u m p , t h e t c l l t c l a s s f u n c t i o n i s i n v o k e d , w h i c h c a l l s t h e

    d u m p f u n c t i o n o n a l l t h e c l a s s e s . T h e d u m p f u n c t i o n o n a c l a s s , w h i c h i s

    d i s c u s s e d l a t e r i s u s e d t o d u m p s t a t i s t i c a l i n f o r m a t i o n a b o u t t h e c l a s s .

    2 4

  • 8/2/2019 Advanced Networking Overview

    25/56

    3 . 5 . 7 T c f c h a i n

    T h e t c f c h a i n f u n c t i o n o n a c l a s s i s u s e d t o r e t u r n t h e a n c h o r t o t h e l i s t o f

    l t e r s t h a t a r e a s s o c i a t e d t o a c l a s s . E a c h c l a s s i s a s s o c i a t e d w i t h a l t e r l i s t

    w h i c h c o n t a i n s t h e l i s t o f l t e r s t h a t a r e u s e d t o i d e n t i f y t h e p a c k e t s t h a t

    b e l o n g t o a p a r t i c u l a r c l a s s . A s a l r e a d y m e n t i o n e d , p a c k e t s w i t h d i e r e n t

    p r o p e r t i e s m a y m a p t o t h e s a m e c l a s s . F o r e x a m p l e , p a c k e t s f r o m t w o d i e r -

    e n t s o u r c e s m a y m a p t o t h e s a m e c l a s s . A s a r e s u l t , t h e r e m a y b e m u l t i p l e

    l t e r s a s s o c i a t e d t o a c l a s s . F i l t e r s a r e d i s c u s s e d i n m o r e d e t a i l i n t h e n e x t

    s e c t i o n . T h e c b q n d t c f f u n c t i o n i n n e t s c h e d s c h c b q . c i s s h o w n b e l o w a s

    a n e x a m p l e :

    s t a t i c s t r u c t t c f _ p r o t o * * c b q _ f i n d _ t c f s t r u c t Q d i s c * s c h , u n s i g n e d l o n g a r g

    s t r u c t c b q _ s c h e d _ d a t a * q = s t r u c t c b q _ s c h e d _ d a t a * s c h - d a t a ;

    s t r u c t c b q _ c l a s s * c l = s t r u c t c b q _ c l a s s * a r g ;

    i f c l = = N U L L

    c l = & q - l i n k ;

    r e t u r n & c l - f i l t e r _ l i s t ;

    T h e c b q n d t c f f u n c t i o n r e t u r n s t h e p o i n t e r t o t h e l i s t o f l t e r s . F i l t e r s

    a r e m a i n t a i n e d i n a s t r u c t u r e n a m e d t c f p r o t o i n i n c l u d e n e t p k t c l s . h . T h e

    t c f c h a i n f u n c t i o n i s i n v o k e d i n t h e t c c t l t l t e r f u n c t i o n i n n e t s c h e d c l s a p i . c .

    T h i s f u n c t i o n i s c a l l e d w h e n a n a t t e m p t i s m a d e t o c r e a t e m o d i f y d e l e t e g e t

    a l t e r n o d e .

    3 . 5 . 8 B i n d t c f

    T h e b i n d t c f f u n c t i o n i s u s e d t o a t t a c h a n i n s t a n c e o f a l t e r t o a c l a s s . T h e

    c b q b i n d l t e r f u n c t i o n i n n e t s c h e d s c h c b q . c i s a n e x a m p l e f o r t h e b i n d t c f

    f u n c t i o n o n a c l a s s .

    s t a t i c u n s i g n e d l o n g c b q _ b i n d _ f i l t e r s t r u c t Q d i s c * s c h , u 3 2 c l a s s i d

    s t r u c t c b q _ s c h e d _ d a t a * q = s t r u c t c b q _ s c h e d _ d a t a * s c h - d a t a ;

    s t r u c t c b q _ c l a s s * c l = c b q _ c l a s s _ l o o k u p q , c l a s s i d ;

    2 5

  • 8/2/2019 Advanced Networking Overview

    26/56

    i f c l

    c l - f i l t e r s + + ;

    r e t u r n u n s i g n e d l o n g c l ;

    r e t u r n 0 ;

    A s s h o w n i n t h i s f u n c t i o n , w h e n t h e c b q b i n d l t e r f u n c t i o n i s c a l l e d , t h e

    l t e r c o u n t f o r t h e c l a s s i s i n c r e m e n t e d . T h i s f u n c t i o n i s a l m o s t s i m i l a r t o

    t h e g e t f u n c t i o n o n a c l a s s . T h e d i e r e n c e i s t h a t a c l a s s t h a t i s p o i n t e d t o

    b y l t e r s c a n n o t b e d e l e t e d w i t h o u t d e l e t i n g t h e l t e r s . T h a t i s , t h e q u e u i n g

    d i s c i p l i n e e x p l i c i t l y r e f u s e s r e q u e s t s t o d e l e t e a c l a s s i f t h e c l a s s i s i n u s e .

    T h i s c a n b e s e e n f r o m t h e f o l l o w i n g p o r t i o n o f t h e c o d e f r o m t h e c b q d e l e t e

    f u n c t i o n i n n e t s c h e d s c h c b q . c

    s t a t i c i n t c b q _ d e l e t e s t r u c t Q d i s c * s c h , u n s i g n e d l o n g a r g

    .

    .

    i f c l - f i l t e r s | | c l - c h i l d r e n | | c l = = & q - l i n k

    r e t u r n - E B U S Y ;

    .

    .

    .

    H o w e v e r , t h e r e i s a b u g i n t h e d s m a r k q u e u i n g d i s c i p l i n e i m p l e m e n t a t i o n .

    I n t h i s c a s e , t h e g e t a n d b i n d t c f f u n c t i o n s m a p t o t h e d s m a r k g e t f u n c t i o n ,

    w h i c h i s i n c o r r e c t . T h u s a c l a s s b e i n g p o i n t e d t o b y a l t e r m a y b e d e l e t e d ,

    w h i c h i s n o t t h e d e s i r e d b e h a v i o r .

    3 . 5 . 9 U n b i n d t c f

    T h e u n b i n d t c f f u n c t i o n i s u s e d t o r e m o v e a n i n s t a n c e o f a l t e r a t t a c h e d t o

    a c l a s s . T h e c b q u n b i n d l t e r f u n c t i o n i n n e t s c h e d s c h c b q . c i s a n e x a m p l e

    f o r t h e u n b i n d t c f f u n c t i o n o n a c l a s s .

    s t a t i c v o i d c b q _ u n b i n d _ f i l t e r s t r u c t Q d i s c * s c h , u n s i g n e d l o n g a r g

    2 6

  • 8/2/2019 Advanced Networking Overview

    27/56

    s t r u c t c b q _ c l a s s * c l = s t r u c t c b q _ c l a s s * a r g ;

    c l - f i l t e r s - - ;

    T h i s p o r t i o n o f t h e c o d e c l e a r l y i n d i c a t e s t h a t t h e u n b i n d t c f f u n c t i o n i s

    s i m i l a r t o t h e p u t f u n c t i o n o n a c l a s s . T h e c o u n t o f t h e n u m b e r o f l t e r s

    a t t a c h e d t o t h e c l a s s i s d e c r e m e n t e d . F o r a c l a s s t o b e d e l e t e d , t h i s c o u n t

    m u s t b e z e r o .

    3 . 5 . 1 0 D u m p c l a s s

    T h e d u m p c l a s s f u n c t i o n o n a c l a s s i s u s e d t o d u m p d i a g n o s t i c d a t a a b o u t

    t h e c l a s s . T h e r e i s a l o t o f d a t a t h a t i s m a i n t a i n e d a b o u t t h e c l a s s e s a n d t h e

    d u m p f u n c t i o n i s u s e d t o o b s e r v e t h e s e v a l u e s . T h e r e i s n o t h i n g m o r e t h a t

    n e e d s t o b e e l a b o r a t e d o n t h e d u m p c l a s s f u n c t i o n .

    W h e n t h e e n q u e u e f u n c t i o n o f a q u e u i n g d i s c i p l i n e i s i n v o k e d , t h e t c c l a s s i f y

    f u n c t i o n i n i n c l u d e n e t p k t c l s . h i s c a l l e d t o d e t e r m i n e t h e c l a s s t o w h i c h t h e

    p a c k e t b e l o n g s . T h e s i m p l e s t f o r m o f c l a s s i c a t i o n p o s s i b l e i s t h e s p e c i c a -

    t i o n o f t h e s k b - p r i o r i t y e l d i n s t r u c t s k b u i n i n c l u d e l i n u x s k b u . h .

    I f s k b - p r i o r i t y i s s p e c i e d , t h e n n o o t h e r c l a s s i c a t i o n i s a t t e m p t e d . s k b -

    p r i o r i t y i s s e t t o s k - p r i o r i t y i n i n c l u d e n e t s o c k . h w h e n t h e p a c k e t i s

    c r e a t e d . T h e v a l u e o f s k - p r i o r i t y c a n b e s p e c i e d w i t h t h e h e l p o f t h e s e t -

    s o c k o p t c a l l . T h e S O P R I O R I T Y o p t i o n i n t h e s e t s o c k o p t c a l l n e e d s t o b e

    u s e d f o r t h i s p u r p o s e . H o w e v e r t i l l l i n u x k e r n e l v e r s i o n 2 . 2 . 3 , t h e v a l u e o f s k -

    p r i o r i t y i s l i m i t e d b e t w e e n 0 a n d 7 . T h e r e f o r e t h i s w a y o f c l a s s i f y i n g p a c k e t s

    d o e s n o t w o r k . I t i s w o r t h m e n t i o n i n g a t t h i s p o i n t t h a t s k b - p r i o r i t y m a y

    c o n t a i n o t h e r v a l u e s l i k e t h e T O S b y t e i n t h e I P h e a d e r . A l l t h e s e v a l u e s a r e

    l e s s t h a n 6 5 5 3 6 , w h i c h i s t h e s m a l l e s t v a l i d c l a s s n u m b e r a s t h e m i n i m u m

    p o s s i b l e v a l u e f o r t h e m a j o r n u m b e r o f a c l a s s i s 1 . O n s e l e c t i n g t h e c l a s s ,

    t h e e n q u e u e f u n c t i o n o f t h e q u e u i n g d i s c i p l i n e o w n e d b y t h i s c l a s s i s i n v o k e d .

    I n t h e n e x t s e c t i o n , w e w i l l l o o k i n t o t h e d e t a i l s i n v o l v e d i n t h e i m p l e -

    m e n t a t i o n o f l t e r s .

    3 . 6 F i l t e r s

    F i l t e r s a r e u s e d t o c l a s s i f y p a c k e t s b a s e d o n c e r t a i n p r o p e r t i e s o f t h e p a c k e t ,

    e . g . , T O S b y t e i n t h e I P h e a d e r , I P a d d r e s s e s , p o r t n u m b e r s e t c . I t i s i n -

    2 7

  • 8/2/2019 Advanced Networking Overview

    28/56

    v o k e d w h e n t h e e n q u e u e f u n c t i o n o f a q u e u i n g d i s c i p l i n e i s i n v o k e d . Q u e u i n g

    d i s c i p l i n e s u s e l t e r s t o a s s i g n t h e i n c o m i n g p a c k e t s t o o n e o f i t s c l a s s e s .

    F i l t e r s c a n b e m a i n t a i n e d p e r c l a s s o r p e r q u e u i n g d i s c i p l i n e b a s e d o n

    t h e d e s i g n o f t h e q u e u i n g d i s c i p l i n e . A s a l r e a d y m e n t i o n e d i n t h e p r e v i o u s

    s e c t i o n , l t e r s a r e m a i n t a i n e d i n l t e r l i s t s . T h e l t e r l i s t i s s p e c i e d a s a

    s t r u c t t c f p r o t o , i n i n c l u d e n e t p k t c l s . h .

    s t r u c t t c f _ p r o t o

    * F a s t a c c e s s p a r t *

    s t r u c t t c f _ p r o t o * n e x t ;

    v o i d * r o o t ;

    i n t * c l a s s i f y s t r u c t s k _ b u f f * , s t r u c t t c f _ p r o t o * ,

    s t r u c t t c f _ r e s u l t * ;

    u 3 2 p r o t o c o l ;

    * A l l t h e r e s t *

    u 3 2 p r i o ;

    u 3 2 c l a s s i d ;

    s t r u c t Q d i s c * q ;

    v o i d * d a t a ;

    s t r u c t t c f _ p r o t o _ o p s * o p s ;

    ;

    T h i s s t r u c t u r e i s u s e d t o r e p r e s e n t l t e r l i s t s a n d i s m a i n t a i n e d b y t h e

    c l a s s e s a n d q u e u i n g d i s c i p l i n e s . A s a n e x a m p l e , t h e c b q c l a s s s t r u c t u r e i n

    n e t s c h e d s c h c b q . c m a i n t a i n s t h e l t e r l i s t b y u s i n g t h e t c f p r o t o s t r u c t u r e .

    T h e t c f c h a i n f u n c t i o n o n c l a s s e s , d e s c r i b e d i n t h e p r e v i o u s s e c t i o n , i s u s e d

    t o r e t u r n t h e a n c h o r t o a l t e r l i s t , w h i c h c a n b e u s e d t o t r a v e r s e t h e l t e r

    l i s t . F i l t e r l i s t s a r e o r d e r e d b y p r i o r i t y , i n a s c e n d i n g o r d e r . A l s o , t h e e n t r i e s

    a r e k e y e d b y t h e p r o t o c o l f o r w h i c h t h e y a p p l y , e . g . , I P , U D P e t c . F i l t e r s f o r

    t h e s a m e p r o t o c o l o n t h e s a m e l t e r l i s t m u s t h a v e d i e r e n t p r i o r i t y v a l u e s .

    T h e p r o t o c o l n u m b e r s a r e u s e d i n s k b - p r o t o c o l a n d t h e y a r e d e n e d i n

    i n c l u d e l i n u x i f e t h e r . h .

    F i l t e r s m a y a l s o h a v e a n i n t e r n a l s t r u c t u r e : i t m a y c o n t r o l i n t e r n a l e l e -

    m e n t s , w h i c h a r e r e f e r e n c e d b y a h a n d l e . T h e s e h a n d l e s a r e 3 2 - b i t l o n g , b u t

    a r e n o t d i v i d e d i n t o m a j o r a n d m i n o r n u m b e r s l i k e c l a s s I D s . H a n d l e 0 r e f e r s

    t o t h e l t e r i t s e l f . L i k e c l a s s e s , l t e r s a l s o h a v e a n i n t e r n a l I D , w h i c h c a n

    2 8

  • 8/2/2019 Advanced Networking Overview

    29/56

    b e o b t a i n e d w i t h t h e h e l p o f a g e t f u n c t i o n . T h e b a s i c s t r u c t u r e o f l t e r s i s

    s h o w n i n F i g u r e 4 .

    Fi l ter Prio 1 Fi l ter Prio 2

    Queuing Disc ipl ine / Class es

    Elemen t Handle = X

    Elemen t Handle = Y

    F i g u r e 4 : S t r u c t u r e o f F i l t e r s

    W h e n t h e e n q u e u e f u n c t i o n o f a q u e u i n g d i s c i p l i n e i s i n v o k e d , t h e t c c l a s s i f y

    f u n c t i o n i n i n c l u d e n e t p k t c l s . h i s i n v o k e d t o c l a s s i f y t h e p a c k e t .

    e x t e r n _ _ i n l i n e _ _ i n t t c _ c l a s s i f y s t r u c t s k _ b u f f * s k b , s t r u c t t c f _ p r o t o * t p ,

    s t r u c t t c f _ r e s u l t * r e s

    i n t e r r = 0 ;

    u 3 2 p r o t o c o l = s k b - p r o t o c o l ;

    f o r ; t p ; t p = t p - n e x t

    i f t p - p r o t o c o l = = p r o t o c o l | |

    t p - p r o t o c o l = = _ _ c o n s t a n t _ h t o n s E T H _ P _ A L L

    & & e r r = t p - c l a s s i f y s k b , t p , r e s = 0

    r e t u r n e r r ;

    r e t u r n - 1 ;

    A s s e e n a b o v e i n t h i s f u n c t i o n , t h e p r o t o c o l t o w h i c h t h e p a c k e t b e l o n g s t o

    i s d e t e r m i n e d f r o m s k b - p r o t o c o l . O n c e t h i s i s o b t a i n e d , t h e l t e r s c o r r e -

    s p o n d i n g t o t h i s p r o t o c o l a r e a l l a p p l i e d i n t h e o r d e r o f p r i o r i t y . W i t h i n

    e a c h l t e r a l l t h e i n t e r n a l e l e m e n t s a r e t r a v e r s e d i n a n a t t e m p t t o c l a s s i f y

    2 9

  • 8/2/2019 Advanced Networking Overview

    30/56

    t h e p a c k e t . O n c e t h e p a c k e t i s c l a s s i e d , a s a l r e a d y m e n t i o n e d , t h e e n q u e u e

    f u n c t i o n o f t h e q u e u i n g d i s c i p l i n e o w n e d b y t h e c l a s s i s i n v o k e d . T h i s p r o c e s s

    o f o b t a i n i n g a m a t c h f o r t h e p a c k e t i s s h o w n i n F i g u r e 5 .

    FILTER FILTER

    ELEMENT A

    ELEMENT B

    ELEMENT X

    ELEMENT Y

    OK

    UNSPEC

    NO MATCH

    MATCH

    F i g u r e 5 : M a t c h i n g a l t e r

    L e t u s n o w d i s c u s s t h e f u n c t i o n s t h a t c a n b e p e r f o r m e d o n t h e l t e r s . T h e

    f u n c t i o n s a r e d e n e d i n t h e t c p r o t o o p s s t r u c t u r e i n i n c l u d e n e t p k t c l s . h .

    3 . 6 . 1 C l a s s i f y

    T h e c l a s s i f y f u n c t i o n o n a l t e r i s u s e d t o m a t c h a p a c k e t t o a c l a s s b a s e d o n

    c e r t a i n p r o p e r t i e s o f t h e p a c k e t . T h e r e s u l t o f a n y c l a s s i c a t i o n c a n b e o n e o f

    f o u r r e t u r n v a l u e s f r o m t h e p o l i c i n g f u n c t i o n t c f p o l i c e i n n e t s c h e d p o l i c e . c ,

    n a m e l y T C P O L I C E U N S P E C , T C P O L I C E O K , T C P O L I C E R E C L A S S I F Y

    o r T C P O L I C E S H O T . T h e p o l i c e r i s d i s c u s s e d i n m o r e d e t a i l i n t h e n e x t

    s e c t i o n . A t t h i s p o i n t , i t i s e n o u g h t o u n d e r s t a n d t h a t t h e t c c l a s s i f y f u n c -

    t i o n r e t u r n s T C P O L I C E U N S P E C w h e n n o m a t c h i n g l t e r i s f o u n d f o r

    t h e p a c k e t . I f n o t , t h e c l a s s i e r l l s i n t h e t c f r e s u l t s t r u c t u r e d e n e d

    i n i n c l u d e n e t p k t c l s . h a n d r e t u r n s i t . T h e t c f r e s u l t s t r u c t u r e c o n t a i n s

    t h e i n t e r n a l I D a s w e l l a s t h e c l a s s I D o f t h e c l a s s t o w h i c h t h e p a c k e t

    b e l o n g s . A s a n e x a m p l e , l e t u s l o o k i n t o t h e r o u t e c l a s s i f y f u n c t i o n i n

    n e t s c h e d c l s r o u t e . c .

    3 0

  • 8/2/2019 Advanced Networking Overview

    31/56

    s t a t i c i n t r o u t e _ c l a s s i f y s t r u c t s k _ b u f f * s k b , s t r u c t t c f _ p r o t o * t p ,

    s t r u c t t c f _ r e s u l t * r e s

    s t r u c t d s t _ e n t r y * d s t = s k b - d s t ;

    i f d s t

    u 3 2 c l i d = d s t - t c l a s s i d ;

    i f c l i d & & T C _ H _ M A J c l i d = = 0 | |

    ! T C _ H _ M A J c l i d ^ t p - q - h a n d l e

    r e s - c l a s s i d = c l i d ;

    r e s - c l a s s = 0 ;

    r e t u r n 0 ;

    r e t u r n - 1 ;

    T h e r o u t e c l a s s i e r c l a s s i e s p a c k e t s b a s e d o n t h e d e s t i n a t i o n I P a d d r e s s .

    I n t h e r o u t e c l a s s i f y f u n c t i o n , t h e d e s t i n a t i o n i s a s s o c i a t e d w i t h a d s t e n t r y

    s t r u c t u r e i n i n c l u d e n e t d s t . h . T h e c l a s s I D o f t h e c l a s s i s s t o r e d i n t h e

    t c l a s s i d e l d o f t h e d s t e n t r y s t r u c t u r e . I f t h e d e s t i n a t i o n t o w h i c h t h e p a c k e t

    n e e d s t o b e s e n t i s d e t e r m i n e d , t h e c o r r e s p o n d i n g c l a s s I D i s r e t u r n e d i n t h e

    t c f r e s u l t s t r u c t u r e . I n g e n e r a l , t h e l t e r s a r e a l s o a s s o c i a t e d w i t h p o l i c e r s ,

    t o d e t e r m i n e i f a o w i s i n p r o l e . H a v i n g d i s c u s s e d t h e c l a s s i f y f u n c t i o n , l e t

    u s n o w d i s c u s s t h e i n i t f u n c t i o n o f a l t e r .

    3 . 6 . 2 I n i t

    T h e i n i t f u n c t i o n o n a l t e r i s u s e d t o i n i t i a l i z e t h e p a r a m e t e r s f o r a l t e r . A s

    a n e x a m p l e , l e t u s t a k e a l o o k a t t h e t c i n d e x i n i t f u n c t i o n i n n e t s c h e d c l s t c i n d e x . c ,

    w h i c h i s u s e d t o i n i t i a l i z e t h e p a r a m e t e r s f o r a t c i n d e x c l a s s i e r .

    s t a t i c i n t t c i n d e x _ i n i t s t r u c t t c f _ p r o t o * t p

    s t r u c t t c i n d e x _ d a t a * p ;

    p = k m a l l o c s i z e o f s t r u c t t c i n d e x _ d a t a , G F P _ K E R N E L ;

    i f ! p

    3 1

  • 8/2/2019 Advanced Networking Overview

    32/56

    r e t u r n - E N O M E M ;

    t p - r o o t = p ;

    m e m s e t p - h , 0 , s i z e o f p - h ;

    p - m a s k = 0 x f f f f ;

    p - s h i f t = 0 ;

    p - f a l l _ t h r o u g h = 1 ;

    r e t u r n 0 ;

    T h e t c i n d e x d a t a s t r u c t u r e , t h e d e n i t i o n o f w h i c h i s a v a i l a b l e i n t h e s a m e

    l e , i s i n i t i a l i z e d i n t h e t c i n d e x i n i t f u n c t i o n . T h e m a s k a n d t h e s h i f t , w h i c h

    a r e u s e d i n c o m b i n a t i o n t o d e t e r m i n e a h a n d l e a r e s e t t o 0 x a n d 0 r e -

    s p e c t i v e l y . T h e d e t a i l s o f t h e t c i n d e x c l a s s i e r a r e d i s c u s s e d i n m o r e d e -

    t a i l l a t e r . T h e i n i t f u n c t i o n i s i n v o k e d f r o m t h e t c c t l t l t e r f u n c t i o n i n

    n e t s c h e d c l s a p i . c , w h i c h i s c a l l e d w h e n e v e r a l t e r i s a d d e d , d e l e t e d o r

    c h a n g e d .

    3 . 6 . 3 D e s t r o y

    T h e d e s t r o y f u n c t i o n o n a l t e r i s u s e d t o r e m o v e a l t e r . T h e c b q d e s t r o y

    f u n c t i o n w h i c h w a s d i s c u s s e d p r e v i o u s l y , a l s o r e s u l t s i n t h e d e s t r o y f u n c -

    t i o n o n t h e l t e r s b e i n g c a l l e d . I f t h e l t e r o r a n y o f i t s e l e m e n t s a r e

    r e g i s t e r e d w i t h c l a s s e s , t h e d e s t r o y f u n c t i o n o n a l t e r c a l l s t h e u n b i n d t c f

    f u n c t i o n t o d e - r e g i s t e r f r o m t h e s e c l a s s e s . T h e u n b i n d t c f f u n c t i o n w a s d i s -

    c u s s e d i n t h e p r e v i o u s s e c t i o n o n c l a s s e s . I t a l s o r e m o v e s a n y p o l i c e r t h a t

    h a d b e e n a t t a c h e d t o l t e r . L e t u s l o o k a t t h e t c i n d e x d e s t r o y f u n c t i o n i n

    n e t s c h e d c l s t c i n d e x . c a s a n e x a m p l e .

    s t a t i c v o i d t c i n d e x _ d e s t r o y s t r u c t t c f _ p r o t o * t p

    s t r u c t t c i n d e x _ d a t a * p = P R I V t p ;

    s t r u c t t c i n d e x _ f i l t e r * f ;

    i n t i ;

    f o r i = 0 ; i H A S H _ S I Z E ; i + +

    w h i l e p - h i

    u n s i g n e d l o n g c l ;

    3 2

  • 8/2/2019 Advanced Networking Overview

    33/56

    f = p - h i ;

    p - h i = f - n e x t ;

    c l = x c h g & f - r e s . c l a s s , 0 ;

    i f c l t p - q - o p s - c l _ o p s - u n b i n d _ t c f t p - q , c l ;

    i f d e f C O N F I G _ N E T _ C L S _ P O L I C E

    t c f _ p o l i c e _ r e l e a s e f - p o l i c e ;

    e n d i f

    k f r e e f ;

    k f r e e p ;

    t p - r o o t = N U L L ;

    T h i s f u n c t i o n s h o w s t h a t t h e d e s t r o y f u n c t i o n o n a l t e r u n b i n d s i t s e l f

    f r o m a l l t h e c l a s s e s t o w h i c h i t w a s b o u n d u s i n g b i n d t c f f u n c t i o n o n t h e

    c l a s s a n d r e m o v e s t h e p o l i c e r t h a t w a s a t t a c h e d t o i t . T h e d e s t r o y f u n c -

    t i o n t a k e s t h e t c f p r o t o s t r u c t u r e a s a n i n p u t t o d e t e r m i n e t h e l t e r t h a t

    n e e d s t o b e d e l e t e d a n d t o d e t e r m i n e t h e c l a s s e s a n d q u e u e s t o w h i c h i t i s

    a t t a c h e d . I t t h e n f r e e s t h e m e m o r y t h a t i s o c c u p i e d b y t h e l t e r . F o r m o r e

    c o m p l i c a t e d l t e r s l i k e t h e u 3 2 , t h e d e s t r o y f u n c t i o n i s a l o t m o r e c o m p l i c a t e d

    t h a n t h i s . T h e d e s t r o y f u n c t i o n i s i n v o k e d f r o m t h e t c c t l t l t e r f u n c t i o n i n

    n e t s c h e d c l s a p i . c .

    3 . 6 . 4 G e t

    A s a l r e a d y m e n t i o n e d , e v e r y l t e r h a s a n i n t e r n a l I D c o r r e s p o n d i n g t o t h e

    h a n d l e . T h i s m a p p i n g c a n b e o b t a i n e d w i t h t h e h e l p o f t h e g e t f u n c t i o n o n

    t h e l t e r . T h i s i s s i m i l a r t o t h e g e t f u n c t i o n o n a c l a s s . T h e t c f r e s u l t s t r u c -

    t u r e , w h i c h i s u s e d i n t h e c a s e o f c l a s s e s , i s a l s o u s e d i n t h e c a s e o f l t e r s . A s

    a n e x a m p l e , l e t u s l o o k a t t h e t c i n d e x g e t f u n c t i o n i n n e t s c h e d c l s t c i n d e x . c .

    s t a t i c u n s i g n e d l o n g t c i n d e x _ g e t s t r u c t t c f _ p r o t o * t p , u 3 2 h a n d l e

    D P R I N T K " t c i n d e x _ g e t t p p , h a n d l e 0 x 0 8 x n " , t p , h a n d l e ;

    r e t u r n u n s i g n e d l o n g l o o k u p P R I V t p , h a n d l e ;

    s t a t i c s t r u c t t c i n d e x _ f i l t e r * l o o k u p s t r u c t t c i n d e x _ d a t a * p , _ _ u 1 6 k e y

    3 3

  • 8/2/2019 Advanced Networking Overview

    34/56

    s t r u c t t c i n d e x _ f i l t e r * f ;

    f o r f = p - h H A S H k e y ; f ; f = f - n e x t

    i f f - k e y = = k e y b r e a k ;

    r e t u r n f ;

    T h i s t c i n d e x g e t f u n c t i o n t a k e s a s i n p u t t h e 3 2 - b i t h a n d l e a n d a p o i n t e r t o

    t h e t c f p r o t o s t r u c t u r e , w h i c h c o n t a i n s t h e t h e i n f o r m a t i o n a b o u t t h e l t e r .

    I t t h e n c a l l s t h e l o o k u p f u n c t i o n , w h i c h w a l k s t h r o u g h t h e l t e r l i s t t o d e -

    t e r m i n e t h e l t e r w i t h t h e s p e c i e d h a n d l e . T h e l o o k u p f u n c t i o n r e t u r n s t h e

    c o r r e s p o n d i n g t c i n d e x l t e r s t r u c t u r e , w h i c h c o n t a i n s t h e t c f r e s u l t s t r u c t u r e

    a s a m e m b e r . T h e g e t f u n c t i o n o n a l t e r i s i n v o k e d f r o m t h e t c c t l t l t e r

    f u n c t i o n i n n e t s c h e d c l s a p i . c . I f t h e t c c t l t l t e r f u n c t i o n i s i n v o k e d t o

    d e l e t e a l t e r , t h e g e t f u n c t i o n r e t u r n s t h e i n t e r n a l I D , w h i c h c a n t h e n b e

    u s e d t o c a l l t h e d e s t r o y f u n c t i o n o n a l t e r .

    3 . 6 . 5 P u t

    T h e p u t f u n c t i o n o n a c l a s s i s u s e d t o d e - r e f e r e n c e a l t e r t h a t w a s p r e v i o u s l y

    r e f e r e n c e d u s i n g t h e g e t f u n c t i o n . B u t i n g e n e r a l , t h e p u t f u n c t i o n i s n e v e r

    i n v o k e d . A l o o k a t t h e c l a s s i e r l e s l e s i n n e t s c h e d s t a r t i n g w i t h t h e

    p r e x c l s w