IT 정보/CCNA/CCNP
[ccna/ccnp/시스코/ccna/ccnp/시스코]이더넷 기술
김윤석
2007. 12. 14. 17:35


MAC 계층 구성MAC 계층 기능
- MAC driver (ODI/NDIS/Packet)
- MAC controller
- 송수신용 frame buffer (shared local memory)
- MAC Frame 구성
- Carrier Sense 감지
- Collision Detection 감지
- Collision 감지시 jam 신호 송신
- CRC 검사 및 생성
- 재전송동작
- MAC Frame 에서 DATA 부분 추출
1. CSMA/CD
1) CSMA/CD Parameters
- bit time
- cable 상에서 1 bit 가 송신되는 시간 (1 bit time)
- 10 Mbps : 1bit/10 Mhz = 0.1 us (= 100 ns) (us는 microsecond 임)
- slot time (=collision window)
- Preamble의 첫 bit이 송신된 시간부터 충돌사실이 감지되어 전송을 중지 할수 있는 충분한 시간을 말한다.
- 4개의 repeater로 연결된 2.5 Km 의 Ethernet 에서 slot time : 512 bit time (=51.2 us)
- slot time 은 Frame의 최소길이를 규정한다.
규정하지 않을 경우 MAC 에서 처리해야 할 재전송이 상위계층으로 책임이 옮겨져 응용계층작업이 느려지는데, 이것을 방지하기 위함이다. (최소 MAC 재전송 시간은 IFG 시간인 9.6 us이다.) - 최악의 경우인 slot time 동안에 충돌사실을 송신 node에서 알때까지, 이 frame의 송신이 완료되지 않도록 보장하는 최소 Frame 길이 규정 (64 bytes = 512 bits)
- InterFrameGap(IFG) time
- 송신을 무사히 완료한 DTE라 할지라도 다음 Frame을 연속적으로 전송하지 못 하고 96 bit time (= 9.6 us) 대기후 다시 전송가능
- 채널 독점현상 방지 (IFG 로 인해, 같은 조건에서 idle을 감지하여 송신시도)
- backoff algorithm
- 충돌이 일어나고jam 이 발생한후 채널 idle
- 재전송 간격을 truncated binary exponential backoff 로 결정
- Random하게 결정된 정수값 r slot time만큼 대기후 재전송
- Jamming size ( 32 bits의 random 한 bit열 (실제 32개의 '1'))
- 충돌현상의 발생을 강제로 알리기 위한 신호
- 적은 bit의 충돌시 감쇄가 생겨 제대로 충돌을 알리지 못하는 경우를 방지
2) CSMA/CD 방식
- 송신측
- MAC Frame 준비 후 carrier 검사
- busy : idle할때까지 carrier를 계속 검사
- idle : interframe gap 시간인 9.6 us 대기후 전송
- 전송중 충돌 감지
- Preamble/SFD 부분 전송 중 충돌 : 이 부분의 송신을 완료한 후 jam 신호송신
- 나머지 전송 중 충돌 : 즉시 전송을 중지한 뒤 jam 신호를 3.2 us 동안 송신
- 재전송 시도
- 총전송횟수가 16회 초과 : 상위계층에 재전송시도 초과오류를 보고
- 이하 : backoff time 동안 대기한 후 재전송 시도
- MAC Frame 준비 후 carrier 검사
- 수신측
- 수신 비트열로부터 SFD 부분을 감지하여, 그 이후 영역부터 DATA 까지 NIC의 shared memory (수신버퍼)에 byte 단위로 저장하면서, 프레임의 길이, DA, CRC의 계산을 동시에 수행
- Frame의 최대/최소 길이에 어긋나거나
- DA가 자신의 주소가 아닌경우
- FCS 가 틀린경우, Frame을 버린다.
- 정상적으로 완료
- MAC driver는 Type을 참조하여, 적합한 상위계층으로 정보영역만을 전달
2. Frame 구성
- DIX 2.0 Ethernet Frame Format
- IEEE 802.3 Frame Format
1) Preamble
- 송신측과 수신측간의 송/수신 속도를 일치시키기 위한 bit synchronization
- 10101010이 7회 연속 반복되는 56비트로 구성
- frame 비트열에서 byte 단위를 식별하는 byte동기
- 정상적인 프레임의 내용이 시작된다는 사실을 알려주는 frame 동기
- 10101011의 8비트로 구성
- Preamble 및 SFD는 모두 MAC controller chip에서 만들어진다.
- Block ID (OUI = Organizationally Unique Identifier)
- NIC 제조회사를 식별하는 code
- 송신시 각 byte 의 LSB 부터 송신
- LSB : 0 - 하나의 목적지 스테이션 ( Address Resolution 된 경우)
- LSB : 1 - Multicast Address
- 모든 bits 가 1 : Broadcast (ARP,RARP에 사용)
- Promiscuous Mode : 각 스테이션은 Frame의 DA 에 상관없이 모든 종류의 Frame를 수신 할 수 있도록 설정가능 ( Network Analyzer)
- NIC 의 ROM에 자신의 Ethernet address 기록
- MAC controller 가 초기화될 때, ROM으로 부터 주소를 읽어 내부의 register에 저장하고 있다가, frame의 송신시 이 값을 읽어 SA영역에 자동 삽입
5) Type 또는 Length
- DIX 2.0 의 Type : 상위계층 protocol 표시
- IEEE 802.3 의 Length : DATA (Pad포함) 영역의 길이
- 두가지 Frame 형식을 Autodetect 하기 위해 기준설정
- DIX 2.0 Type : 0x0600 이상
- IEEE 802.3 : 0x0600 미만Type (Length) Protocol Type (Length) Protocol 0000 - 05dc IEEE 802.3 길이 영역 0806 ARP 0600 XNS IDP 8035 RARP 0800 IP 8137 Netware IPX 0805 X.25 PLP 8191 NetBIOS
6) Data와 Pad

- Data가 최소길이제한인 46bytes보다 작을때, 그 차이만큼 Pad추가 (0으로 채워짐)
7) CRC ( Cyclic Redundancy Check = FCS )
- Preamble과 SFD 제외
- DA + SA + Length + DATA(Pad) 영역의 계산
- MAC controller는 Frame을 송신하면서 동시에 CRC 계산한후 DATA 뒤에 추가
- 수신쪽 MAC controller 도 수신하면서 동시에 CRC 계산한후 수신된 CRC 가 일치하는 지를 검사하고, 틀리면 버린다.
3. 수신된 MAC Frame의 Demultiplexing
1) DSAP의 값에 따라, LLC의 정보 영역을 어느 상위 protocol로 보낼지를 결정
-
DSAP Protocol DSAP Protocol 06 IP E0 Netware IPX 42 BPDU F0 NetBIOS 7E X.25 PLP FF Global SAP 80 XNS AA IEEE SNAP
2) 문제점 발생
- DSAP 의 크기가 1byte 이고, 이중에서 7 bits만 사용할수 있으므로, 지원 protocol의 수가 120여개 밖에 안된다.
3) IEEE 802.2 SNAP 출현 (SubNetwork Access Protocol)
- DIX 2.0 Frame 의 Type 의 갯수만큼 protocol을 지원하기 위해 만듬
- OUI (3 bytes) : NIC 제조회사를 식별하는code (현재는 대부분 0x000000)
- PID (Protocol Identifier) - 실제적으로 상위 protocol을 지정하는 부분으로 DIX 2.0 Frame의 Type 영역과 같은 역할
- 수신된 Ethernet Frame의 Type(Length) 값 확인
-> 값이 0x0600 이상이면, DIX 2.0 Type 으로 인식 - Type(Length)값이 0x0600 미만이면, IEEE 802.3 Length 로 인식
- 802.2 LLC 확인
- LLC 의 DSAP 가 0xAA 이면, 다시 SNAP 확인
-> SNAP 의 OUI 값이 0x0080C2 이면, PID 에 따라 MAC Bridge에서 사용 - SNAP의 OUI 값이 0x000000이면, SNAP PID를 확인하여 해당 protocol로 Demultiplexing (DIX 2.0 Type 의 값과 같다)