Thursday, January 20, 2011

PacketShader: transforming your PC into a high-speed IP router

The huge increase in the ability of computer networks poses a major task on the shoulders of routers , which must now pass packets on multiple links to 10 Gb / s . Routers called "software", based on material non-specialist (eg a PC ) can he keep this pace or should he make room for expensive gear and above 100% proprietary software such as Cisco or Juniper ? This remarkable article by Korean researchers has shown that it is not possible today and to build a router as fast as the racing machines with a PC and Linux .  Main breakthrough by researchers said: outsource much of the operations GPU ...

Contrary to the claims of the commercial Cisco or Juniper , it has always been possible to build a router IP on ordinary hardware, with free software . This is not a trivial task: a modern router has two parts, the control ( control plane ) and transmission ( forwarding plane ). The first speaks routing protocols like BGP , protocols are often complex, its task is only slightly "real time" and he needs memory (BGP router without a default route in stores today 330 000 roads ) and of CPU . An ordinary PC is well suited to this task, for which there are several free software like Quagga or IBRD .

Transmission, meanwhile, is implemented in all Unix for a long time, so all PCs with Ubuntu can do all the work routing (on Unix, the routing table used by the transmission is displayed with netstat-rn ). There are also projects a more comprehensive whole router on a PC / Unix example RouteBricks , taken as a benchmark in the article. But the problem is quantitative. Work Control is proportional to the number of roads and the number of these changes. But that of the transmission is proportional to the number of packets ! Even if the operations required for each package are simple, this work must be multiplied by impressive numbers. And no question of trainer, under penalty of increasing the latency of the network. A link Ethernet to 10 Gb / s (which is still on the desktop luxury but is already the norm within the carrier networks), it can make tens of millions of packets per second. Flow rate (the 10 Gb / s) and number of interrupts (one per package for a naive implementation), this stress significantly the basic PC.

Routers dear big business get away with using completely different components for the Control and Transmission: a Juniper, for example, a PC running a variant of FreeBSD is the control and ASIC , much more expensive , ensure the transmission. We see that when some enthusiasts announce a free software program like Quagga "allows any PC to a Cisco as ten times more expensive, they oversimplify: Quagga provides control but it remains to transmit packets very quickly ( at line rate , it is often said in English, that is to say the maximum speed allowed by the physical network underlying).

A final word on the router architecture: what is the protocol for communication between the Control and Transmission? There is a standard to the IETF , Forces ( Forwarding and Control Element Separation ), specified in RFC 5810 . But it is not deployed at the moment and, in practice, the communication protocol is still a private protocol (as netlink on Linux , documented in RFC 3549 ). It is not possible today to "do deals" by combining components from different manufacturers, connected by a standard protocol.

No comments:

Post a Comment