Cesnet Liberouter
  • Projects
  • Liberouter
  • Scampi
  • FlowMon
  • NIC
  • NIFIC
  • IDS
  • NetCOPE
  • VHDL design
  • System software
  • Testing
  • Formal verification
  • Netopeer
  • Documents
  • Our hardware
  • Card Availability
  • Our partners
Main page -> VHDL
InfoHW sectionSW sectionAddr spaceInterfaceVersions

Authors: Martin Kosek
Jan Pazdera


The Priority queues system stores the Replicator Records generated by the Replicator in dedicated queues. On request these Replicator Records are sent to the Output Packet Editors from the PQ queue that has the highest priority and is not empty. Records can be read also by software interface. This is useful in case the packet is better to be processed by software application. Special operation called 'write-back' is implemented to provide multicast feature. Priority Queues component implements modified FIFO Priority algorithm to avoid record starvation in lower-priority queues. The whole queues content is stored in external SSRAM memory (2MB).
Pictures not supported anymore.
PQ structure

Priority Queues

The queue data is stored in an external 2MB SSRAM and the control information is stored in internal FPGA registers. The queues are statically allocated in the SSRAM - they are implemented as circular buffers and the control registers are composed of head and tail address registers and size/position registers.
The core of the PQ component is a Control Unit that fulfils requests from the Replicator (REP) at the input side and from the Output Packet Editors (OPEs) at the output side. It gets Replicator Records from REP containig pointers to packet data, packet parameters and edit parameters. Those pointers are needed be OPEs.
OPEs can request Replicator Records from queue with highest priority or they can do a 'write-back'. Write-back operation is using to provide multicast via one interface.

Queue Scheduler

Queue Scheduler (QS) provides the 'highest priority queue look-up'. All queues are divided into several qroups. Each of those groups is assigned to another OPE. During OPE reading request data are read from the queue with the highest priority in corresponding group. Priority algorithm is designed to prevent lower-priority-queues records starvation.

Main Page About Liberouter Team Mailing list SVN Contacts