48
John DeHart [email protected] http://www.arl.wustl.edu/arl Design of a Diversified Router: Common Router Framework

Design of a Diversified Router: Common Router Framework

Embed Size (px)

DESCRIPTION

Design of a Diversified Router: Common Router Framework. John DeHart [email protected] http://www.arl.wustl.edu/arl. Revision History. 5/22/06 (JDD): Updates to data passing from Block to Block. Buffer descriptor stuff probably needs updating. 6/2/06 (JDD): - PowerPoint PPT Presentation

Citation preview

Page 1: Design of a Diversified Router: Common Router Framework

John [email protected]

http://www.arl.wustl.edu/arl

Design of aDiversified Router:

Common Router Framework

Page 2: Design of a Diversified Router: Common Router Framework

2 - JST/JDD/FK - 04/19/23

Revision History 5/22/06 (JDD):

»Updates to data passing from Block to Block.»Buffer descriptor stuff probably needs updating.

6/2/06 (JDD): »Needs to be brought up to date, especially with regard to data

going between blocks.

Page 3: Design of a Diversified Router: Common Router Framework

3 - JST/JDD/FK - 04/19/23

Outline JST’s original slides Schedule Model Traffic Types IP Addressing Components

»Switch»MetaLink Loopback Block»LC

Substrate Link Types Packet Formats

Focus is on wired Ethernet LC Rx/Tx Design Implementation

Common Router Framework (CRF)»Functional Blocks for implementing a Router »Framework is meant to define how we would support:

Multiple MetaRouters running on a shared NP Blade A single MR running on a dedicated NP Blade could also use it.

Page 4: Design of a Diversified Router: Common Router Framework

4 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Lets look at »What data passes from block to block»What blocks touch the Buffer Descriptor

For MR-specific code, an MR has memory access restricted to:»Packet Buffer»Control Block»Output Area

We need a better definition of how an MR will use the Control Block and Output Area. Are they separate and distinct? What are they each intended for?

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Page 5: Design of a Diversified Router: Common Router Framework

5 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

RBUF

Rx:»Function

Coordinate transfer of packets from RBUF to DRAM»Notes:

We’ll pass the Buffer Handle which contains the SRAM address of the buffer descriptor.

From the SRAM address of the descriptor we can calculate the DRAM address of the buffer data.

Buf Handle(32b)

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_SizeCRC (32b)

Page 6: Design of a Diversified Router: Common Router Framework

6 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

DeMux» Function

Read Pkt Header from DRAM Use VLAN from Ethernet header to determine destination MR in order to locate:

MR Parse code MR specific memory pointers

Write MR Id to Buffer Descriptor Write VLAN to Buffer Descriptor

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Buf Handle(32b)

CRC (32b) Rx MI(16b)

Buf Handle(32b)

MR ID (VLAN) (16b)

Meta Pkt Offset(16b)

Reserved (16b)

MR Mem Ptr (32b)

Page 7: Design of a Diversified Router: Common Router Framework

7 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Parse» Function

MR-specific header processing Generate MR-specific lookup key (16 Bytes) from packet

Need CRF functionality to managed multiple MRs in shared PE. Notes:

» Can Parse adjust the buffer/packet size and offset? » Can Parse do something like, terminate a tunnel and strip off an outer header?» MR ID and Input MI are included in MR Lookup Key also.

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

MR Lookup Key(NB)

MR Id(16b)

MR Mem Ptr(32b)

Buf Handle(32b)

Rx MI(16b)

Buf Handle(32b)

MR ID (VLAN) (16b)

Meta Pkt Offset(16b)

Reserved (16b)

MR Mem Ptr (32b)

Page 8: Design of a Diversified Router: Common Router Framework

8 - JST/JDD/FK - 04/19/23

CRF Wrapper Around Parse

Parse

MR-1

MR-n

. . .

MRSelector

MR Id

Input MI

MR Mem Ptr

Buf Handle(32b)

DRAM Buf Ptr

Input MI

MR Mem Ptr

MR Lookup KeyMR Lookup Key

MR Id

MR Mem Ptr

Buf Handle(32b)

Page 9: Design of a Diversified Router: Common Router Framework

9 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Lookup» Function

Perform lookup in TCAM based on MR Id and lookup key

» Result: Output MI QID Stats index MR-specific Lookup

Result (flags, etc. ?) How wide can/should this

be?» Notes:

MR ID and Input MI are included in MR Lookup Key also.

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_SizeMR Lookup Key(NB)

MR Id(16b)

MR Mem Ptr(32b)

Buf Handle(32b) Buffer Handle(32b)

MR Id(16b)

Lookup Result(16B)

MR Mem Ptr(32b)

Page 10: Design of a Diversified Router: Common Router Framework

10 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Buffer Handle(32b)

QID(16b) Header Format» Function

MR specific packet header formatting

MR specific Lookup Result processing

Drop and Miss bits Need CRF functionality

to managed multiple MRs in shared PE.» Pulls out QID, Length

and Port from MR Result, etc.

» Checks for Drop and Miss bits and deals with those actions.

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Buffer Handle(32b)

MR Id(16b)

Lookup Result(Nb)

MR Mem Ptr(32b) Size (16b)

Port(8b)

Includes dropand miss bits

Page 11: Design of a Diversified Router: Common Router Framework

11 - JST/JDD/FK - 04/19/23

CRF Wrapper Around Header Format

HeaderFormat

MR-1

MR-n. . .

Buffer Offset

MRSelector

Gets written to Buffer DescriptorMay also cause size(s) in Descriptor to be updated.

(what about trimming data,What if it is a buffer’s worth

Which would change the chaining,Can they add/trim at either end?

Buffer Handle

MR Id

Lookup Result

MR Mem Ptr

DRAM Buf Ptr

Output MI

MR SpecificLookup Result

MR Mem Ptr

Buffer Handle

QID

Size

Port

Page 12: Design of a Diversified Router: Common Router Framework

12 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

QM»Function

CRF queue management for Meta Interface queues

For performance reasons, QM may actually be implemented as multiple instances»Each instance on a separate ME

would support a separate set of Meta Interfaces.

»See next slide for more details…

Buffer Handle(32b)

QID(16b)

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Buf Handle(32b)

Size (16b)

Port(8b)

Page 13: Design of a Diversified Router: Common Router Framework

13 - JST/JDD/FK - 04/19/23

QM/Scheduler on Multiple MEs

OutputHlpr

(1 ME)

QM/Schd(1 ME)

QM/Schd(1 ME)

Scratch Rings

InputHlpr

(1 ME)

NN Ring NN Ring

. . .

HeaderFormat Tx

Buffer Handle(32b)

QID(32b) Buf Handle(32b)

MR-1

MR-n. . .

QID(32b):» Reserved (8b)» QM ID (4b)» QID(20b): 1M queues per QM

Input Hlpr would use QM ID to select Scratch ring on which to put request. Output Hlpr would process all Scratch rings coming from QM/Schd MEs and

multiplex onto one NN ring to TX With 64 entries in Q-Array and 16 entries in CAM, max number of QM/Schds is

probably 4 (2 bits). » We’ll set aside 4 bits to give us flexibility in the future.

Size (16b)

Port(8b)

Page 14: Design of a Diversified Router: Common Router Framework

14 - JST/JDD/FK - 04/19/23

QM/Scheduler on Multiple MEs

QM/Schd(1 ME)

QM/Schd(1 ME)

NN/Scratch Rings

InputHlpr

(1 ME)

NN Ring

HeaderFormat Tx

Buffer Handle(32b)

QID(32b)

Buf Handle(32b)

MR-1

MR-n. . .

QID(32b):» Reserved (8b)» QM ID (4b)» QID(20b): 1M queues per QM

Input Hlpr would use QM ID to select Scratch ring on which to put request.

QM/Sched then sends on its output NN/scratch ring to its associated Tx With 64 entries in Q-Array and 16 entries in CAM, max number of

QM/Schds is probably 4 (2 bits). » We’ll set aside 4 bits to give us flexibility in the future.

Size (16b)

Port(8b)

Tx

Port(8b)

Page 15: Design of a Diversified Router: Common Router Framework

15 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

TBUF

Tx»Function

Coordinate transfer of packets from DRAM to TBUF

Buffer Handle(32b)

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Port(8b)

Page 16: Design of a Diversified Router: Common Router Framework

16 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

What’s missing?»Multicast

RFC 1812: “An IP router SHOULD support forwarding of IP multicast packets,…” Default IPv4 MR SHOULD support Multicast

It would be nice if our IPv4 MR was implemented using the CRF. Thus, CRF SHOULD provide support for MRs that support Multicast.

Does PlanetLab make any use of Multicast?»Statistics/Monitoring»Exact definition of format for:

Data between blocks Lookup result

»Mapping of MR:MI to QID Is queueing done strictly on a per MI basis?

Page 17: Design of a Diversified Router: Common Router Framework

17 - JST/JDD/FK - 04/19/23

Multicast Alternatives At least Three Options

»Force MRs that need Multicast to be Dedicated Blade MRs and do their own Multicast

For our short term goals this is probably sufficient and the best course. Perhaps longer term we can look at adding it to the CRF

»Treat as exception and send to Xscale»Provide support in CRF for Multicast

Use Multi-Hit Lookup capability of the TCAM MI Bit mask defined in Lookup Result

Will put a bound on the number of MIs that can be supported on an MR because of the size of the lookup result.

Has issues of mapping bits in the bit mask to actual MIs. Lookup Result contains an index into a table containing MI bit masks Allow but do not force MRs to provide code to interpret Lookup Result.

– This would also allow other possible extensions on an MR-specific basis– This carries with it the problem of bounding the execution time of the MR-specific

code in the Lookup block. For general multicast, this could be a serious issue.– There are also issues with generating a QID based on an MI when the QID is not

included in the Lookup Result.

»Other options?

Page 18: Design of a Diversified Router: Common Router Framework

18 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

What’s missing?»Multicast»Statistics/Monitoring»Exact definition of format for:

Data between blocks Lookup result

»Mapping of MR:MI to QID Is queueing done strictly on a per MI basis?

Page 19: Design of a Diversified Router: Common Router Framework

19 - JST/JDD/FK - 04/19/23

Statistics and Monitoring MetaRouter Counters:

»What support is needed to allow MetaNets access to counters at individual MRs?

Substrate Counters»Per Frame Counters

As part of design we have to enumerate these They can probably be managed by the corresponding Micro Block, for example:

Number of Received Frames: – RX Block Counts each received frame, stores counter in SRAM– XScale can retrieve value from SRAM

Number of Transmitted Frames: – TX Block Counts each received frame, stores counter in SRAM– XScale can retrieve value from SRAM

Dropped Frame Counters– Drops will probably occur at multiple places– RX: Badly formed Frame– QM: Queue Overflow– Lookup: Result indicates frame is to be dropped– Etc.

Etc.»Per Lookup Counters (i.e. number of hits on a Lookup Key):

Managed by MR in Hdr Format block MR-Specific Lookup Result could be used to include stats index if the MR

wanted to support per lookup counters Memory for counters would have to come from MR Memory block

Page 20: Design of a Diversified Router: Common Router Framework

20 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

What’s missing?»Multicast»Statistics/Monitoring»Exact definition of format for:

Data between blocks Lookup result

»Mapping of MR:MI to QID Is queueing done strictly on a per MI basis?

Page 21: Design of a Diversified Router: Common Router Framework

21 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

What’s missing?»Multicast»Statistics/Monitoring»Exact definition of format for:

Data between blocks Lookup result

»Mapping of MR:MI to QID Is queueing done strictly on a per MI basis?

Page 22: Design of a Diversified Router: Common Router Framework

22 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

What’s missing?»Multicast»Statistics/Monitoring»Exact definition of format for:

Data between blocks Lookup result

»Mapping of MR:MI to QID Is queueing done strictly on a per MI basis? What is the limit on number queues and/or MIs?

Page 23: Design of a Diversified Router: Common Router Framework

23 - JST/JDD/FK - 04/19/23

Packet Buffer Descriptor Tradeoffs Why use a Buffer Descriptor at all?

» QM needs something to link packets/buffers in queues» ME-to-ME communications costs vs. SRAM access costs

Page 24: Design of a Diversified Router: Common Router Framework

24 - JST/JDD/FK - 04/19/23

Packet Buffer Descriptor def Meta Data structure of Packet Buffers (LSB to MSB)

» buffer_next 32 bits Next Buffer Pointer (in a chain of buffers)» offset 16 bits Offset to start of data in bytes» BufferSize 16 bits Length of data in the current buffer in bytes» header_type 8 bits type of header at offset bytes in to the buffer» rx_stat 4 bits Receive status flags» free_list 4 bits Freelist ID» packet_size 16 bits (Total packet size across multiple buffers)» output_port 16 bits Output Port on the egress processor» input_port 16 bits Input Port on the ingress processor» nhid_type 4 bits Nexthop ID type.» reserved 4 bits Reserved» fabric_port 8 bits Output port for fabric indicating blade ID.» nexthop_id 16 bits NextHop IP ID» color 8 bits Qos Color » flow_id 24 bits QOS flow ID or MPLS label/flow id» reserved 16 bits Reserved» class_id 16 bits Class ID» packet_next 32 bits pointer to next packet (unused in cell mode)

Page 25: Design of a Diversified Router: Common Router Framework

25 - JST/JDD/FK - 04/19/23

Packet Buffer Descriptor Gets buffer_next: tx Offset: rx, tx, fwd BufferSize: tx, fwd header_type: tx, fwd rx_stat: NONE free_listpacket_size: NONE output_port: qm(?), tx input_port: rx, fwd nhid_type: NONE fabric_port: qm(?), tx nexthop_id color flow_id class_id packet_next

Page 26: Design of a Diversified Router: Common Router Framework

26 - JST/JDD/FK - 04/19/23

Meta Data Caching Meta Data can be cached in one of three places:

»SRAM Xfer Registers»DRAM Xfer Registers»GPR Registers

Size of Meta Data Cache is controlled by #define META_CACHE_SIZE

Macro dl_meta_load_cache[] loads meta data cache»buffer_handle: buffer handle for which meta data is to be fetched»dl_meta: read transfer register prefix

Xbuf_alloc[] should be used to allocate the needed registers»signal_number:»START_LW: starting long word for fetch»NUM_LW: number of long words to fetch

Each microengine (microblock?) can use Meta Data Caching differently.

Page 27: Design of a Diversified Router: Common Router Framework

27 - JST/JDD/FK - 04/19/23

Meta Data Caching In the ipv4_v6_forwarder sample app,

» dl_meta_load_cache() used in: Egress

ethernet_arp.uc pkt_tx_16p.uc statistics_util.uc tx_helper.uc

Ingress ethernet_arp.uc pkt_tx_16p.uc statistics_util.uc tx_helper.uc

» dl_meta_get_*[] used in: Egress

ethernet_arp.uc pkt_tx_16p.uc tx_helper.uc

Ingress Ether.uc Ipv4_fwder.uc Ipv4_fwder_util.uc Ipv6_fwder.uc V6v4_tunnel_decap.uc V6v4_tunnel_encap.uc pkt_tx_16p.uc tx_helper.uc

» dl_meta_set_*[] used in: Egress

ethernet_arp.uc pkt_rx_init.uc pkt_rx_two_me_util.uc

Ingress pkt_rx_init.uc pkt_rx_two_me_util.uc Ether.uc Ipv4_fwder_util.uc Ipv6_fwder.uc V6v4_tunnel_decap.uc V6v4_tunnel_encap.uc pkt_tx_16p.uc tx_helper.uc

Page 28: Design of a Diversified Router: Common Router Framework

28 - JST/JDD/FK - 04/19/23

Buffer Handle

Page 29: Design of a Diversified Router: Common Router Framework

29 - JST/JDD/FK - 04/19/23

Buffer Descriptor Usage Is there a different Buffer Descriptor defn for LC and PE? Will we support Multi-Buffer Packets?

» If not, we do not need buffer_next(32b) or buffer_size(16b) QM uses packet_next for its packet chaining in qarray. Output Port and Input Port probably translate to TxMI and RxMI Next Hop fields (nhid_type(4b) and nexthop_id(16b)) probably can

go away. QOS fields (color(8b) and flow_id(24b)) probably can go away. Two reserved fields 4b and 16b can go away. class_id(16b) (virtual queue id?) can probably go away. fabric_port can probably go away.

Page 30: Design of a Diversified Router: Common Router Framework

30 - JST/JDD/FK - 04/19/23

Buffer Descriptor Usage PE Buffer Descriptor:

» MR_ID (16b)» TxMI (16b)» VLAN (16b)

» buffer_next 32 bits Next Buffer Pointer (in a chain of buffers)» offset 16 bits Offset to start of data in bytes» BufferSize 16 bits Length of data in the current buffer in bytes

header_type 8 bits type of header at offset bytes in to the buffer rx_stat 4 bits Receive status flags

» free_list 4 bits Freelist ID» packet_size 16 bits (Total packet size across multiple buffers)

output_port 16 bits Output Port on the egress processor input_port 16 bits Input Port on the ingress processor nhid_type 4 bits Nexthop ID type. reserved 4 bits Reserved fabric_port 8 bits Output port for fabric indicating blade ID. nexthop_id 16 bits NextHop IP ID color 8 bits Qos Color flow_id 24 bits QOS flow ID or MPLS label/flow id reserved 16 bits Reserved class_id 16 bits Class ID

» packet_next 32 bits pointer to next packet (unused in cell mode)

Page 31: Design of a Diversified Router: Common Router Framework

31 - JST/JDD/FK - 04/19/23

Buffer Descriptor Usage PE Buffer Descriptor:

» LW0: buffer_next 32 bits Next Buffer Pointer (in a chain of buffers)» LW1: offset 16 bits Offset to start of data in bytes» LW1: BufferSize 16 bits Length of data in the current buffer in bytes» LW2: reserved 8 bits reserved/unused» LW2: reserved 4 bits reserved/unused» LW2: free_list 4 bits Freelist ID» LW2: packet_size 16 bits (Total packet size across multiple buffers)» LW3: MR_ID 16 bits Meta Router ID» LW3: TxMI 16 bits Transmit Meta Interface» LW4: VLAN 16 bits VLAN» LW4: reserved 16 bits reserved/unused» LW5: reserved 32 bits reserved/unused» LW6: reserved 32 bits reserved/unused» LW7: packet_next 32 bits pointer to next packet (unused in cell mode)

Leave multi-buffer fields there as a template for the dedicated blade implementation of a jumbo-frame MR.» Also reduces changes to Rx, Tx, and QM and reduces potential problems.

Page 32: Design of a Diversified Router: Common Router Framework

32 - JST/JDD/FK - 04/19/23

Extra The next set of slides are for templates or extra

information if needed

Page 33: Design of a Diversified Router: Common Router Framework

33 - JST/JDD/FK - 04/19/23

Text Slide Template

Page 34: Design of a Diversified Router: Common Router Framework

34 - JST/JDD/FK - 04/19/23

Image Slide Template

Page 35: Design of a Diversified Router: Common Router Framework

35 - JST/JDD/FK - 04/19/23

CRF Support for Multicast

HeaderFormat

MR-1

MR-n. . .

DRAM Buf Ptr

MR Id

Output MI

Buffer Offset

QID

DRAM Buf Ptr

MR Id

MR Lookup Key

MR Ctrl Blk Ptr

MR Mem Ptr

DRAM Buf Ptr

MR Id

Output MI

QID

MR SpecificLookup Result

Stats Index

MR Ctrl Blk Ptr

MR Mem Ptr

Parse

MR-1

MR-n. . .

DRAM Buf Ptr

MR Id

Input MI

MR Ctrl Blk Ptr

MR Mem Ptr

MRInterpLo

oku

p

Post

Pro

cess

Default/Unicast path

MR-SpecificPath

Page 36: Design of a Diversified Router: Common Router Framework

36 - JST/JDD/FK - 04/19/23

CRF Support for Multicast

DRAM Buf Ptr

MR Id

MR Lookup Key

MR Ctrl Blk Ptr

MR Mem Ptr

MRInterpLo

oku

p

Post

Pro

cess

Default path

MR-SpecificPath

DRAM Buf Ptr

MR Id

Output MI

QID

MR SpecificLookup Result

Stats Index

MR Ctrl Blk Ptr

MR Mem Ptr

Copy Cnt

We will need some kind of copy count or multicast bit and last copy bit to let TX know when it can release the DRAM buffer that holds the packet.

DRAM Buf Ptr

MR Id

Output MI

QID

MR SpecificLookup Result

Stats Index

MR Ctrl Blk Ptr

MR Mem Ptr

Copy Cnt=1

Page 37: Design of a Diversified Router: Common Router Framework

37 - JST/JDD/FK - 04/19/23

CRF Support for Multicast

DRAM Buf Ptr

MR Id

MR Lookup Key

MR Ctrl Blk Ptr

MR Mem Ptr

MRInterpLooku

p

Post

Pro

cess

Default path

MR-SpecificPath

DRAM Buf Ptr

MR Ctrl Blk Ptr

MR Mem Ptr

MR SpecificLookup Result

MR Lookup Key Output MI

Copy Cnt

Output MI

Copy Cnt

Output MI

Copy Cnt

DRAM Buf Ptr

MR Id

Output MI

QID

MR SpecificLookup Result

Stats Index

MR Ctrl Blk Ptr

MR Mem Ptr

Copy Cnt

DRAM Buf Ptr

MR Id

Output MI

QID

MR SpecificLookup Result

Stats Index

MR Ctrl Blk Ptr

MR Mem Ptr

Copy Cnt

DRAM Buf Ptr

MR Id

Output MI

QID

MR SpecificLookup Result

Stats Index

MR Ctrl Blk Ptr

MR Mem Ptr

Copy Cnt

We will need some kind of copy count or multicast bit and last copy bit to let TX know when it can release the DRAM buffer that holds the packet.

Page 38: Design of a Diversified Router: Common Router Framework

38 - JST/JDD/FK - 04/19/23

OLD The rest of these are old slides that should be deleted

at some point.

Page 39: Design of a Diversified Router: Common Router Framework

39 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

RBUF

Rx:»Function

Coordinate transfer of packets from RBUF to DRAM»Notes:

We’ll pass the Buffer Handle which contains the SRAM address of the buffer descriptor.

From the SRAM address of the descriptor we can calculate the DRAM address of the buffer data.

Buf Handle(32b)

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Page 40: Design of a Diversified Router: Common Router Framework

40 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

DeMux» Function

Read Pkt Header from DRAM Use VLAN from Ethernet header to determine destination MR in order to locate:

MR Parse code MR specific memory pointers

Write MR Id to Buffer Descriptor Write VLAN to Buffer Descriptor

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

MR Id(16b)

Input MI(16b)

MR Mem Ptr(32b)

Buf Handle(32b)

DRAM Buf Ptr(32b)

Buffer Offset(16b)

Buf Handle(32b)

Page 41: Design of a Diversified Router: Common Router Framework

41 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Parse» Function

MR-specific header processing Generate MR-specific lookup key (16 Bytes) from packet

Need CRF functionality to managed multiple MRs in shared PE. Notes:

» Can Parse adjust the buffer/packet size and offset? » Can Parse do something like, terminate a tunnel and strip off an outer header?

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_SizeMR Id(16b)

Input MI(16b)

MR Mem Ptr(32b)

Buf Handle(32b)

DRAM Buf Ptr(32b)

Buffer Offset(16b)

MR Lookup Key(16B)

MR Id(16b)

Input MI(16b)

MR Mem Ptr(32b)

Buf Handle(32b)

DRAM Buf Ptr(32b)

Buffer Offset(16b)

Page 42: Design of a Diversified Router: Common Router Framework

42 - JST/JDD/FK - 04/19/23

CRF Wrapper Around Parse

Parse

MR-1

MR-n

. . .

MRSelector

MR Id

Input MI

MR Mem Ptr

Buf Handle(32b)

DRAM Buf Ptr

Buffer Offset

DRAM Buf Ptr

Input MI

MR Mem Ptr

Buffer Offset

MR Lookup Key

Buffer Offset

MR Lookup Key

MR Id

Input MI

MR Mem Ptr

Buf Handle(32b)

DRAM Buf Ptr

Buffer Offset

Page 43: Design of a Diversified Router: Common Router Framework

43 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Lookup»Function

Perform lookup in TCAM based on MR Id and lookup key

»Result: Output MI QID Stats index MR-specific Lookup

Result (flags, etc. ?) How wide can/should

this be?

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

MR Lookup Key(16B)

MR Id(16b)

Input MI(16b)

MR Mem Ptr(32b)

Buf Handle(32b)

DRAM Buf Ptr(32b)

Buffer Offset(16b)

Buffer Handle(32b)

MR Id(16b)

Lookup Result(Nb)

MR Mem Ptr(32b)

DRAM Buf Ptr(32b)

Buffer Offset(16b)

Page 44: Design of a Diversified Router: Common Router Framework

44 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

Buffer Handle(32b)

QID(16b) Header Format» Function

MR specific packet header formatting

MR specific Lookup Result processing

Drop and Miss bits Need CRF functionality

to managed multiple MRs in shared PE.» Pulls out QID, Length

and Port from MR Result, etc.

» Checks for Drop and Miss bits and deals with those actions.

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Buffer Handle(32b)

MR Id(16b)

Lookup Result(Nb)

MR Mem Ptr(32b)

DRAM Buf Ptr(32b)

Buffer Offset(16b) Size (16b)

Port(8b)

Includes dropand miss bits

Page 45: Design of a Diversified Router: Common Router Framework

45 - JST/JDD/FK - 04/19/23

CRF Wrapper Around Header Format

HeaderFormat

MR-1

MR-n. . .

Buffer Offset

MRSelector

Gets written to Buffer DescriptorMay also cause size(s) in Descriptor to be updated.

(what about trimming data,What if it is a buffer’s worth

Which would change the chaining,Can they add/trim at either end?

Buffer Handle

MR Id

Lookup Result

MR Mem Ptr

DRAM Buf Ptr(32b)

Buffer Offset

DRAM Buf Ptr

Output MI

MR SpecificLookup Result

MR Mem Ptr

Buffer Offset

Buffer Handle

QID

Size

Port

Page 46: Design of a Diversified Router: Common Router Framework

46 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

QM»Function

CRF queue management for Meta Interface queues

For performance reasons, QM may actually be implemented as multiple instances»Each instance on a separate ME

would support a separate set of Meta Interfaces.

»See next slide for more details…

Buffer Handle(32b)

QID(16b)

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size

Buf Handle(32b)

Size (16b)

Port(8b)

Page 47: Design of a Diversified Router: Common Router Framework

47 - JST/JDD/FK - 04/19/23

QM/Scheduler on Multiple MEs

OutputHlpr

(1 ME)

QM/Schd(1 ME)

QM/Schd(1 ME)

Scratch Rings

InputHlpr

(1 ME)

NN Ring NN Ring

. . .

HeaderFormat Tx

Buffer Handle(32b)

QID(32b) Buf Handle(32b)

MR-1

MR-n. . .

QID(32b):» Reserved (8b)» QM ID (4b)» QID(20b): 1M queues per QM

Input Hlpr would use QM ID to select Scratch ring on which to put request. Output Hlpr would process all Scratch rings coming from QM/Schd MEs and

multiplex onto one NN ring to TX With 64 entries in Q-Array and 16 entries in CAM, max number of QM/Schds is

probably 4 (2 bits). » We’ll set aside 4 bits to give us flexibility in the future.

Size (16b)

Port(8b)

Page 48: Design of a Diversified Router: Common Router Framework

48 - JST/JDD/FK - 04/19/23

Common Router Framework (CRF) Functional Blocks

Parse

Lookup

HeaderFormat

DeMuxRx TxQMMR-1

MR-n. . .

MR-1

MR-n. . .

TBUF

Tx»Function

Coordinate transfer of packets from DRAM to TBUF

Buffer Handle(32b)

VLAN

Packet_Next

MR_ID

TxMI

Free_List

Packet_Size

Buffer_Next

Offset

BufferDescriptor

Buffer_Size