Summary
네트워크 장애 중에서 일반적으로 파악하기 어려운 것이 RUNT입니다. 이것에 대한 유용한 자료가 웹에 있어서 수록하였습니다. 자세한 내용은 웹 페이지를 참조하시기 바랍니다.
출처 : http://blog.naver.com/joneyong/100001763519
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
CSMA/CD 프로토콜은 Layer 2 (Data Link Layer)에 속하고 NIC에서 구현이 된다.
데이터를 전송할 수 있는 회선은 하나이고 이 회선을 다수의 클라이언트가 사용할 때 서로 데이터를 보내려고 하면 충돌이 일어나게 되어있다. 우선 각각의 클라이언트들은 자신이 통신하려는 상대방의 위치를 찾기 위해서 상대방의 MAC 주소를 알아야 하고, 이를 알아내기 위해서 브로드캐스팅을 하게 되고 이로 인해 ARP 과정을 거치게 되면 상대방의 MAC 주소를 수신하여 위치를 알게 됩니다. 그 이후로 데이터를 전송한다.
클라인트들이 보내는 데이터들은 CSMA/CD에 의해 정해진 시간간격(Timeslot)을 두고 전송이 되게 되어있다. 시간 간격은 micro-second 단위이기 때문에 인간이 느끼지는 못한다. (이더넷, 패스트 이더넷 등의 종류에 따라서 타임슬롯의 단위는 차이가 있다)
어쩌다가 두 클라이언트가 동시에 데이터를 내보냈다면 이때 회선에서는 쫑났다고 하고, Jamming이 발생했다고 한다. 그래서 이때는 전체적으로 이 Jamming 신호에 의해 모든 클라이언트들이 데이터를 전송하지 못하며, Feedback Algorithm에 의해 얼마동안의 시간차 후에 다시 재 전송하도록 되어있다.
여기서 이 충돌에 의한 영향은 기본적으로 물리적으로 연결된 모든 클라이언트들에게 영향을 줍니다. 하지만, 스위치 (스위칭 허브)나 라우터의 경우에는 이 충돌을 차단 할 수 있습니다.
허브의 경우 토폴로지 특성상 CSMA/CD의 이더넷과 동일한 방식을 사용하며 허브에서 사용할 수 있는 대역이 하나로 연결된 컴퓨터들이 모두 공유하여 사용하기 때문에 허브 자체가 하나의 충돌 영역이 됩니다. 다시말해 허브에 컴퓨터 몇 대가 연결되든 결국 연결된 모든 컴퓨터들은 모두 동일한 충돌 영역에 속하게 됩니다. 하지만 스위치의 경우 허브와 달리 각각의 포트마다 대역폭이 독립적이기 때문에 포트 하나당 충돌 영역 하나입니다. 즉, 다른 포트들과는 충돌이 일어날 일이 없다는 얘기죠.
RUNT란?
이더넷(랜)에서 패킷의 최소 크기는 64byte 이다. 64byte는 Collision Detection을 위하여 필요한 최소 크기이다. 따라서 64byte 이하의 크기를 가진 패킷은 제대로 전송되지 않을 확률이 매우 크다. 이러한 runt 패킷이 많아지면 당연히 패킷간의 충돌(collision)이 많아지고 네트워크에 부하가 많이 걸립니다.
RUNT는 왜 생기나?
이더넷에서 컴퓨터들이 마구 패킷을 쏘아대고 이 패킷들이 랜선따라서 돌아다니다가 서로 충돌하면 컴퓨터가 패킷을 다시 쏘고, 다시 쏘고 해서 될때 까지 쏘는 무식하지만 효율적인 방법입니다.
이때, 패킷과 패킷이 충돌하면 패킷들이 개지면서 작은 조각들이 생기겠지요. 이것이 runt 입니다. 컴퓨터가 패킷을 처음 만들어 낼 때는 당연히 이더넷 표준에 맞도록 64byte 이상의 크기를 가지도록 만들지만, 혹시라도 NIC가 고장이나서 64byte 이하의 패킷을 만들어 내는 경우도 생길 수도 있습니다. (물론 그럴 가능성은 아주 작죠) 보통 회선상의 불량 결선이나 전기적 간섭(노이즈 등)의 결과로도 생길 수 있습니다.
RUNT가 생기면 뭐가 안 좋을까?
이더넷에서 컴퓨터들이 CSMA/CD 원칙에 따라 통신을 하는데, 64byte 이하의 크기를 가진 이 runt들은 CSMA/CD로 통제가 되지 않습니다. 오히려, 이 CSMA/CD 방식을 망쳐버립니다. CSMA/CD 알고리즘이 "내가 보낸 패킷이 다른 패킷이랑 충돌했구나...다시 보내야겠다" 라고 인식하기 위한 패킷의 최소 크기를 64byte인데, 64byte 이하의 패킷은 충돌이 발생하든 말든 컴퓨터가 모릅니다. 그저 "잘 전송되었겠지" 라고 생각할 따름입니다. 따라서 packet loss 가 발생할 확률이 많아지고 packet collision도 많아집니다. 네트워크에 부하가 거리죠
어라 며칠 후에 runt가 없어졌네
runt 수치와 같은 통계적 수치들은 평생 유지되는 것이 아닙니다. cache 메모리에 이러한 정보가 저장되어 있다가 주기적으로 cache가 비워집니다. 따라서 runt 수치가 줄어들었다고 해서 놀랄것은 없습니다. 현실적으로 회선의 불량인 경우에 많이 생기는 현상입니다.
전파지연 시간 = 최대 거리 / ( 2 * 10^8 m/s )
전송시간 : 프레임을 보내는 중에 어떤 시간 만큼 보냈을때는 더 이상 충돌이 없을 것이라는 것을 알 수 있는 시점
-------------------------------------
A B
라는 것이 있을때 A가 데이터를 보내는 것이 B에 다다랐을 때 쯤에 충돌이 있었다고 한다면 그 정보가 다시 A에게 돌아와야 충돌이 일어났는지 알기 때문에 회선 길이를 왕복해야 합니다. 즉 전파지연 시간이 두 배가 되는 거지요. 여기서 혹시 모르는 상황을 대비해서 safety margine을 포함해서
시간 = 2 x 전파지연시간 + safety margine 이 됩니다.
몇 비트로 알고 싶은 경우에는 시간 x 전송속도를 하게 되면 몇 비트를 보낸 이후에는 더 이상 충돌이 없을 것이라는 것을 알기 때문에 그 이후로는 충돌 체크를 하지 않아도 된다.
Late Collision
이더넷상의 컴퓨터가 collision이 발생했다는 사실을 뒤늦게 알아차렸다는 얘기.
이더넷에서 두 대의 컴퓨터가 동시에 Frame을 전송하게 되면 collision 발생하고 두 컴퓨터가 이를 감지하여 충돌 난 Frame을 재전송하는게 정상적인 CSMA/CD의 동작 방식이다. 하지만 collision을 뒤늦게 감지하면 전송 버퍼(buffer)의 data를 clear 시켜버린 후에 뒤늦게 collision을 감지하면 이게 바로 Late Collision
UTP Cable이 너무 길거나 (CAT5의 경우 100m 초과), Hub나 Repeater 등의 Layer 1 장비로 이더넷 세그먼트를 3-4-5 rule을 넘겨 확장했을 경우, 이더넷 랜카드가 불량인경우, CAT5 케이블이 불량인경우, 전파 간섭이 심한 경우 발생한다.
또다른 RUNT 자료...
출처 : 지식 iN (http://kin.naver.com/browse/db_detail.php?d1id=1&dir_id=103&docid=272908)
1.runt란?
runt란 '작은 패킷'을 말합니다.
이더넷(랜) 구간에서, 패킷의 최소 크기는 64byte입니다. 64byte란 Collision Detection을 위하여 필요한 최소 크기입니다. 따라서 64byte 이하의 크기를 가진 패킷은 제대로 전송되지 않을 확률이 많이 크죠.
이러한 runt 패킷이 많아지면 당연히 패킷간의 충돌(collision)이 많아지고 네트웍에 부하가 많이 걸립니다.
2. runt는 왜 생길까?
이더넷(랜)에서는 컴퓨터들이 CSMA/CD 방식으로 통신하는 것은 이미 알고 계시지요? 한번 더 간단히 말씀 드리자면, 컴퓨터들이 마구 패킷을 쏘아대고 이 패킷들이 랜선따라서 돌아다니다가 서로 충돌하면 컴퓨터가 패킷을 다시 쏘고 다시 쏘고 해서 될때까지 쏘는 무식한(하지만 효율적인) 방법입니다. 이 때, 패킷과 패킷이 충돌하면 패킷들이 깨지면서 작은 조각들이 생기겠지요. 이것이 runt입니다. 컴퓨터가 패킷을 처음 만들어 낼 때는 당연히 이더넷 표준에 맞도록 64byte 이상의 크기를 가지도록 만들지만, 혹시 컴퓨터가 고장(?)이 나서 64byte 이하의 패킷을 만들어 내는 경우도 생길 수도 있고요(물론 그럴 가능성은 아주 작죠), 회선상의 불량 결선이나 전기적 간섭(노이즈 등)의 결과로도 생길 수 있습니다.
3. runt가 생기면 뭐가 안좋을까?
이더넷에서 컴퓨터들이 CSMA/CD 원칙에 따라 통신을 하는데, 64byte 이하의 크기를 가진 이 runt들은 CSMA/CD로 통제되지 않습니다. 오히려, 이 CSMA/CD 방식을 망쳐버립니다. 생각해보세요. "내가 보낸 패킷이 다른 패킷이랑 충돌했구나...다시 보내야겠다"라고 컴퓨터가 인식을 하기 위한 패킷의 최소 크기는 64byte인데, 64byte 이하의 패킷은 충돌이 발생하든 말든 컴퓨터가 모릅니다. 그저 "잘 전송되었겠지"라고 생각할 따름입니다. 따라서 packet loss가 발생할 확률이 많아지고 packet collision도 많아집니다. 네트웍에 부하가 걸리죠.
4. 어라 며칠 후에 runt가 없어졌네?
runt 수치와 같은 통계적 수치들은 평생 유지되는 것이 아닙니다. cache메모리에 이러한 정보가 저장되어 있다가 주기적으로 cache가 비워집니다. 따라서 며칠 후에 runt 수치가 줄어들었다고 해서 놀랄 것은 없습니다.