PDA

Pogčedajte punu verziju : help: struktura podataka za subnetting


Pedja
24. 01. 2007., 14:46
Planiram da napravim jendostavan alat za planiranje IP mreze. Lupam glavu kako da resim problem hijerarhijskih veza izmedju podmreza ali izgleda nikako da ubodem pravi pristup.

Za svaku podmrezu imam predivdjene sledece podatke:
NET_IP - ip adresa mreze
NET_MASK - maska mreze
DESCRIPTION - opis
START_IP - prvi rasplozivi IP u mrezi
END_IP - poslednji raspolozivi IP u mrezi
BROADCAST_IP - broadcast adresa
MAX_HOSTS - maksimalan broj IP- adresa u mrezi
MAX_SUBNETS - maksimalan broj podmreza u mrezi

Svaka podmreza moze da bude podmreza neke druge mreze.

Ono sto mi treba to je da mogu da ih sortiram po hijerarhiji, da razlikujem koja je mreza podmreza druge mreze, i da mogu da proverim da li se mreze preklapaju.

Da li se neko bavio slicnim problemom?

LiquidBrain
24. 01. 2007., 14:55
Za tako neshto morash da znash i rute da bi znao da li je neka mreza podmreza neke druge mreze :) (uh, kako ovo dobro zvuci)

Dalje sve mrezne opsege racunash uz pomoc osnovne ip adrese i njihove podmaske (NETMASK).
Verovatno si negde video ovakav zapis: 10.10.10.0/24
U tom opsegu imash 255 adresa - 1 za broadcast (10.10.10.255) - 1 base network (10.10.10.0). Ali ako imash 10.10.10.15/6 to je vec druga prica.
Evo ti link da se ne ponavljam:
Racunanje Subnet Maski (http://www.networkclue.com/routing/tcpip/calculating-masks.aspx)

Pozdrav.

Pedja
24. 01. 2007., 15:31
Znam ja to sve :) Napisao sam svoj kalkulator koji racuna sve to na osnovu IP mreze i maske.

Rute nisu potrebne. Da li je neka mreza podmreza neke duge moze lako da se utvrdi preko mreznih maski i adresa. Problem je kako resiti zapis hijerarhije kada ima vise nivoa podmreza.

zextra
24. 01. 2007., 22:11
Da proverim da li sam dobro shvatio sta zelis.

Improvizovana hijerarhija:

`- 10.0.0.0/24 [subnet]
|
+- 10.0.0.1/24 [host 10.0.0.1 sa netmaskom 255.255.255.0]
+- 10.0.0.2/26 [host 10.0.0.2 sa netmaskom 255.255.255.192]
+
|
+- 10.0.0.65/24
+- 10.0.0.66/26
|
~

Poenta ove sheme je da masine unutar /26 opsega koriste masine na pocetku opsega kao izlaz ka ostatku nadmreze. Naravno, ta /24 masina moze biti bilo gde u opsegu.

Jesam li pogodio? Da ne predlazem mogucu organizaciju ako nisam :)

LiquidBrain
25. 01. 2007., 07:21
Ako sam dobro shvatio, tebi treba struktura stabla!?!?

jablan
25. 01. 2007., 10:10
Ako (pod)mreže ne mogu da se samo delimično poklapaju ima strukturu stabla.

Stablo može da se konstruiše na osnovu IP adrese i maske mreže, ali je verovatno zgodno da se to ne radi stalno, već da se doda i jedno klasično polje sa spoljnim ključem na mrežu - roditelja.

Pedja
25. 01. 2007., 20:14
Zextra, stavar stoji otprilike tako kako si napisao samo si upotrebio pogresnu kombinaciju adrese i maske (10.0.0.1/24 u stari predstavlja mrezu 10.0.0.0/24 kao i sve ostale adrese iz tvog primera). Recimo da jedna mreza moze ovako da izgleda:


10.0.0.0/16
+-10.0.0.0/24
+-10.0.1.0/24
+-10.0.2.0/24
+-10.0.8.0/23
+-10.0.8.0/24
+-10.0.9.0/24
+-10.0.10.0/24
+-10.0.16.0/21
+-10.0.16.0/22
+-10.0.16.0/23
+-10.0.16.0/24
+-10.0.16.0/25
+-10.0.16.0/26
+-10.0.16.0/27
+-10.0.16.0/28
+-10.0.16.0/29
+-10.0.16.0/30
+-10.0.16.0/32
+-10.0.16.1/32
+-10.0.16.2/32
+-10.0.16.3/32
+-10.0.16.4/30
+-10.0.16.4/32
+-10.0.16.5/32
+-10.0.16.6/32
+-10.0.16.7/32
+-10.0.16.8/29
+-10.0.16.16/28
+-10.0.32.0/27
+-10.0.16.64/26
+-10.0.16.128/25
+-10.0.17.0/24
+-10.0.18.0/23
+-10.0.20.0/22


Ono sto mi je problem, to je da ako sada recimo u podatke dodam mrezu 10.0.17.0/30, onda treba da upadne kao podmreza od 10.0.17.0/24, a ako bih nakon toga dodao i mrezu 10.0.17.0/25, ona bi u hijerarhiji morala da se nadje izmedju 10.0.17.0/24 i 10.0.17.0/30.

Kvaka je naravno u tome sto bih hteo da to ubacim u relacionu bazu, koja nema hijerarhijsku strukuru....

Redosled nije tesko dobiti, posto je svaki IP u stvari 32-bitni broj, dovoljno je da tabelu sortiram po IP i masci.

Problem je utvrditi hijerarhijsku zavisnost jer je ona sakrivena u binarnom AND izmedju IP broja i maske te je:

(10.0.16.0 AND /21) = (10.0.16.185 AND /21)

gde se IP brojevi i maske zamenjuju odgovarajucim 32bitnim celobrojnim vrednostima, a AND je binarna operacija.

U opstem slucaju, ako je izraz (M AND /MM) = (N AND /MM1) tacan, to znaci da cvor N pripada mrezi M/MM gde je N IP adresa cvora, M ip adresa mreze a /MM maska mreze.

SQL, cini mi se, ne zna da radi binarne operacije. Kad bih mogao da uradim binarno AND u SELECT to bi mi resilo problem.

ivanhoe
25. 01. 2007., 23:32
Ovo izgleda kao neki sumanuti ascii art... :D
kad napravis to programce daj ga da si napravim par postera :1042:

Pedja
26. 01. 2007., 09:09
Odlicno sto si se javio. Posto ionako mislim da ovo postavim kao public servis, taman da urais neki lep graficki interfejs. Taman da ne moram da brinem oko toga, s obzirom da je i to zaguljen posao :)

jablan
26. 01. 2007., 10:27
SQL, cini mi se, ne zna da radi binarne operacije. Kad bih mogao da uradim binarno AND u SELECT to bi mi resilo problem.

Koji tačno upit bi ti trebao, ja nikako da te skapiram.

Vidi, ako bi zapisao IP kao CHAR(32) gde je svaki karakter nula ili jedinica, a polje bits ti sadrži broj prvih zajedničkih bitova (ono "/21" u tvom primeru) mogao bi da radiš nešto kao:

(sve podmreže date mreže)


SELECT * FROM Mreze podmreze
INNER JOIN Mreze mreza ON
podmreze.ip LIKE SUBSTRING(mreza.ip, 1, mreza.bits) + '%'
WHERE
mreza.ip = @zadatiip

zextra
26. 01. 2007., 12:18
SQL, cini mi se, ne zna da radi binarne operacije. Kad bih mogao da uradim binarno AND u SELECT to bi mi resilo problem.

Imas bit operatore: http://dev.mysql.com/doc/refman/4.1/en/bit-functions.html (izvinjavam se ako nisi mislio bas na MySQL)

Za adrese - namerno sam dodavao /mask na obicne adrese koje pripadaju opsegu, da bih naglasio njihov opseg (i da ne bi pravio ascii art :D). U praksi to ide malo drugacije :)

Pedja
27. 01. 2007., 09:06
Imas bit operatore: http://dev.mysql.com/doc/refman/4.1/en/bit-functions.html


Heh, a ja prekjuce kao pretrazish manual uzduz i popreko ali mi ovo nije iskocilo. Bilo mi je cudno da nema, ali rekoh, ajd, SQL je to, nije napredni programski jezik :). Hm, da, ovo je onda resena stvar.


Vidi, ako bi zapisao IP kao CHAR(32) gde je svaki karakter nula ili jedinica,


Jablane, respect! Ovo se zove kreativno razmisljanje. Svaka cast za ideju.