Page 1 of 1
Simple High-performance External Communications
Posted: Fri May 03, 2013 11:09 am
by gamozo
I'm looking for gigabit speeds with serial port simplicity (throwing some stuff on some BARs is simple enough as well). Does anyone know if interfaces to do this? Infiniband? I could use gigabit ethernet, but it's a lot to implement (or maybe I'm wrong, I don't need TCP, I can roll my own proto) where it's just some simple communication between two local machines.
Edit: Hmmm, maybe raw ethernet RX/TX is simpler than I thought... I'll have to look into some gigabit lan spec sheets.
-Brandon
Re: Simple High-performance External Communications
Posted: Fri May 03, 2013 11:42 pm
by thepowersgang
Gigabit enthernet is probably the best, most of the complexity in controllers is from checksum/tcp segmentation offloading. However, it does depend on what you need the communication for.
Re: Simple High-performance External Communications
Posted: Sat May 04, 2013 12:07 pm
by gamozo
I just need to get large amounts of data from one machine to another. I'm comfortable writing a custom protocol as I don't need nearly as many features as TCP gives. I'm assuming that most NICs allow for just raw "put these bytes on the line" sort of stuff?
Re: Simple High-performance External Communications
Posted: Sat May 04, 2013 1:54 pm
by rdos
gamozo wrote:I just need to get large amounts of data from one machine to another. I'm comfortable writing a custom protocol as I don't need nearly as many features as TCP gives. I'm assuming that most NICs allow for just raw "put these bytes on the line" sort of stuff?
NICs don't need TCP or IP protocols, but you need to use the Ethernet layer which has the 6 byte source and destination MACs + a protocol-type. You also should realize that Ethernet is not stream-oriented, but rather packet oriented, so you cannot put bytes on the line, rather you must provide packets with legal headers (MACs).
Re: Simple High-performance External Communications
Posted: Tue May 07, 2013 3:07 am
by bluemoon
gamozo wrote:I just need to get large amounts of data from one machine to another. I'm comfortable writing a custom protocol as I don't need nearly as many features as TCP gives. I'm assuming that most NICs allow for just raw "put these bytes on the line" sort of stuff?
As rdos pointed out, NICs only deal with packets. Furthermore, it don't care receive order, the packet may get loss in the route or if receiver don't read quickly enough - NICs can only handle a few packets on a circular buffer or fixed buffer. If there is routers the packet may be duplicated. In rare case on crap transmission like wireless, the packet may be corrupted.
So, to deal with all sort of things you end up re-inventing TCP, at best you may beat it by 2% performance on specific situation but it probably cost you a few years to design, implement and test your invention.
Re: Simple High-performance External Communications
Posted: Tue May 07, 2013 6:16 am
by Brendan
Hi,
bluemoon wrote:As rdos pointed out, NICs only deal with packets. Furthermore, it don't care receive order, the packet may get loss in the route or if receiver don't read quickly enough - NICs can only handle a few packets on a circular buffer or fixed buffer. If there is routers the packet may be duplicated. In rare case on crap transmission like wireless, the packet may be corrupted.
So, to deal with all sort of things you end up re-inventing TCP, at best you may beat it by 2% performance on specific situation but it probably cost you a few years to design, implement and test your invention.
That'd depend on what you're doing. For example, for a "point to point" link between computers with no need for routing or packet splitting (which is closer to the "serial port simplicity" that gamozo was asking about); it'd be easy to design something more efficient than TCP/IP.
Cheers,
Brendan