26

I am still struggling to understand to what extent CIDR really renders IP address classes obsolete. Here's what I understood so far:

  1. It's ridiculously inefficient (and impossible, too) to assign every organization that needs to address more than 255 hosts a class B address, which could technically address 65535 hosts.

  2. However, if such an organization needed to address, say, approximately 700 hosts, one could just assign three (preferably contiguous) class C network addresses to that organization. E.g.:

    192.42.42
    192.42.43
    192.42.44
    
  3. Problem: For that one organization, routers would have to store three entries in their forwarding tables, which won't scale.

  4. CIDR solves this problem by introducing route summarization/aggregation, enabling the ISP that assigned the three class C networks to the organization to advertise only one prefix to the rest of the world. E.g.,

    192.42.42.0/21
    

So far, so good. However, I just can't grasp why every resource I touch claims that classful addressing is "a thing of the past". After all, the ISP is in charge of, say, class C network addresses, and does assign these to its customers. CIDR just fixes the problem of multiple entries in the forwarding tables, right? Thus, IP address classes are still around, are they not?

Exam's coming up, so help is much appreciated. :P

4
  • 3
    /21 is eight "class c" networks.
    – Peter
    Commented Jul 9, 2015 at 20:33
  • 5
    I'm tempted to say that it's a thing of the past because it refers to IPv4 Commented Jul 10, 2015 at 8:18
  • @HagenvonEitzen I'm tempted to point out that that is completely untrue in the practical reality. Commented Jul 10, 2015 at 15:02
  • 3
    It's a thing of the past because 1993 was 22 years ago. See RFC 1517, 1518, 1519. Do not trust any resource which claims classful addresses are relevant today or treats them as anything but historical curiosities. Commented Jul 11, 2015 at 17:17

7 Answers 7

28

Address delegation really used to happen in three sizes: class A, B and C. Class A delegations would be given from a certain address range, class B delegations from a different range etc. Because the different classes used different address ranges you could determine the class by looking at the first part of an address. And this was built into the routing protocols.

  • Class A delegations contained 16777216 addresses each
  • Class B delegations contained 65536 addresses each
  • Class C delegations contained 256 addresses each

This was very inefficient for networks that didn't fit these sizes. A network that needed 4096 addresses would either get sixteen Class C delegations (which would be bad for the global routing table because each of them would have to be routed separately: the class size was built into the protocol) or they would get one Class B delegation (which would waste a lot of addresses).

In 1993 CIDR was introduced. The protocols were adjusted to be able to deal with prefixes of different sizes and it became possible to route (both internally and externally) prefixes like a /30 or a /21 or a /15 etc etc. Anything between /0 and /32 became possible. Organisations that needed 2048 addresses could get a /21: exactly what they would need.

The way you could internally subdivide those addresses was also limited. There were rules on how you could subnet. Originally each subnet within your classful network had to be the same size. You need one subnet with 128 addresses and another subnet with 16 addresses: too bad.

Variable Length Subnet Masking (VLSM) is the internal-network equivalent of CIDR. VLSM has existed longer than CIDR. It was already mentioned in 1985. So CIDR is basically extending VLSM to inter-domain routing. With VLSM your subnets don't all have to be the same size anymore. You can assign a different number of addresses for each subnet, depending on your needs.

These days all routing on the internet is done without classes. A prefix in the routing table might by coincidence (or because of history) match the classful structure, but protocols will no longer assume they can deduce the prefix length (subnet mask) from the first part of the address. All prefix lengths are explicitly communicated: classless.

Saying that an ISP is in charge of a Class C network is similarly obsolete. Addresses are distributed completely classless by the RIRs (Regional Internet Registries, the organisations responsible for delegating addresses to ISPs and businesses with their own independent addresses).

IPv4 addresses classes really don't exist anymore, and have been deprecated in 1993. If you look at old obsolete routing protocols you can of course still see the assumptions they made based on address class, but that was 20 years ago...

5
  • 1
    These "rules" were limitations of routing protocols. All your networks have to be same size because the routing protocol didn't carry a netmask. (eg. RIPv1, IGRP)
    – Ricky
    Commented Jul 9, 2015 at 23:06
  • 1
    Yep, that's what I said. Carrying prefix length in routing protocols is how VLSM and CIDR are implemented Commented Jul 9, 2015 at 23:09
  • They aren't "guessing based on the address", they are applying a local interface netmask to the entire class. Eg. if you have a 10.0.0.5/24 interface, everything in 10/8 will be a /24.
    – Ricky
    Commented Jul 9, 2015 at 23:15
  • 1
    That is the VLSM bit. The classful bit was that they would assume that every address starting with 10 belonged together. The pre-VLSM bit would assume that because the local interface was a /24 every subnet in 10/8 would be a /24. Both the /24 and the /8 are assumptions these days. Every subnet can have a different size, and there is no way to determine where the aggregate boundary is. Commented Jul 9, 2015 at 23:21
  • 1
    Adding to what's been said, the first few bits of the IP address determined the address class. First bit 0 = class A, first two bits 10 = class B, first three bits 110 = class C, etc. See also en.wikipedia.org/wiki/…
    – user
    Commented Sep 8, 2017 at 17:19
33

classful addressing is "a thing of the past".

This is true because nothing in the modern internet does classful addressing[1]. With classful addressing, the netmask is a fixed value based on the address. In your example, you cannot "merge" three class C ranges to have 700 hosts in one LAN. The netmask for each range is automatically 24 bits.

CIDR fixed this by abolishing the rules whereby the address dictates the mask. Thus, a LAN can be any size.

You (and a lot of other people) are still hung up on the words "Class C", "Class B", and "Class A". Those constructs no longer exist; and haven't for decades. What people mean when they use the term is the netmask size of 24, 16, and 8 respectively. They don't mean class semantics are being applied.

[1] 10.0.0.1/24 is an invalid configuration in a classful system.

3
  • 1
    I think Windows still uses the IP class of the address as the default mask.
    – Taemyr
    Commented Jul 10, 2015 at 13:22
  • 3
    Yeah but it's not specifically classful. It's just applying a default CIDR. No where does Microsoft require or specify IP Address class' Commented Jul 11, 2015 at 0:57
  • @Taemyr It is not only Windows. Linux has derived the default mask from the first bits of the address for many years. This is still the case with Ubuntu 14.04. But it is only a default, which most of the time needs to be overridden with a different value.
    – kasperd
    Commented Jul 11, 2015 at 12:40
17

Classful addressing only supports 3 masks for unicast: /8, /16/, /24. It is not used anymore, except to refer to class [A,B,C] == [/8,/16,/24] when describing a block of IP's

CIDR allows the mask to be any value from /0 to /32. Specified at end of IP with /<bit#>

Think of a point-to-point serial: that would have wasted a classfull class C /24 (256 xIPs) with a classful setup before; with CIDR it only needs /30 (4 xIPs) or /31 (2 xIPs).

Most ISPs will now only assign a /28 block of public IP's to a customer providing 14 IPs, or even less. (CIDR)

The two modes of operation are not compatible as one (classful) guesses the mask from the IP, and the other (CIDR) specifies it precisely. CIDR has replaced classfull.

See the Wikipedia article “Classful Network”.

4
  • Thank you for dedicating time to write an answer. However, I fail to see how your answer relates to my question in any way.
    – user15544
    Commented Jul 9, 2015 at 18:59
  • 5
    His answer is spot-on. When you understand the difference between classless and classful, the answer will make sense.
    – Ricky
    Commented Jul 9, 2015 at 20:30
  • However in IPv4 a /31 subnet net cannot contain any IP addresses, 0 is Both are reserved for the ID of the net itself and the broadcast to the net. Commented Jul 11, 2015 at 14:33
  • 2
    @ratchet freak except for ptp links, there you don't need a broadcast ip, and can get away with /31 see tools.ietf.org/html/rfc3021
    – Pieter
    Commented Jul 11, 2015 at 21:36
7

As many answers already explain, classes are a thing of the past because they do not allow subnet masks other then /8, /16 and /24.

These specific subnet masks are still very popular, especially /24, because they are the easiest on us humans. For these masks, the end of the subnet part of the address lines up with a dot in the (dotted-decimal) IP address. Thus it is visually clear if two IP addresses are in the same subnet or not, no calculations required.

This is why the class A, B and C terms stick around, they still align with the most common subnet masks. But they do not make sense anymore, and saying 10.11.12.0/24 is a class C is simply wrong. The first octet of a C class was by definition between 192 and 223.

2

In Classful routing, the netmask is implied by the top bits of the address, and is not stored in routing tables; the class is a property of each address, not just of the routing topology. A Class C network cannot be a subset of a Class B network, because the top bits cannot match both.

Your hypothetical organization with 3 Class C networks would have to pay attention to which computers got addresses in which of the 3 networks. With CIDR routing, they can use a netmask that allows all of their computers to be in the same subnet.

1

The only place I've seen actual classful behaviour in recent years is in the point-to-point tunnelling protocol. PPTP Many would consider this to be obsolete in itself, but there is certainly a lot of it still in use.

When the client connects to a server, the tunnel gets either a default route or a route to the classful network of the server. https://technet.microsoft.com/en-us/library/cc779919%28v=ws.10%29.aspx

Had a few networks where this was actually a problem, as recently as 2016.

I believe there are workarounds with DHCP and various add-on scripts, and indeed for routes in the other direction. If at all possible use a different tunnelling protocol which has better support for routes.

Kind regards,

Jonathan.

0

As you correctly described, classfull addressing is not efficient compared to classless addressing, since a lot of IP addresses remain wasted inside the subnets with classfull addressing.

I just can't grasp why every resource I touch claims that classful addressing is "a thing of the past"

It's true that IPs might handle a C-class network, but this is not true for all ISPs. Furthermore, in the previous era, classfull addressing was used in all subnets (even for home subnets, or corporate subnets), where nowadays only classless addressing is used (if not NAT).

This is the reason classfull addressing is a thing from the past.