방화벽은 외부와 내부를 연결하는 네트워크 선로중간에 네트워크 연결장비 형태로 설치되므로 네트워크 장비로서의 역할을 수행하며, 설정된 정책에 의해 허용된 트래픽만을 장애 없이 전달 해야 합니다. 따라서 방화벽 기능을 하는 네트워크 장비를 선정하는데 있어 여러 가지 성능 지표들을 정확히 이해하고 거기에 따른 항계 사항들에 대해 준비를 해야 합니다.
방화벽이 네트워크 장비로서의 성능 한계로 인하여 발생할 수 있는 장애의 유형은 다음과 같습니다.
- 응답시간의 저하: 방화벽이 처리할 수 있는 성능 이상의 패킷이 쏟아져 들어온다면, 처리 못하는 패킷들은 계속 폐기될 것이고 이에 따른 TCP 재전달 현상은 더욱더 네트워크 성능을 악화할 것입니다. 따라서, 방화벽의 처리 성능은 예상되는 초당 패킷수보다 월등하게 높은 성능이어야 합니다.
- 신규접속 불능의 동시 다발적 발생: 어떤 PC에서는 인터넷 사용이 가능하고, 또 다른 PC에서는 인터넷 신규 접속이 불가능한 경우가 발생하는 것으로, 이는 방화벽이 처리할 수 있는 총세션의 수가 가득 차 더 이상 새로운 세션을 맺을 수 없기 때문에 발생하는 것입니다. 이의 방지를 위해서는 역시 방화벽의 전체 처리 가능한 세션 수가 예상되는 전체 세션수보다 항상 월등히 높은 수치어야 할 것입니다.
- 느린 초기 접속 또는 초기 접속 장애: 방화벽은 항상 접속의 첫번째 패킷을 토대로 정책을 적용합니다. 하지만 정책 판별을 받아야 할 초기 세션 패킷의 초당 처리수는 한계가 있습니다. 이 한계를 넘어서는 초기 세션 패킷들이 유입된다면 정책판별 처리를 할 수 없어 폐기하게 됩니다. 이 경우 초기 패킷의 재전송을 통해 접속이 느리게 이루어지거나 반복되는 재전송에도 불고하고 세션 처리 기회를 얻지 못하여 계속 폐기된다면 접속 장애로 이어 질 것입니다.
방화벽 네트워크 성능 지표의 의미와 종류
방화벽은 네트워크상에서 네트워크 장비의 일부로 활용되지만 일반적인 네트워크 장비와 다르게 정책 데이터베이스, 로깅, 리포트 프로그램, 모니터 프로그램 등 많은 기능들이 추가되 있습니다. 특히 네트워크 장비의 가장 중요한 기능인 패킷의 처리도 일반 네트워크 장비와 다르게 전송계층이나 응용계층에서 담당하며, 대부분이 소프트웨어적으로 구현되어 있습니다. 또한 일반 네트워크 장비는 인터페이스와 인터페이스 사이에 데이터 교환이 독립적으로 수행되는 반면, 방화벽에서는 모든 데이터가 중앙 프로세스를 거처 보안정책을 적용받고 처리됩니다.
따라서 방화벽은 일반 네트워크장비와 비교할 때 여러가지 면에서 성능상의 차이점을 갖고 있으며, 성능을 평가하는 지표 또한 다른 관점에서 관리되어야 합니다. 1Gbps를 처리 할 수 있다고 주아하는 어떤 방화벽을 고장 100Mbps 네트워크 접속 환경에 설치하더라도 성능한계에 따른 장애가 반복되는 경우를 흔히 볼 수 있습니다. 단순히 방화벽이 '100Mbps를 처리 할 수 있다', 또는 '1Gbps를 처리 할 수 있다'라는 문구들이 방화벽의 성능을 나타낸다고 볼 수는 없습니다. 어디까지나 가장 최적화된 조건하에서의 처리 능력일 뿐이기 때문입니다.
패킷 크기에 관계없이 초당 8만 3천개의 패킷을 처리하는 방화벽이 있다고 가정합니다. 이 방화벽은 크기가 1500Byte인 패킷들을 처리 할 때 1Gbps의 성능을 나타낼 것입니다. 하지만 TCP/IP 네트워크에서 64Byte에서 1518Byte까지 다양한 크기의 패킷들이 존재합니다. 64Byte크기의 패킷들만을 처리한다면 성능은 100Mbps에도 못 미치는 42Mbps에 불과하게 됩니다. 이와 같이 단순히 '초당 몇 비트를 처리하는가'를 성능 지표의 기준으로 삼는 것은 상당한 성능 판단상 오류가 있습니다.
1500byte 패킷처리 능력 83,000pps * 1500byte * 8 = 996,000,000bps = 1Gpbs % 1byte는 8bit이므로 8을 곱한다. 64byte 패킷처리 능력 83,000pps * 64byte * 8 = 42,496,000 = 42Mbps |
실제 네트워크에서 방화벽의 능능 한계에 따른 장애발생 가능성이나 향후 네트워크 증가에 따른 성능상의 문제발생 여부 및 발생 시점 등을 판단하기 위해서는 몇 가지 중요한 방화벽 성능 지표를 설정하고, 이를 정확히 측정하는 것이 중요합니다. 주요한 방화벽 성능 지표들은 다음과 같이 정리할 수 있습니다.
- 초당 패킷 처리 성능 및 패킷 사이즈별 throughput
- 초당 세션 처리 성능
- 전체 세션 처리 성능
- 정책의 수 및 세션 수의 증가에 따른 성능 저하 여부
"초당 처리 패킷 수(pps: Packet Per Seccond)"는 가장 중요한 방화벽 처리 성능 지표라고 할 수 있습니다. 방화벽은 패킷 단위로 정책을 판별, 통제규칙적용 등의 기능을 수행합니다. 따라서 하나의 패킷을 얼마나 빨리 처리할 수 있는가는 중요한 성능 지표가 됩니다.
성능 평가는 네트워크에 초당 출입되는 패킷 수들을 측정하여 평가하고자 하는 방화벽 패킷 처리 성능과 비교하여야 합니다. 하지만, 방화벽에 연결되는 회선의 성능 지표는 초당 처리 패킷 수(비트수로 환산가능)이고, 대부분의 네트워크 사용량 측정은 전체 대역폭 대비 사용된 대역폭으로 이루어지기 때문에 어떤 방화벽의 측정된 초당 처리 패킷 수를 통해 해당 방화벽이 해당 네트워크에 적합한지 여부가 즉시 판된되지는 않습니다.
또한 어떤 방화벽은 패킷 사이즈에 따라 처리 성능이 달라지는 방화벽이 있을 수 있습니다. 예를들어, 64byte 패킷 키기는 초당 36만개를 처리하면서, 128byte크기의 패킷은 초당 30만개를 처리하는 경우 입니다. 때문에 단순히 어떤 특정 사이즈의 패킷 처리 성능만으로는 정확한 방화멱 성능 평가가 불충분하다고 할 수 있습니다. 초당 처리 패킷 수의 측정과 함께, 패킷 크리별 초당처리 비트수인 throughput역시 함께 계산하여야 합니다.
다음 그리프는 특정 기가비트 방화벽의 패킷 사이즈별 처리 성능을 나타낸 것입니다. 참고로 이 방화벽의 패킷 처리 성능은 패킷 크기에 관계없이 초당 약 43만 패킷을 처리하고 있습니다. 이 기가비트 방화벽은 64byte크기의 패킷만 처리한다면 293mbps정도의 성능을 나타낸다고 할 수 있습니다.
패킷 사이즈별 throughput을 측정한 다음 이 방화벽이 네트워크에 설치되어 장애 없이 동작할 수 있는지를 판단하기 위해서는 설치 지점에 네트워크 스니핑 장비를 설치하여 현재 네트워크에 흐르고 있는 네트워크 패킷에 대한 사이즈별 초당 츨입 패킷 분포를 측정해야 합니다.
어떤 네트워크의 출입 패킷들의 사이즈별 분포가 다음과 같다고 가정해보겠습니다.
패킷 사이즈 | 분포 |
64Byte | 35% |
128Byte | 10% |
256Byte | 10% |
512Byte | 15% |
1024Byte | 10% |
1500Byte | 20% |
이 분포 퍼센트 값들을 위의 throughput측정치에 곱하여 값을 계산하면 이 방화벽이 이 네트워크에서 최대 처리 가능한 대역폭의 수치가 산출됩니다.
(293 X 35%) + (516 X 10%) + (850 X 10%) + (1200 X 15%) + (1600 X10%) + (1800 X 20%) = 939Mbps |
즉 933Mpbs정도의 대역폭을 이 방화벽은 현재 네트워크에 설치되었을 때 처리할 수 있습니다.
초당 세션 처리성능과 전체 세션 처리성능
방화벽 종류마다 차이는 있지만 최근 시장에 출시되는 대부분의 방화벽은 세션 중심으로 트래픽을 처리합니다. 출발지와 목적지의 IP 주소, 출발지와 목적지의 포트번화, 4개의 정보가 하나의 세션을 지칭합니다. 이 4가지 값 중에서 하나라도 틀리면 다른 세션으로 취급됩니다. 방화벽에서 언급되어지는 세션이라, TCP 트래픽인 경우와 UDP 트래픽인 경우를 구분하여 이해하여야 합니다.
TCP의 경우
연결을 맺고 데이터를 서로 주고 받다가 연결을 종료하는 단계까지를 하나의 TCP세션이라고 합니다. 예를 들어 telent이라는 응용프로그램의 경우 어떤 호스트에 telnet접속을 맺고 터미널을 통해 명령과 결과를 주고 받은 후 exit또는 logout을 입력하여 접속을 끊기 까지를 하나의 세션으로 취급합니다.
세션을 맺고부터 끊기까지의 모든 패킷들은 동일한 출발지와 목적지의 IP주소와 동일한 출발지 및 목적지의 포트를 가지게 됩니다. 물론 방향에 따라 목적지와 출발지 위치가 서로 바뀌긴 합니다.
UDP의 경우
UDP는 접속을 맺고 끊는 절차가 없기 때문에 세션을 TCP와 같이 규정하기는 힘들지만 병화벽내 세션을 관리하는 세션 정보 유지 cache 공간에 새로운 세션 정보(출발지와 목적지 IP 주소 및 출발지와 목적지 포트 번호 4개의 값)를 가진 UDP 패킷이 발생한다면 방화벽은 새로운 세션이 시작되었다고 판단하고 세션 정보 유지 cache에 등록하여 관리합니다. 통신이 지속된 이후 이 세션에 해당하는 패킷들이 일정 시간 이상 발생하지 않는다면 해당 세션은 종료되었다고 방화벽이 판단하여 세션 정보를 제가합니다.
예를 들어 어떤 호스트에서 도메인 이름 질의를 수행하였다면 목적지 주소를 domain name server로 하고 목적지 포트 번호가 53번인 UDP패킷이 발생할 것입니다. 이를 방화벽이 새로운 세션이 발생하였다고 판단하였다가 해당 질의가 성공적으로 수행되었다면 더 이상 이 세션에 관련된 패킷들은 발생하지 않을 것입니다. 방화벽은 이를 일정 시간 유지하고 있다가 시간이 다하면 세션이 종료되었다고 판단합니다.
UDP패킷의 이러한 특징 때문에 세션 정보를 관리하지 않고 출발지 주소, 목적지 주소, 출발지 포트, 목적지 포트만을 가지고 통과여부를 결정하는 packet filtering 방식의 방화벽에서는 정책을 설정할 때 출발지 쪽에서 들어오는 패킷과 목적지 쪽에서 응답되는 패킷 모두에 대해 정책을 설정해야 합니다. 하지만 일반적으로 출발지의 포트는 가변적으로 할당받는 포트이기 때문에 UDP패킷에 대한 정책적용이 packet filtering 방식의 방화벽에서는 거의 불가능합니다.
Classification과 성능
세션의 시작을 의미하는 첫번째 패킷(TCP의 경우 접속 절차를 수행하는 패킷, UDP의 경우 방화벽에 의해 어떤 세션에도 속하지 않은 처음 파악되는 패킷)이 유입되면 방화벽은 먼저 해당 세션의 시작을 허용하여도 될 것인가를 정책을 통해 판단합니다. 이를 방화벽에서는 clasification단계라고 합니다. 각 방화벽마다 독자적인 classification엔진을 가지고 있으나 그 성능은 제품에 따라 천차만별의 차이를 보입니다. 당연히 classification엔진이 비효율적이라면 신규로 접속을 요구하는 첫 패킷들에 대한 세션 처리가 원활하지 못하여 초기 접속에 많은 시간 지연이 발생하거나 초기 접속 자체가 불가능한 사태로까지 이어질 수 있습니다.
적용된 알고리즘에 따라 차이는 있지만 classification성능은 정책의 수에 영향을 받습니다. 정책의 수가 많으면 많을수록 classification을 수행하는데 걸리는 시간은 늘어나게 됩니다. 어떤 알고리즘은 정책의 수와 무관하게 classification성능을 나타내는 것도 있습니다. 방화벽 개발자들은 지속적으로 정책의 수와 무관하게 신속한 classification이 수행되도록 하는 알고리즘을 연구하고 적용하고 있습니다. 따라서 방화벽 평가는 평가 대상 방화벽에 필요로 하는 정책들을 충분히 입력한 후 해당 방화벽을 경유는 세션들을 무작위로 생셩시켜 초당 몇 개의 세션을 정상적으로 처리하는지를 측정하여야 합니다. 또한 설치하고자 하는 네트워크 상에 방화벽이 없는 상태에서 초당 몇개의 신규 세션들이 발생하는지도 파악하여야 합니다.
Classifcation 알고리즘에 따라 다음과 같은 방화벽 성능 및 기능들이 영향을 받습니다.
- 초당 처리 세션 성능
- 적용된 정책 수에 따른 초당 처리 세션 성능
- 적용되는 정책이 그룹 객체를 허용하는지 여부
- 마스크로 구분된 네크워크만 적용 가능한지 임의의 범위를 지정할 수 있는지여부
이들 cache의 크기나 구조에 따라 제품의 전체 세션 처리 성능이 결정됩니다. 메모리는 유한한 물리적 공간이기 때문에 무한대의 세션 정보를 저장할 수는 없기 때문입니다. 따라서 제품에 따라 최대 처리 세션 수에 차이가 나게 됩니다. 최대 처리 세션의 수를 초과하여 세션이 발생한다면, 기존에 맺어져 있는 세션들을 정상 통신을 훌 수 있지만 새로이 맺어지는 세션들은 정책에 관계 없이 모두 폐기될 것입니다. 따라서 어떤 호수트는 인터넷이 연결되어 있으나 어떤 호스트들은 접속이 불가능한 상태가 동시 다발적으로 발생할 것입니다.
세션수 및 정책수 증가에 따른 성능저하
세션 정보를 유지하는 cache 구조와 검색 방법 특성에 의해 세션수가 증가하면 전체 cache크기가 증가하게 되고 검색 소도는 떨어지면서 전체적인 패킷 처리 성능이 떨어지게 됩니다. 다음 그래프는 두개의 서로 다른 제품의 가가비트 방화벽을 세션수를 증가시켜 가면서 성능 저하 정도가 어떻게 되는지 비교한것입니다.
방화벽 A는 세션수가 5,000에서 25,000으로 증가하여도 성능변화가 없지만 방화벽 B는 세션수의 증가에 따라 급격하게 성능이 떨어지고 있음을 알 수 있습니다. 이는 cache구조가 제품마다 틀리고 cache를 검색하는 방식 또한 많은 차이가 나기 때문입니다.
또한 정책수에 따라 성능이 떨어지는 경우도 있습니다. 이러한 제품들은 주로 1.세션 cache를 사용하지 않는 제품, 2. 부분적으로 cache를 사용하고 있는 제품 또는 3. cache를 적절하게 이용하고 있으나 거부되는 패킷들이 압도적으로 많은 경등에 해당합니다.
앞에서 언급하였듯이 classification 알고리즘에 따라, 정책의 수에 따라 classification 처리 시간이 결정되고 직접적으로 초당 세션 처리 성능에 영향을 미치게 됩니다. 모든 패킷들에 대해 classification을 수행하는 구조로 되어 있는 제품들은 cache를 사용하지 않기 때문에 일일이 classification을 수행하는데 정책의 수에 따라 classification 성능이 영향을 받아 전체 성능이 떨어지게 됩니다.
정상적으로 cache를 활용한다고 하더라도 거부되는 패킷들이 많으면, 이 도한 정책의 수에 따른 성능 저하 현상이 발생하게 됩니다. cache에는 거부되는 패킷들에 대한 정보가 없습니다. 따라서 모든 거부되는 패킷들은 calssification에 의해서만 "거부' 판단이 내려지게 됩니다. 많은 수의 거부 정책에 의ㅣ해 거부되는 패킷들로 인해 classification 처리가 지연되고 있는 동안, 새롭게 유입되는 정상 패킷들은 cache검색 기회마저 주어지지 않을 수 있기 때문입니다. 따라서 방화벽 관리자들은 가능하면 허용정책 위주로 정책을 설정하고 거부정책을 적게 적용하는 것이 성능향상에 도움을 줍니다.
출처:http://archiblue.tistory.com/78
댓글 없음:
댓글 쓰기