Network automation 업무를 하다보니 아무래도 요즘은 오롯한 네트워크 엔지니어링 관련 자료들을 잘 안보게 된다. 뭐, 다른말로 게을러졌다는 이야기겠지만 연말이라 회사업무가 조금 줄어든 관계로 대충만 알고있는 IPv6를 시스코에서 발행한 책을 한 번 정독하고 정리해보려고 한다. 어떤 내용인든지 왜? 라는 질문이 가장 중요하다고 생각하는데 이번 포스트는 "IPv6, 응 그게 왜?"라는 내용을 담아보고자 한다.
Why transition to IPv6?
- IPv4 주소의 고갈: 32비트로 구성된 IPv4는 4.29 billion (약 4.3억) 개의 주소를 표현할 수 있다. 2011년 IP 주소를 할당하는 기관인 IANA에서는 이미 새롭게 할당할 주소가 없다고 발표했다. IoT 기기들의 폭발적인 증가는 IP 주소 고갈의 속도를 가속화했다.
- IPv6만 접속 허용: 미국 정부에서도 IPv6 활성화를 의무화하고 있다. 관련 프로젝트들이 진행중인 것으로 보이는데 2025년까지 모든 네트워크 시스템의 IPv6 이용을 계획하고 있다. 물론, IPv4와 IPv6의 주소번역 기술이 존재하기는 하지만 신뢰도가 떨어지고 퍼포먼스의 문제를 야기한다.
- 성능증가: 옛날 자료이긴 하지만 Meta에서는 20~40%의 뉴스피드의 성능 증가를 보이고 있다고 발표했고 Asia-Pacific Network Information Center (APNIC)에서는 IPv6의 트래픽이 routing aggregation (라우팅 집단화) 로 인해서 더 빨리 처리된다고 발표했다. 물론, 더 많은 두 프토토콜 스택에 대한 성능비교 연구는 보다 많이 진행되어야 하는 부분이지만 IPv6를 사용할 때는 IPv4에서 사용되는 NAT 장비나 application-layer gateways (ALG)의 middle man 개입이 없어지니 더 빠른 처리가 가능하다고 알려져있다.
CIDR과 NAT는 IPv4 고갈의 해결책 아닌가?
위 부제의 대한 대답은 임시 해결책일 뿐이다. 우리집만 생각하더라도 랩탑 2대, 아이패드 3개, 각종 IoT 기기들을 합치면 약 30개인데 한 사람이 소유하는 기기들은 매년 늘어나고 있다는 통계가 있다. IPv4 프토토콜이 처음 연구될 때는 32비트면 네트워크 기기들을 충분히 수용할 수 있을거라 예측했지만 1990년대 초반 이미 WWW의 등장과 함께 인터넷 사용인구의 증가로 인해 주소 고갈에 대한 인지가 있었다.
처음 IP 주소의 할당은 클래스 별로 했다. 클래스 A~E까지 말이다. 클래스 A는 16,777,214개의 호스트를 수용할 수 있고 클래스 B는 65,564 그리고 클래스 C는 254개를 수용할 수 있다. 이렇게 클래스별로 할당을 하다보니 주소 할당에 낭비가 발생하게 되었다. 이로 인해, Classless Inter-Domain Routing (CIDR)가 등장했고 각 네트워크 규모에 적합한 주소를 할당하기 시작했다.
NAT라는 기술로 인해 IPv4에서 IPv6로 이전이 지연되었다는 이야기도 있다. NAT는 사설 IP 대역을 (10.0.0.0/18, 172.16.0.0/12, 192.168.0.0./16) 하나 또는 복수의 공인 IP 대역으로 변환해 인터넷 망을 연결할 수 있게 하는 기술이다. 이론적으로 하나의 공인 IP에 1600만개의 사설 IP를 사용할 수 있으니 굳이 IPv6를 사용해야 하나라는 의문이 발생하는 것은 당연하다. 더불어, 이 하나의 사설 IP에 포트 번호까지 붙여 사용하는 PAT까지 고려하면 임시 해결책 그 이상의 좋은 접근법이 아닌가라 생각할 수 있다.
NAT의 한계점은:
- Checksum recalculations: IPv4 헤더의 변동이 생기면 IPv4 checksum은 항상 재계산되어야 한다. 이러한 재계산은 라우터 또는 방화벽에서 이루어질텐데 추가적인 정보의 처리를 요구하며 이는 성능저하로 이루어진다.
- ICMP manipulation: Internet Control Message Protocol의 약자로 네트워크 내에 문제가 있을 경우 알려주는 프로토콜이다. ICMP 메시지 payload안에 원래 IPv4 헤더의 정보 (NAT로 처리되기 이전의 정보) 가 담겨있다. NAT 장비에 의해서 주소변환된 정보라면 NAT 장비는 다시 변환 이전의 정보로 변경해주어야 한다.
- IPsec issues: IPsec 전송 모드에서 (transparent mode)에서 NAT를 이용하면 문제가 생긴다. IPsec AH (Authentication Header)가 사용되면 NAT는 주소를 변환하는 과정을 통해 checksum이 재계산되기에 end point에서는 전송중 데이터가 변경되었다고 판단하기에 무결성 검사를 (integrity check) 통과하지 못한다.
- Breaking end-to-end reachability: 대개는 server-client 구조로 네트워크가 많이 구성되기에 큰 문제가 아닐 수도 있지만 video conferencing (Skype, Webex)와 같은 서비스나 스마트홈 IoT 장치를 통해 원격제어하는 경우 NAT는 문제를 야기한다. 물론, port forwarding과 같은 방법으로 문제를 해결할 수는 있지만 네트워크 구조의 복잡성을 야기한다.
- Performance: NAT를 이용하면 주소변환을 해야하고 관련해서 checksum을 재계산해야 하는 등 일련의 프로세싱 과정이 필요하다. 이런 과정이 늘어나는 것은 성능의 저하를 야기한다. NAT는 아래 그림처럼 ISP에서도 IPv4 주소 고갈에 대응하기 위한 방법으로 사용된다. Carrier-Grade NAT (CGN)이라고 불리는데 아래 그림처럼 우리집에서 인터넷을 위해 트래픽이 전송될 때도 2번의 NAT를 반대로 응답을 받을 때도 2번의 주소변환이 발생한다. 즉, 지연율과 복잡성을 증가시킨다는 점.
Reference: IPv6 Fundamentals: A Straightforward Approach to Understanding IPv6, 2nd Edition by Rick Graziani
'<개인공부> - IT > [Network&Security]' 카테고리의 다른 글
#3. IPv6 주소 표현방법과 종류 (0) | 2022.11.23 |
---|---|
#2. IPv6의 개념과 필수용어 (0) | 2022.11.16 |
CORS란 (0) | 2022.09.30 |
Application Programming Interfaces (API 란?) (0) | 2022.08.27 |
ASA의 Failover에 대한 정리 (0) | 2022.02.24 |