VPC Peering 을 공부하다가 다른 리전에 위치한 VPC를 연결, 혹은 IPv6 을 활성화하기 위해 CIDR 블록을 앞에 붙이면 된다는 문장을 보고 상황이 잘 와닿지 않아 CIDR 에 대해 정리해보려 한다.
AWS의 Docs 를 보고 정리한 글 입니다.
Classless Inter-Domain Routing(CIDR) 은 인터넷 상의 데이터 라우팅 효율성을 향상시키는 IP 주소 할당 방법이다. 조직에서는 CIDR 을 사용하여 네트워크에 유연하고 효율적으로 IP 주소를 할당한다.
클래스 기반 주소
주소의 전체 길이는 고정되어있고, 네트워크 및 호스트 부분에 할당되는 비트 수도 고정되어있다. 현재 사용가능한 클래스는 3가지 (A,B,C) 이며, 네트워크 접두사가 각각 8,16,24개 이다. 나머지 비트는 호스트 주소 역할을 한다.
클래스 없는 주소 (CIDR)
가변길이 서브넷 마스킹(VLSM)을 사용해 IP 주소의 네트워크와 호스트 주소 비트 간의 비율을 변경한다. 서브넷 마스크는 호스트 주소를 0으로 변환하여 IP 주소의 네트워크 주소 값을 반환하는 식별자 집합이다.
예시) 192.0.2.0/24 는 처음 24비트 (IPv4 는 총 32비트로 구성됨) 또는 192.0.2가 네트워크 주소인 IPv4 CIDR 주소이다.
유연하지 않은 IP 주소 지정
각 클래스는 고정된 수의 디바이스를 지원했다. (호스트 주소로 할당할 수 있는 비트 수가 고정적이기 때문) 따라서 클래스 기반 배치는 IP 주소를 할당하는 데 있어서 비효율적이었고, IP 주소 공간 낭비로 이어졌다.
예시) 디바이스(호스트)가 300개인 조직에서는 디바이스를 254개만 허용하는 클래스C 를 사용할 수 없다. (클래스 C는 네트워크 접두사가 24비트이기 때문에 호스트 비트로 사용가능한 8비트 뿐이므로 254개의 호스트를 지원한다) 그에 따라 클래스 B 주소를 신청하게 되지만, 디바이스는 300개만 연결 가능하면 되기 때문에 나머지 지원 가능한 호스트 비트는 낭비된다. (= IP 주소공간이 사용되지 않은 채 남겨진다)
문제는 하나 더 있다.
네트워크 설계 제한
서로 다른 클래스 C 네트워크에 속하는 두 네트워크를 결합할 수 없다.
예시) 클래스 C에 속하는 IP 2개가 있다고 해보자. (1) 192.168.1.0 , (2) 192.168.0.0 클래스 C의 서브넷 마스크가 255.255.255.0 으로 고정되어 있기 때문에 (1) 번 네트워크의 0번 호스트와 (2) 번 네트워크의 0번 호스트를 구분할 방법이 없다.
보다 유연하게 IP 주소를 할당하고 디바이스 간에 데이터를 라우팅할 수 있다.
슈퍼넷은 유사한 네트워크 접두사를 가진 서브넷의 그룹니다. CIDR 을 사용하면 기존 마스킹 아키텍처에서는 불가능했던 슈퍼넷을 유연하게 만들 수 있다. 예를들으 조직에서는 아래와 같은 표기법을 사용하여 IP 주소를 단일 네트워크 블록으로 결합할 수 있다.
예) 192.168.1/23 , 192.168.0/23 이 표기법은 255.255.254.0 이라는 서브넷 마스크(23비트)를 IP주소에 적용한다. 라우터는 단 하나의 라우팅 테이블 항목으로 서브넷에 있는 디바이스 간의 데이터 패킷을 관리할 수 있다.
슈퍼넷? 단 하나의 라우팅 테이블?
CIDR 을 사용하여 다수의 작은 네트워크 블록들, 즉 서브넷들을 하나의 큰 논리적 네트워크로 합치는 것을 의미한다. 이러한 방법을 통해 IP 주소를 보다 효율적으로 할당하고, 라우팅을 간소화할 수 있다.
예시에서 언급된 192.168.1/23 , 192.168.0/23 는 각각 별도의 서브넷을 나타낸다. 그러나 이 두 서브넷을 합칠 경우, 주소범위는 192.168.0.0 부터 192.168.1.255 까지가 되며, 이는 총 512개의 IP 주소를 포함한다. 이렇게 합쳐진 네트워크를 슈퍼넷이라고 한다.
슈퍼넷을 통해 라우터의 라우팅 테이블을 간소화 할 수 있는 이유는, 라우터가 여러 서브넷을 개별적으로 처리하는 대신 하나의 슈퍼넷으로 인식하고, 이에 따라 단 하나의 라우팅 테이블 항목으로 관리할 수 있기 때문이다. 이는 라우팅 테이블의 크기를 줄이고, 라우터의 처리 속도를 향상시키며, 전반적인 네트워크 성능을 개선하는 데 도움된다.
예를 들어 라우터가 192.168.0.0/23 슈퍼넷 내의 모든 목적지에 대해 단일 라우팅 경로만을 유지함으로써, 별도로 192.168.0.0/24, 192.168.1.0/24 에 대한 두개의 경로를 유지하는 것보다 더 효율적으로 데이터 패킷을 전송할 수 있게 되는 것이다. 이로 인해 네트워크 관리가 단순화되고, 라우팅 결정을 위한 처리시간이 단축된다.