Classless Inter-Domain Routing
38404
223537411
2008-07-04T14:36:31Z
Kbrose
3938795
removed alert, if still not sufficient references, please re-insert
{{otheruses4|IP addresses|the radio station in Windsor, Ontario|CIDR-FM}}
'''Classless Inter-Domain Routing''' ('''CIDR''', pronounced "cider") is a method of categorizing [[IP address|Internet Protocol (IP) addresses]] for the purpose of allocating IP addresses to users and for efficiently routing IP protocol packets on the [[Internet]].
During the first decade of the modern Internet after the invention of the [[Domain Name System]] (DNS) it became apparent that the devised system based on [[classful network]] design of distributing the address space and routing IP packets was not [[Scalability|scalable]] (cf. RFC 1517).
To alleviate the short-comings, the [[Internet Engineering Task Force]] published in [[1993]] a new set of standards, RFC 1518 and RFC 1519, to define a new concept of allocation of IP address blocks and new methods of routing protocol packets using [[IPv4]] addresses.
In the prior [[classful network]] architecture, IP address allocations were based on octet (8-bit) boundary segments of the 32-bit IP address, forcing either 8, 16, or 24-bit address prefixes. Thus, the smallest allocation and routing block was only 256 addresses large, too small for most enterprises, and the next largest was 65534 addresses, too large to be used efficiently by even large organizations. This lead to large inefficiencies in address use as well as routing, because the large number of allocated small (class-C) networks with individual route announcements, being geographically dispersed with little opportunity for route aggregation, caused heavy demand on routing equipment.
'''Classless Inter-Domain Routing''' is based on '''variable-length subnet masking''' (VLSM) to allow allocation on arbitrary-length prefixes. CIDR encompasses:
* The VLSM technique of specifying arbitrary length prefix boundaries. A CIDR-compliant address is written with a suffix indicating the number of bits in the prefix length, such as 192.168.0.0/16. This permits more efficient use of increasingly scarce [[IPv4]] addresses.
* The '''aggregation''' of multiple contiguous prefixes into '''[[Supernet|supernets]]''', and, wherever possible in the Internet, advertising aggregates, thus reducing the number of entries in the global routing table. Aggregation hides multiple levels of subnetting from the Internet routing table, and reverses the process of "subnetting a subnet" with VLSM.
* The administrative process of allocating address blocks to organizations based on their actual and short-term projected need, rather than the very large or very small blocks required by classful addressing schemes.
[[IPv6]] utilizes the CIDR convention of indicating prefix length with a suffix, but the longer address field of IPv6 made it unnecessary to practice great economy in allocating the minimum amount of address space an organization could justify. The past concept of ''class'' has not been used for IPv6.
==CIDR blocks==
[[Image:IP Address Match.png|400px|right]]
CIDR is principally a bitwise, prefix-based standard for the interpretation of IP addresses. It facilitates [[routing]] by allowing blocks of addresses to be grouped together into single [[routing table]] entries. These groups, commonly called '''CIDR blocks''', share an initial sequence of bits in the [[Binary numeral system|binary]] representation of their IP addresses. IPv4 CIDR blocks are identified using a syntax similar to that of IPv4 addresses: a four-part dotted-decimal address, followed by a slash, then a number from 0 to 32: ''A.B.C.D/N''. The dotted decimal portion is interpreted, like an IPv4 address, as a 32-bit binary number that has been broken into four octets. The number following the slash is the '''prefix length''', the number of shared initial bits, counting from the left-hand side of the address. When speaking in abstract terms, the dotted-decimal portion is sometimes omitted, thus a ''/20'' is a CIDR block with an unspecified 20-bit prefix.
An IP address is part of a CIDR block, and is said to ''match'' the CIDR prefix if the initial N bits of the address and the CIDR prefix are the same. Thus, understanding CIDR requires that IP address be visualized in [[Binary numeral system|binary]]. Since the length of an IPv4 address is fixed at 32 bits, an N-bit CIDR prefix leaves <math>32-N</math> bits unmatched, and there are <math>2^{(32-N)}</math> possible combinations of these bits, meaning that <math>2^{(32-N)}</math> IPv4 addresses match a given N-bit CIDR prefix. ''Shorter'' CIDR prefixes match more addresses, while ''longer'' CIDR prefixes match fewer. An address can match multiple CIDR prefixes of different lengths.
CIDR is also used with [[IPv6]] addresses, for which the prefix length can range from 0 to 128, due to the larger number of bits in the address. A similar syntax is used: the prefix is written as an IPv6 address, followed by a slash and the number of significant bits in the prefix mask.
==Assignment of CIDR blocks==
The [[Internet Assigned Numbers Authority]] (IANA) issues to [[Regional Internet Registry|Regional Internet Registries]] (RIRs) large, short-prefix CIDR blocks. For example, 62.0.0.0/8, with over sixteen million addresses, is administered by [[RIPE NCC]], the European RIR. The RIRs, each responsible for a single, large, geographic area (such as Europe or North America), then subdivide these blocks into smaller blocks and issue them publicly. This subdividing process can be repeated several times at different levels of delegation. Large [[Internet service providers]] (ISPs) typically obtain CIDR blocks from an RIR, then subdivide them into smaller CIDR blocks for their subscribers, sized according to the size of the subscriber's network. Networks served by a single ISP are encouraged by [[IETF]] to obtain IP address space directly from their ISP. Networks served by multiple ISPs, on the other hand, will often obtain [[Provider Independent Address Space|independent]] CIDR blocks directly from the appropriate RIR.
[[Image:CIDR Address.png|right|400px]]
For example, in the late 1990s, the IP address 208.130.29.33 (since reassigned) was used by <tt>www.freesoft.org</tt>. An analysis of this address identified three CIDR prefixes. 208.128.0.0/11, a large CIDR block containing over 2 million addresses, had been assigned by [[ARIN]] (the North American RIR) to [[MCI Inc.|MCI]]. Automation Research Systems, a [[Virginia]] [[Value-added reseller|VAR]], leased an Internet connection from MCI and was assigned the 208.130.28.0/22 block, capable of addressing just over 1000 devices. ARS used a /24 block for its publicly accessible servers, of which 208.130.29.33 was one.
All of these CIDR prefixes would be used, at different locations in the network. Outside of MCI's network, the 208.128.0.0/11 prefix would be used to direct to MCI traffic bound not only for 208.130.29.33, but also for any of the roughly two million IP addresses with the same initial 11 bits. Within MCI's network, 208.130.28.0/22 would become visible, directing traffic to the leased line serving ARS. Only within the ARS corporate network would the 208.130.29.0/24 prefix have been used.
==CIDR and masks==
A [[Subnetwork|subnet mask]] is a [[Mask (computing)|bitmask]] that encodes the prefix length in a form similar to an IP address: 32 bits, starting with a number of 1 bits equal to the prefix length, ending with 0 bits, and encoded in four-part dotted-decimal format. A subnet mask encodes the same information as a prefix length, but predates the advent of CIDR.
CIDR uses '''variable length subnet masks''' ('''VLSM''') to allocate IP addresses to subnets according to individual need, rather than some general network-wide rule. Thus the network/host division can occur at any bit boundary in the address. The process can be [[recursion|recursive]], with a portion of the address space being further divided into even smaller portions, through the use of masks which cover more bits.
CIDR/VLSM network addresses are now used throughout the public Internet, although they are also used elsewhere, particularly in large private networks. An average desktop [[Local area network|LAN]] user generally does not see them in practice, as their LAN is usually numbered using special [[private network]] addresses.
==Prefix aggregation==
Another benefit of CIDR is the possibility of '''routing prefix aggregation''' (also known as "[[supernetting]]" or "route summarization"). For example, sixteen contiguous Class C (/24) networks could now be aggregated together, and advertised to the outside world as a single /20 route (if the first 20 bits of their network addresses match). Two aligned contiguous /20s could then be aggregated to a /19, and so forth. This allows a significant reduction in the number of routes that have to be advertised over the Internet, preventing 'routing table explosions' from overwhelming routers, and stopping the Internet from expanding further.
See [[IPv4 subnetting reference]].
{| class="wikitable"
|+ CIDR
!IP/CIDR
!Δ to last IP addr
!Mask
!Hosts (*)
!Class
!Notes
|-
|a.b.c.d'''/32'''
| +0.0.0.0
|255.255.255.255
|1
|1/256 C
|
|-
|a.b.c.d'''/31'''
| +0.0.0.1
|255.255.255.254
|2
|1/128 C
|d = 0 ... (2n) ... 254
|-
|a.b.c.d'''/30'''
| +0.0.0.3
|255.255.255.252
|4
|1/64 C
|d = 0 ... (4n) ... 252
|-
|a.b.c.d'''/29'''
| +0.0.0.7
|255.255.255.248
|8
|1/32 C
|d = 0 ... (8n) ... 248
|-
|a.b.c.d'''/28'''
| +0.0.0.15
|255.255.255.240
|16
|1/16 C
|d = 0 ... (16n) ... 240
|-
|a.b.c.d'''/27'''
| +0.0.0.31
|255.255.255.224
|32
|1/8 C
|d = 0 ... (32n) ... 224
|-
|a.b.c.d'''/26'''
| +0.0.0.63
|255.255.255.192
|64
|1/4 C
|d = 0, 64, 128, 192
|-
|a.b.c.d'''/25'''
| +0.0.0.127
|255.255.255.128
|128
|1/2 C
|d = 0, 128
|-
|a.b.c.0'''/24'''
| +0.0.0.255
|255.255.255.000
|256
|1 C
|
|-
|a.b.c.0'''/23'''
| +0.0.1.255
|255.255.254.000
|512
|2 C
|c = 0 ... (2n) ... 254
|-
|a.b.c.0'''/22'''
| +0.0.3.255
|255.255.252.000
|1,024
|4 C
|c = 0 ... (4n) ... 252
|-
|a.b.c.0'''/21'''
| +0.0.7.255
|255.255.248.000
|2,048
|8 C
|c = 0 ... (8n) ... 248
|-
|a.b.c.0'''/20'''
| +0.0.15.255
|255.255.240.000
|4,096
|16 C
|c = 0 ... (16n) ... 240
|-
|a.b.c.0'''/19'''
| +0.0.31.255
|255.255.224.000
|8,192
|32 C
|c = 0 ... (32n) ... 224
|-
|a.b.c.0'''/18'''
| +0.0.63.255
|255.255.192.000
|16,384
|64 C
|c = 0, 64, 128, 192
|-
|a.b.c.0'''/17'''
| +0.0.127.255
|255.255.128.000
|32,768
|128 C
|c = 0, 128
|-
|a.b.0.0'''/16'''
| +0.0.255.255
|255.255.000.000
|65,536
|256 C = 1 B
|
|-
|a.b.0.0'''/15'''
| +0.1.255.255
|255.254.000.000
|131,072
|2 B
|b = 0 ... (2n) ... 254
|-
|a.b.0.0'''/14'''
| +0.3.255.255
|255.252.000.000
|262,144
|4 B
|b = 0 ... (4n) ... 252
|-
|a.b.0.0'''/13'''
| +0.7.255.255
|255.248.000.000
|524,288
|8 B
|b = 0 ... (8n) ... 248
|-
|a.b.0.0'''/12'''
| +0.15.255.255
|255.240.000.000
|1,048,576
|16 B
|b = 0 ... (16n) ... 240
|-
|a.b.0.0'''/11'''
| +0.31.255.255
|255.224.000.000
|2,097,152
|32 B
|b = 0 ... (32n) ... 224
|-
|a.b.0.0'''/10'''
| +0.63.255.255
|255.192.000.000
|4,194,304
|64 B
|b = 0, 64, 128, 192
|-
|a.b.0.0'''/9'''
| +0.127.255.255
|255.128.000.000
|8,388,608
|128 B
|b = 0, 128
|-
|a.0.0.0'''/8'''
| +0.255.255.255
|255.000.000.000
|16,777,216
|256 B = 1 A
|
|-
|a.0.0.0'''/7'''
| +1.255.255.255
|254.000.000.000
|33,554,432
|2 A
|a = 0 ... (2n) ... 254
|-
|a.0.0.0'''/6'''
| +3.255.255.255
|252.000.000.000
|67,108,864
|4 A
|a = 0 ... (4n) ... 252
|-
|a.0.0.0'''/5'''
| +7.255.255.255
|248.000.000.000
|134,217,728
|8 A
|a = 0 ... (8n) ... 248
|-
|a.0.0.0'''/4'''
| +15.255.255.255
|240.000.000.000
|268,435,456
|16 A
|a = 0 ... (16n) ... 240
|-
|a.0.0.0'''/3'''
| +31.255.255.255
|224.000.000.000
|536,870,912
|32 A
|a = 0 ... (32n) ... 224
|-
|a.0.0.0'''/2'''
| +63.255.255.255
|192.000.000.000
|1,073,741,824
|64 A
|a = 0, 64, 128, 192
|-
|a.0.0.0'''/1'''
| +127.255.255.255
|128.000.000.000
|2,147,483,648
|128 A
|a = 0, 128
|-
|0.0.0.0'''/0'''
| +255.255.255.255
|000.000.000.000
|4,294,967,296
|256 A
|
|}
(*) Note that for routed subnets bigger than /31 or /32, 2 needs to be subtracted from the number of available addresses - the largest address is used as the broadcast address, and typically the smallest address is used to identify the network itself. See RFC 1812 for more detail. It is also common for the gateway IP for that subnet to use an address, meaning that you would subtract 3 from the number of usable hosts that can be used on the subnet.
==Historical background==
[[IP address]]es were originally separated into two parts: the ''network address'' (which identified a whole network or subnet), and the ''host address'' (which identified a particular machine's connection or interface to that network). This division was used to control how traffic was routed in and among [[Internet Protocol|IP]] networks.
Historically, the IP address space was divided into three main '[[classful network|classes of network]]', where each class had a fixed size network address. The class, and hence the length of the network address and the number of hosts on the network, could always be determined from the most significant bits of the IP address. Without any way of specifying a prefix length or a subnet mask, [[routing|routing protocols]], such as [[Routing Information Protocol#RIPv1|RIP-1]], [[IGRP]], necessarily used the class of the IP address specified in route advertisements to determine the size of the routing prefixes to be set up in the [[routing table]]s.
As the experimental TCP/IP network expanded into the Internet during the 1980s, the need for more flexible addressing schemes became increasingly apparent. This led to the successive development of [[Subnetwork|subnetting]] and CIDR. Because the old class distinctions are ignored, the new system was called '''classless routing'''. It is supported by modern [[routing protocols]], such as [[Routing Information Protocol#RIPv2|RIP-2]], [[EIGRP]], [[IS-IS]] and [[OSPF]]. This led to the original system being called, by [[back-formation]], '''[[classful routing]]'''.
Variable-Length Subnet Masking (VLSM) is the same concept as CIDR, but is mostly in historical usage.
[[Internet]] RFC 1338 was a major paradigm shift to establish a provider-based addressing and [[hierarchical routing]]. With the new RFC 1338-style provider-based [[supernetting]], it was possible to create multiple hierarchical tiers and most tiers were envisioned to be [[internet service providers]]. Provider-based address space allocation was the new model, and [[BGP]] would evolve to [[BGP4]], incorporating the RFC 1338 paradigm. For this shift to occur, the technique for supernetting-subnetting the IP address space required a modification. This new feature was called [[Classless Inter-Domain Routing]] (CIDR). (Note that RFC 1338 was replaced by RFC 1519) [http://www.linktionary.com/i/ip.html].
==External links==
* RFC 1518 - An Architecture for IP Address Allocation with CIDR
* RFC 4632 - Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy
* RFC 2317 documents a way to do [[reverse DNS]] delegation for CIDR blocks
* RFC 4291 - IP Version 6 Addressing Architecture
* RFC 3021 - PtP links using /31 subnets (but /32 is more flexible)
* [http://www.subnet-calculator.com/cidr.php Online IP CIDR Calculator]
* [http://www.ijack.net/subnet.html Freeware command-line subnet calculator for Windows and Linux]
* [http://jodies.de/ipcalc Command-line calculator by Krischan Jodies (also in Debian)]
* [http://www.pc-tools.net/unix/grepcidr/ Grep-like command-line tool to match IP addresses by CIDR spec]
== Examples of New Address Assignment and Routing ==
* Refer to RFC 4632, Page 15, Section 6
[[Category:Internet standards]]
[[Category:Internet architecture]]
[[Category:Routing]]
[[Category:Network addressing]]
[[an:Classless Inter-Domain Routing]]
[[ca:Classless Inter-Domain Routing]]
[[cs:Classless Inter-Domain Routing]]
[[de:Classless Inter-Domain Routing]]
[[es:CIDR]]
[[fr:Adresse IP#Principe_du_CIDR]]
[[ko:사이더]]
[[hr:CIDR]]
[[id:CIDR]]
[[lv:Bezklases starpdomēnu maršrutēšana]]
[[pl:Classless Inter-Domain Routing]]
[[pt:CIDR]]
[[ru:Бесклассовая адресация]]
[[fi:Luokaton reititys]]
[[sv:Classless Inter-Domain Routing]]