프로그래밍/Computer Network

4. Subnetting & Routing

prime 2024. 4. 8. 23:20

1. Subnetting & Subnet mask

 

1) Subnetting

subnetting이란 네트워크를 여러 작은 네트워크로 나누는 것을 말한다.

예를 들어, 9.100.100.100 이라는 IP로 데이터를 전송한다고해보자. Internet의 core router는 IP가 9.X.X.X class A 네트워크에 속한다는것을 알았고, 해당 network를 담당하는 gateway router로 보낸다. Gateway router는 특정 network의 입구/출구 역할을 한다. 그렇다면 gateway router는 이제 host ID를 확인하여 해당하는 시스템에 전송해야 하는데, host ID의 갯수는 Class A에서 256*256*256 = 16777216 개인데, 이렇게 많은 host를 단일 gateway와 연결할 수 없다. 따라서, 다시 내부적으로 subnet으로 나누고 각 subnet에 ingree/egress역할을 하는 gateway router를 둠으로서 이러한 문제를 해결할 수 있다.

 

2) Subnet Masks

 

subnet mask는 IP의 길이와 동일한 32bit로 구성되어있고, 연속된 1 이후 연속된 0이 나오는 형식으로 되어 있다. 이것을 이용하면 subnet ID를 구할 수 있다. 예를 들자면, 11111111 11111111 11111111 00000000 이다.

subnet mask와 IP를 AND연산을 하게 되면 subnet ID를 구할 수 있고, 0에 해당하는 부분이 host ID이다. IP가 9.100.100.100.100이고 subnet mask가 11111111 11111111 11111111 00000000 인 패킷이라면  AND연산을 하면 9.100.100.100.0 이 나온다. 따라서 class A에서 network ID는 첫번째 octet이므로 9이고, subnet ID는 100.100.100가 되며, host ID는 100이 된다. 이러한 방식으로 gateway router는 subnet mask와 AND연산을 통해 어떤 subnet ID로 데이터를 보내야 하는지 결정한다. subnet mask는 1의 갯수로도 표현될 수 있는데, 예를 들자면 9.100.100.100/24 와 같다.

 

참고로 subnet의 host ID중 2개는 할당이 불가능하다. host ID가 0인 경우는 사용되지 않으며, host ID가 1로 모두 채워지는 경우는 subnet에서 사용하는 boradcasting주소로 예약되기 때문이다.  

 

3) CIDR(Classless Inter-Domain Routing)

Address class system의 문제점은, class에 따라 network ID의 크기가 static하게 고정된다는 것이다. 예를 들어, Class C network를 할당받은 경우 사용할 수 있는 host ID는 고작 256 - 2 = 254개이다. 우리는 클래스의 개념을 버리고 Network ID, host ID만을 subnet mask로 구분하여 사용하는 CIDR을 도입함으로서 더 많은 네트워크의 크기를 허용할 수 있다.

IP의 첫번째 octet이 Class C에 해당하고, subnet mask가 255.255.224.0이라고 해보자. 원래는 network ID는 세번째 octet까지이므로 이러한 방식으로 subnetting을 할 수 없다. 하지만, CIDR을 이용할 경우, 더 큰 크기의 network를 사용할 수 있다. 256 + 256 = 512개의 host ID중 2개는 사용불가하므로, 총 510개의 host ID를 할당 할 수 있게 된다. 

참고로 네트워크당 host ID는 항상 2개씩 손실됨을 기억하자.

 

 

2. Routing

 

1) Basic routing concepts

Router란 destination address에 따라 traffic을 forward하는 network device이다. Routing은 기본적으로 매우 복잡하지만, 많은 문제들은 ISP와 대기업에서 처리한다. 

 

라우팅은 기본적으로 다음과 같은 단계로 이루어진다.

1) router의 interface중 하나에서 패킷를 수신한다.

2) 패킷의 desintation IP를 검사한다.

3) routing table에서 destination IP를 조회한다.

4) 해당 network에 가장 가까운 interface을 통해 패킷을 전달한다.

 

Network A (196.168.1.0/24) -> Network  B (10.0.0.0/24) -> Network C (172.16.1.0/23) 의 경로로 패킷이 전달된다고 가정한다. A와 B사이에는 Router X , B와 C사이에는 Router Y 가 있고, router는 연결된 network의 interface들을 가진다. 

Router X는 A의 interface로 192.168.1.1을, B의 interface로 10.0.0.254를 갖는다고 가정한다.

Router Y는 B의 interface로 10.0.0.1 을, C의 interface로 172.16.1.254 를 갖는다고 가정한다.

 

Network A의 196.168.1.100 장비는 172.16.1.24로 데이터를 보내고 싶다고 해보자.

1) destination IP가 local network가 아님을 확인한 후 destination MAC을 gateway router의 MAC address로 설정하여 전송하고, router X의 192.168.1.1 interface에서 해당 패킷을 수신한다. 

2) Network layer까지 확인하여 패킷의 destination IP가 172.16.1.24임을 확인하고, routing table을 활용하여 어떤 routing 경로가 최적인지 확인하고 Network B를 거치는 것이 최적임을 확인한다. TTL이 변경되었으므로 checksum을 다시계산하고 Network layer을 encapsulation한다. source MAC을 router X의 MAC으로, desintation MAC을 router Y의 MAC으로 설정하고 router X 10.0.0.254 interface 으로 전송한다.

3) Network layer까지 확인하여 패킷의 destination IP가 172.16.1.24임을 확인하고, router Y는 해당 IP가 1hop거리에 있고 ARP테이블에 destination MAC이 존재함을 안다. TTL이 변경되었으므로 checksum을 다시계산하고 Network layer을 encapsulation한다. source MAC을 router Y의 MAC으로, desintation MAC을 172.16.1.24의 MAC으로 설정하고 router Y 172.16.1.254 interface 으로 전송한다.

 

이러한 방식을 통해, 네트워크를 하나씩 하나씩 거치면서 모든 패킷들은 이동한다.

core router들의 경우 mesh형태로 연결되어있는데, 목적지로 갈 수 있는 여러가지 경로들을 제공한다.

 

2) Routing table

 

Routing table은 기본적으로 다음과 같이 구성된다.

Destination network Next hop Total hops Interface
192.168.1.1/24 192.173.0.1 5 192.173.0.254
... ... ... ...
... ... ... ...

 

Destination network는 router가 알고있는 다른 network이다.

Next hop은 패킷을 보내는 다음 router의 interface IP이다. Direct로 연결되어있을 경우 next hop이 없을 수 있다.

Total hops는 destination network까지 전송되는데 거쳐지는 router의 갯수이다. 이것은 link의 중단, traffic congestion, new router 등 여러가지 상황에 의해서 지속적으로 최적경로로 update된다. Routing protocol을 이용해 neighbot router로부터 경로 정보를 수집할 때, 받은 정보가 더 나은 경로인지 아닌지를 판별해 update할지 말지를 결정한다.

Interface는 traffic을 전달해야하는 interface이다.

 

3) Interior Gateway Protocol

 

router는 destination network까지의 최적의 경로를 결정하기 위해, 인접한 다른 router들끼리 그들이 가진 정보를 공유하는 protocol이고, Interior gateway protocol, exterior gateway protocol으로 나뉜다.

 

Interior gateway protocol은 single autonomous system에서 정보를 공유하기 위해 사용된다. 

Autonomous system이란, single network operator(single organization)의 control에 있는 network의 모음이다. 자체 통신망을 가지고 내부적으로 통신하는 대기업 사업자가 관리하는 네트워크나, 하나의 ISP사업자가 관리하는 네트워크와 같은 것들이다.

Interior gateway protocol은 서로 공유하는 데이터의 종류에 따라 Link state routing protocols, distance-vector protocol으로 나뉜다. 

Distance-vector protocol은 꽤 오래되었는데, 인접한 neighbor로부터 routing table을 받음으로서, 특정 목적지로가는 더 나은 경로가 있다면 routing table을 update한다. 여기서 공유되는 routing table을 list of distance라고 하고, 이것이 distance-vector protocol이라고 불리는 이유이다. 이것의 문제점은 멀리있는 router들의 정보일수록 느리게 반응하고, network의 전체적인 상태정보를 가지기가 어렵다는 점이다. 이것을 해결하기 위해 Link state routing protocol이 도입된 이유이다.

Link state routing protocol은 각 router가 각 interface의 link state를 알린다. 이러한 정보는 Autonomous system내의 모든 router에 전파되어 모든 router는 system의 모든 세부정보를 알 수 있게 된다. 각 router는 이러한 정보를 바탕으로 복잡한 알고리즘을 실행하여 목적지로 가는 최적의 경로를 설정한다. 따라서, 이 방식은 distance-vector방식에 비해 느리며 router에 많은 메모리와 컴퓨팅성능을 필요로 한다. 현재 대부분 사용하는 방식이다.

 

4) Exterior Gateway Protocol & ASN & IANA

 

Exterior gateway protocol은 Autonomous system의 Edge router간에 정보를 교환하기 위해서 사용된다. 여러 조직간에 정보를 공유해야 할 때 router는 exterior gateway protocol을 사용한다. Internet은 수많은 Autunomous system의 mesh이고, Highest level의 core router의 최우선 목적은,  트래픽을 제대로 전달하기 위해 각 Autonomous system의 Edge router로부터 데이터를 얻는 것이다. 

IANA(Internet Assigned Numbers Authoity)은 IP할당, ASN(Autonomous System Number)할당  등을 관리하는데 도움을 주는 non-profit organization이다. ASN은 각 Autonomous system별로 할당되고 IP와 같이 32bit이다. 예를 들어, KT는 AS4766이다.

 

5) Non-routable address space

 

IPv4는 인터넷의 폭발적 성장에 따라, 한계를 맞이했고, 이에 따라 RFC 1918이 도입되었다.

RFC 1918은 Request For Comments를 의미한다. RFC는 인터넷 운영에 책임이 있는 사람들 Standard requirements에 대해 동의할 수 있는 오래된 방법이다. 여기서 non-routable address space에 대해 설명했는데, 그것은 아무도 route할 수 없는 IP범위에 관한 것이다. Non-routable address space를 사용할 경우, gateway router는 해당 network로 traffic을 전달하지 않는다. 이것은 누구에게도 속하지 않고, internal network에서 누구나 사용할 수 있어 사용자 수에 제한이 없다. 참고로 NAT이라는 방법을 사용하면 해당 network의 device가 인터넷의 다른 장치와 통신할 수 있다.

Non-routable address space의 3가지 범위는 다음과 같다.

10.0.0.0/8

172.16.0.0/12

192.168.0.0/16