Wednesday, December 19, 2018

CRC / Ethernet / NIC

Hi guys, I need your help.

I should write a thesis but there are a couple of question that google does not help me answer. I'm sorry if some of them are more computer architecture questions, but I'll post them anyway.

First, what I already know: I understand what CRC does, how it works, and that CRC check values are attached to ethernet packets and are thus pretty much everywhere.

What I do not understand is how this is realized in todays hardware. I read that it's normally the NIC that checks & discards it. But how do common NICs compute it? Do they have one of those serial hardware circuits? Or do they have a small/special CPU kinda thing? Or is the main computer CPU involved?

If it's usually the NIC that is in charge of calculating the CRC, why does e.g. Intel have a specific CRC32 instruction in it's instruction set? Are there other major use cases of CRC apart from networking?

On https://create.stephan-brumme.com/crc32/ there are many fast algorithms for CRC32, how do these relate to what's happening in todays NICs, are they actually used?

Another thing: I read that frames where the CRC does not match usually don't get forwarded, so they are discarded immediately. Does that mean that routers/switches on a frames path usually are capable of doing these CRC calculations? And if so, how do they manage to do it, they would need to be pretty fast, considering what throughputs some routers/switches have.

Also, if you have any links/readings on these questions, that would be great.



No comments:

Post a Comment