본문 바로가기

네트워크/네트워크 기본

알아두면 편리한 트러블 슈팅 팁

▶ ▶ ▶ 트러블슈팅 사례 1


STP 오동작에 의한 루핑 문제


이 사례는 백본 스위치 4대로 구성돼 있는 ISP 업체인 S사에서 STP(Spanning Tree Protocol) 오동작으로 인해 장애가 발생한 경우다. S사의 상하 백본 스위치 연결은 가상 LAN으로 나뉘어져 있어 3계층 기능을 통해 네트워크를 구성했기 때문에 브리징 루프(Bridging Loop)로 인한 잠재적인 문제는 해결돼 있는 상태였다.
그러나 문제는 상단의 스위치 2대와 연결된 4계층 스위치에서 발생했다. 문제가 발생했을 초기 단계에는 서버 문제와 프로그래밍의 문제로 접근해 해결하려 했으나 문제가 해결되지 않았다.
실제 STP를 온(ON) 시킨 상태에서 위와 같이 구성한다 해도 루트(Root) 스위치에서 블록킹(Blocking)을 하게 돼 루핑(Looping)을 막아주기 때문에 이 부분은 의심을 하지 않았다.
최종적으로 오류라는 것을 발견하게 된 것은 상단의 백본 스위치 A에서 ‘SH CDP NEIGHBOR’로 확인한 뒤였다. 확인 결과 스위치 B가 트렁크로 연결된 라인과 4계층 스위치를 통한 연결 인터페이스상에서 모두 보이는 것을 알 수 있었다.
만약에 정상적인 STP하에서 루트 스위치(백본 스위치)가 정해지고 우선순위와 비용을 비교해 지정 포트가 결정돼 운영이 됐다면, 4계층 스위치의 한 쪽 라인은 자동 블록킹이 됐어야 했다. 결국은 물리적인 조치로 4계층 스위치의 한 포트를 수동적으로 disable하는 걸로 임시조치하고 장비 공급업체에 요청해 장비를 교체한 후 문제를 해결할 수 있었다.
이런 브리징 루프에 의한 장애는 종종 일어난다. 특히 네트워크 가용성을 높이기 위한 이중화 구성시 많이 나타나는데, 이를 막기 위해서는 구성 장비가 STP를 지원하는지, 정상적으로 동작하는지를 사전에 반드시 확인해야 한다.



▶ ▶ ▶ 트러블슈팅 사례 2


스위치에서의 듀플렉싱 문제


이 경우는 K 포털 서비스 업체에서 발생했던 사례인데, 10Mbps 이더넷에서 100Mbps 고속 이더넷 환경으로 옮겨가면서 일반적으로 빈번하게 발생하는 문제이기도 하다.
기존의 10Mbps 이더넷 환경은 CSMA/CD 기반이었기 때문에 허브를 이용해 단일 세그먼트를 공유해 연결하면 트래픽 폭주로 응답 시간(response time)이 현저히 저하되는 문제가 발생하곤 했다.
이후 스위칭 허브가 나오면서 포트별 세그멘테이션이 가능하게 돼 이런 문제들은 많이 해소가 됐다. 하지만 이때 주의해야 할 것이 있는데 장비간 전송 방식을 동일하게 맞춰야 한다는 것이다. 즉, 스위치와 스위치 또는 스위치와 호스트간 전송방식이 다르면(반이중, 전이중 방식) 문제가 발생하게 된다.
100Mbps 고속 이더넷 환경으로 최근 인프라가 진화되면서 PC나 서버를 스위치에 100Mbps로 연결하면 LAN 카드와 스위치는 보통 자동으로 설정되므로 이론상으로는 LAN 카드의 종류에 상관없이 정상적으로 작동해야 한다.
하지만 실제로 자동 감지(auto negotiation)를 통해 연결하면 처음에는 정상 작동하다가, 시간이 지나고 트래픽이 몰리기 시작하면 갑자기 서버의 응답 시간(response time)이 저하된다. 핑(ping)을 통해 점검해 보면 타임아웃(timeout) 현상이 나타나곤 한다.
K사에서도 마찬가지의 현상이 발생해 서버와 스위치 간을 수동으로 100Mbps 전이중으로 전환시킨 뒤에야 정상적인 응답 시간을 얻어낼 수 있었다. 이때 주의할 점은 서버와 스위치 양쪽 모두 고정시켜야 한다는 것이다. 만약 한쪽만 자동으로 설정돼 있을 경우는 앞서와 같은 문제가 다시 발생하게 된다.
 



 


일단 한번 의심해 보자! 유형별 네트워크 트러블슈팅 가이드


네트워크상에서 빈번하게 발생하는 네트워크 트러블은 몇가지 주요 유형들이 있다. 크게 4가지로 나눌 수 있는데 각 유형별로 해결책을 알아보자.
(자료 제공 : 코오롱정보통신 kdc.kolon.com)


네트워크 인터페이스 트러블슈팅
① 장치간의 기초 통신 경로를 체크한다
절단된 케이블이나 헐거워진 커넥터 등 가장 단순한 물리적인 문제가 사실은 가장 복잡한 문제를 일으킬 수 있다.


② 표준의 준수 여부를 체크한다
이더넷 상의 모든 워크스테이션이 IEEE 802.3 프레임이 아니라 이더넷을 송신하고 있음을 확인한다. 또는 모든 세그먼트가 VCR과 같은 비디오 시스템과 함께 사용되는 RG59 A/U가 아니라 IEEE 802.3 10BASE-2 네트워크와 함께 사용되는 RG 58A/U와 같은 올바른 케이블 타입을 갖고 있는가 확인한다.


③ 문제를 체계적으로 단일의 LAN, MAN 또는 WAN 세그먼트에 고립시킨다
두 개의 세그먼트가 동시에 고장을 일으키는 일은 드물다


인터넷 트러블슈팅
① ICMP 에코(ping)를 통해 테스트한다. 인터넷 장치간의 연결성을 확인하기 위해 사용한다. 핑은 문제를 고립시키기 위해 순차적으로 사용할 수 있다. 예를 들면 처음에 서브넷상의 호스트를 핑하고 다음에 라우터에 핑하며, 이어서 그 라우터의 다른 쪽에 있는 호스트를 핑하는 식으로 잘못된 연결이 식별될 때까지 작업을 계속하는 것이다.


② 어떤 호스트 운영체제의 경우는 traceroute라는 또 다른 유틸리티를 이용할 수 있다. traceroute는 ICMP 메시지를 이용해 리모트 호스트에 이르는 경로에 따라 각 세그먼트를 확인한다. 그러나 traceroute는 다량의 인터네트워크 또는 인터넷 트래픽을 생성할 수 있기 때문에 주의해서 사용해야 한다. 만약 인터넷에 문제가 일어나고 또 네트워크 인터페이스 계층에 이상이 없는 것 같으면 인터넷 계층에서의 중요한 이벤트를 찾는다. 이것들은 데이터그램 배달과 관계된다. 번지 발견 프로세스, 번지 할당, 라우터 간의 통신, 그리고 라우터 에러의 통지 등은 문제의 이유에 관한 단서를 제공할 수 있다.


호스트 투 호스트 트러블슈팅
① 전송 프로토콜(UDP 혹은 TCP)을 측정해야 한다. 프로토콜이 UDP라면 연결되지 않은 서비스가 애플리케이션에서 적당한지를 확인한다. 다중 재전송(multiple retransmissions)과 같은 문제는 전송 매커니즘과 관련된 상층 프로토콜의 독점에 기인할 수 있다. 예를 들면, 모든 것을 축적하는 오버헤드를 경험하기 때문에, ULP(Upper Layer Protocol)는 통신에서 오버헤드를 만드는 순간적 이상을 견딜 수 있다.


② 포트 번호와 TCP 연결에서 중요한 이벤트를 찾는다. 이것은 3가지 방식의 핸드세이크 즉, SYN과 ACK 플래그를 사용하는 동안 세그먼트 번호, Ack 그리고 윈도우 크기가 애플리케이션에 적당한지를 검사하고, 윈도우=0이 반대 방향에 있는 연결 패스를 닫을 것을 기억해야 한다. 간단히 말해 전송되는 데이터가 목적지에 도착하고 있는지를 측정한다.


프로세스/애플리케이션 트러블슈팅
① 애플리케이션/프로세스는 최종 사용자와 인터페이스로 접속한다.


② 애플리케이션/프로세스 계층은 다양한 고객층의 필요를 충족하기 위해 무수한 옵션을 제시해야 한다. 이 옵션들은 다른 파일 타입(FTP를 위한 옵션들) 또는 데이터 통신 패러미터(특정의 텔넷 연결을 지원하는데 필요함)를 사용할 수도 있다. 이 문제를 진단하려면 종점간 연결성 함수가 데이터를 필요한 수신지에 전달하고 있는가 여부를 결정해야 한다. 만일 그렇지 않다면 진술한 기법들을 이용해 네트워크 인프라, 인터넷 또는 호스트 투 호스트 계층 중 어디에 문제가 도사리고 있는가를 결정하고 고장을 처리한다. 만일 데이터가 전달되고 있어도 상위 계층 문제가 존재 할 수도 있다.



알아두면 도움되는 7가지 이더넷 에러와 해결책


네트워크를 운영하다 보면 종종 등장하는 에러 문구들과 씨름을 해야 하는 경우가 있다. 이더넷상에서 자주 발생하는 에러와 해결책을 소개한다
(자료 제공 : 엔클루 www.enclue.com).


Runt/Short
의미 : 이더넷 환경에서 모든 패킷은 최소한 64바이트 이상이어야 한다. 이 64바이트는 이더넷의 프리앰블(Preamble)을 제외하고 체크섬(checksum)을 포함한 총 길이다. Runt는 최소 이더넷 프레임 크기인 64바이트보다 더 적은 프레임들을 나타낸다.
원인 : 종종 콜리전(collision)에 의해 발생하게 된다. 따라서 분주한 이더넷에서 발생하는 일반적인 에러로 볼 수도 있으나 콜리전에 상관없이 많이 발생한다면(즉 분주한 이더넷이 아닌데도 계속 발생한다면) 해당 세그먼트 상의 NIC (Network Interface Card) 문제일 수 있다.


Giant or Jabber
의미 : Giant는 최대 이더넷 크기인 1518바이트를 초과하는 패킷을 말한다.
원인 : Giant는 통상 해당 네트워크 상에 재버링 노드(jabbering node)가 있을 경우 발생한다. 재버링 노드라는 것은 계속적으로 전송만 하는 노드 또는 부적절하게 매우 짧은 시간동안 폭주성 데이터를 전송하는 노드를 말한다. 대부분의 경우 잘못된 NIC 또는 트랜시버에 의해 발생되며, 이더넷 네트워크에 대해 매우 높은 이용율(utilization)을 유발하게 된다.


Alignment 에러
의미 : 해당 프레임의 비트 수가 8의 정수배가 되지 않을 때 발생한다.
원인 : 공유형 허브인 경우, 전형적으로 콜리전에 의해 발생한다. 대부분 케이블링의 문제에 기인하는 경우가 많다. 만약 더미 허브 구성이 아닌 스위치 환경이라면 콜리전의 영향이 미미하기 때문에 케이블링 문제일 경우가 많다. 특히 100Base-T 환경이라면 케이블이 카테고리 5인지를 확인해야 하며 더불어 트위스트 페어가 정상적으로 구성돼 있는지를 확인해야 한다.


CRC 에러
의미 : CRC 에러는 이더넷 프레임의 CRC의 체크섬에 문제가 있을 때 발생한다. 이더넷 패킷들은 프리앰블과 CRC를 갖는 MAC 프레임안에 인캡슐레이션된다. 송신스테이션의 이더넷 어댑터는 프리앰블을 생성하고 그 패킷 데이터를 MAC 프레임에 삽입하며 CRC 체크섬을 연산한 뒤 그 패킷의 제일 마지막에 CRC 값을 삽입한다. 수신 스테이션은 송신 스테이션과 동일한 연산을 거쳐 계산된 CRC와 수신받은 CRC 값을 비교해 수신된 패킷이 올바른지를 판단하게 된다. 만약 두 CRC의 값이 다르면 CRC 에러를 발생하고 해당 패킷을 폐기시킨다.
원인 : Alignment 에러와 마찬가지로 일부 콜리전과 잘못된 케이블링에 의해 발생한다. 100Mbps 스위치 환경에서 확인할 사항은 케이블이 카테고리 5인지와 정상적으로 트위스트 페어로 구성이 됐는지 그리고 이중 모드(duplex mode)가 스위치와 스테이션 간에 올바로 설정됐는지 확인해야 한다. CRC 에러와 콜리전이 네트워크 성능에 미치는 영향을 비교하면 콜리전에 의해 문제가 된 패킷들은 수백 us의 범위에서 NIC에 의해 재전송이 이뤄지며 CRC 에러의 경우는 상위 프로토콜에 의해 재전송 매커니즘이 구동되며 거의 200∼500ms의 지연을 야기시킨다. 따라서 CRC error는 네트워크 성능에 매우 큰 영향을 미치므로 반드시 해당 원인을 찾아 해결할 필요가 있다.


Collision
의미 : 콜리전은 두 개의 스테이션이 동시에 데이터를 전송할 때 발생한다. 이더넷은 기본적으로 CSMA/CD 방식으로 동작하기 때문에 콜리전은 자연적인 현상이며 인정할 만한 부분이다. 콜리전이 발생하면 그 타이밍에 따라 Alignment 에러나 CRC 에러를 동시 또는 각각 아니면 전혀 발생시키지 않을 수 있다. 콜리전 비율을 일반적으로 10% 이하를 권고한다. Collision 비율을 구하는 공식은 콜리전의 수/아웃풋 패킷 수×100이다. 콜리전도 2가지 종류가 있는데 싱글 콜리전은 이더넷 장비의 전송 포트가 이더넷 프레임을 미디어로 전송하기 전에 감지한 단일 콜리전의 수를 나타낸다. 멀티 콜리전은 이더넷 장비의 전송 포트가 이더넷 프레임을 미디어로 전송하기 전에 감지한 복수의 콜리전의 수를 나타낸다.
원인 : 지속적이고 많은 콜리전이 발생하는 경우 대부분의 경우 매우 부하가 많은 세그먼트이며, 경우에 따라서는 이더넷의 이중 모드(duplex mode), 즉 전이중 또는 반이중의 잘못된 설정에 의해 발생한다.


Excessive Collisioin
의미 : 연속적으로 16개의 로컬 콜리전(local collision)들이 발생해 폐기되는 전송 포트에서 프레임들의 수를 나타낸다. 이 콜리전은 거의 발생하지 않아야 한다. EC(Excessive Collision)이 발생한다면 이는 복수의 세그먼트로 분리해 부하를 분산할 필요가 있다.
원인 : 일반적으로 처리 능력 이상의 부하를 가진 세그먼트에서 발생한다. 10Base-2나 10Base-5의 경우 불량한 터미네이션(termination) 또는 잘못 구성된 터미네이션에 의해 발생하며 물리적으로는 케이블링이나 커넥터의 문제로 발생한다.


Late Collisioin
의미 : 다른 말로 'Out-of-window collision'이라고도 한다. 슬롯 타임(512비트 타임)은 이더넷 미디어를 수용하는 최대 지연시간을 나타낸다. 만약 이더넷상의 한 스테이션이 미디어를 점유해 패킷을 전송하고 있을 때 콜리전 신호를 수신하면(즉, 전송이 시작되고 51.2μs 이후에 콜리전이 발생하면) Late Collision이 발생한다. 일반적인 콜리전이 발생하는 경우는 즉각적으로 이더넷 인터페이스에 의해 재전송이 일어나지만, Late Collision의 경우, 이미 이더넷 프레임을 전송한 상태이므로 해당 프레임을 손실하게 된다. 따라서 손실된 프레임에 대한 재전송은 상위 응용 프로토콜에 의해 이뤄지고, 많은 재전송 지연을 유발해 네트워크 성능에 문제를 일으킨다.
원인 : 가장 일반적인 원인은 이더넷 네트워크의 길이가 IEEE 802.3 규격을 초과하는 경우로 잘못된 네트워크의 구성 문제와 프레임을 전송하기 전에 정상적으로 CS(Carrier Sensing)을 하지 않는 NIC나 트랜시버에 의해 발생된다. 경우에 따라서는 스위치와 스테이션간 자동 감지(auto negotiate) 문제 때문에 발생하기도 한다