5G Layer 2 - Overview
이전 글까지는 5G의 PHY layer를 어느 정도 정리했다. 이제는 Layer2, Layer 3도 하나씩 알아볼 시간이다. 다행히 윗쪽 Layer는 PHY Layer보다는 상대적으로 조금 간단하다. 상위 Layer에서 정해주는 Scheduling 방식이나, Parameter 들에 따라서, PHY Layer의 전송 방식이 정해진다. 이번 글에서부터는 Layer 2를 알아보도록 하자.
Layer 2는 SDAP / PDCP / RLC / MAC 이라는 4개의 Sub-Layer로 나뉘게 된다. 각 Layer마다 역할을 가지고 있고, 이 역할에 맞는 Header를 붙인다. 각 Sub Layer로 들어온 데이터 단위를 Service Data Unit (SDU)라고 하고, 여기에 Protocol Control Information (PCI)를 붙인 데이터를 Protocol Data Unit (PDU)라고 한다. 여기서 PCI는 Header라고 쉽게 생각하면 된다.
MAC layer가 하는 일
- MAC으로 들어온 SDU에 Header를 붙여 PDU를 만들고, 이를 Transport Block (TB)로 만들어서 PHY Layer로 전달
- Data Transfer를 위한 Scheduling
- HARQ를 통한 Error Correction
- Dynamic Scheduling을 위한 Prioirty Handling
- 필요 Packet Size를 위한 Padding bit attachment
- Layer 2/3의 Logical한 Channel을 Layer 1/2의 Transport Channel로 Mapping
RLC Layer에서 1개 이상의 Logical Channel이 내려올 수 있다. 이런 Logical Channel을 통해 내려온 SDU에 Header를 붙인 PDU를 Multiplexing하는 역할을 진행한다. (Rx입장에서는 이런 기능들이 역순/반대로 진행된다.)
Transmitter입장에서는 MAC SDU를 Multiplexing, Receiver입장에서는 De-multiplexing하는 역할을 한다. HARQ를 위한 Error Correction 파트와 Channel의 Prioritization, Scheduling 등을 담당한다. MAC layer에 대한 설명을 읽어보면 Logical한 Channel과 Transport Channel을 Mapping해준다고 되어 있는데 이게 무슨 뜻인지 설명해주는 글들은 많지 않다. 이런 용어들에 조금 더 익숙해지는 설명을 진행한다.
RLC /MAC 사이에 주고 받는 채널은 Logical Channel
Logical Channel은 Data의 유형(Type)에 따라서 위쪽 Layer인 RLC Layer에 제공되는 Channel의 형태다. 주로 Control Channel / Traffic Channel로 나뉜다. BCCH는 Broadcast 방식으로 gNB에서 Cell 전체적으로 필요한 정보들을 쏴주는 채널이다. PCCH는 Paging Control Channel로 Cell에서 Terminal의 위치에 대한 정보들을 교환하는 채널이다. CCCH는 Random Access를 위한 Control Channel, DCCH (Dedicated)는 각 Terminal 개개인에게 쏴줘야하는 Control Message를 다루는 채널, DTCH (Dedicated Traffic Channel)은 Terminal과 gNB가 본격적으로 Data를 주고받는 채널을 말한다.
MAC /PHY 사이에 주고 받는 채널은 Transport Channel
Transport Channel은 실제로 data가 어떻게 radio interface에서 전송되는지에 따라서 분류된다. 말이 조금 어려운데, Transport Channel로 들어온 data는 Transport Block이라는 단위로 만들어진다. Transport block이 만들어질 때, MCS / TB의 Size / 어떤 Antenna에 Mapping이 되는지 등을 MAC Layer에서 정하게 된다.
BCH는 PCCH의 information 등 시스템에 필요한 정보들을 Broadcast 방식으로 전송하기 위한 Channel 이다. 이런 정보들을 Master Information Block (MIB)라고 한다. PCH는 Paging을 위한 Channel로 Discontinuous Reception (DRX)를 허용하여 Terminal이 자신에 맞는 타이밍에 일어나서 서비스를 받도록 해준다. 이렇게 함으로써 Battery Save 효과가 있다. DL-SCH는 실제적으로 Data가 왔다갔다 하는 Channel로 유연한 rate adaptation, Scheduling, HARQ를 제공한다. DL-SCH에서도 DRX를 허용하고, 여러 개의 DL-SCH가 있을 수 있다. UL-SCH는 DL-SCH의 Uplink 버전이다. 자세한 내용은 TS 38.321에 있다.
Logical Channel vs Transport Channel
Logical Channel은 '어떤'데이터를 보낼지를 다루는 개념이다. 예를 들어, 'Broadcast message나 User data를 보낼 데이터다'라는 개념이 들어있다. 하지만 Transport Channel은 '어떻게' 데이터를 보낼지를 다루는 개념이다. Transport Block Size (TBS)나 Adaptive Modulation Coding (AMC)같은 내용들을 다루게 된다. MAC이 하게 되는 일이 이 '어떤 데이터를 보낼거다'라는 Logical Channel을 '어떻게 보낼거다'라는 것을 전달하는 'Transport Channel'로 Channel Mapping하는 것이다. MAC에서 설명하는 다양한 기능들이 이런 Channel Mapping을 위한 기능들이다.
MAC layer에 추가되는 Header
우선 LTE 기준으로 MAC Layer 데이터에 대해 얘기해보자. RLC에서 내려오는 Logical Channel의 여러 Data들의 Priority를 정하고, Multiplexing하여 1개의 Transport Channel에 넣어야 한다. 각 RLC PDU마다 MAC의 Sub-header에 해당하는 내용들이 필요하고, MAC Header의 끝인지를 알려주는 E element, Logical Channel index를 알려주는 LCID element, L-Field의 길이를 나타내는 F element, RLC PDU의 길이를 나타내는 L-Field가 있다. 이렇게 여러 RLC의 header 들을 하나의 MAC header에 몰아넣고 RLC PDU를 Multiplexing한다. 그리고, MAC Control Element라는 Field에서 다른 Logical Channel에서 온 RLC PDU들을 관리해준다. Control message와 data가 같이 전송되는 In-band 구조를 다룰 수 있게된다. MAC의 Multiplexing 기술은 CA에서 여러 Component Carrier로 나눠서 보낼 때도 사용된다. RLC 입장에서 그냥 Logical Channel로 내려보내면, MAC Layer에서 이를 Multiplexing하고 여러 Component Carrier로 쪼개서 별도의 HARQ를 진행하도록 Setting해서 Transport Channel로 내려보낸다.
5G MAC layer에서 LTE와의 차이
NR에서는 LTE와는 MAC message 구성방식이 다르다. 모든 Sub-header가 MAC PDU 앞에 몰려있는 LTE와는 다르게, NR에서는 각 SDU (Payload)앞에 위치한다.따라서 Subheader가 쭈루룩 놓여있을 경우가 없고, L의 길이를 나타냄 으로서 다음 subheader의 시작을 알 수 있게 해주는 E field가 있을 필요가 없다. 따라서 NR에서는 E field가 없다. LCID는 Logical Channel의 ID를 지칭하는데, MAC의 Sub-header당 1개씩 있다. (여러 RLC가 Multiplexing되기 때문에 각 RLC PDU마다 1개의 Subheader가 생기고, ID가 있다.)
RLC Layer
RLC Layer에는 3가지 Mode가 있다. RLC header가 없이, Tx에서 Buffering만 하고 Sementation이나 Reassembling하지 않으며, Feedback을 보내지 않는 Transparent Mode (TM), RLC Header가 있고, Tx와 Rx 모두에 Buffering이 있고, Feedback을 보내지 않는 Unacknowledged Mode (UM), UM에서 Feedback이 있는 AM이 있다. TM과 UM은 Tx/Rx를 위한 별도의 객체를 두지만, AM은 하나의 객체에서 둘 모두를 컨트롤한다. 어떤 Logical Channel이냐에 따라서 어떤 모드를 쓸지 정해져 있고, 다양한 모드를 쓸 수 있다면, RRC에서 어떤 모드를 통해서 보낼껀지 지정해준다.
TM은 위에서 설명한것처럼 거의 아무것도 안하고 Tx에서 Buffering만 해준다. 따라서 RLC로 들어온 데이터가 그대로 나가기 때문에 데이터에 변화도 없다. 만약 MAC/PHY에서 할당받은 Resource보다 큰 packet이 RLC로 들어왔어도 RLC는 그대로 이를 내보내준다. 이렇게 MAC Layer에서 전달받으면 할당받은 자원으로는 내보낼 수 없기 때문에 drop된다.
UM은 TM과 다르게 Segmentation을 하기 때문에 이에 따른 Header도 수정되어야 한다. 따라서 Buffering 기능 이외에도 RLC Header를 추가하고 수정하는 기능이 있다. LTE에서는 Concatenation의 기능도 있지만, NR에서는 이 기능이 MAC Layer로 넘어갔다. (TS 38.322) Receiver 입장에서는 Segmented로 들어온 데이터를 수집하여 Reordering하고 추가된 RLC Header를 삭제하며 Reassembling하는 역할을 한다. Reassembling은 Segmentation된 데이터를 붙이는 작업 / Concatenation은 전송할 패킷이 Network 수용 크기보다 작다면 여러 개의 패킷을 합치는 기능이다. MAC에서는 RLC에서 내려온 RLC PDU들을 합치는 기능들이 있다는 것을 MAC Layer에서 설명한다.
AM은 UM에서 Feedback이 추가된 모드이다. 여기서도 Concatenation은 MAC Layer로 내려왔다. AM은 Feedback 신호에 따라서 재전송을 해야하기 때문에 RLC Header를 붙이고, MAC layer로 해당 PDU를 내려보냄과 동시에 Retransmission buffer에도 넣는다. 만약 NACK가 오거나 일정 시간동안 ACK가 오지 않으면 Retransmission buffer에서 바로 재전송을 실시한다. 기능이 많아질수록 TM, UM, AM의 Header가 복잡해진다.
PDCP Layer
PDCP는 바로 윗 계층인 SDAP에게 Data Radio Bearer (DRB)를 제공해준다. Bearer란, Channel의 특성 및 QoS에 맞는 Parameter 설정을 통해 열린 '통로' 같은 느낌이다. DRB는 Bearer 중에, Data를 전송하기 위한, RAN 부분에 해당하는 Bearer다. PDCP는 LTE처럼 Handover로 인한 Data의 Loss를 예방하는 역할도 한다.
PDCP는 RLC의 UM, AM모드 에서만 작동하는 Layer다. PDCP로 일단 data가 들어오면 가장 먼저 하는 일은 data에 Sequence Numbering을 하는 것이다. 이런 Numbering을 통해, receiver가 데이터를 받아들일 때 순서대로 온건지, 데이터가 중복되어 들어오는건 아닌지, 잘라져서 들어온 것이면 어떤 순서로 합쳐야할지 등을 결정할 수 있다. 만약 User-Plane (Control Plane이 아닌 경우)는 위에서 쌓인 Header를 압축하는 과정을 거친다. Control-Plane인 경우는 Integrity Protection과 Ciphering (암호화)과정을 모두 거치고 C-Plane이 아닌 경우는 Ciphering 과정을 거친다. 단, Signaling message의 경우에는 Ciphering이 없을 수도 있다. 이 두 과정에 대한 자세한 Setting은 RRC Layer와 NAS에서 다루고 있다. 이 후, PDCP Header가 추가되고, Split bearer가 있다면 자신한테 맞는 bearer로 넣어준다.
NR로 오면서 LTE와 비교했을 때, 초반에 Transmission buffer가 있는 부분, 마지막 절차에 Packet duplication이 추가된 부분이 달라졌다. Packet duplication은 통신의 Reliability를 확보하기 위해 Packet을 복제해서 여러 번 보내는 5G의 기술이다. 특히, Low Latency를 유지하기 위해서 Packet duplication을 주로 사용한다.
SDAP
5G에서 추가된 U-Plane layer로 QoS Flow handling을 담당한다. 위에서 내려온 각 PDU마다 하나의 SDAP가 Setting되어 해당 PDU가 5G의 요구사항에 맞도록 QoS Flow ID (QFI)를 부여한다. 이렇게 딱지가 붙은 PDU는 내려갈 때 필요한 QoS에 걸맞는 대접을 받을 수 있게 된다. 1개의 SDAP entity는 각각의 PDU Session에 맞춰서 Setting되어 있다. 여기서 PDU session이라 함은, UE와 Application 사이에 여러 QoS를 가질 수 있는 Connection을 의미한다.
Uplink에서는 DRB와 QoS Flow ID를 Mapping할 수 있는 방법이 두 가지가 있다. 첫 번째는 Downlink에서 내려오는 Packet의 QoS를 보고 있다가, 이 Packet이 얼마나 급한건지를 그대로 반영하여 QoS를 Mapping하는 방법이 있다. 다른 방법은 5GC에서 RRC IE에 지정하는 'QoS Flow to DRB mapping'를 통해 지정받아서 QoS Flow를 할당하는 방법이 있다.
Dual Connectivity는 Master Cell Group (MCG)와 Secondary Cell Group (SCG)에서 같은 PDU에 대해 각자의 SDAP를 갖고 있다. Dual Connectivity도 전송이 끊기거나 loss되는 것을 막기위한 방법으로 5G에서 활발하게 활용되고 있다.
정리하면, Layer 3에서 들어온 데이터를 5GC나 Application에서 지정해주는 QoS에 맞춰서 DRB에 Mapping해주는 역할을 한다.
5G의 Layer 2에서 달라진 부분
Layer 2는 SDAP, PDCP, RLC, MAC라는 Sub-layer로 나눠져 있는데, LTE와 달라진 가장 큰 특징은, 데이터를 합쳐 Header를 하나로 만드는 Concatenation가 없어졌다는 것이다. 상위 Sub-layer에서 밑으로 내려올 수록 Header를 붙이는데, Header를 붙이기 전 data 단위를 SDU, Header를 붙인 Layer output을 PDU라고 한다. 이렇게 Header를 붙일 때 LTE에서는 여러 SDU를 묶어서 하나의 Header로 묶었지만 NR에서는 각각의 Header를 붙여서 그대로 내려보낸다.
LTE와 비교했을 때, Header가 하나로 만들어지지 않았기 때문에 효율면에서는 떨어지지만, Concatenation과정에서 processing delay가 줄어들기 때문에 Latency를 줄일 수 있게 되었다. 이 또한, URLLC 같이 Latency를 줄여야 하는 방식을 지원하기 위함이다.
RRC Layer는 RRC Connected와 RRC IDLE 상태 가운데에 RRC INACTIVE라는 상태가 생겼다. RRC는 UE와 gNB의 연결 상태를 다루고 있는데, INACTIVE에서는 Radio Resource 할당에 대한 요소는 풀고 세션만 유지시킨다. 즉, 처음부터 Setting할 필요는 없지만, 당장은 데이터를 요구하지 않는 상태로, 데이터가 필요한 상태가 생기면 조금이라도 빠르게 CONNECTED 모드로 돌아갈 수 있도록 하기 위함이다. 이 또한 Latency를 최소화하기 위한 방식이라고 할 수 있다.
Conclusion
이번 글에서는 Layer 2을 구성하는 Sub-layer인 MAC / RLC / PDCP / SDAP Layer의 대략적인 역할을 정리했다. 다음에는 각 Sub-layer별로 어떤 절차를 통해 작동하고, 어떤 Parameter이 setting되는지 알아보도록 한다.
Reference
ShareTechnote
www.sharetechnote.com
[2] "NR; Medium Access Control (MAC) protocol specification", 3GPP TS 38.321, Release 15.
[3] "NR; Radio Link Control (RLC) protocol specification", 3GPP TS 38.322, Release 15.