Did you read part 5? If not check it out here.
Part 6: The 2000s
Fast forward to 2005/6. I was a founder at Nuova Systems, which developed the UCS server series for Cisco. The world of I/O had evolved from SBus to PCI to PCI Express, 1Gb Ethernet was everywhere, and 10Gb Ethernet was just starting. But servers still had a mess of storage controllers, SCSI and Fibre Channel, which were mostly “intelligent”.
When Intel came out with the Nehalem generation of processors (spurred on by AMD & Opteron), servers got a lot faster at compute, memory, and I/O all at once. A lot of the intelligent I/O devices all of a sudden became the bottlenecks for storage, and the vendors had to scramble to get new chips with much more hardware acceleration into them.
At Nuova we also understood that controlling I/O could go a long way to “virtualizing” a server – making it think it had more, less, or different connectivity than it really did. So we created what has become the Cisco UCS VIC – virtual interface card –
which can appear to be any number of PCI Express devices, each with network-controlled configuration. This is also a kind of a SmartNIC – quite smart in the control plane, but with a mostly hardware data path to avoid performance issues.
In 2009, Mike O’Dell, another gent of great experience, published a paper called “Network Front-end Processors, Yet Again”. At that time TCP Offload Engines were all the rage. Mike pointed out that the protocols required between a host and a front-end are often just as complex as the protocols that you’re trying to offload!
Head over to the last installment of this journey here.