Protocol Function

protocol Function 이란? 

여러 protocol에서 두루 사용되는 특정 procedure / mechanism -> 공통적으로 사용되는 존재

예를 들면,

  • Error Control
    • PDU가 정상적으로 전달되지 않은 상황에서의 protocol entity의 동작
  • Fragmentation, Flow control
    • entity 간 data를 서로 주고받는 속도 및 형태 조절 

Error Control

Connection-oriented communcations protocol에게 주어지는 중요 역할 중 하나는 상대방에게 확실히 PDU를 전달하는 것

Protocol에서 “확실한 전달”을 하려면 두 가지 동작에 대한 정의가 필요하다.

  • Detect : 송신 측에서 error 한 상황을 인지
  • react : error 상황에서 송신 측 동작

Confirmation

한쪽 entity에서 PDU를 보내면 receiver entity에 그 PDU가 도달했는지 여부를 확인할 수 있어야 한다.

Explicit(암묵적) ack : receiver entity가 PDU를 온전히 받았는지 여부를 다시 보내준다. 

=> 가장 단순하고 확실하게 confirmation을 하는 방법이다.(Acknowledgemnet라는 잘 받았다는 확인 메시지)

=> ACK 없이도 잘 받았다고 암묵적으로 처리하면 Implicit(암시적)하다고 한다.

Explicit ACK는 기본적으로 두 가지 세부 방법이 존재한다.

  • Positive ACK : 정상 수신 된 PDU를 알려주는 방식
    • 지금까지 수신한 PDU의 다음 sequence number를 알려준다.
    • network load를 줄이기 위해 cumulative ACK가 주로 사용된다.

image “왼쪽 보다는 오른쪽 같은 cumulative ACK가 네트워크 load가 적다”

  • Negative ACK : 미수신 PDU를 알려주는 방식
    • faulty or outstanding sequence (sequence number가 순차적으로 오지 않을 시)

Reaction

에러가 났을 시 잘못 받은 PDU를 다시 보냄 (세부 방법은 여러 가지)

Piggybacking

ACK 메시지가 아닌, PDU에 실어서 같이 ACK 정보 전송 ( 돼지 등에 올라타다는 말처럼, 메시지를 일일이 주고 하는 게 아닌, 데이터를 송신할 때 에러가 난 PDU 정보를 담아서 보냄)

“멀티미디어는 주로 UDP 형식으로 통신하는데, 이럴 때 Piggybacking을 주로 사용한다”

Timer

ACK 전송 역시 손실될 수 있다. 

그렇다고 하염없이 송신 측은 수신의 ACK를 기다릴 수 없기 때문에, 일정시간까지만 기다리는 방법 

PDU를 보낼 때 타이머를 시작하고, ACK를 받으면 타이머를 리셋한다.

“타이머는 너무 짧지도, 길어도 안된다.”

Activity Timer

상대편 entity가 살아있느냐 죽어있느냐를 확인하는 timer

peer entity가 communication을 멈췄을 때, deadlock 발생을 막기 위해 timer 가동

Timer와 다른 점은 ACK를 받냐가 아니라 송신 측에서 PDU를 보내면 리셋한다.

“보통 Reaction 시간보다 충분히 크게 timer interval을 잡는다”

Timer의 중요성

Protocol specification(정의)에 있어서 핵심 내용 중 하나는 timer를 정의하는 것 

너무 짧으면 time-out이 빈번하여 불필요한 reaction 발생

너무 길면 reaction이 너무 늦어져 불필요한 deadlock이 구간이 발생한다. 

PDU Loss and Duplication 

데이터 전송 중 PDU가 손실되거나 중복 수신이 될 수도 있다.

-> 물론 entity는 PDU의 sequence number를 통해 이를 감지할 수 있다.

PDU Loss

  • PDU가 time-out interval 이후에도 도달하지 않는 경우 
  • 더 큰 sequence number PDU 수신 시 

TX(송신 측)은 다음 2가지를 통해 파악할 수 있다.

  • ACK를 통해 빠진 sequence 인식
  • 중복된 ACK sequence 수신

PDU duplication

ACK가 손실되어 TX에 의해서 time-out에 의해 PDU가 재전송될 수도 있다.

이 경우에는 수신 측에서 sequence number를 확인하고 discard(무시)할 수 있다.