지난 시간에 Intra E-UTRAN(between eNB) handover 개념에 대해서 알아 보았습니다. 오늘은 사용자 데이터의 경로 변경 위주로 X2 based Handover에 대해서 설명을 드리겠습니다.
1. Before Handover
- UE는 이동 중에 인터넷을 사용하고 있습니다. 트래픽 흐름은 다음과 같습니다.
- UL Traffic: UE -> Source eNB1 -> S-GW -> P-GW -> Internet
- DL Traffic: Internet -> P-GW -> S-GW -> Source eNB1 -> UE
- 그리고 UE는 자신이 붙어 있는 Serving eNB인 eNB1에게 Measurement Report 메시지를 보내어(Event triggered 혹은 Periodic하게 보냄) "Serving eNB의 Cell로 부터 수신되는 Radio Signal Strength와 Neighbor Cell(쉽게 말해 바로 근처에 있는 eNB 즉, eNB2의 Cell)로 부터 수신되는 Radio Signal Strength"를 보고합니다. 왜냐구요? Serving eNB가 Handover Decision(나랑 계속 붙어 있게 할 건지, 아니면 옆집 eNB로 옮겨가라고 할 건지 결정)을 할 수 있도록 정보를 제공하는 것입니다.
2. Handover Preparation
- UE가 계속 이동을 하여 eNB2와 더 가까워 졌습니다. 그러면 Serving eNB인 eNB1은 자기보다 eNB2로부터 UE가 더 좋은 Radio Signal을 수신하는것을 확인 후에 Handover Decision(해당 UE를 다른 eNB로 옮겨야 겠구나!)을 하게 됩니다.
- [a] 이제 Source eNB1은 UE가 새로 붙을 Target eNB2에게 Handover Request 메시지를 보내어 X2 Transport Bearer(GTP tunnel)를 생성합니다(Source eNB1에서 Target eNB2로 패킷이 흐를 수 있는 단방향 Tunnel). 핸드오버가 완전히 끝나기 전까지는 이 X2 Transport Bearer를 통해 UE가 DL 트래픽을 수신하게 될 것입니다.
- [b] 그리고 Target eNB2가 S-GW로 UE의 UL 트래픽을 전송 할 수 있도록 S1 Bearer(GTP tunnel)를 생성합니다(이 역시 Target eNB2에서 S-GW 방향으로만 패킷이 흐를 수 있는 단방향 Tunnel). 이 생성 과정에서 S-GW는 아무 관여도 하지 않습니다. 즉, Source eNB1이 S-GW로 보내기 위해 사용하던 GTP TEID(Tunnel Endpoint ID)인 S1 S-GW TEID를 Target eNB2로 전달하여(Handover Request 메시지를 통해) Target eNB2가 그 TEID를 사용할 수 있도록 합니다.
- 여전히 UE의 UL/DL 트래픽은 Source eNB1과 S-GW를 통해 지나 다니고 있습니다.
3. Handover Execution
- 이제 Source eNB1은 UE에게 RRC Connection Reconfiguration 메시지를 전송하여 새로운 eNB(Target eNB2)로 붙으라고 합니다.
- UE는 Source eNB1과의 연결을 끊습니다 (Detach from Source eNB1).
- [c] UE는 Target eNB2와 연결하게 되고(DRB established), 이제부터 트래픽 흐름이 다음과 같이 바뀌게 됩니다.
- UL Traffic: UE -> Target eNB2 -> S-GW -> P-GW -> Internet
- DL Traffic: Internet -> P-GW -> S-GW -> Source eNB1 -> Target eNB2 -> UE
4. Handover Completion
- 이제 핸드오버 과정을 마무리할 단계입니다. Target eNB2는 UE가 나한테 성공적으로 붙었음을 확인 한 후에, MME에게 Path Switch Request 메시지를 보내어 그 사실(이 UE는 이제 나한테 붙었어~)을 알립니다. 이 메시지에는 S-GW에서 Target eNB2 방향의 GTP tunnel을 위한 TEID 즉, S1 Target eNB TEID가 포함되어 있습니다(Target eNB2가 TEID를 생성하여 MME로 전달하고, 그 값은 다시 S-GW로 전달됨)
- [d] MME는 S-GW로 Update User Plane Request 메시지를 보내고, S-GW는 이 메시지에 포함되어 있는 TEID(Target eNB2가 생성한 S1 Target eNB TEID)를 이용하여 Target eNB2 방향(DL)의 S1 Bearer를 생성하고, UE로 향하는 DL 트래픽 방향을 Source eNB1에서 Target eNB2로 바꿉니다. (Path Switching from Source eNB1 to Target eNB2)
- 이 시점부터 트래픽 방향은 다음과 같게 됩니다.
- UL Traffic: UE -> Target eNB2 -> S-GW -> P-GW -> Internet
- DL Traffic: Internet -> P-GW -> S-GW -> Target eNB2 -> UE
- Target eNB2는 Source eNB1에 UE Context Release 메시지를 보내어 핸드오버가 성공적으로 끝났음을 알리고, Source eNB1은 이 메시지를 통해 두 eNB간에 연결되어 있던 X2 Transport Bearer 및 Source eNB1과 S-GW 간에 S1 Bearer를 해제(Bearer released)합니다.
5. After Handover
- 핸드오버 과정이 모두 마무리 되었고, 이제 UE는 Target eNB2를 통해 인터넷을 사용합니다.
Handover Completion 단계에서 End Marker 패킷
위에서 설명한 핸드오버 절차 중 Handover Completion 단계에서 S-GW가 보내는 트래픽의 흐름이 Source eNB1에서 Target eNB2로 변경이 되는데요. 그 과정 중에 패킷의 분실 혹은 패킷의 순서가 뒤바뀌는 것을 방지하기 위해 "End Maker" 패킷을 사용합니다. 아래 그림을 보시죠.
- Handover Completion 과정이 시작되기 전에는 다음과 같은 흐름으로 패킷이 UE로 전달됩니다.
- Internet -> P-GW -> S-GW -> Source eNB1 -> Target eNB2 -> UE
- S-GW는 Target eNB2와 S1 Bearer(GTP tunnel)를 생성합니다.
- S-GW는 S1 Bearer(GTP tunnel) 생성과 동시에 End Marker 패킷(하나 또는 어러개)을 Source eNB1로 보냅니다. 그리고는 UE로 향하는 패킷을 더 이상 Source eNB1으로 보내지 않고 새로 생성된 S1 Bearer를 통해 Target eNB2로 보냅니다. 여기서 End Marker 패킷은 "더 이상 S-GW -> Source eNB1 -> Target eNB2의 흐름으로 가는 패킷이 없다!"라는 사실을 Target eNB2에게 알려주는 용도입니다.
- 이 상황에서 Target eNB2는 2개의 경로로 부터 패킷을 수신하게 됩니다. 하나는 Source eNB1로 부터이고, 또 하나는 S-GW로 부터 입니다. 이제부터 Target eNB2는 패킷 순서가 뒤바뀌지 않도록 잘 해야 합니다. Target eNB2는 Source eNB1로 부터 수신되는 패킷들만 UE로 전달하고, S-GW로 부터 수신되는 패킷은 UE로 전달하지 않고 버퍼링합니다(가지고 있습니다). 언제까지요? 바로 Source eNB1로 부터 End Marker 패킷이 하나라도 수신되기 전까지입니다.
- 그러다가 Source eNB1으로 부터 End Marker 패킷이 수신되면, 이제 Target eNB2는 "Source eNB1로 부터 수신할 패킷이 더 이상 없구나!"를 인지하고, 버퍼링해 놓았던 패킷(S-GW로 부터 받았던 패킷)을 바로 UE에 전달합니다. 그리고 이후부터는 S-GW에서 오는 패킷을 UE로 전달하게 되는 거지요. 아래 흐름과 같이요...
- Internet -> P-GW -> S-GW -> Target eNB2 -> UE
다음 시간에는 S1 based Handover에 대해서 알아 보도록 하겠습니다.
예를 들어 measurement report 메시지를 보내고 기지국에서 받는데 까지 걸리는 시간 이런 전체적으로 주고받는 메시지에 의한 타이밍을 알고 싶습니다.