본문 바로가기

네트워크/네트워크이론

[스위치] 스위치의 구분

네트워크를 작게 분할하여 정체가 되는 구역을 줄이는 역활을 하는 장치
데이터의 주소 정보를 사용해 네트워크 흐름을 통제
목적지 주소를 가진 장치로 데이터를 보내므로 불필요한 통신량을 줄여줌

< 스위치의 구분 >


 2계층 스위치는 도착한 패킷의 제일 앞에 있는 목적지 MAC 주소를 보고 어떤 포트로 보낼 것인가를 판단, 가장 보편적
 3계층 스위치는 라우터처럼 목적지 IP주소를 갖고 어떤 네트워크로 보낼 것인가를 판단
 4계층 스위치는 IP계층 다음에 있는 전송 계층의 TCP/UDP 포트를 보고 패킷을 조절
 7계층 스위치는 어플리케이션의 헤더 또는 데이터를 확인해 패킷을 조절함

< 2 계층 스위치의 동작 원리 >

- 입력된 트래픽을 처리할 때 MAC주소를 참조하여 처리하는 장비
- 어떤 포트에서 트래픽이 들어오면 출발지/목적지 MAC 주소를 확인해 목적지 MAC 주소는 어떤 포트로
  보낼 것인가를 결정할 때 참조하고, 출발지 MAC 주소는 해당 MAC 주소가 있는 포트를 기억해 다른 포트에서
  해당 MAC 주솔르 찾는 트래픽이 들어오면 그 포트로 내보내는 데 사용
- 어떤 포트로 보낼 것인가를 결정하기도 하고 MAC을 기억하기도 한다.

- 위의 그림은 실제 네트워크에서 사용되는 스위치의 포트 7이 사용하는 MAC 주소를 확인한 것이다. 이 부분은 네트워크
  관리자가 임의로 스위치에 입력하는 것이 아니라 특정 트래픽이 입력되었을 때 출발지 MAC 주소를 자신의 MAC
  테이블에서 기억하는 것이다.   ( MAC Learning : MAC이 스스로 배운다. )

- 만약 A라는 MAC 주소를 목적지로 하는 트래픽이 입력되었을 때 자신의 MAC 테이블에 A라는 MAC 주소가 없을 경우
  스위치는 입력된 포트를 제외한 모든 포트로 패킷을 보낸다. 
  ( Flooding - 스위치가 목적지 포트를 몰라 전체 포트로 패킷을 보내는 것 )

         < 스위치 사양에서 기억할 수 있는 MAC 숫자를 나타내는 사양 >
( MAC Address : 8k - 스위치가 기억할 수 있는 MAC 주소의 수 ( 최대 1024 x 8 = 8192개 ) )

< 3 계층 스위치의 동작 원리 >
- 3 계층 스위치는 2 계층 스위치와는 다르게 OSI 참조 모델의 3계층에 있는 IP 주소를 참조하는 장비이다.

- 일반적인 3 계층 스위치는 자신의 동작을 위한 '라우팅 테이블'을 이용하여 입력된 패킷의 목적지 IP를 보고 어떤 포트로
  보낼 것이가를 결정한다.


                                       < 스위치가 가지고 있는 라우팅 테이블 >
- 위의 그림을 해석하자면 192.168.0.0 / 255.255.255.0 네트워크는 vlan1에, 192.168.2.0 / 255.255.255.0 네트워크는
  vlan2에, 192.168.3.0 / 255.255.255.0 네트워크는 vlan3에, 그리고 그 것들을 제외한 나머지는 모두 192.168.3.254
  ( Default Gateway )로 보낸다.
- 이 스위치는 트래픽이 입력되면 목적지 IP주소를 확인하기 위헤 위의 기준을 적용해 패킷을 처리한다.

라우팅 테이블은 관리자가 매번 입력해야 하는가?
-> 아니다. 라우터는 '동적 라우팅 테이블'이라는 기능을 가지고 있다. 동적 라우팅 테이블은 사용자 오류가 발생할 
    가능성을 고려하여 장비들 간에 정보를 주고 받을 수 있도록 자동으로 라우팅 정보를 관리하는 기능이다. 

3계층 스위치는 '목적지 IP'만 참조하나?
-> 아니다. 일반적인 라우팅 정보는 목적지 IP를 기준으로 하지만, 드물게 출발지 주소를 이용해야만 하는 경우도 있다.
    이를 소스 라우팅 ( Source Routing ) 이라 한다.

라우팅 캐시 ( Routing Cache ) ?
-> 일반적으로 장비에서 보여지는 라우팅 테이블은 네트워크 기반으로 되어 있는데, 이 테이블이 많을 경우 매번
    입력되는 패킷마다 라우팅 테이블을 참조하느라 장비의 성능 저하를 가져 올 수 있다. 그래서 라우팅 처리를 하는
    장비들은 자신이 라우팅 테이블을 참조하여 처리한 패킷의 경로를 기억하는 기능이 라우팅 캐시이다.
    패킷이 입력되면 부하가 많은 라우팅 테이블을 매번 참조하지 않고, 메모리에 있는 라우팅 캐시 테이블에서 해당하는
    패킷 정보가 있는지를 먼저 확인한다. 보통 이런 정보들은 일정시간 ( 일반적으로 수십초 )동안 참조되지 않으면
    삭제되며, 장비들마다 이 정보들을 보여주고나 삭제 ( Clear )하는 기능을 가지고 있다. 라우팅 테이블에서 목적지
    네트워크로 가는 경로가 여러 개일 경우 동일 패킷 ( 출발지 IP + 목적지 IP )이 하나의 경로를 계속하여 이용하는
    경우가 있는데, 바로 이 캐시를 참조하였을 경우이기도 하다.

< 4 계층 스위치의 동작 원리 >
- 4 계층 스위치는 MAC 주소를 참조하는 3 계층 스위치나 IP 주소를 참조하는 3 계층 스위치와는 기본적으로 동작이 다르다.
  위에서 설명한대로 3 계층의 TCP / UDP 포트를 참조하여 어디로 패킷을 보낼 것인가를 결정하기는 하지만, 그때마다
  보내는 곳이 달라질 수도 있고,보낼 때 패킷의 IP 주소나 TCP / UDP 포트를 변환하기도 한다.

- 위의 그림은 4 계층 스위치의 기능 중 가장 대표적인 '서버 로드 밸런싱 ( Server Load Balancing )'의 동작을
  표현하고 있다. 
  그림에서 입력되는 트래픽의 목적지 주소를 보니 10.10.10.100이고 목적지 포트는 80이다. 그런데 그림을 자세히 보니
  4계층 스위치가 10.10.10.100이라는 VIP ( Virtual IP )를 가지고 있다. 사용자는 별도의 서버와 통신을 하고자 하는 것이
  아니고 10.10.10.100이 서버인 줄 알고 접속하고 있다. 여기서 부터 4 계층 스위치의 동작이 시작된다. 사용자의 접속을 받은
  스위치는 설정된 서버들 ( 여기서는 서버 1, 2, 3 )의 상태를 확인하여 가장 최적의 서버를 결정하여 사용자의 접속을
  스위칭한다.

   그런데 이 동작에서 가장 중요한 것은 사용자가 10.10.10.100이라는 IP로 접속을 요청하였기 때문에 스위치가 서버로
  보내는 패킷은 스위치에 의해 조작되어 목적지 주속 실제 보내지는 서버의 IP로 변환이 된다. 여기서 서버 1번으로
  보내졌다면 이제 목적지 IP는 10.10.10.100이 아니라 10.10.10.1이 된다. 만약 서버가 80번 포트가 아닌 8080포트로
  서비스를 한다면 스위치에서 필요에 따라 8080포트로 변환 할 수도 있다. 

   되돌아 가는 패킷에 대해서도 서버가 응답한 패킷은 출발지 주소가 서버의 IP인 10.10.10.1이 되므로, 사용자가 요청한
  IP인 10.10.10.100으로 다시 변환하여 보내게 되므로 사용자측에서 아무런 문제가 발생하지 않도록 한다. 실제 사용자와
  서버 간에는 무수한 패킷이 오고 가는데, 스위치는 자신이 변환하고 보낸 정보를 기억하고 있다가 동일 세션에 대해서는
  같은 서버로 보내주고 주소 변환 작업을 계속한다. 이런 동작들 때문에 보통 4 계층 스위치는 처리하는데 고성능을
  필요로 한다.

4 계층 스위치는 로드 밸런싱을 위해 상태 확인 ( Health Check )을 한다.
-> 스위치에 도착한 트래픽을 분산하기 전에 보내려고 하는 곳이 서비스가 가능한 가를 확인한다. 상태 확인
    ( Health Check )이라고 하는 이 기능은 대상에 대해서 Ping을 하여 확인을 하거나, TCP 세션 연결을 시도해 확인을
    하기도 한다. 어플리케이션에 대해서 실제 클라이언트인 것처럼 직접 통신을 해보는 고급 기능도 있다. HTTP 서버라면
    특정 데이터에 대해 'Get'을 하기도 하고, FTP 서버인 경우는 FTP 로그인을 하기도 한다.
     이런 활동들은 설정에 따라서 매초 또는 필요한 시간마다 확인이 가능하며, 서버거 정해진 값을 기준으로 응답을
    하지 않을 경우 서비스가 불가능 한 것으로 판단하여 사용자의 트래픽 분산을 중지한다. 물론 죽어있는 서버도
    계속적으로 확인을 하여 응답이 다시 있을 경우에는 서비스에 포함시킨다.

4 계층 스위치는 다양한 방법으로 로드 밸런싱을 한다.
-> 4 계층 스위치는 제품마다 조금씩 다르지만 로드 밸런싱을 하는 여러 가지 방법들을 가지고 있어 사용자의 환경에
    따라 적절한 방법을 선택할 수 있게 한다. 
    - 라운드로빈 ( Round Robin ) : 사용자 접속을 순차적으로 분배
    - 가중치 라운드 로빈 ( Weighted Round Robin ) : 서버의 성능에 따라 가중치를 부여
    - 리스트 커넥션 ( Least Connection ) : 가장 적게 처리하고 있는 곳으로 분산 
    - 해시 방식 : IP 주소등을 해시 ( Hash )함수에 넣어 그 결과 값으로 분산
    처리하는 트래픽이 적은 서버로 분산하거나, SNMP를 로드 밸런싱에 이용하는 등 다양한 방법들이 있지만, 많이
    사용되지는 않는다.

4계층 스위치의 대상이 되는 장비들은 무엇인가?
-> 가장 보편적인 것은 웹 서버이며, FTP, 텔넷 ( Telnet ), DNS, 메일, 스트리밍, WAS ( Web Application Server ) 등
    네트워크에 사용되는 대부분의 서버가 대상이 된다. 뿐만 아니라 파이어월, VPN, IPS, IDS, 캐시 서버들도 여지 없이 
    4계층 스위치의 로드 밸런싱 대상이 된다. 요즘은 조금 큰 네트워크를 구성할 때 4 계층 스위치도 기본으로 포함되는
    경우가 많으므로, 보다 많은 관심을 가져야 할 네트워크 요소가 되어 버렸다.

< 7 계층 스위치의 동작 원리 >
- 7 계층 스위치는 5,6 계층 스위치를 포함한다. 7계층 스위치에서 참조 대상이 되는 부분은 대부분 인터넷 어플리케이션이
  될 수도 있지만, 현재까지 가장 보편화된 부분 또한 웹 즉, HTTP이다.


- 위의 그림은 7 계층 스위치의 가장 대표적인 예로, 웹 컨텐츠에 대한 7 계층 스위치의 적용 예이다. HTTP가 가지고 있는
  컨텐츠를 구분하여 로드 밸런싱하는 7 계층 스위치를 보여주고 있다. 
  일반적으로 웹 서비스에서 정적 컨텐츠이다. 반면에 동적 컨테츠는 사용자 요청에 따라서 내부 처리는 물론 데이터베이스
  서버와 통신을 해 데이터를 가공하는 일을 한다. 이런 동작이 일어날 때 정적 컨텐츠 처리와는 달리 서버의 리소스를 많이
  차지하게 되는데, 이런 이유로 대용량의 서버 운용자들은 컨텐츠를 구분하여 관리하고 싶어한다. 7 계층 스위치는 이런
  사용자 요구에 따라 어플리케이션 계층의 컨텐츠를 참조하여 로드 밸런싱을 하는 기능을 만들었다.

   * 정적 컨텐츠 - HTML, GIF, JPG, MPEG 등 서버에서 자신의 저장 장치를 찾아 전송만 하면 되는 컨텐츠 
    

   * 동적 컨텐츠 - 사용자 요청에 따라서 내부 처리는 물론 데이터베이스 서버와 통신을 해 데이터를 가공하는
                      등의 컨텐츠
CGI, ASP, PHP, Servlet, JSP 등
   

- 7 계층 스위치의 로드 밸런싱 기능과 4 계층 스위치의 로드 밸런싱 기능이 유사하여 보이지만 7 계층 스위치가 실제로 
  모든 패킷에 대하여 아주 깊숙한 부분의 패킷까지도 확인을 한다는 점에서 차이가 나고, 이 때문에 7계층 스위치는 보다
  기술적인 요구 사항들이 많다. 실제 국내에서는 7 계층 스위치가 말 그대로 어플리케이션 계층의 컨텐츠를 보고 로드 
  밸런싱을 하는 용도보다는 이 기능을 응용한 보안 기능이 주기능으로 더 알려져 있다. 특정 부분을 참조해 경로를 
  선택하는 것이 아니라 중간에 패킷을 차단하는 기능이 바로 7 계층 스위치의 보안 기능이다.

- 반면, 보안 기능을 가진 7 계층 스위치는 이제는 보안 전문 장비로 변신을 하고 있는 추세이다. 이것은 7 계층 스위치
  뿐만이 아니라 대부분의 네트워크에 연결되는 장비들이 보안을 떼어놓고는 이야기 할 수 없을 만큼 보안이 이슈화되었기
  때문이다. 7계층 스위치가 이처럼 보안 장비로 쉽게 변모할 수 있었던 것은 어플리케이션 계층의 컨텐츠를 제어 할 수
  있는 기술을 오래 전부터 갖고 있었기 때문이기도 하다. 

- 현재의 보안 기능은 한 눈에 봐도 대단히 많은 기능을 가지고 있음을 알 수 있다.

 

'네트워크 > 네트워크이론' 카테고리의 다른 글

[라우터] ACL  (0) 2010.06.18
[라우터] 라우팅 테이블  (0) 2010.06.18
[네트워크] 소켓의 동작모드  (0) 2010.06.18
[네트워크] 포트스캔의 이해와 구현  (0) 2010.06.18
[스위치] VLAN ( Virtual LAN )  (0) 2010.06.18