MPLS (by alaric)
With MPLS, there's still something like the routing advertisments that spreads knowledge about the shape of the network (and the desired routing policies of the administrators) between the routers, but this mechanism is not used to deal with short-term changes like link failure.
MPLS packets, instead of a header containing source, destination, protocol, and port information, just contain a stack of labels. An MPLS router just examines the topmost label on the stack, looks it up in its routing table (which just has entries for particular labels, without any complex ranges like IP routing tables). The routing table entry then specifies which router to pass the packet on to next, as well as a label operation: the router can be instructed to replace the label, or to push a new label onto the top of the stack, or to pop the current label off.
The routing table entry can also contain a 'backup plan', in case the specified next router is unreachable. Since the backup plans are precalculated, this allows very fast reaction to a broken link. Also, when such a link breaks, announcements of this fact are rippled out across the network as with IP routing, enabling routers other than the one directly connected to the failed link or broken router to rebuild their routing tables to avoid the failure. This still takes seconds, but it doesn't matter - since the neighbour routers have backup routes already in place, traffic is still flowing, just not necessarily on the most efficient route.
The complexity of IP routing table lookup comes from classifying the packet. A routing table entry for, for example, HTTP traffic from a workstation LAN to a server LAN has to be identified by the source address being in a certain range, the destination address being in a certain range, and a certain protocol and port number. However, with MPLS, this classification is done once by the edge router, when it receives an IP packet or Ethernet frame from the external network and uses a conventional routing table to decide which MPLS label to attach before injection into the MPLS backbone.
This also means you can route on much more complex aspects of the packet. An IP router only has the contents of the packet to go on; an MPLS edge router could label incoming IP packets based on which customer of a dialup ISP is currently connected to the incoming line, by complex rules based on the application-layer contents of the packets, etc. All of this functionality only needs to be supported on the edge router that injects the packet; the interior routers, and the edge router that finally receives the packet and passed it to an external network need not.
The actual labels and the routing tables are all generated automatically in the background by the routers when the network topology changes, as advertisments flood out, based on policies specified by the administrators: "Edge router WorkstationLAN1 must have a route called WEB to edge router InternetConnection, with these characteristics". Then the WorkstationLAN1 router can be told to route all packets with protocol TCP, port 80, and a destination address not within the organisation to the MPLS route called WEB.
By Ben, Sun 1st Apr 2007 @ 6:41 pm
The problem with all this stuff on a 'home' network is that there just aren't enough users to play with.
Now I've got an additional full time user on my network, stuff will be used more. So a wired network is needed (and I'm going to Gb just for fun), and I've just had to look up instructions for transfering calls on Asterisk. But even with two people, it still hasn't got the usage to really try funky stuff out.
I suppose you could always connect up the cats or something.