qmanager notes

8
Washington WASHINGTON UNIVERSITY IN ST LOUIS [email protected] QManager Notes Fred

Upload: lila-ford

Post on 30-Dec-2015

20 views

Category:

Documents


3 download

DESCRIPTION

QManager Notes. Fred. > CLK. > CLK. > CLK. > CLK. DATA_DCHR_FREE_PTR_F (in, 17..0). FULL_DCHR_QLENC_F (in). FULL_DCHR_SWQM_F (in). FULL_DP_DCHR_OUTC_F (in). EMPTY_QMGR_F (in). EMPTY_DCHR_FREE_PTR_F (in). COUNT_DCHR_PKTC_F (in). READY_IN (in). QM Dispatcher. QMGR_F_CTL. > CLK. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: QManager Notes

WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

fredkarlwustledu

QManager Notes

Fred

2WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

QM Dispatcher

STATE_TRANS

FULL_DP_DCHR_OUTC_F (in)

FULL_DCHR_SWQM_F (in)

FULL_DCHR_QLENC_F (in)

EMPTY_QMGR_F (in)

EMPTY_DCHR_FREE_PTR_F (in)

COUNT_DCHR_PKTC_F (in)

READY_IN (in)

DATA_QMGR_F (in 310)

next_stateCLK0

gt CLK

state

LATCH_WORD

gt CLK

FC_flag

copycount (10)

DEST_CTL

gt CLK

DATA_DCHR_FREE_PTR_F (in 170)

DP_flag

SR_flag

TO_flag

qid (90)

get_comref_entry

qid_new (90)

WRITE_HEADER

gt CLK

data_int (950)

pkt_ptr (190)

comm_ref_ptr (170)

destination (10)

RD_DCHR_FREE_PTR_F_DCHR (out)

FM_flag

SC_flagSB_flag

DATA_DCHR_QM_F_DCHR (out 950)

DATA_DCHR_PKTC_F_DCHR (out 350)

DATA_DP_DCHR_OUTC_F_DCHR (out 350)

WEN_DP_DCHR_OUTC_F_DCHR (out)

WEN_DCHR_PKTC_F_DCHR (out)

WEN_DCHR_SWQM_F_DCHR (out)

WEN_DCHR_QLENC_F_DCHR (out)

QMGR_F_CTL

gt CLK

RD_QMGR_F_QMGR (out)

DEC_HD_CNT_DCHR (out)

HEADER_ONLY_CTL

gt CLK

CARL FIFO EMPTY_QMGR_F RD_QMGR_F_QMGR DATA_QMGR_F

Line Card (QLNC) FIFO FULL_DCHR_QLENC_F WEN_DCHR_QLENC_F_DCHR DATA_DCHR_QM_F_DCHR

SW (SWQM) FIFOFULL_DCHR_SWQM_F WEN_DCHR_SWQM_F_DCHR DATA_DCHR_QM_F_DCHR

Drop (OUTC) FIFOFULL_DP_DCHR_OUTC_F WEN_DP_DCHR_OUTC_F_DCHR DATA_DP_DCHR_OUTC_F_DCHR

Signals Not Usedprev_stateDG_flag

Constants Defined but not used

SW_DATAGRAM_BASELC_DATAGRAM_BASE

3WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Q Hdr table

next_q

deficit

next_q

deficit

active (0)

head_ptr

tail_ptr

deficit

active (1)

head_ptr

tail_ptr

next_q

deficit

active (1)

head_ptr

tail_ptr

next_q

deficit

active (0)

head_ptr

tail_ptr

next_q

deficit

active (1)

head_ptr

tail_ptr

next_q

active (0)

head_ptr

tail_ptr

1

2

3

4

5

511

qid(index)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flagscp

y next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Invalid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Invalid)

SRAM (2 wordsentry 36-bitsword)

deficit

active (1)

head_ptr

tail_ptr

next_q

Previous

deficit

active (1)

head_ptr

tail_ptr

next_q

Current

cached copiesin LNQM may be outof sync with the table

next_q (11-bit)head_ptr (18-bit)deficit (32-bit)A head_ptr (18-bit)02947 11

Qhdr Table Entry (word size 80-bit))

79

4WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

CARL lt-gt QMGR

External Flags (8 bit)

NM EX HO HR FM TO

Internal Flags (8 bit)

N N-15N-7

DG SB SR IC FC LP SC --

5 4 3 2 1 0 7 6 5 4 3 2 1 0

DP RC

7 6

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101624

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088

Cpy Cnt

MB

DG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

QMGR lt-gt OSAR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)31 1624

MB

DG SB SR IC FC LP SC --

29

Queue Length (24 bit)

0

31 24

23

2131 01922

bull External Flag Valuesndash DP (Drop Packet) SPC directive to FPX Will

always be zero coming into SPCndash RC (Reclassify Packet) SPC directive to FPX

May be 0 or 1 going to SPC SPC must redefinendash NM (No Match) FPX can not classify (no route)

FPX to SPC Set to 0 before returning to FPXndash EX (Exception Packet) Requires non-fast path

IP options Non IPv4 FPX to SPC Set to 0 before returning to FPX

ndash HO (Header Only) FPX to SPC Set if packet size gt 120B and only first chunk sent to SPC SPC must not modify SPC can not drop internally if this bit is set

ndash HR (Header Only Return) Internal FPX flag SPC must not modify

ndash FM (From LCSW) Set by FPX SPC can use but not modify

ndash TO (To LCSW) Set by FPX SPC can use but not modify

bull Internal Flag Valuesndash DG (DataGram)ndash SB (SPC-Bound)ndash SR (SPC-Return)ndash IC (Initial Copy) CARL to QMGR qmgr always

sets to 0ndash FC (Final Copy) CARL to QMGR qmgr always

sets to 0ndash LP (LFS oPtion)ndash SC (Single-Chunk)ndash MC

5WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

packet Header Flow through QMGR

SRAM Single Copy Packet Header Format

next packet header in SRAM

Total Length Packet Pointer

External Flags DP RC NM EX HO HR FM TO

Internal FlagsDG SB SR LP SC

2035 28

OPN

1718 023

MB MC

2035 25 19 022

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101924

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088cpycnt

MBDG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

31 1624

MB

DG SB SR LP SC

--

29

Queue Length (24 bit)

0

31 24

23

2131 01922

QMGR lt-gt OSAR

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

SPIOPN

31 0101624

SPIPPN

MClsquo0rsquo lsquo0rsquo

lsquo0rsquo current QID(80)

SPIOPN

NotesMC = (cpycnt == 0) 0 1

In

Out

6WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

SRAM Table Entries

SRAM Single Copy Packet Header Format

total length xxppn common reference ptr35 0192225

SRAM Multi-copy Packet Header Format

XXX

35X

0

35 01933common reference ptrcpy X

SRAM Multi-copy Common Reference Entry

35 0172027external flags internal flags cpy next header

35 0172027external flags internal flags cpy next header

35 0192225total length xxppn common reference ptr

External Flags (8 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)N N-15N-7

DG SB SR IC FC LP SC --

35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20

FIX

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 2: QManager Notes

2WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

QM Dispatcher

STATE_TRANS

FULL_DP_DCHR_OUTC_F (in)

FULL_DCHR_SWQM_F (in)

FULL_DCHR_QLENC_F (in)

EMPTY_QMGR_F (in)

EMPTY_DCHR_FREE_PTR_F (in)

COUNT_DCHR_PKTC_F (in)

READY_IN (in)

DATA_QMGR_F (in 310)

next_stateCLK0

gt CLK

state

LATCH_WORD

gt CLK

FC_flag

copycount (10)

DEST_CTL

gt CLK

DATA_DCHR_FREE_PTR_F (in 170)

DP_flag

SR_flag

TO_flag

qid (90)

get_comref_entry

qid_new (90)

WRITE_HEADER

gt CLK

data_int (950)

pkt_ptr (190)

comm_ref_ptr (170)

destination (10)

RD_DCHR_FREE_PTR_F_DCHR (out)

FM_flag

SC_flagSB_flag

DATA_DCHR_QM_F_DCHR (out 950)

DATA_DCHR_PKTC_F_DCHR (out 350)

DATA_DP_DCHR_OUTC_F_DCHR (out 350)

WEN_DP_DCHR_OUTC_F_DCHR (out)

WEN_DCHR_PKTC_F_DCHR (out)

WEN_DCHR_SWQM_F_DCHR (out)

WEN_DCHR_QLENC_F_DCHR (out)

QMGR_F_CTL

gt CLK

RD_QMGR_F_QMGR (out)

DEC_HD_CNT_DCHR (out)

HEADER_ONLY_CTL

gt CLK

CARL FIFO EMPTY_QMGR_F RD_QMGR_F_QMGR DATA_QMGR_F

Line Card (QLNC) FIFO FULL_DCHR_QLENC_F WEN_DCHR_QLENC_F_DCHR DATA_DCHR_QM_F_DCHR

SW (SWQM) FIFOFULL_DCHR_SWQM_F WEN_DCHR_SWQM_F_DCHR DATA_DCHR_QM_F_DCHR

Drop (OUTC) FIFOFULL_DP_DCHR_OUTC_F WEN_DP_DCHR_OUTC_F_DCHR DATA_DP_DCHR_OUTC_F_DCHR

Signals Not Usedprev_stateDG_flag

Constants Defined but not used

SW_DATAGRAM_BASELC_DATAGRAM_BASE

3WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Q Hdr table

next_q

deficit

next_q

deficit

active (0)

head_ptr

tail_ptr

deficit

active (1)

head_ptr

tail_ptr

next_q

deficit

active (1)

head_ptr

tail_ptr

next_q

deficit

active (0)

head_ptr

tail_ptr

next_q

deficit

active (1)

head_ptr

tail_ptr

next_q

active (0)

head_ptr

tail_ptr

1

2

3

4

5

511

qid(index)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flagscp

y next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Invalid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Invalid)

SRAM (2 wordsentry 36-bitsword)

deficit

active (1)

head_ptr

tail_ptr

next_q

Previous

deficit

active (1)

head_ptr

tail_ptr

next_q

Current

cached copiesin LNQM may be outof sync with the table

next_q (11-bit)head_ptr (18-bit)deficit (32-bit)A head_ptr (18-bit)02947 11

Qhdr Table Entry (word size 80-bit))

79

4WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

CARL lt-gt QMGR

External Flags (8 bit)

NM EX HO HR FM TO

Internal Flags (8 bit)

N N-15N-7

DG SB SR IC FC LP SC --

5 4 3 2 1 0 7 6 5 4 3 2 1 0

DP RC

7 6

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101624

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088

Cpy Cnt

MB

DG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

QMGR lt-gt OSAR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)31 1624

MB

DG SB SR IC FC LP SC --

29

Queue Length (24 bit)

0

31 24

23

2131 01922

bull External Flag Valuesndash DP (Drop Packet) SPC directive to FPX Will

always be zero coming into SPCndash RC (Reclassify Packet) SPC directive to FPX

May be 0 or 1 going to SPC SPC must redefinendash NM (No Match) FPX can not classify (no route)

FPX to SPC Set to 0 before returning to FPXndash EX (Exception Packet) Requires non-fast path

IP options Non IPv4 FPX to SPC Set to 0 before returning to FPX

ndash HO (Header Only) FPX to SPC Set if packet size gt 120B and only first chunk sent to SPC SPC must not modify SPC can not drop internally if this bit is set

ndash HR (Header Only Return) Internal FPX flag SPC must not modify

ndash FM (From LCSW) Set by FPX SPC can use but not modify

ndash TO (To LCSW) Set by FPX SPC can use but not modify

bull Internal Flag Valuesndash DG (DataGram)ndash SB (SPC-Bound)ndash SR (SPC-Return)ndash IC (Initial Copy) CARL to QMGR qmgr always

sets to 0ndash FC (Final Copy) CARL to QMGR qmgr always

sets to 0ndash LP (LFS oPtion)ndash SC (Single-Chunk)ndash MC

5WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

packet Header Flow through QMGR

SRAM Single Copy Packet Header Format

next packet header in SRAM

Total Length Packet Pointer

External Flags DP RC NM EX HO HR FM TO

Internal FlagsDG SB SR LP SC

2035 28

OPN

1718 023

MB MC

2035 25 19 022

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101924

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088cpycnt

MBDG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

31 1624

MB

DG SB SR LP SC

--

29

Queue Length (24 bit)

0

31 24

23

2131 01922

QMGR lt-gt OSAR

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

SPIOPN

31 0101624

SPIPPN

MClsquo0rsquo lsquo0rsquo

lsquo0rsquo current QID(80)

SPIOPN

NotesMC = (cpycnt == 0) 0 1

In

Out

6WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

SRAM Table Entries

SRAM Single Copy Packet Header Format

total length xxppn common reference ptr35 0192225

SRAM Multi-copy Packet Header Format

XXX

35X

0

35 01933common reference ptrcpy X

SRAM Multi-copy Common Reference Entry

35 0172027external flags internal flags cpy next header

35 0172027external flags internal flags cpy next header

35 0192225total length xxppn common reference ptr

External Flags (8 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)N N-15N-7

DG SB SR IC FC LP SC --

35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20

FIX

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 3: QManager Notes

3WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Q Hdr table

next_q

deficit

next_q

deficit

active (0)

head_ptr

tail_ptr

deficit

active (1)

head_ptr

tail_ptr

next_q

deficit

active (1)

head_ptr

tail_ptr

next_q

deficit

active (0)

head_ptr

tail_ptr

next_q

deficit

active (1)

head_ptr

tail_ptr

next_q

active (0)

head_ptr

tail_ptr

1

2

3

4

5

511

qid(index)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flagscp

y next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Invalid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (InValid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Valid)

ext flags

cpy next pkt ptrint flags

total length ppn spi pkt ptr (Invalid)

SRAM (2 wordsentry 36-bitsword)

deficit

active (1)

head_ptr

tail_ptr

next_q

Previous

deficit

active (1)

head_ptr

tail_ptr

next_q

Current

cached copiesin LNQM may be outof sync with the table

next_q (11-bit)head_ptr (18-bit)deficit (32-bit)A head_ptr (18-bit)02947 11

Qhdr Table Entry (word size 80-bit))

79

4WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

CARL lt-gt QMGR

External Flags (8 bit)

NM EX HO HR FM TO

Internal Flags (8 bit)

N N-15N-7

DG SB SR IC FC LP SC --

5 4 3 2 1 0 7 6 5 4 3 2 1 0

DP RC

7 6

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101624

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088

Cpy Cnt

MB

DG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

QMGR lt-gt OSAR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)31 1624

MB

DG SB SR IC FC LP SC --

29

Queue Length (24 bit)

0

31 24

23

2131 01922

bull External Flag Valuesndash DP (Drop Packet) SPC directive to FPX Will

always be zero coming into SPCndash RC (Reclassify Packet) SPC directive to FPX

May be 0 or 1 going to SPC SPC must redefinendash NM (No Match) FPX can not classify (no route)

FPX to SPC Set to 0 before returning to FPXndash EX (Exception Packet) Requires non-fast path

IP options Non IPv4 FPX to SPC Set to 0 before returning to FPX

ndash HO (Header Only) FPX to SPC Set if packet size gt 120B and only first chunk sent to SPC SPC must not modify SPC can not drop internally if this bit is set

ndash HR (Header Only Return) Internal FPX flag SPC must not modify

ndash FM (From LCSW) Set by FPX SPC can use but not modify

ndash TO (To LCSW) Set by FPX SPC can use but not modify

bull Internal Flag Valuesndash DG (DataGram)ndash SB (SPC-Bound)ndash SR (SPC-Return)ndash IC (Initial Copy) CARL to QMGR qmgr always

sets to 0ndash FC (Final Copy) CARL to QMGR qmgr always

sets to 0ndash LP (LFS oPtion)ndash SC (Single-Chunk)ndash MC

5WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

packet Header Flow through QMGR

SRAM Single Copy Packet Header Format

next packet header in SRAM

Total Length Packet Pointer

External Flags DP RC NM EX HO HR FM TO

Internal FlagsDG SB SR LP SC

2035 28

OPN

1718 023

MB MC

2035 25 19 022

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101924

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088cpycnt

MBDG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

31 1624

MB

DG SB SR LP SC

--

29

Queue Length (24 bit)

0

31 24

23

2131 01922

QMGR lt-gt OSAR

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

SPIOPN

31 0101624

SPIPPN

MClsquo0rsquo lsquo0rsquo

lsquo0rsquo current QID(80)

SPIOPN

NotesMC = (cpycnt == 0) 0 1

In

Out

6WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

SRAM Table Entries

SRAM Single Copy Packet Header Format

total length xxppn common reference ptr35 0192225

SRAM Multi-copy Packet Header Format

XXX

35X

0

35 01933common reference ptrcpy X

SRAM Multi-copy Common Reference Entry

35 0172027external flags internal flags cpy next header

35 0172027external flags internal flags cpy next header

35 0192225total length xxppn common reference ptr

External Flags (8 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)N N-15N-7

DG SB SR IC FC LP SC --

35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20

FIX

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 4: QManager Notes

4WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

CARL lt-gt QMGR

External Flags (8 bit)

NM EX HO HR FM TO

Internal Flags (8 bit)

N N-15N-7

DG SB SR IC FC LP SC --

5 4 3 2 1 0 7 6 5 4 3 2 1 0

DP RC

7 6

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101624

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088

Cpy Cnt

MB

DG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

QMGR lt-gt OSAR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)31 1624

MB

DG SB SR IC FC LP SC --

29

Queue Length (24 bit)

0

31 24

23

2131 01922

bull External Flag Valuesndash DP (Drop Packet) SPC directive to FPX Will

always be zero coming into SPCndash RC (Reclassify Packet) SPC directive to FPX

May be 0 or 1 going to SPC SPC must redefinendash NM (No Match) FPX can not classify (no route)

FPX to SPC Set to 0 before returning to FPXndash EX (Exception Packet) Requires non-fast path

IP options Non IPv4 FPX to SPC Set to 0 before returning to FPX

ndash HO (Header Only) FPX to SPC Set if packet size gt 120B and only first chunk sent to SPC SPC must not modify SPC can not drop internally if this bit is set

ndash HR (Header Only Return) Internal FPX flag SPC must not modify

ndash FM (From LCSW) Set by FPX SPC can use but not modify

ndash TO (To LCSW) Set by FPX SPC can use but not modify

bull Internal Flag Valuesndash DG (DataGram)ndash SB (SPC-Bound)ndash SR (SPC-Return)ndash IC (Initial Copy) CARL to QMGR qmgr always

sets to 0ndash FC (Final Copy) CARL to QMGR qmgr always

sets to 0ndash LP (LFS oPtion)ndash SC (Single-Chunk)ndash MC

5WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

packet Header Flow through QMGR

SRAM Single Copy Packet Header Format

next packet header in SRAM

Total Length Packet Pointer

External Flags DP RC NM EX HO HR FM TO

Internal FlagsDG SB SR LP SC

2035 28

OPN

1718 023

MB MC

2035 25 19 022

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101924

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088cpycnt

MBDG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

31 1624

MB

DG SB SR LP SC

--

29

Queue Length (24 bit)

0

31 24

23

2131 01922

QMGR lt-gt OSAR

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

SPIOPN

31 0101624

SPIPPN

MClsquo0rsquo lsquo0rsquo

lsquo0rsquo current QID(80)

SPIOPN

NotesMC = (cpycnt == 0) 0 1

In

Out

6WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

SRAM Table Entries

SRAM Single Copy Packet Header Format

total length xxppn common reference ptr35 0192225

SRAM Multi-copy Packet Header Format

XXX

35X

0

35 01933common reference ptrcpy X

SRAM Multi-copy Common Reference Entry

35 0172027external flags internal flags cpy next header

35 0172027external flags internal flags cpy next header

35 0192225total length xxppn common reference ptr

External Flags (8 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)N N-15N-7

DG SB SR IC FC LP SC --

35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20

FIX

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 5: QManager Notes

5WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

packet Header Flow through QMGR

SRAM Single Copy Packet Header Format

next packet header in SRAM

Total Length Packet Pointer

External Flags DP RC NM EX HO HR FM TO

Internal FlagsDG SB SR LP SC

2035 28

OPN

1718 023

MB MC

2035 25 19 022

Total Length (11 bit)LFS Rate2 LFS Rate1

31 0101924

PPN Packet Pointer (20 bit)OVIN (5 bit)

63 32515661

Flags (8 bit) Queue Identifier (10 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

95 64738088cpycnt

MBDG SB SR IC FC LP SC --

7779

916 131531 0192429

CARL lt-gt QMGR

PPN OVIN (5 bit) Total Length (11 bit)

LFS Rate2 LFS Rate1

010

08

Packet Pointer (20 bit)

Flags (8 bit)

Queue Identifier (10 bit)

DP RC NM EX HO HR FM TO

Internal Flags (8 bit)

31 1624

MB

DG SB SR LP SC

--

29

Queue Length (24 bit)

0

31 24

23

2131 01922

QMGR lt-gt OSAR

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquo lsquo0rsquolsquo0rsquo

SPIOPN

31 0101624

SPIPPN

MClsquo0rsquo lsquo0rsquo

lsquo0rsquo current QID(80)

SPIOPN

NotesMC = (cpycnt == 0) 0 1

In

Out

6WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

SRAM Table Entries

SRAM Single Copy Packet Header Format

total length xxppn common reference ptr35 0192225

SRAM Multi-copy Packet Header Format

XXX

35X

0

35 01933common reference ptrcpy X

SRAM Multi-copy Common Reference Entry

35 0172027external flags internal flags cpy next header

35 0172027external flags internal flags cpy next header

35 0192225total length xxppn common reference ptr

External Flags (8 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)N N-15N-7

DG SB SR IC FC LP SC --

35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20

FIX

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 6: QManager Notes

6WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

SRAM Table Entries

SRAM Single Copy Packet Header Format

total length xxppn common reference ptr35 0192225

SRAM Multi-copy Packet Header Format

XXX

35X

0

35 01933common reference ptrcpy X

SRAM Multi-copy Common Reference Entry

35 0172027external flags internal flags cpy next header

35 0172027external flags internal flags cpy next header

35 0192225total length xxppn common reference ptr

External Flags (8 bit)DP RC NM EX HO HR FM TO

Internal Flags (8 bit)N N-15N-7

DG SB SR IC FC LP SC --

35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20

FIX

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 7: QManager Notes

7WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

Token Bucket Constrained Output

tokens Bi

Bmax

Fill rate add z tokens every tick (T seconds)

remove Lx tokens to send a packet with L-bits

Sending continuouslyTRavx tokens used each period drain rate Ravx z tokens added every tick replenishment rate = zTz = ceil(RavTx) for Rav(z) lt Rmax zmax = floor(RmaxTx)

So the corresponding sending rates areRav(z) = z(Fx) Rav = Fx 2Fx 3Fx hellip zmaxFx

Ticks to send packet = LTRmax (tickspkt) Tokens to send packet LxGiven packet length in Bytes LB convert xB = 8xb RB = Rb8 Rb = zFxb = zF(xB8)VHDL uses xB = 8192 (tokB) =gt xb = 1024 (tokb)

Burst size(xL tokens to send L bytes zLTR tokens added during send)d = B ndash xBLB + zLBTRmax = B ndash L(x ndash zTRmax) stop sending when lt= 0 so min(n) gt= (BL) (x ndash zTRmax)But z = ceil(RavTx) gt= RavTx so a lower bound is (BxL) (1 ndash RavRmax) Let B = MTU x and L = MTU then n = ceil(Rmax(Rmax-RAV)) or RAV = Rmax(n-1)n for n = 1 2 hellip N

Bucket depth ranged = n(tick) z(toktick) = B ticks to fill = n = Bzit takes MTUrsquo = MTUxB tokens to send ndashMTUrsquo lt d lt= B so scale d as drsquo = d + MTUrsquo then 0 lt drsquo lt= B + MTUrsquoSo max scaled bucket depth = Brsquo = B + MTUrsquo B = MTUrsquo so Brsquo = 2MTUrsquo = 2MTUxMTU = 2048 = 211 x = 8192 = 213 Brsquo = 2 211 213 = 225

Examplex = 64 F = 625MHz Rmax = 1GbpsFx = 9766 Kbps zmax = 1024R (Mbps) = 98 19 29 39 hellip 1000

Packet length = L (b) Desired Rate = Rav (bs) Actual rate = Rmax (bs)Interval (tick) = T (s) F-1 F is nominally 625MHzFill rate = z (tokenstick)Drain rate = x (tokensbit)

Examplex = 1024 (xB = 8192) F = 625MHz Rmax = 1GbpsFx = 61 Kbps (FxB = 76KBps) zmax = 16384 (214)R (Mbps) = 061 hellip 98 104 11 hellip 1000Bmax = 225 Bmin = 224

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)

Page 8: QManager Notes

8WashingtonWASHINGTON UNIVERSITY IN ST LOUIS

Fred Kuhns - 041923

using 8-bits for Z x = 64 (tokensByte)Definitions

Packet length = L (b) Desired Sending Rate = R (bs) Actual link rate = Rmax(bs) Clock period = T (s) (or 1F)

Tokens replenishmenttick = z (toktick) Tokens consumedByte = x (tokB)Max packet size = MTU = 2KB Max bucket depth = Bmax = 2MTU x Min bucket depth = MTU x

ConfigurationX = 26 (tokB) Rmax= 125MBs Bmax =2 MTU 26 = 218 (tok) Bmin = 217(tok) F = 55MHz

R(z) = zFX = z5510664 (Bs) = z 551068 (bs) = z558 (Mbps) alternatively z(R) = ceil(R(bs)855106) = ceil(R(Mbs)855)

SPC traffic is limited to 200Mbpsz = 30 (for 20625Mbs)

Test scenarios0) Link at 1Gbps z = 1450x91 (99688 Mbs) 1) Link at 900Mbps z = 1310x83 (90062 Mbs)2) Link at 500Mbps z = 730x49 (50188 Mbs)3) Link at 200Mbps z = 300x1e (20625 Mbs)4) Link at 100Mbps z = 150x0f (10312 Mbs)5) Link at 50Mbps z = 80x08 (5500 Mbs)6) Link at 10Mbps z = 20x02 (1375 Mbs)

7) Link at 1 Mbps z = 10x01 (688 Mbs)