[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RRG] Six/One Router Design Clarifications



|With enough thrust anything can fly, but it's easier to do a
|decapsulator than a translator.


Why?

Well for one, you have to do a 5-tuple lookup because most NATs have both ports as part of the lookup key. And for two, it's usually another data structure that has the translation table. And typically in hardware implementations that is not the same DRAM. So there is an extra cost there. Third, you have to fix the pseudo-header checksum. Fourth, you have to fix payload like the all important ICMP unreachable so traceroute works.

This is all very hard to do in an ASIC. In a programmable forwarding engine it is simpler if you can do packet writes. But that is rarely the case.

Intrinsically, they seem to be roughly on the same order of magnitude of
difficulty.

Disagree. Encapsulation is prepending a header, just like you would when an IP router forwards a packet from one Ethernet to another Ethernet. Ditto for the decap side.

For a decapsulator, you crack the outer header, lookup, accept, crack the
inner header, lookup and forward.

Wrong.

For a translator, you crack the outer header, lookup, rewrite, and forward.

No, you have to do more work. See above.

Seems not too different...

Very different. I have implemented both and my experience says translation is much harder.

Dino


--
to unsubscribe send a message to rrg-request@psg.com with the
word 'unsubscribe' in a single line as the message text body.
archive: <http://psg.com/lists/rrg/> & ftp://psg.com/pub/lists/rrg