연재의 마지막으로 오늘은 IP 라우팅 관점에서 LTE 핸드오버에 대해서 알아 보도록 하겠습니다.
IP 라우팅을 잘 아시는 분들은 LTE 핸드오버의 개념을, LTE를 잘 아시는 분들은 IP 라우팅의 개념을 이해하시는데 도움이 되기를 바라며 글을 시작하겠습니다.
1. UE가 붙기 전: IP 라우팅 설정
■ Topology
- eNB들은 AS(Access Switch, L2 switch임)로 연결이 되고,
- AS들은 AR(Aggregation Router)에 의해 aggregation되며, 다시 AR들은 ER(Edge Router)로 aggregation 됩니다.
- 그리고 SAE-GW(S-GW와 P-GW 일체형 장비)는 ER과 2개의 포트가 연결되어 있습니다. SAE-GW의 ge1은 eNB와 통신을 위한 포트이고, ge2는 인터넷과 통신을 위한 포트입니다.
- 여기서 AR, ER, CR은 네트워크 토폴리지(위치)에 따라 명명한 이름일 뿐이며, 그냥 다 Cisco 7600 라우터라고 생각하셔도 됩니다.
■ Routing Protocol
- 각 라우터(AR, ER, CR)와 SAE-GW에 OSPF를 enable합니다. (보통 MPLS L3VPN 망을 구성하고, 이를 위해 MP-iBGP 프로토콜을 사용하지만 오늘은 설명의 편의상 그냥 OSPF 망으로 구성했다고 하겠습니다. 다음에 기회가 되면 LTE over MPLS L3VPN에 대해서도 설명을 드리겠습니다.)
- 그러면 이제 OSPF 프로토콜에 의해서 라우터들간에 라우팅 정보를 주고 받아 각자 자신의 라우팅 테이블을 구성합니다. (여기서 보이는 라우팅 테이블은 설명을 위해 일부 엔트리만 보임)
AR의 Routing Table
Routing Entry |
설명 |
10.1.1.0/24 is directly connected, ge1 |
eNB1(10.1.1.10)이 속한 10.1.1.0/24 네트워크 대역은 AR의 ge1 포트에 바로 연결됨 |
10.1.2.0/24 is directly connected, ge2 |
eNB2(10.1.2.10)가 속한 10.1.2.0/24 네트워크 대역은 AR의 ge2 포트에 바로 연결됨 |
30.1.1.0/30 via 20.1.1.2, ge3
|
SAE-GW의 GTP Tunnel Endpoint IP 주소(30.1.1.2) 대역으로 가는 경로는
AR의 ge3 포트를 통하며, 이 때의 Next Hop은 ER의 주소인 20.1.1.2임 |
* 참고: Next Hop이란? Ethernet 링크 상으로 패킷을 전달하기 위해서는 Ethernet Header가 붙게 되며, Ethernet Header에는 Ethernet 패킷의 수신자(라우터)의 MAC 주소(Destination MAC Address)가 들어가야 함. 따라서 패킷 송신자(라우터)는 Next Hop IP 주소에 대해 ARP Request를 보내어 패킷 수신자의 MAC 주소를 얻어 옴
ER의 Routing Table
Routing Entry |
설명 |
30.1.1.0/30 is directly connected, ge3 |
SAE-GW와 연결된 30.1.1.0/30 네트워크 대역은 ER의 ge3 포트에 바로 연결됨 |
30.1.2.0/30 is directly connected, ge4 |
SAE-GW와 연결된 30.1.2.0/30 네트워크 대역은 ER의 ge4 포트에 바로 연결됨 |
1.1.0.0/16 via 30.1.2.2, ge4
|
UE의 IP 주소 대역인 1.1.0.0/16으로 가는 경로는 ER의 ge4 포트를 통하며,
이 때의 Next Hop은 SAE-GW의 주소인 30.1.2.2임 |
10.1.1.0/24 via 20.1.1.1, ge1
|
eNB1이 속한 10.1.1.0/24 네트워크 대역으로 가는 경로는 ER의 ge1 포트를 통하며,
이 때의 Next Hop은 AR의 주소인 20.1.1.1임 |
10.1.2.0/24 via 20.1.1.1, ge1
|
eNB2가 속한 10.1.2.0/24 네트워크 대역으로 가는 경로는 ER의 ge1 포트를 통하며,
이 때의 Next Hop은 AR의 주소인 20.1.1.1임 |
0.0.0.0/0 via 40.1.1.2, ge2 |
Default Route는 ER의 ge2 포트를 통하며, Next Hop은 CR의 주소인 40.1.1.2임 |
SAE-GW의 Routing Table
Routing Entry |
설명 |
30.1.1.0/30 is directly connected, ge1 |
ER과 연결된 30.1.1.0/30 네트워크 대역은 SAE-GW의 ge1 포트에 바로 연결됨 |
30.1.2.0/30 is directly connected, ge2 |
ER과 연결된 30.1.2.0/30 네트워크 대역은 SAE-GW의 ge2 포트에 바로 연결됨 |
10.1.1.0/24 via 30.1.1.1, ge1
|
eNB1이 속한 10.1.1.0/24 네트워크 대역으로 가는 경로는 SAE-GW의 ge1 포트를
통하며, 이 때의 Next Hop은 ER의 주소인 30.1.1.1임 |
10.1.2.0/24 via 30.1.1.1, ge1
|
eNB2가 속한 10.1.2.0/24 네트워크 대역으로 가는 경로는 SAE-GW의 ge1 포트를
통하며, 이 때의 Next Hop은 ER의 주소인 30.1.1.1임 |
0.0.0.0/0 via 30.1.2.1, ge2
|
Default Route는 SAE-GW의 ge2 포트를 통하며, Next Hop은 ER의 주소인 30.1.2.1임 |
CR의 Routing Table
Routing Entry |
설명 |
1.1.0.0/16 via 40.1.1.1, ge1
|
UE의 IP 주소 대역인 1.1.0.0/16으로 가는 경로는 CR의 ge1 포트를 통하며,
이 때의 Next Hop은 ER의 주소인 40.1.1.1임 |
2. UE가 eNB1에 붙어 인터넷 사용
■ GTP Tunnel for UE 1.1.1.1
- UE는 현재 eNB1 커버리지에 있고 LTE 망에 접속하였습니다. SAE-GW를 통해 IP 주소 1.1.1.1를 할당 받았으며, eNB1(10.1.1.10)과 SAE-GW(30.1.1.2) 간에는 UE를 위한 GTP Tunnel이 생성되어졌습니다.
■ Upstream (UL) 트래픽 흐름
- [a] 해품달 동영상을 보기 위해 사용자가 YouTube에 접속하여 동영상을 요청합니다. 그러면 UE는 현재 접속되어 있는 eNB1으로 패킷(HTTP GET)을 전송합니다. 이 패킷의 SIP(Source IP)는 UE의 IP 주소 1.1.1.1이고, DIP(Destination IP)는 YouTube 서버 주소입니다.
- [b] eNB1은 UE가 보낸 패킷에 GTP Tunnel Header를 붙이고, 이때 Outer IP header(GTP Tunnel Header 속에 있는 IP header)의 SIP는 eNB1 자신의 주소인 10.1.1.10, DIP는 SAE-GW의 IP 주소인 30.1.1.2가 됩니다.
- [b] 그리고 이 패킷은 AS를 거쳐 AR이 수신합니다. 이제 AR은 Destination IP 주소 30.1.1.2에 대해 FIB(Forwarding Information Base) lookup을 통해, AR의 ge3 포트를 통해 Next Hop이 20.1.1.2인 ER로 패킷을 포워딩합니다. ([1] 30.1.1.0/30 via 20.1.1.2, ge3)
- [b] ER도 FIB lookup을 하여, 이 패킷은 나와 바로 붙어 있는 네트워크 대역이고 ge3 포트로 패킷을 전송해야 함을 알고 그리로 포워딩합니다. ([2] 30.1.1.0/30 is directly connected, ge3)
- [c] 이제 eNB1이 보낸 GTP Tunnel Packet을 SAE-GW가 수신하였습니다. SAE-GW는 GTP Tunnel Header를 제거하고, UE가 보낸 원 패킷의 DIP를 들여다 봅니다. DIP는 YouTube 서버의 주소입니다. SAE-GW는 FIB lookup을 통해 default route에 매치되어, SAE-GW의 ge2 포트를 통해 Next Hop이 30.1.2.1인 ER로 패킷을 포워딩합니다. ([3] 0.0.0.0/0 via 30.1.2.1, ge2)
- [c] ER도 역시 FIB의 default route에 매치되어 이 패킷을 ER의 ge2 포트를 통해 Next Hop이 40.1.1.2인 CR로 패킷을 포워딩합니다. ([4] 0.0.0.0/0 via 40.1.1.2, ge2)
- [c] CR도 이 패킷을 받아 포워딩하고.... 그래서 결국 YouTube 서버가 패킷을 받게 됩니다.
■ Downstream (DL) 트래픽 흐름
- [c] 이제 YouTube 서버가 해품달 동영상을 UE로 다운로드합니다. 이 때 SIP는 YouTube 서버 주소이고, DIP는 UE의 IP 주소 1.1.1.1입니다. 이 패킷은 인터넷을 거쳐 CR로 올 것이고, CR은 Destination IP 주소 1.1.1.1에 대해 FIB lookup을 하여, CR의 ge1 포트를 통해 Next Hop이 40.1.1.1인 ER로 패킷을 포워딩합니다. ([1] 1.1.0.0/16 via 40.1.1.1, ge1)
- [c] ER도 이 패킷에 대해 FIB lookup을 하여, ER의 ge4 포트를 통해 Next Hop이 30.1.2.2인 SAE-GW로 패킷을 포워딩합니다. ([2] 1.1.0.0/16 via 30.1.2.2, ge4)
- [b] SAE-GW는 Destination IP 주소를 통해 그 UE는 어떤 GTP Tunnel에 연결되어 있는지 확인 후에 GTP Tunnel Header를 붙입니다. 이 경우 Outer IP header의 SIP는 자기 자신의 주소인 30.1.1.2, DIP는 eNB1의 IP 주소인 10.1.1.10이 됩니다. 그리고 SAE-GW는 Destination IP 주소 10.1.1.10에 대해 FIB lookup을 하여, ge1 포트를 통해 Next Hop이 30.1.1.1인 ER로 패킷을 포워딩합니다. ([3] 10.1.1.0/24 via 30.1.1.1, ge1)
- [b] ER은 FIB lookup을 하여, ge1 포트를 통해 Next Hop이 20.1.1.1인 AR로 패킷을 포워딩합니다. ([4] 10.1.1.0/24 via 20.1.1.1, ge1)
- [b] AR은 FIB lookup을 통해, 이 패킷은 나와 바로 붙어 있는 네트워크 대역이고 ge1 포트로 패킷을 전송해야 함을 알고 그리로 포워딩합니다. ([5] 10.1.1.0/24 is directly connected, ge1)
- [a] eNB1은 GTP Tunnel Header를 제거하고, YouTube 서버가 보낸 원래 IP 패킷을 UE로 전송합니다.
3. UE가 eNB2로 핸드오버
■ GTP Tunnel for UE 1.1.1.1
- UE가 인터넷을 사용하면서 이동을 하여 eNB1에서 eNB2로 핸드오버를 했습니다.
- 핸드오버를 인지한 LTE망은 UE 1.1.1.1에 대한 GTP Tunnel을 다음과 같이 변경합니다.
- eNB1(10.1.1.10)과 SAE-GW(30.1.1.2)간에 GTP Tunnel 해제
- eNB2(10.1.2.10)과 SAE-GW(30.1.1.2)간에 GTP Tunnel 생성
■ Upstream (UL) 트래픽 흐름
- [a] UE는 핸드오버를 하였으나 IP 주소 1.1.1.1은 변하지 않았습니다. 따라서 UE가 eNB2로 보내는 패킷은 위(2. UE가 eNB1에 붙어 인터넷 사용)와 동일하게 SIP=1.1.1.1, DIP=YouTube 입니다.
- [b] eNB2는 UE가 보낸 패킷에 GTP Tunnel Header를 붙이고, 이때 Outer IP header(GTP Tunnel Header 속에 있는 IP header)의 SIP는 eNB2 자신의 주소인 10.1.2.10, DIP는 SAE-GW의 IP 주소인 30.1.1.2가 됩니다.
- 이후 흐름은 위(2. UE가 eNB1에 붙어 인터넷 사용)와 동일합니다.
■ Downstream (DL) 트래픽 흐름
- [c] YouTube 서버는 계속 해품달 동영상을 UE로 다운로드 중입니다. 즉, SIP(YouTube 서버), DIP(UE의 IP 주소 1.1.1.1)는 그대로 입니다. 이 패킷은 인터넷을 거쳐 CR로 올 것이고, CR은 Destination IP 주소 1.1.1.1에 대해 FIB lookup을 하여, CR의 ge1 포트를 통해 Next Hop이 40.1.1.1인 라우터(ER)로 패킷을 포워딩합니다. ([1] 1.1.0.0/16 via 40.1.1.1, ge1)
- [c] ER도 이 패킷에 대해 FIB lookup을 하여, ER의 ge4 포트를 통해 Next Hop이 30.1.2.2인 SAE-GW로 패킷을 포워딩합니다. ([2] 1.1.0.0/16 via 30.1.2.2, ge4)
- [b] SAE-GW는 Destination IP 주소를 통해 그 UE는 어떤 GTP Tunnel에 연결되어 있는지 확인 후에 GTP Tunnel Header를 붙이게 됩니다. 위(2. UE가 eNB1에 붙어 인터넷 사용)에서와 달라진건 바로 eNB의 주소이죠. 즉, SAE-GW는 Outer IP header의 SIP는 자기 자신의 주소인 30.1.1.2, DIP는 eNB2의 IP 주소인 10.1.2.10을 붙입니다. 그리고 SAE-GW는 Destination IP 주소 10.1.2.10에 대해 FIB lookup을 하여, ge1 포트를 통해 Next Hop이 30.1.1.1인 ER로 패킷을 포워딩합니다. ([3] 10.1.2.0/24 via 30.1.1.1, ge1)
- [b] ER은 FIB lookup을 하여, ge1 포트를 통해 Next Hop이 20.1.1.1인 AR로 패킷을 포워딩합니다. ([4] 10.1.2.0/24 via 20.1.1.1, ge1)
- [b] AR은 FIB lookup을 통해, 이 패킷은 나와 바로 붙어 있는 네트워크 대역이고 ge2 포트로 패킷을 전송해야 함을 알고 그리로 포워딩합니다. ([5] 10.1.2.0/24 is directly connected, ge2)
- [a] eNB2는 GTP Tunnel Header를 제거하고, YouTube 서버가 보낸 원래 IP 패킷을 UE로 전송합니다.
IP Network 관점에서 LTE 단말(UE)의 핸드오버는 다음과 같이 정리할 수 있습니다.
- UE의 IP 주소를 목적지로 하는 패킷은 SAE-GW(P-GW)로 라우팅 됨
- eNB와 SAE-GW간에는 UE별로 GTP Tunnel이 생성되고, eNB와 SAE-GW 사이에 있는 IP 라우팅 망은 UE의 IP 주소가 아닌 GTP Tunnel의 IP 주소 즉, eNB와 SAE-GW의 IP 주소만 보임
- 따라서 IP 라우팅 관점에서 바라본 UE의 handover란, UE이 IP 주소는 관심없고 현재 UE가 붙어 있는 eNB로 GTP Tunnel Packet을 라우팅 시켜 주기만 하면 됨
Network에 대해 새로운 시야를 얻게되네요~
감사합니다.
이게 무엇을 의미하는가요?
GTPC Version.0,1,2이 존재하던데 각각의 특성과 사용용도가 있는건가요?
잘 보았습니다.
감사합니다.