[Data Communications] Chapter 9.1 - Media Access Control (MAC)

이한량·2024년 5월 29일
0

Data Communications

목록 보기
10/13
post-thumbnail

1. Media Access Control (MAC)

  • Media Access Control (MAC) : 여러 Station이 Multipoint 혹은 Broadcast 링크에 동시에 접근하는 상황이 존재한다. 충돌 및 특정 스테이션의 링크 독점을 방지하여 모든 스테이션이 공평하게 링크를 사용할 수 있도록 하기 위한 프로토콜이 존재한다. 이러한 모든 프로토콜은 데이터 링크 계층의 하위 계층인 MAC에 속해있다.

2. Controlled Access Protocols

  • Controlled Access : 각 스테이션이 링크에 접근하여 데이터를 전송하고자 할 때, 링크를 사용할 수 있는 환경인지 아닌지에 대한 질의를 주고 받아 각 스테이션이 공평하게 데이터 전송의 기회를 얻도록 제어하는 것이다. 이때, 누군가 제어를 주도하는 환경을 Controlled Access라고 한다.

2-1. Reservation

  • Reservation : Station이 데이터를 보내기 전, 링크에 대한 예약을 하는 방식이다. 즉, 각 스테이션에게 링크 사용에 대한 순서를 지정(예약)하고, 각 스테이션은 순서대로 데이터를 전송하는 식으로 진행된다.

    • 시간 구분 : 네트워크 전송 시간이 구간으로 나누어져, 각 구간은 예약 프레임과 데이터 프레임으로 구성된다.

    • 예약 프레임 : 각 구간의 시작에 위치하며, 예약이 되어있는 스테이션은 1, 그렇지 않은 스테이션은 0 값을 갖는다.

    • 데이터 전송 : 예약이 승인된 스테이션은 해당 구간에서 자신의 데이터 프레임을 전송할 수 있다.

    • 특징

      • 방식은 충돌이 절대 발생하지 않으므로, 충돌 방지는 매우 효과적이다.

      • 만약 특정 스테이션만 데이터를 전송하려고 하는 경우, 데이터 전송을 하지 않는 스테이션의 차례도 기다려야 하므로 비효율성이 크다.

    특정 스테이션만 데이터 전송이 필요한 경우, 해당 방식은 링크의 사용 효율을 낮춘다.

2-2. Polling

  • Polling : 한 장치를 주 스테이션 (Primary Station)으로 지정하고, 나머지 장치를 부 스테이션 (Secondary Station)으로 지정한다. 모든 데이터 교환은 주 스테이션을 통해 이루어지며, 주 스테이션이 링크를 제어하며 부 스테이션은 주 스테이션의 지시에 따른다.

    • Select : P 스테이션이 목적지인 S 스테이션을 선택하여 데이터를 수신할 준비가 됐는지 질의 메시지를 보낸다.

      • P 스테이션은 S 스테이션을 선택하여 데이터 수신 가능 여부를 확인한다.

      • 데이터를 받을 준비가 된 S는 P에게 ACK를 보낸다.

      • ACK를 받은 P는 데이터를 전송하고 데이터 전송이 완료되면, S는 데이터를 잘 받았다는 ACK 메시지를 P에게 보내고 P는 데이터 전송을 마친다.

    • Poll : 주 스테이션이 각각의 부 스테이션에게 차례대로 폴링하여 데이터 전송 준비가 되었는지 확인하고, 준비가 된 부 스테이션이 데이터를 전송한다.

      • 주 스테이션이 각각의 부 스테이션에게 순차적으로 폴링하며 데이터 전송 준비가 되었는지 확인한다.

      • 데이터 전송 준비가 완료된 부 스테이션은 Data를 보내고, 그렇지 않은 스테이션들은 NAK 메시지를 보낸다.

      • Data를 수신한 주 스테이션은 다시 ACK 메시지를 부 스테이션에게 전송해, 데이터 전송이 완료되었음을 알린다.

    Select : 주국이 부국에게 데이터를 전송

    Poll : 부국이 주국에게 데이터를 전송

    • 특징

      • 항상 충돌 방지를 보장한다.

      • 데이터를 보낼 준비가 되지 않은 스테이션에게도 매번 질의를 보내야하기 때문에 오버헤드가 크다.

2-3. Token Passing

  • Token Passing : 네트워크의 모든 스테이션이 논리적 링 구조로 조직된다. 각 스테이션은 논리적으로 앞에 위치한 선행 스테이션과 뒤에 위치한 후속 스테이션이 존재한다.

    • 토큰을 갖고 있는 스테이션만 데이터 전송이 가능하다.

    • 만약 데이터 전송이 필요없거나 완료되면, 토큰을 후속 스테이션에게 넘긴다. (Token passing)

    • Reservation과 유사한 방식으로 이해할 수 있다. 즉, 토큰은 일종의 예약 표시이다.

3. Random Access Protocols

  • Random Access : 이 방식은 어떤 스테이션도 다른 스테이션을 제어할 수 있는 권한이 없다. 데이터를 전송하고자 하는 스테이션은 무작위로 링크에 접근한다. 전송 여부는 현재 매체의 상태 (Idle or Busy)에 기반한다.

    • 스테이션은 대부분의 경우 링크가 Idle 상태일 때 접근을 시도한다.

    • 링크가 Busy 상태라면, 스테이션은 일정 시간 대기 후 접근을 재시도 한다.

    • 스테이션은 전송의 성공 여부를 ACK 메시지, 충돌 감지 기술(Collision Detection, CD) 또는 충돌 회피 기술(Collision Avoidance, CA) 등을 통해 판단한다.

    • 충돌이 감지되면 스테이션은 데이터 전송을 취소하고, 데이터 재전송을 위해 임의의 시간동안 대기한다.

    결론적으로, Random Access 방식은 데이터 전송의 가능 여부 확인을 위해 링크에 랜덤하게 접근한다. 데이터 전송 수행 시 데이터 충돌 발생 여부를 체크해야한다.

  • Collision (충돌) : 충돌이 발생하면 신호의 에너지 레벨이 변형된다. 이는 곧 에러 발생으로 이어지고, 에러를 감지한 수신자는 송신자에게 재전송을 요청한다.

3-1. ALOHA

  • ALOHA : 스테이션이 데이터를 전송할 준비가 되면, 즉시 데이터를 전송하는 방식이다. 이 방식은 다른 스테이션은 신경 쓰지않고 준비가 되는대로 데이터를 전송하기 때문에 1명만이 링크에 존재하는 환경에서 효율이 좋다.

    • Pure ALOHA : 충돌이 발생한 스테이션은 데이터를 재전송해야한다. 만약 충돌이 발생한 모든 스테이션이 동일하게 2초씩 대기 후 데이터를 재전송한다면, 여전히 충돌이 발생할 것이다. 따라서 충돌 방지를 위해 각 스테이션은 서로 다른 대기 시간 (Back-off Time)을 가져야 한다. 이때 대기 시간은 랜덤하게 결정된다.

      • 예제 1 : 최대 지연 시간 TpT_p , 대기 시간 TBT_B 구하기. kk는 시도 횟수이다.
      d:MaximumDistancev:SignalPropagateSpeedTp:MaximumPropagationTimed=600kmv=3108m/sTp=dv=6001033108=2ms\begin {aligned} \\ d : Maximum Distance \\ v : Signal\,Propagate\,Speed \\ T_p : Maximum\,Propagation\,Time \\ \\ d &= 600km \\ v &= 3 * 10^8m/s \\ T_p &= \frac{d}{v} = \frac{600 * 10^3}{3 * 10^8} = 2ms \end {aligned}

      충돌이 발생한 경우, 재전송을 위한 대기 시간 TBT_B는 임의의 값을 가져야 한다. 백오프 시간은 랜덤 변수 RR 값에 따라 달라진다. 만약 k=2k = 2라고 가정하면, RR0R30 \leq R \leq 3의 범위를 갖는다. 이를 정리하자면,

      k:NumberofAttemptsTfr:AverageTransmissionTimeTB:BackoffTime=RTporRTfrR:RandomNumber=0to2k1if:R=0,TB=RTP=02ms=0msif:R=1,TB=RTP=12ms=2msif:R=2,TB=RTP=22ms=4msif:R=3,TB=RTP=32ms=6ms\begin {aligned} k : Number\,of\,Attempts \\ T_{fr} : Average\,Transmission\,Time \\ T_B : Back-off\,Time = R * T_p\,or\, R * T_{fr} \\ R : Random\,Number = 0\,to\,2^k - 1 \\ \\ if : R = 0,\, T_B = R * T_P = 0 * 2ms &= 0ms \\ if : R = 1,\, T_B = R * T_P = 1 * 2ms &= 2ms \\ if : R = 2,\, T_B = R * T_P = 2 * 2ms &= 4ms \\ if : R = 3,\, T_B = R * T_P = 3 * 2ms &= 6ms \end {aligned}

      위 예제와 같은 방식으로, 시도 횟수 k에 대한 R의 범위가 정해지고, 랜덤 계수 R의 값에 따라 대기 시간이 결정된다. 즉, 시도 횟수 k가 커질수록 랜덤 변수의 범위가 커진다.

      • 예제 2 : 200bits200bits 프레임을 200kbps200kbps의 대역폭을 가진 공유 채널로 전송할 때, 프레임 충돌 없이 전송되기 위한 조건 계산
        Tfr:프레임전송시간Tv:취약시간frame=200bitBandwidth=200kbpsTfr=200bits200kbps=200200103=1msTv=2Tfr=2ms\begin {aligned} T_{fr} : 프레임\, 전송\, 시간 \\ T_v : 취약\, 시간 \\ \\ frame &= 200bit \\ Bandwidth &= 200kbps \\ T_{fr} &= \frac{200bits}{200kbps} \\ &= \frac{200}{200 * 10^3} = 1ms \\ T_v &= 2 * T_{fr} = 2ms \end {aligned}

      위 예제에서 볼 수 있듯이, 각 스테이션이 충돌 없이 프레임을 전송하기 위해선 프레임 전송 시간의 2배의 시간을 필요로 한다.

    Pure ALOHA 방식은 대기 시간이 랜덤하게 결정되므로 대기 시간이 겹치는 경우가 발생할 수 있기 때문에 항상 충돌 방지를 보장하지 못한다. 만약 반복해서 kk 값을 키워가며 데이터를 보냈음에도 계속해서 충돌이 발생한다면, 결국 데이터 전송을 포기한다.

    • Slotted ALOHA : Pure ALOHA 방식보다 충돌 가능성을 줄이고 효율성을 높이기 위해 설계되었다. 이는 시간 동기화된 슬롯을 이용해 충돌 발생 확률을 줄이는 방식이다. 이 방식은 스테이션이 데이터를 보낼 준비가 끝나도, 정해진 슬롯의 시작 지점에 도달해야만 데이터를 보낼 수 있다.

      • 전체 시간을 동일한 크기의 슬롯으로 나눈다. 각 슬롯의 길이는 하나의 프레임을 전송하는 데 필요한 시간과 동일하다.

      • 각 스테이션은 프레임을 전송할 준비가 되면, 다음 슬롯의 시작 시점에 프레임을 전송한다. 즉, 스테이션은 슬롯의 시작 지점에만 데이터를 전송할 수 있다.

      • 만약 두 개 이상의 스테이션이 같은 슬롯에서 전송을 시도하면, 이 스테이션들은 랜덤한 시간을 기다린 후 다시 전송을 시도한다.

      • 취약 시간은 1 타임 슬롯과 동일하다. 즉, Pure ALOHA의 절반이다.

어떤 방식의 ALOHA를 채택하더라도, 스테이션은 링크의 상황은 고려하지 않고 데이터 전송을 시도하기 때문에 충돌 가능성이 높다.

3-2. Carrier Sense Multiple Access (CSMA)

  • CSMA : 이 방식은 각 스테이션이 데이터를 전송하기 전, 먼저 링크를 감지하여 링크 상태를 확인한 후 데이터를 전송함으로써 충돌 가능성을 최소화하는 기법이다. 즉, Busy 상태를 확인했다면 대기, Idle 상태를 확인했다면 데이터를 전송한다.

    • Carrier Sensing (매체 감지) : 스테이션이 데이터를 전송하기 전에, 현재 링크가 사용중인지 확인한다. 만약 사용 중이라면 일정 시간 기다렸다가 다시 링크를 Sensing, 사용 중이 아니라면 데이터를 전송한다.

    • Collision Avoidance (충돌 회피) : 두 개 이상의 스테이션이 동시에 데이터를 전송하면 충돌이 발생한다. 이 경우, 각 스테이션은 충돌을 피하기 위해 랜덤한 시간 동안 대기하다가 재전송을 시도한다.

  • Space/Time Model of a Collision in CSMA : 공간/시간 모델은 CSMA 네트워크에서 충돌이 발생하는 메커니즘에 대해 설명한다. CSMA는 데이터 전송을 시작하기 전에 링크를 확인하지만, 시간 / 공간적 이유로 인해 여전히 충돌 가능성이 존재한다.

    • 공간적 관점 : 네트워크의 각 스테이션이 매체를 감지할 수 있는 범위에는 한계가 있다. 따라서 두 스테이션이 서로 감지할 수 없는 거리에 있을 경우, 링크가 비어있다고 판단하여 데이터 전송을 시도하지만 실제로는 충돌이 발생할 수 있다.

    • 시간적 관점 : 한 스테이션이 링크를 Sensing 하는 신호를 보내고, 해당 신호가 도착하기 전에 다른 스테이션이 링크를 Sensing 하는 상황을 생각해보자. 그럼 두 스테이션은 모두 링크가 Idle 상태일거라고 인식하고 데이터 전송을 시작할 것이다. 즉, 링크를 Sensing하고 데이터 전송을 시작하기까지의 시간 동안 다른 스테이션이 전송을 시작할 수 있고, 이로 인해 충돌이 발생할 수 있다.

  • Vulnerable Time in CSMA : 취약 시간은 데이터 프레임의 전송 시작부터 완료까지의 시간으로 정의하는데, 충돌 발생 가능성이 있는 시간 구간을 의미한다. 이 시간 동안 다른 스테이션이 전송을 시작하면 충돌이 발생할 수 있다.

CSMA 환경에서 충돌은 물리적으로 발생할 수 밖에 없는 현상이므로, 해결하는 것이 매우 어렵다.

  • CSMA의 세 가지 지속성 메소드

    • 1-Persistent

      • 데이터를 전송하고자 하는 모든 스테이션이 링크가 Busy 상태임을 확인하고 계속해서 링크를 Sensing하며 대기.

      • 링크가 Idle로 바뀌는 순간 모든 스테이션이 데이터 전송을 시도

      • Bursty 데이터 전송 및 충돌이 발생한다.

    • Non-Persistent : 1-Persistent에서 발생하는 문제를 해결하는 방법이다.

      • 데이터를 전송하고자 하는 스테이션이 링크를 Sensing

      • 링크가 비어있으면 즉시 데이터를 전송하고, 링크가 Busy 상태이면 백오프 타임을 가진 후 링크를 다시 Sensing한다.

      • 이 방법은 두 개 이상의 스테이션이 동시에 링크를 Sensing하여 Idle 상태임을 감지하였을 때, 충돌이 발생할 수 있다.

      • 또한 각 스테이션은 무작위로 정해진 시간을 대기하기 때문에 링크가 비어있음에도 Sensing하지 않고 대기하는 시간이 길어지는 문제점도 발생할 수 있다.

    • pp-Persistent : 충돌 가능성을 낮추는 동시에 링크 활용률을 높이기 위해 고안한 방법으로, 확률을 도입하여 해결방안을 제시하고 있다.

      • 링크가 비어있을 때 스테이션이 데이터를 전송할 수 있는 확률 pp가 지정되어 있다.

      • 각 스테이션이 링크를 Sensing하고, Idle 상태임을 확인하였을 때 각 스테이션은 pp의 확률로 데이터 전송을 성공한다.

      • 데이터를 전송하지 못한 스테이션(1p1-p)은 다음 슬롯까지 일정 시간 기다리며 대기.

      • 다음 시간 슬롯에 도달하면, 스테이션은 다시 링크의 상태를 확인하고 링크가 Idle 상태라면 데이터 전송을 시도한다. (확률은 pp)

      • 만약 링크가 Busy라면, 랜덤한 시간 동안 기다린 후 다시 링크를 Sensing한다.

3-3. Carrier Sense Multiple Access with Collision Detection (CSMA/CD)

  • CSMA/CD (Collision Detection, CD) : CSMA에서 충돌 감지 및 해결 메커니즘을 추가한 프로토콜이다. 만약 한 스테이션이 충돌을 감지한다면, 충돌이 발생했음을 알리는 신호인 Jamming Signal을 다른 스테이션에 보낸다.

    • 데이터 전송 중이던 스테이션이 충돌을 감지하면, 데이터 전송을 중단한 후 Jamming Signal을 다른 스테이션에 보낸다.

    • 해당 신호를 받은 스테이션들은 데이터 전송을 중단하고, 백오프 타임을 가진 후 재전송을 시도한다.

  • CSMA/CD와 ALOHA의 차이점

    • Persistent 프로세스 추가 : ALOHA는 스테이션이 데이터 전송 준비를 마치면 바로 데이터를 전송하지만, CSMA/CD는 스테이션이 전송을 시도하기 전 링크의 상태를 확인하는 과정을 포함한다. 이를 통해 충돌 가능성을 낮춘다.

    • 충돌 감지 : CSMA/CD는 스테이션이 데이터를 전송하는 동안 지속적으로 링크를 Sensing하여 충돌을 감지한다. 충돌이 발생했다면, 전송을 중지하고 Jamming Signal을 보내는 등의 충돌 해결 메커니즘이 존재한다. 반면 ALOHA는 이러한 실시간 모니터링 기능이 없다.

3-4. Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA)

  • CSMA/CA (Collision Avoidabce, CA) : 무선 네트워크에서 충돌을 방지하기 위해 고안된 방식이다. 유선 환경과는 달리 무선 환경에서는 호스트가 신호를 보낼 때 Transmission Range가 결정 되는데, 이는 매우 좁은 범위의 Carrier Sensing만 가능하다는 의미이다. 즉, 충돌을 감지하는 것이 어렵다. 따라서 충돌이 발생하기 전에 이를 회피하는 방법을 채택하였는데, 그것이 CSMA/CA이다.

  • CSMA/CA의 세 가지 메커니즘

    • Interframe Space (IFS) : IFS는 데이터 프레임 충돌을 방지하기 위해 데이터 전송을 고의적으로 지연시키는 방법이다.

      • 링크의 Idle 상태가 감지되면, 호스트는 즉시 데이터를 전송하지 않고 일정 시간(IFS)동안 대기한다.

      • 이는 링크가 Idle 상태같이 보이더라도, 호스트가 감지하지 못하는 영역에서의 데이터 전송이 존재할 수 있기 때문에 고의로 백오프 타임을 길게 가져가는 것이다.

    • Contention Window : 전송을 원하는 스테이션이 전송을 시작하기 전에 대기해야 하는 시간을 슬롯(slot) 단위로 나눈 것이다.

      • Contention Window는 여러개의 슬롯으로 분할된 시간이다. 각 스테이션은 이 슬롯들이 시작할 때만 데이터 전송이 가능하다.

      • 데이터를 전송하고자 하는 스테이션은 Contention Window 내에서 랜덤하게 선택된 슬롯 수만큼 대기한다. 이는 여러 스테이션이 한번에 전송을 시도해 발생할 수 있는 충돌을 방지하기 위함이다.

      • IFS 시간 이후에도 여전히 Idle 채널을 감지하지 못한다면, 스테이션이 대기해야 하는 슬롯의 수를 두 배로 증가시킨다.

      • 이 방식은 pp-Persistent와 유사하지만, 스테이션을 대기 시킬 슬롯의 수를 랜덤하게 정의한다는 점에서 차이가 있다. pp-Persistent는 특정 확률에 따라 전송 여부를 결정한다.

    • RTS and CTS

      • Request to Send (RTS) : 송신을 시작하기 전에 네트워크의 다른 스테이션들에게 데이터 전송 의사를 알리고, 해당 채널이 사용 가능한지를 확인한다. 즉, 데이터 전송을 원하는 스테이션은 RTS 프레임을 채널에 전송하여 의사를 전달한다.

      • Clear to Send (CTS) : RTS 프레임을 수신한 후, 수신 스테이션이 채널이 사용 가능하다는 것을 확인하고 송신 스테이션에게 전송을 허가하는 신호를 보낸다. 즉, 일정 범위 내에서만 Sensing이 가능한 무선 환경을 극복하기 위해서, 연쇄적으로 발생하는 CTS를 통해 링크 전체를 Sensing하는 효과를 기대해볼 수 있다. 송신 스테이션이 CTS 프레임을 받으면, 데이터 전송을 시작한다. 데이터 전송이 완료되면 수신 스테이션은 성공적으로 데이터 수신했음을 알리는 ACK 프레임을 전송한다.

    이러한 기법들을 통해 무선 환경에서 여러 스테이션들이 서로의 존재를 모른 채 동일한 링크에 데이터를 전송하려 하는 문제를 해결할 수 있다.

4. Channelization Protocols

  • Channelization : 채널화는 링크의 사용 가능한 대역폭을 시간, 주파수 또는 코드를 통해 다른 스테이션들 사이에서 공유하는 다중 접속 방법이다. 이와 관련해 FDMA, TDMA, CDMA라는 세 가지 프로토콜에 대해서 논의해보자.

4-1. Frequency Division Multiple Access (FDMA, 주파수 분할 다중 접속)

  • FDMA : 사용 가능한 대역폭을 주파수를 기준으로 여러 개의 대역폭으로 나누어 각 스테이션에 할당하는 방식이다.

    • 이 방식은 각 대역폭이 고유한 주파수 범위를 가지므로, 각 스테이션은 서로 간섭 없이 데이터를 전송할 수 있다.

    • 한 스테이션에 배정된 대역폭은 다른 스테이션이 사용할 수 없다.

    • 각 대역폭 간에는 대역폭 혼성을 방지하기 위해 일정 간격만큼 대역폭을 띄워야 되는데, 이로 인해 사용하지 못하는 주파수가 발생한다. 즉, 대역폭 낭비가 발생한다.

4-2. Time Division Multiple Access (TDMA, 시간 분할 다중 접속)

  • TDMA : 여러 스테이션이 채널의 대역폭을 시간에 따라 공유하는 방식이다. 각 스테이션은 할당 받은 타임 슬롯동안 데이터를 전송할 수 있다.

    • 전체 시간을 고정된 길이의 타임 슬롯으로 나누고, 각 스테이션 당 하나의 시간 슬롯을 할당한다.

    • 할당된 시간 슬롯 동안에만 해당 스테이션이 데이터를 전송할 수 있다.

    • 각 스테이션 간 데이터 전송에 간섭이 발생하지 않는다.

    • 이를 위해 정확한 시간 슬롯 할당과 시간 동기화가 필요하다.

4-3. Code Division Multiple Access (CDMA, 코드 분할 다중 접속)

  • CDMA : 하나의 채널이 링크 전체의 대역폭을 점유하고, 모든 스테이션이 동시에 데이터를 전송할 수 있다. 이는 각 스테이션이 고유의 코드로 데이터를 변조하여 전송함으로써 구현되는데, 이 코드를 통해 수신기는 동시에 수신된 여러 신호 중에서 특정 신호를 구별하고 추출할 수 있게 된다.

    • Incoding

      • 보내려고 하는 데이터와 Chip Code를 곱한다.

      • Chip Code에 해당하는 비트에는 각각 표현하는 방식이 정의되어 있다. (ex : Data bit 0 = -1, Data bit 1 = +1, Silence = 0)

      • 각 스테이션의 변조된 값을 모두 더한 뒤, 전송한다.

    • Decoding

      • 예를 들어, 스테이션 2의 값을 추출하고자 한다면, 해당 칩 코드를 데이터에 곱하기만 하면 된다. 즉, c2{(d1c1)+(d2c2)+(d3c3)+(d4c4)}c_2 * \{(d_1 * c_1) + (d_2 * c_2) + (d_3 * c_3) + (d_4 * c_4)\} = -4,스테이션의 개수가 4개이므로, 4/4=1-4/4 = -1 따라서 스테이션 2의 원래 값은 -1임을 알 수 있다.

      • 위와 같은 방식으로 디코딩을 통해 원본 데이터를 추출할 수 있다.

    • 특징

      • 고유 코드를 사용하기 때문에 보안성이 높다.

      • 모든 스테이션이 전체 대역폭을 사용해 데이터를 전송하므로 링크 활용도가 높다.

      • 각 스테이션은 고유 코드를 가지므로 간섭이 최소화된다.

profile
한량 극복 프로젝트

0개의 댓글