From: Craig Partridge [mailto:craig@aland.bbn.com] Sent: Wednesday, April 11, 2001 2:00 PM
In message <20010411164727.B647@alcor.net>, Matt Zimmerman writes:
I think Alex was referring to internal consistency within the router (between linecards), not external consistency. For example, if linecard X believes that a packet should be forwarded to linecard Y, but linecard Y's forwarding table is older than X's, Y could misforward the packet, causing a forwarding loop or a dropped packet. Thus, it can be the case that neither the old path nor the new path is taken.
I used to give a course on building high speed routers. A section of the course was entitled "common mistakes to avoid." One of them was precisely this problem. The rule is forward once within a box -- if linecard X has decided how a packet is to be forwarded, linecard Y shouldn't be reconsidering the decision. (And, in fact, if you look at most linecard designs, the output path, from switch to transmission, does not include a forwarding engine -- there's only a forwarding engine on the inbound path).
I don't think that this was the stated case. The original proposal was to make the decision within the core router and export the policy implementation to each line-card as a table. Yes, you lose the ability to make some dynamic decisions this way unless you make linecards intelligent enough to interpret policies. The problem then becomes one of synchronizing the tables within the line-cards with the core. That is where the consistency problem arrives. I submit that, this is no different from the macro-system where, edge routers have to be updated with core2edge policies. We have consistency problems there to. However, they are transient and the system is robust enough to handle those transients. I further submit that this same approach can be applied at the micro-system, internally to a specific router implementation. There exist single-chip PC systems that could do this (www.zflinux.com). One each, per line-card, with their own individual PCI bus. They can talk to each other via the directly connected bus. What we then have is a closely-coupled distributed computing cluster ... in one box. Now, we have macro-architectures being applied to micro-systems. Throw in a couple of ASICs and you have an intelligent line-card, that is the equivalent of a full PC, with its own *nix O/S. Prices are dropping on this stuff daily.