위키백과에 해설된 NAT에 대한 내용을 살펴보면 컴퓨터 네트워킹에서 쓰이는 용어로써, IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술을 말한다.라고 설명되어 있지만 정확희 체크하면 NAT는 IP 주소를 변환하는 것을 말하며 NAPT(Network Address and Port Translation)가 IP 주소와 함께 통신에 사용되는 포트 번호를 변환하여 주는 것을 의미한다. 하지만 NAPT가 NAT와 혼용되어 사용되고 있으며 L4/L7 스위치에서는 IP 주소와 함께 통신에 사용하는 포트 번호까지 변환하는 NAPT를 사용하지만 NAT라 부르고 있다.
NAT와 NAPT의 차이점은 추후에 자세히 정리해보고자 한다.
L4/L7 스위치의 모든 부하분산 서비스는 L4/L7 스위치가 직접 처리하는 것이 아닌 클라이언트의 요청을 서버에 전달하고 서버의 응답을 클라이언트에 전달하는 것으로 전달되는 요청과 응답에 대한 대상을 구분하기 위해 NAT를 수행합니다.
NAT는 L4/L7 스위치의 핵심 기능 중 하나로 정확히 이해하지 못하면 구성, 트러블 슈팅 상황에서 문제가 될 수 있습니다.
L4/L7 스위치의 하드웨어 구조
NAT에 대해 알아보다가 갑자기 하드웨어 구조가 왜 나오는가 할 수 있다. 하지만 하드웨어의 구조에 대해 먼저 알아야지 NAT의 세부 동작을 이해하기 쉽기 때문에 NAT의 세부 동작 과정에 대해 상세히 알아보기 전에 잠시 하드웨어 구조에 대해 알아보고자 한다.
L4/L7 스위치의 구조는 크게 Network Processor, CPU 두 부분으로 나뉜다.
Network Processor
Network Processor는 L2/L3 계층의 패킷을 처리하는 역할로 네트워크 처리에 최적화된 ASIC칩을 사용한다. 네트워크 프로세서를 사용하는 이유는 처리 성능과 효율, 전력 소모량을 낮추기 위해서라고 볼 수 있다. 여기서 말하는 처리 성능은 NIC의 Line speed를 제공하기 위해서라고 볼 수 있다.
Network Processor는 쉽게 생각하여 일반적인 L3 스위치라고 봐도 무방하다.
CPU
CPU는 L4/L7 계층의 패킷 처리를 하는 역할로 로드밸런싱, 매니지먼트 등 다양한 기능을 수행한다. 매니지먼트 기능은 일반 PC에서 OS를 설치하여 사용하듯이 L4/L7 스위치의 OS를 운용하는 역할을 수행한다.
CPU는 일반적인 가정용 데스크탑의 CPU와 동일하다고 볼 수 있다.
Network Processor + CPU
쉽게 생각하면 L4/L7 스위치의 내부는 L3 스위치와 데스크 탑의 조합이라고 볼 수 있다. 외부로 노출된 인터페이스는 L3 스위치 인터페이스이며 내부적으로는 CPU의 NIC와 L3 스위치의 인터페이스가 연결되어 있다.
L4/L7 스위치의 하드웨어관점 처리과정
외부에서 요청이 들어오면 Network Processor는 동일 대역인 L2 Layer에서 처리가 가능한 패킷은 스위치의 동작으로 처리하고 L3 Layer 처리가 필요한 패킷인 경우 설정에 따라 연결된 인터페이스를 통해 CPU로 전달하거나 직접 처리를 수행한다.
CPU는 외부와 직접 연결되어 있지 않기 때문에 Network Processor를 통하여야 패킷 처리할 수 있으며 Network Processor에서 VLAN이 변경 되는 과정에서 CPU로 전달할 수 있기 때문에 설정에 따라 CPU에서 확인하지 못하는 패킷이 존재한다.
이번 포스팅에서는 NAT가 무엇인지와 L4/L7 스위치의 하드웨어 관점에 대해 알아보았습니다. 다음 포스팅에서는 L4/L7 스위치에서 제공하는 NAT의 종류와 각 NAT별 동작 과정을 확인해 보도록 하겠습니다.