Mouse wrote:
The goal of branes is to support network virtualisation. One aspect of network virtualisation is the ability for the kernel to support multiple routing tables as a result.Indeed. But, by choosing a design that has that sort of isolation wired into it, you end up ensuring that they cannot be used for anything else, rather than creating a general-purpose mechanism which can, among other things, be used for virtualization.
I think that the virtualisation approach is superior because it means that the tools that work with a routing table don't need to be told that there are different types of routing tables. In the virtual environment, everything just works without being aware of which environment it is in. To my way of thinking, doing something special just for virtual routing tables means that any tools that work with routing need to be modified in special ways. If a tool hasn't been modified then it doesn't work. Thus the solution becomes more frail. As a quick example of this, what happens to routing socket messages? Do they get special tags? Do they need to change in a way that makes them incompatible? And so on. There's hidden complexity that I believe makes it more trouble than it is worth. Darren