Ne, /24 ni isto kot C-klasa!

Pogosto slišim omrežne inženirje omenjati neke “klase”. Površno vsakemu podomrežju z 24 biti v omrežnem delu IPv4-naslova (po domače “/24”) pravijo C-klasa. Zato razumem, da se jim zdi izpis, kot je tale spodaj, nekoliko čuden.

router1>show ip bgp ipv4 unicast neighbors 10.0.171.71 routes 

   Network          Next Hop            Metric LocPrf Weight Path
*> 12.34.56.0/24    10.0.171.71                            0 65071 i
*> 71.0.0.0         10.0.171.71                            0 65071 i
*> 72.0.0.0/10      10.0.171.71                            0 65071 i
*> 123.45.67.0/24   10.0.171.71                            0 65071 i
*> 128.71.0.0       10.0.171.71                            0 65071 i
*> 128.72.0.0/20    10.0.171.71                            0 65071 i
*> 130.4.5.0/24     10.0.171.71                            0 65071 i
*> 192.71.0.0       10.0.171.71                            0 65071 i
*> 192.72.0.0/25    10.0.171.71                            0 65071 i
*> 200.3.4.0        10.0.171.71                            0 65071 i

Total number of prefixes 10 

In v resnici je čuden! Ponekod piše /20, /24 ipd., drugod pa oznaka velikosti omrežja ni zapisana. Nadležni ostanki preteklosti?

Res je – v “davnih časih” so IPv4-omrežja delili v razrede ali “klase”. Podomrežjem /8 od 0.0.0.0 do 127.0.0.0/8 so rekli klasa A, podomrežjem /16 od 128.0.0.0 do 191.255.0.0/16 so rekli klasa B, podomrežjem /24 med 192.0.0.0 in 223.255.255.0/24 pa klasa C. Od tod izvira površno poimenovanje vseh podomrežij /24 z imenom “C-klasa”. Vendar:

“C-klase” so le podomrežja /24 med 192.0.0.0 in 223.255.255.0/24 in ne vsa podomrežja /24.

Zdaj lahko pojasnimo zagonetni izpis show bgp ipv4…. Če je velikost nekega podomrežja enaka privzeti velikosti ustrezne “klase”, je ni potrebno eksplicitno izpisati. Tako 71.0.0.0 pomeni 71.0.0.0/8, 128.71.0.0 je v resnici 128.71.0.0/16, 192.71.0.0 pa 192.71.0.0/24. Tako so menili zgodnji proizvajalci komunikacijske opreme. Zapis se je ohranil kot živ fosil, kljub temu, da IPv4-omrežij skladno s CIDR (Classless Inter-Domain Routing) že dolgo ne delimo več v razrede.

Preizkusimo. Povežimo dva usmerjevalnika različnega tipa (router1 je Cisco, router71 pa Juniper) in med njima vzpostavimo BGP-sejo. Vsak od obeh usmerjevalnikov oglašuje po dve omrežji iz naslovnega prostora “klas” A, B in C, po eno privzete velikosti (/8, /16 in /24), drugo pa manjše (/10, /20 in /25).


(podrobnejše nastavitve najdete tule)

Oglejmo si izpis prejetih in oglaševanih podomrežij na obeh usmerjevalnikih.


Cisco vztrajno obuja spomin na “klase” in poskuša zmesti mlajše inženirje, ki so to pomoto v razvoju IP-ja k sreči preskočili.

router1>show ip bgp ipv4 unicast neighbors 10.0.171.71 routes
BGP table version is 15, local router ID is 10.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 71.0.0.0         10.0.171.71                            0 65071 i
*> 72.0.0.0/10      10.0.171.71                            0 65071 i
*> 128.71.0.0       10.0.171.71                            0 65071 i
*> 128.72.0.0/20    10.0.171.71                            0 65071 i
*> 192.71.0.0       10.0.171.71                            0 65071 i
*> 192.72.0.0/25    10.0.171.71                            0 65071 i

Total number of prefixes 6

router1>show ip bgp ipv4 unicast neighbors 10.0.171.71 advertised-routes
BGP table version is 15, local router ID is 10.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 11.0.0.0         0.0.0.0                  0         32768 i
*> 12.0.0.0/10      0.0.0.0                  0         32768 i
*> 128.1.0.0        0.0.0.0                  0         32768 i
*> 128.2.0.0/20     0.0.0.0                  0         32768 i
*> 192.1.0.0        0.0.0.0                  0         32768 i
*> 192.2.0.0/25     0.0.0.0                  0         32768 i

Total number of prefixes 6

router1>show ip route bgp

B     71.0.0.0/8 [20/0] via 10.0.171.71, 01:04:58
      72.0.0.0/10 is subnetted, 1 subnets
B        72.0.0.0 [20/0] via 10.0.171.71, 00:59:19
B     128.71.0.0/16 [20/0] via 10.0.171.71, 00:58:15
      128.72.0.0/20 is subnetted, 1 subnets
B        128.72.0.0 [20/0] via 10.0.171.71, 00:58:15
B     192.71.0.0/24 [20/0] via 10.0.171.71, 00:56:50
      192.72.0.0/25 is subnetted, 1 subnets
B        192.72.0.0 [20/0] via 10.0.171.71, 00:56:50


Juniper nas s “klasami” ne obremenjuje. Izpis je preglednejši.

user@router71> show route receive-protocol bgp 10.0.171.1

inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 11.0.0.0/8              10.0.171.1           0                  65001 I
* 12.0.0.0/10             10.0.171.1           0                  65001 I
* 128.1.0.0/16            10.0.171.1           0                  65001 I
* 128.2.0.0/20            10.0.171.1           0                  65001 I
* 192.1.0.0/24            10.0.171.1           0                  65001 I
* 192.2.0.0/25            10.0.171.1           0                  65001 I

user@router71> show route advertising-protocol bgp 10.0.171.1

inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 71.0.0.0/8              Self                                    I
* 72.0.0.0/10             Self                                    I
* 128.71.0.0/16           Self                                    I
* 128.72.0.0/20           Self                                    I
* 192.71.0.0/24           Self                                    I
* 192.72.0.0/25           Self                                    I

user@router71> show route protocol bgp terse 

inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

A Destination        P Prf   Metric 1   Metric 2  Next hop        AS path
* 11.0.0.0/8         B 170        100          0 >10.0.171.1      65001 I
* 12.0.0.0/10        B 170        100          0 >10.0.171.1      65001 I
* 128.1.0.0/16       B 170        100          0 >10.0.171.1      65001 I
* 128.2.0.0/20       B 170        100          0 >10.0.171.1      65001 I
* 192.1.0.0/24       B 170        100          0 >10.0.171.1      65001 I
* 192.2.0.0/25       B 170        100          0 >10.0.171.1      65001 I


V času, ko se aktualnemu internetnemu protokolu reče IPv6, je spomin na “klase” prav nostalgičen. Nekateri proizvajalci ga vneto ohranjajo. Verjetno zaradi združljivosti s staro opremo in aplikacijami – upam, da ne zaradi združljivosti s staro miselnostjo.

Advertisements