앞으로 POD 와 호스트 사이에서 주고 받는 데이터를 분석할 때 알고 있어야만 하는 것들을 Link Layer 차원에서 정리했다.
링크 계층에서도 말했듯이 트랜스포트 계층에서 내려오는 데이터를 받아서, LPDU 를 만들어 POD 로 보낸다. 각각 Data Channel 과 Extend Channel 로 LPDU 를 만들어 보낸다.
이 두가지 각각의 LPDU 의 스펙이 약간씩 다른데, 이는 관련 EIA 문서(Data Channel)와 SCTE(Extend Channel) 를 통해 확인할 수 있다.
우선 Data Channel 의 스펙부터 알아보자!
LPDU 는 2바이트의 헤더로 이루어져 있다. 헤더의 첫번째 바이트는 상위 TPDU fragment 를 위한 Transport Connection 속성을 나타낸다. 두번째 바이트는 More/Last 지시자를 뜻하는 비트를 나타낸다. 만일 비트가 1로 세팅이 된다면, 최소한 하나 이상의 TPDU fragment 들이 더 있다는 의미이다. 또한 만일 0으로 세팅이 된다면, 이것이 마지막(Last) TPDU fragment 라는 뜻이다. 나머지 비트들은 모두 0 으로 세팅되어 있다.

Transport Connection ID
M/L 0
TPDU fragment

위의 그림에서는 M/L 영역이 크게 나왔지만, 스펙상으로는 1 비트이다.
이번에는 Extend Channel 을 살펴보자! Data Channel 과 다른 것이 있다면, 다음에 나올 스펙의 차이다.

L F 0x00
FLOW_ID (MSB)
FLOW_ID
FLOW_ID (LSB)
datagram PDU fragment

역시 위의 그림에서도 L/F 의 영역은 각각의 1 비트 씩이다. 보았듯이 약간 다른 것을 알 수 있다.
L 지시자의 경우 비트가 0 이면, 최소하나 이상의 datagram fragment 을 가지고 있다. F 지시자의 경우 비트가 1 이면, 마지막 datagram fragment 를 나타낸다.
F 지시자의 경우 비트가 0 이면, datagram fragment 가 처음이 아니라는 뜻이고, 1 이면, datagram fragment 처음이라는 뜻이다.
총 3 바이트로 이루어진 FLOW_ID 는 흐르는 순서로 데이터에 결합되어 있다. 이것은 0 으로 예정되어 있다. 나중에 FLOW_ID 를 이용하여 fragment 된 데이터를 합친다.

데이터 분석

주고받은 데이터를 보면, 가장 먼저 host 가 pod 에게 아래의 데이터를 Data Channel 로 보낸다.

write_value = 108211

저 결과에서 10 이라는 값이 Link Layer 에서 추가 되었음을 알 수 있다. 각각 1 은 tcid 를 나타내고, 0 은 M/L 에서 마지막 비트임을 나타낸다.
뒤에서 계속 나오겠지만, 데이터를 내보낼 때나 읽어들일 때는 반드시 Link Layer 를 지난다. 또한 LPDU 를 만들어서 보낸다.

  • computer/digitalarena/link_layer_분석.txt
  • Last modified: 4 years ago
  • by likewind