안녕하세요
뚱보프로그래머 입니다.
이더넷 MAC 서브계층에 대해서 알아보겠습니다.
IEEE 802.3 MAC 서브계층은 프레임 포멧, 이더넷 동작방식, 충돌감지 및 재전송 방식 등을 정의한다. 먼저 이더넷의 포맷, 동작방식 등에 대해서 알아보자
- 이더넷 프레임 포맷
이더넷에서 사용되는 프레임의 포멧(format)은 다음과같다.
이더넷 프레임 각 필드의 내용 및 역할에 대해서 알아보자.
* 프리엠블
프리엠블(preemble)은 10101010이 반복되는 7바이트 길이의 필드이며, 수신측에게 이더넷 프레임이 전송된다는 것을 알리고, 이제 곧 도착할 이더넷 프레임에서 0과 1을 제대로 구분할 수 있도록 동기(synchronization) 신호를 제공하는 역할을 한다. 이처럼 이더넷은 동기를 위한 별도의 클락(clock)을 사용하지 않는다.
* SOF
SOF(start of frame)는 10101011의 값을 가지며, 프레임의 시작을 알리는데 사용된다. 즉, SOF 핃드 바로 다음에 이더넷 프레임의 목적지 MAC 주소 필드가 시작되는 것을 알린다. 이더넷 프렘의 크기를 나태낼 때 프리엠블과 SOF 필드는 제외한다.
* 목적지 MAC 주소
MAC(media access control) 주소는 이더넷 장비의 레이어 2 주소를 나타낸다. MAC 주소는 48비트(6바이트)로 구성되며, 16진수로 표시한다. MAC 주소의 앞부분 24비트를 OUI(organizationally unioue identifier)또는 회사 코드(vendor code, company ID)라고 하며, IEEE에 일정 금액을 지불하면 고유한 코드를 부여받을 수 있다.
MAC 주소의 뒷부분 24비트는 각 회사에서 자체의 일련번호를 부여하여 사용한다. 따라서 이더넷 포트들은 제품이 생산되는 시점에서 고유한 MAC 주소를 가진다. 그래서 MAC 주소를 BIA(burned in address)라고도 한다. 이더넷 프레임의 목적지 MAC 주소 필드는 목적지 이더넷 포트의 MAC 주소를 표시한다.
목적지 MAC 주소는 유니캐스트, 멀티캐스트 및 브로드캐스트 주소중 하나가 표시된다. 유니캐스트(unicast)주소는 특정한 하나의 주소를 말하고, 멀티캐스트(multicast) 주소는 특정한 그룹을 표시한다. 또, 브로드캐스트(broadcase) 주소는 해당 서브넷에 속하는 모든 장비에게 프레임을 전송할 떄 사용한다.
* 출발지 MAC 주소
출발지 MAC 주소는 이더넷 프레임이 전송되는 출불지 이더넷 포트의 MAC 주소가 표시된다. 출발지 MAC주소는 항상 유니캐스트 주소이다.
* 길이/타입
길이(lenght)/타입(type) 필드는 2바이트 길이를 가이며, 이더넷 프레임의 데이터 필드 길이나 MAC 클라이언트 프로토콜의 종류를 표시한다. 이값이 1,500 이하이면 프레임의 데이터 필드 길이를 표시한다.
이 값이 1,5,36 이상이면 현재의 프레임이 실어나르는 MAC 클라이언트 프로토콜의 종류 즉, 디어타입(ether type)을 표시한다. OUI와 마찬가지로 이더타입도 iEEE에서 부여한다. 주요 이더타입별 값은 다음표와 같다.
* 데이터
이더넷 프레임을 전송하는 방식은 두플렉스 모드가 하프 또는 풀인가에 따라 다르다. 하프 두플렉스(half duplex)는 데이터 송신과 수신을 동시에 할 ㅅ수 없는 통신방식을 의미한다. 즉, 데이터를 수신하고 있을 때에는 송신이 불가능하고, 수신할 떄에는 송신이 불가능하다. 그러나, 풀 두플렉스(full duplex) 모드에서는 프레임의 송신과 수신을 동시에 할 수 있다.
하프 두플렉스로 동작하는 링크에서 이더넷이 프레임을 전송하는 절차는 다음과 같다.
1) 프레임을 전송하기 전에 현재 전송하고 있는 프렘이 있는지 확인한다. 이 과정을 캐리어 센스(carrier sense)라고 한다. 전송중인 프레임이 없으면 자신의 프레임을 캐이블상으로 전송한다. 만약 전송중인 프레임이 있으면 기다린다.
2) 이처럼 전송할 프레임을 가진 모든 이더넷 장비는 언제라도 캐리어 센싱을 한 다음 자신의 프레임을 전송할 수 있는데 이를 멀티플 액세스(multiple access)라고 한다.
3) 이더넷은 복수개의 장비가 동시에 프레임을 전송할 수 있고, 이경우 충돌이 일어날 수 있으므로, 프레임 전송후에는 항상 충돌발생 여부를 확인한다. 이것을 충돌 감지(colision detection)라고 한다. 만약 충돌이 발생하면 임의의 시간동안 기다렸다가 다시 전송한다.
하프 두플렉스 네트워크에서 데이터 전송량이 많을 때 프레임 충돌이 많이 발생한다. 이더넷 장비들은 충돌 발생시 최대 15회까지 재전송을 시도하고, 그래도 실패하면 해당 프레임의 전송을 포기한다. 이상에서 설명한 이더넷 동작방식을 줄여서 CSMA/CD(carrier sense multiple access with collition detection)라고 부른다.
카탈리스트 3550 스위치에서 프렘 전송과 관련된 통계를 확인하려면 다음과
같이 show controller ethernet-controller 명령어를 사용한다.
결과에서 defer frames(지연 프레임) 항목은 다른 장비가 프레임을 전송중이어서 기다렸다가 전송한 프렘의 수를 표시한다.
1 collision frames은 1회 충돌후 재전송한 프레임을 말하고, 2 collision frames은 2회 충돌, 15는 15회 충돌후 재전송에 성공한 프렘의 수를 표시한다.
익세시브 콜리전(excessive collisions, 과도한 충돌)은 동일한 프레임의 충돌발생 회수가 15를 넘어 결국 전송하지 못한 프레임 수를 표시한다. 하프 두플렉스로 동작하는 링크에서 충돌 프렘의 수가 너무 많으면 나중에 설명할 VLAN등을 이용하여 네트워크를 분리하는 것이 성능향상에 도움이 된다.
레이트 콜리전(late collision, 늦은 충돌)은 64바이트 이상의 데이터를 전송한 이후에 발생한 충돌 회수를 표시한다. 제대로 구성된 네트워크에서는 최소 이더넷 프레임 사이즈인 64바이트를 전송할 떄까지 충돌이 발생하지 않으면 충돌이 없다.
그러나, 케이블의 길이가 규정보다 길거나, 양쪽 포트의 두플렉스가 일치하지 않는 두플렉스 미스매치(duplex mismatch) 상황에서, 하프 두플렉스로 동작하는 장비측의 포트에서 이처럼 레이트 콜리전이 발생한다.
레이트 콜리전이 발생해도 네트워크는 동작하지만 성능에 심각한 영향을 미치므로 해결해는 것이 좋다. 즉, 케이블 길이를 규정에 맞게 조정하거나, 스위치와 접속된 장비간의 두플렉스를 일치시켜주면 된다.
- 홈 두플렉스 모드에서의 이더넷 동작
풀 두플렉스 모드로 동작하는 링크는 프레임의 송신과 수신이 서로 다른 채널을 통하여 이루어지므로 충돌이 발생할 염려가 없다. 송신할 프레임이 있는 장비는 항상 송신 할 수 있으며, 송신후에 충돌 감지도 하지 않는다 따라서, 풀 두플렉스 모드에서의 이더넷 동작방식은 CSMA/CD가 아니다. 이더넷이 최소 길이의 프레임을 전송하는데 걸리는 시간을 슬로타임(slot time)이라고 한다.
CSMA/CD 방식에서는 슬롯타임이내에 프레임의 충돌을 감지할 수 있어야 하기 때문에 케이블 길이가 제약된다. 그러나, 풀두플렉스 모드에서는 충돌감지를 하지 않으므로 술롯타임에 제약을 받지 않는다. 결과적으로 케이블의 길이를 확장할 수 있어 장거리 전송이 가능하다.
풀 두플렉스 모드에서는 송신과 수신이 별개의 채널로 이루어지기 때문에 송수신 트래픽의 양이 동일하다면 하프 두플렉스보다 속도가 2배나 더 빠르다. 현재 10Mbps로 동작하는 10Base-T를 비롯하여 모든 상위 전송속도의 이더넷에서 풀 두플렉스 모드를 지원한다. 허브와 연결된 장비들은 풀 두플렉스가 지원되지 않는다