3 ms·
With both IPv4 and IPv6, you want to allocate addresses hierarchically: network providers get large blocks, and delegate subsets to their customers. The problem
by teraflop 11y ago
With both IPv4 and IPv6, you want to allocate addresses hierarchically: network providers get large blocks, and delegate subsets to their customers. The problem is that with IPv4, addresses are scarce enough that customers only get as many as they can justify now (or in the immediate future). When that allocation runs out, they need to get another non-contiguous block. And this problem reoccurs on every level of the hierarchy, so ISPs themselves end up with lots of different blocks. Even if you manage to get a large block to allow for your own future expansion, you're just increasing the pressure on your neighbors.
With IPv6, we have enough bits of address space that we can drastically over-provision each level of delegation -- by orders of magnitude, if necessary -- and still have plenty of room to spare. e.g. as a home customer, my ISP gives me a /56 with no questions asked, which means 256 subnets each with an effectively unlimited number of devices.
In theory, this means it should become very rare for a single physical or logical network to have non-contiguous addresses. Which in turn means that routing tables can use a single prefix to cover an entire provider, instead of having to know about all of the individual sub-allocations.
- thaumasiotes 11y agoIn your example, your ISP has allocated you well over half the bits in an address. It's true that this is only 1/2^56 of the total space, but you can't overprovision very many levels to that extent no matter how long the addresses are (using the same proportions, the level above "home customer" might have a /25, the level above "ISP" might have a /10, and you could probably have two more levels on top of that with /5 and /2, although I'm not sure there's a lot of value in having a /2 layer protecting the /5. But I don't do internet routing; what do I know? There are some rival pressures here: - IPv6 space is so abundant (and cheap to allocate) that you can have as much as you ask for. This obviously leads to massive overdemand, after which it's hard to reallocate while preserving the idea that everyone who owns space owns one contiguous block. - You can counter that by restricting how much people can ask for. But at that point you're not using the full space; you're restricted to the amount that can be allocated, which is smaller. - Not everyone will be on board with "I'm going to take as much space as I can get, just in case I end up needing a million times as much space as expected." But some of those less-demanding people really will end up with addressing needs in excess of what they anticipated. We could call this the Hofstadter's Law ("it always takes longer than you expect, even after accounting for Hofstadter's Law") of addressing. We can't expect everyone to get things right the first time; we need a working reallocation system. If reallocation doesn't work, abundance alone isn't going to save us.
- Dylan16807 11y ago> In your example, your ISP has allocated you well over half the bits in an address. Eh, think of IPv6 as allocating from a 64 bit subnet space. So they're only allocating 1/8 of the address space. > using the same proportions, the level above "home customer" might have a /25, the level above "ISP" might have a /10 More like /40 and /28 And once you are in the million-customer range you don't really need prefixes any more, but that gives room for more layers of generous prefixing and still having most of the address space spare. Basically: you can't give everyone as much as they might ever ask for, but you can give everyone 10x as much as they seem to need and still have a dozen bits to spare
- teraflop 11y agoI think you've pretty much got it, but what makes it work is that you're overprovisioned at each level. You don't have to set up an addressing scheme that's guaranteed to be able to satisfy every conceivable request as a contiguous range. The extra buffer means that if you run out at one level, you can get another allocation from the next level up without having to advertise it globally. Right now, if you need more IPv4 addresses, you have to buy a /22 or so from someone else. Because the address space is so hotly-contested, that block could come from almost anywhere, which means every core router on the internet needs to remember where it lives on the actual topology. With IPv6, maybe once in a while a customer comes along who needs more than a /56. No big deal; you just give them another (maybe non-contiguous, if you're unlucky) allocation from the ISP's block. The ISP needs to remember that both allocations belong to the same customer, and route packets accordingly. But everyone else can just route based on the ISP's all-encompassing prefix. That's what makes the system fundamentally more scalable.
- ghshephard 11y agoReally good point about the ISP just reaching into it's /32 allocation. Also, If there is the slightest chance that you will ever need more than a /56, (I.E. you are anything other than a vanilla home business account) the ISP will almost always give you a /48 right out of the gate anyways, and so you have on the very first day 65,536 subnetworks to work with. After that, everything you say is also true, if the customer starts to run low on those 65,536 subnetworks, the ISP can simply reach into it's /32, and then hand out a second /48 in the rare scenario that someone is using more than 65,536 subnetworks that need to be globally routed.