engineering/Network Eng.2006. 8. 10. 15:28




MAC 계층 구성
  • MAC Driver (ODI/NDIS/Packet)
  • MAC Controller
  • 송수신용 Frame buffer (shared local memory)
MAC 계층 기능
  • 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 동안 대기한 후 재전송 시도
  • 수신측
  • 수신 비트열로부터 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비트로 구성
   2) SFD (Start of Frame Delimiter)
  • frame 비트열에서 byte 단위를 식별하는 byte동기
  • 정상적인 프레임의 내용이 시작된다는 사실을 알려주는 frame 동기
  • 10101011의 8비트로 구성
  • Preamble 및 SFD는 모두 MAC controller chip에서 만들어진다.
   3) DA (Destination Address)

                

     - 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)
    4) SA (Source Address)
  • 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)ProtocolType (Length)Protocol
    0000 - 05dcIEEE 802.3 길이 영역0806ARP
    0600XNS IDP8035RARP
    0800IP8137Netware IPX
    0805X.25 PLP8191NetBIOS
    
   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로 보낼지를 결정

  • DSAPProtocolDSAPProtocol
    06IPE0Netware IPX
    42BPDUF0NetBIOS
    7EX.25 PLPFFGlobal SAP
    80XNSAAIEEE 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 영역과 같은 역할
   4) IEEE 802.3 Demultiplexing 정리 (상위의 protocol로 전달하기 위한 방법)
  • 수신된 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 의 값과 같다)

출처 : http://cs.epnetworks.co.kr/dedicate_access/letslearn/net/new_net.htm

Posted by theYoungman