Development issues regarding the cerowrt test router project
 help / color / mirror / Atom feed
From: dpreed@reed.com
To: "Hal Murray" <hmurray@megapathdsl.net>
Cc: codel@lists.bufferbloat.net, Hal Murray <hmurray@megapathdsl.net>,
	bloat-devel <bloat-devel@lists.bufferbloat.net>,
	cerowrt-devel@lists.bufferbloat.net
Subject: Re: [Cerowrt-devel] hardware hacking on fq_codel in FPGA form at 10GigE
Date: Thu, 20 Dec 2012 08:53:12 -0500 (EST)	[thread overview]
Message-ID: <1356011592.2372508@apps.rackspace.com> (raw)
In-Reply-To: <20121220103213.4ABAD800037@ip-64-139-1-69.sjc.megapath.net>

[-- Attachment #1: Type: text/plain, Size: 3876 bytes --]


I have lately been using (for my very wideband software defined radio amateur radio transceiver project) the brand new, very nice device called the Zynq 7000 series of Platform FPGA's from Xilinx.  It's a complete system on a chip, with a dual core ARM Cortex A9 and an enormous amount of programmable logic that has "cache coherent access" to the memory system.
 
The chip is fabricated in 28 nm form, has a "zillion" SelectIO programmable pins, but more importantly has a bunch of hard logic I/O paths.
 
Since it comes packaged "cheap" (full  6 inch square evalboard with 512 MB DRAM and full standard "PC type" interconnects - GigE, VGA, HDMI, USB), as a $299 board with free FPGA tool chain) and runs Linux out of the box, I highly recommend the board called Zedboard (just google that).
 
Easy to attach 10 GigE hardware if you can do simple PCB design and soldering.
 
You can be up and running with a development system for under $500 in a weekend, building FPGA acceleration, or if you want to add hardware that connects to the zillions of I/O pins to the PLL and memory system, that might take a week or more, depending on your hardware design and hacking skills. I've connected "eval boards" of various sorts using a breakout board you can buy from Xilinx quicker than that.
 
In some ways, this is the Raspberry Pi of high speed digital logic hacking.
 
 
 
 
-----Original Message-----
From: "Hal Murray" <hmurray@megapathdsl.net>
Sent: Thursday, December 20, 2012 5:32am
To: "Dave Taht" <dave.taht@gmail.com>
Cc: "bloat-devel" <bloat-devel@lists.bufferbloat.net>, codel@lists.bufferbloat.net, "Hal Murray" <hmurray@megapathdsl.net>, cerowrt-devel@lists.bufferbloat.net
Subject: Re: [Cerowrt-devel] hardware hacking on fq_codel in FPGA form at 10GigE



dave.taht@gmail.com said:
>> If I was going to do something like that, I'd build a small/simple CPU
>> the work in microcode.

> There are two ppc 440 cpus already onboard the 10GigE device, I think. It's
> a REALLY NICE fpga. 

> I'd also looked at the octeon and the latest arm chipset from TI which I
> can't remember the codename for at the moment... 

I wasn't thinking of a traditional general purpose CPU but rather something 
special for this problem.



>> How many lines of assembler code would it take?

> I could do a dump of the current code into any given assembly language. It's
> not a lot, but there are a lot of out of band functions.

I didn't mean lines of traditional assembly code.  If we want to pursue this, 
pick a chunk of c code (not too big) and break it into "lines" where 
everything on a line can be executed at the same time.  I'll try to sketch a 
"CPU" and write the microcode.


> The enqueue and dequeue algorithms are entirely decoupled, with the
> exception of this error handling phase of (out of queue space) One thought
> would be to track packet count on enqueue (this is more "sfq"-like than
> fq_codel-like) which still has a tiny lock... 

Stuff that can be reasonably done in the driver should probably be done there 
if it saves a lot of work for the microcode.  Avoiding out-of-queue-space 
might be a good example.



> Well there are a few things that would benefit from moving directly into
> hardware - the 5 tuple hash, for example. 

I'm probably missing the big picture.  Are you building a router or a server?

A server has socket control blocks.  Can the hash be precomputed and stored 
there?
That doesn't help with UDP sendto, but I think it would work with TCP.


If you are building a router, does the routing as well as fq-ing have to fit 
in the FPGA?


-- 
These are my opinions.  I hate spam.



_______________________________________________
Cerowrt-devel mailing list
Cerowrt-devel@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/cerowrt-devel

[-- Attachment #2: Type: text/html, Size: 4917 bytes --]

  reply	other threads:[~2012-12-20 13:53 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <dave.taht@gmail.com>
2012-12-20  7:28 ` Dave Taht
2012-12-20  8:17   ` Hal Murray
2012-12-20  8:27     ` Jonathan Morton
2012-12-20  9:51       ` Hal Murray
2012-12-20  9:13     ` Dave Taht
2012-12-20  9:26       ` Dave Taht
2012-12-20 10:32         ` Hal Murray
2012-12-20 13:53           ` dpreed [this message]
2012-12-20 14:18             ` Dave Taht
2012-12-20 15:05               ` Dave Taht
2012-12-21 12:34                 ` Dave Taht
2012-12-21 17:48                   ` dpreed
2012-12-21 18:14                     ` Jim Gettys
2012-12-21 18:25                       ` dpreed
2012-12-21 18:45                         ` Jim Gettys
2012-12-21 19:34                           ` dpreed
2012-12-21 19:42                             ` Jim Gettys
2012-12-21 21:54                           ` [Cerowrt-devel] [Codel] " David Woodhouse
2012-12-21 21:56                             ` John Crispin
2012-12-21 22:08                               ` David Woodhouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/cerowrt-devel.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1356011592.2372508@apps.rackspace.com \
    --to=dpreed@reed.com \
    --cc=bloat-devel@lists.bufferbloat.net \
    --cc=cerowrt-devel@lists.bufferbloat.net \
    --cc=codel@lists.bufferbloat.net \
    --cc=hmurray@megapathdsl.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox