Subnet vs prefix



  • My understanding is that the IPv4 term "subnet" has been replaced by "prefix" in IPv6.  In IPv6 all local networks are supposed to be /64 and are not subnetted.  However, you may get a larger prefix, such as a /56 or /48, which is then split into multiple /64 networks.  The only exceptions are /127 & /128 for point to point links and loopback etc..  I see pfSense still uses subnet for IPv6 networks.  Is this appropriate?



  • IPv6 still has subnets, it's correct to refer to subnets with IPv6 the same as IPv4 in that regard.

    Prefixes also refer to a (usually larger) IPv6 subnet, but don't necessarily relate to any particular subnet. Like you mentioned, it's typical to get a /56 or /48 prefix, then you subnet that into /64 subnets.

    The terminology as we use it is correct.



  • Given that /64 is the smallest network and can't be subneted without breaking SLAAC, where are the subnets used?  A /56, for example, is a bundle of 256 /64 networks, not a single network, in that you can't use it without splitting into /64s, again without breaking SLAAC.  With IPv6, local networks are always /64.



  • @JKnott:

    Given that /64 is the smallest network and can't be subneted without breaking SLAAC, where are the subnets used?

    You don't have to use SLAAC. On networks with end-user devices connected, generally you will. Interconnect networks are often a smaller subnet.

    You could also assign a bigger network, like a /56 on a single network. That would generally be stupid, but maybe there is some use case where it isn't (though I can't imagine what that might be, it's still a valid subnet if poor design).



  • Here's what RFC 4291 has to say:

    "For all unicast addresses, except those that start with the binary
    value 000, Interface IDs are required to be 64 bits long and to be
    constructed in Modified EUI-64 format."

    So that rules out all but the /64 prefix for the local network.  While it might be possible to use other prefixes, you'd definitely be breaking the spec.


  • LAYER 8 Global Moderator

    while I agree that /64 is what is used on local - using something smaller going to break stuff most likely..

    I don't see how the term subnet is actually wrong.. They both talk about the same thing, what part of the address makes up the network, what part makes up the host.  Be it use use prefix or subnet is going to end up being a date your age sort of thing ;)

    Kind of like some people still call switches a hub, even though we all know actual hubs have been dead and gone for many years.  Or how people say they want to tape a show, when no tape is involved your just recording it on your dvr..  Not your vcr ;)

    If you want to debate the semantics of the proper use of the terms - where are they calling it subnet?  Are you talking about in the dhcpv6 server where it states subnet for the network vs prefix and subnet mask vs what you want to call it prefix mask or just mask?



  • When you break down a /48 or a /56 that your ISP has delegated to you to multiple /64 to be used on your networks you are subnetting just like you would be on IPv4, no difference in methodology.



  • Yes, they are much the same, but with different terminology.  As mentioned before, you divide an IPv4 network to make multiple smaller networks.  That doesn't happen with IPv6.  You have one or more /64 networks, which aren't divided.  So, while the concept is the same, the practice is different.  I suppose what we have with IPv6 is similar to the IPv4 aggregation, where multiple "class A" networks are merged into one and the split up as needed, if at all.  The IPv4 idea of squeezing out addresses is history, with IPv6.



  • @kpa:

    When you break down a /48 or a /56 that your ISP has delegated to you to multiple /64 to be used on your networks you are subnetting just like you would be on IPv4, no difference in methodology.

    With a /48 or /56, your ISP is assigning you multiple networks, not a single large network.  You cannot use a /48 or /56 as is.  You must split it into individual /64s.  On the other hand, with IPv4, you could aggregate multiple /24s into a single larger network.


  • LAYER 8 Global Moderator

    huh??  Who says you can not use the /48 or /56 as is??  You can for sure do that if you wanted.  /64 is just the smallest network your suppose to use.  And has more IPs in then possible for the same layer 2, etc.

    But there is nothing saying you can not use that /48 you got from HE and use just that for your connectivity - it would be pretty stupid just like when you get a /16 using it as is would be pretty stupid you would use a subset of that.

    When you get a /48 your getting 1 network, and you subnet it down into the smaller chunks.. Just like you normally get a /32 from arin, you would then assign that either /48 or /56 chucks and then those locations assigned those /48 and /56 would break those down into the the /64's

    So how do you aggregate multiple /24s into larger network.. So I give you 10.0.1/24 and 10.0.14/24 what larger network are you going to put that in?  I did not give you 10.0.2 through 13.. and you don't have 10.0.15/24 so you sure can not sue 10.0.0/20

    When you take a /48 and break it up into /56 you don't say you prefixed it, you say you subnetted it ;)



  • @johnpoz:

    huh??  Who says you can not use the /48 or /56 as is??  You can for sure do that if you wanted.  /64 is just the smallest network your suppose to use.  And has more IPs in then possible for the same layer 2, etc.

    But there is nothing saying you can not use that /48 you got from HE and use just that for your connectivity - it would be pretty stupid just like when you get a /16 using it as is would be pretty stupid you would use a subset of that.

    When you get a /48 your getting 1 network, and you subnet it down into the smaller chunks.. Just like you normally get a /32 from arin, you would then assign that either /48 or /56 chucks and then those locations assigned those /48 and /56 would break those down into the the /64's

    So how do you aggregate multiple /24s into larger network.. So I give you 10.0.1/24 and 10.0.14/24 what larger network are you going to put that in?  I did not give you 10.0.2 through 13.. and you don't have 10.0.15/24 so you sure can not sue 10.0.0/20

    When you take a /48 and break it up into /56 you don't say you prefixed it, you say you subnetted it ;)

    RFC 4291 :says you don't use anything but a /64 as is.  It requires 64 bits, no more, no less, for the host portion of the address.  Unlike IPv4 you don't have variable length network and host portions.  This is just like IPX, which was popular before IPv4, where you have a 48 bit host portion and 16 bit network portion.  As I mentioned earlier, anything other than /64 will break SLAAC as well as RFC 4291.

    https://tools.ietf.org/html/rfc4291

    As for aggregating /24s, you want a contiguous blocks, such as 10.0.0.0/24 and 10.0.1.0/24 to make 10.0.0.0/23.  You would not aggregate 10.0.1.0/24 and 10.0.14.0/24 as they are not contiguous


  • LAYER 8 Global Moderator

    Your still just talking semantics here dude prefix and subnet are the same thing..

    You are correct on the /64 though this is only sort of address that should be assigned to a network segment.. But sorry the /64s that make up the /48 or /56 or even the /3 etc.. are subnets of that parent.. By definition of the word…  subnetwork..

    "A subnetwork, or subnet, is a logical, visible subdivision of an IP network.[1] The practice of dividing a network into two or more networks is called subnetting."

    So if I breakup a /56 into smaller /64's those are subnets of the /56.. Well really they are subnets of the /63 that was above it but you don't use those in ipv6 as we all agree upon.  Still doesn't change the fact that your /64 is a subnet of its parent /56, etc..



  • It's not breaking spec to use something other than /64, though using shorter prefixes probably never makes sense, and longer prefixes only where strictly statically-assigned hosts are connected.
    https://tools.ietf.org/html/rfc5375#section-3

    There are variable length network and host portions of IPv6 no differently than IPv4.



  • @cmb:

    It's not breaking spec to use something other than /64, though using shorter prefixes probably never makes sense, and longer prefixes only where strictly statically-assigned hosts are connected.
    https://tools.ietf.org/html/rfc5375#section-3

    There are variable length network and host portions of IPv6 no differently than IPv4.

    Here's what that RFC you linked to says:

    "Using a subnet prefix length other than a /64 will break many
    features of IPv6, including Neighbor Discovery (ND), Secure Neighbor
    Discovery (SEND) [RFC3971], privacy extensions [RFC4941], parts of
    Mobile IPv6 [RFC4866], Protocol Independent Multicast - Sparse Mode
    (PIM-SM) with Embedded-RP [RFC3956], and Site Multihoming by IPv6
    Intermediation (SHIM6) [SHIM6], among others.  A number of other
    features currently in development, or being proposed, also rely on
    /64 subnet prefixes."

    Sounds to me like it's not a good idea.  That link also mentions special cases I already mentioned, that is point to point links, loopback etc.  However, those are not broadcast networks, the way a LAN is.  Even in IPv4, you could use a /31 for point to point links and /32 for an individual interface.  Also, those don't have to be global unique addresses.  You could use a more limited scope address, just as you might in IPv4.
    That Appendix B.2 goes on to talk about point to point links and loopbacks, as I mentioned.

    That link also says:
    "A deployment compliant with the current IPv6
    specifications cannot use other prefix lengths."

    That pretty much wraps it up.

    While it may be technically possible to use other prefixes for a LAN, it's extremely bad practice.  Also, with all the IPv6 addresses available, there's really no need for such things.



  • On networks with end user devices, yes, it would be a bad practice to use anything other than a /64.


Log in to reply