Is VJ compression considered a violation of the "end-to-end" principle?
VJ compression happens in the middle of the network, between two routers/gateways. End-to-end refers to the hosts, i.e. the computers which "host" the end users' applications. Of course, in the old days, many of these "hosts" also carried out the function of a gateway using a dialup modem, but that is still not violating the end-to-end model because the end user application never knows about the VJ compression. NAT is different because it causes some end-user applications to fail entirely. For instance an application which sends its IP address to another host with the instructions "call me back when something interesting happens". The NAT box in the middle causes the callback to fail in most cases. And end-to-end multihoming solution that is consistent with the end-to-end model will allow any application to communicate with another host even when one of the hosts moves to a different network location. BGP multihoming achieves this by announcing the small number of possible locations where a particular netblock can be found. The telephone system solves this by providing a central directory service where the network looks up an 800 number (or any portable number) to find the current location of the destination. Some people have used DNS techniques to do a similar sort of IPv4 multihoming, notably Paul Vixie and an Israeli box vendor whose name escapes me at the moment. Theoretically, in a network, a router/gateway could have some intelligence/state so that it does not simply forward packets based on destination addresses in the routing table. Instead it does some kind of query/lookup to identify the real destination location. If you stick this functionality directly in the end hosts themselves, then you have SHIM6. If you stick the functionality in the provider edge router then you have MPLS. --Michael Dillon