단말에 2개 이상의 APN(INTERNET, IMS, INTRANET등)을 부여 받고 망에 접속할 경우 , 망으로부터 각 APN 별로 IP Address를
부여 받으므로 단말은 2개 이상의 IP를 사용하게 됩니다.
이 경우 각각의 APP별로 패킷전송시 그에 맞는 source IP가 매핑이 되야 될텐데, 어떤 절차에 의해서 매핑이 되는지 알고 싶습니다.
3GPP 구격이나 넷 마니아즈 자료에도 이에 대한 설명을 찾을 수가 없네요.
현재 2개의 APN (Internet & IMS)을 부여 받은 단말 (LGU+ LTE 가입자의 갤럭시 S4)의 경우에는 단말 자체에 Mapping Tooll을
보유하고 있는 것으로 보이는데, 이게 사실이라면 이 Mapping Tool의 동작원리를 알수 있을까요 ?
https://www.netmanias.com/bbs/view.php?id=techdocs&no=508
[질문]
상용 LTE망에서 Packet을 분석해본 결과 ims, internet 각 두개의 APN에 대한 Default Bearer 생성시 (Create Session Response) P-GW에서 UE로 TFT 정보를 전송하지 않습니다.
그리고, VoLTE 서비스를 위해 Dedicated Bearer를 생성시에만 TFT 정보를 단말에게 전송합니다.
단말이 ims 용도로 EBI=5, internet 용도로 EBI=6 이렇게 각각 Default Bearer를 생성했을때 단말에서 VoLTE
발신을 하게되면 SIP (INVITE 등) 메시지는 EBI=5를 사용하고, 나머지 인터넷용 트래픽은 EBI=6을 사용합니다.
어떻게 단말은 ims와 internet용 TFT 정보를 수신하지 않았음에도 두 개의 트래픽을 정확히 구분할수 있는건가요?
[답변]
단말은 APN별로 IP 주소를 할당 받고, 단말의 routing table에 의해서 각 목적지 별로 어떤 interface(EPS bearer)를 통해 나갈지 결정됩니다.
간단히 확인을 해 본 결과 (LG U+ 갤럭시S4 LTE-A 단말)
■ Interface 확인 (단말은 2개의 IP 주소를 할당 받았습니다.)
u0_a218@android:/proc/net $ ifconfig rmnet0
rmnet0: ip 100.66.114.44 mask 255.255.255.248 flags [up running]
u0_a218@android:/proc/net $ ifconfig rmnet1
rmnet1: ip 10.198.49.106 mask 255.255.255.252 flags [up running]
■ Routing Table 확인
u0_a218@android:/proc/net $ ip route show
default via 10.198.49.105 dev rmnet 1
10.113.13.211 via 100.66.114.45 dev rmnet 0
10.113.13.250 via 100.66.114.45 dev rmnet 0
...
default route가 rmnet1으로 잡힌 것으로 보아 rmnet1이 인터넷 통신을 위한 interface가 되고 이 interface에 EBI=6이 binding되어 있을 것입니다.
그리고 목적지가 private IP 주소(10.113.13.xx)인 route에 대해 rmnet0이 잡힌 것으로 보아, 10.113.13.211/250이 P-CSCF 혹은 SBC IP 주소가 될 것이고, 이 interface에 EBI=5가 binding되어 SIP 통신을 하게 될 것입니다.
netstat를 통해 단말에서 rmnet0 interface(100.66.114.44)에 대해 tcp port = 5060(SIP protocol)을 listen하고 있는 것도 확인했습니다.
SKT 역시 동일한 로직입니다.
그런데 제가 궁금한점은 packet 생성시 단말에 부여된 여러 ip중 어떤것을 소스IP로 달고 나가는가 하는 것입니다.
예)
UE의 IP가 rmnet0 : 10.10.10.10 rmnet1 : 20.20.20.20 이렇게 할당 되어있을 경우
목적지 IP가 30.30.30.30로 나가는 패킷이 발생했을때
단말에서 packet을 생성시 어떤 매카니즘에 의해 source IP가 10.10.10.10, 20.20.20.20 중 어떤 것으로 선택 되는지 궁금합니다.
예)
■ Interface
rmnet0 : 10.10.10.10 rmnet1 : 20.20.20.20
■ Routing Table
default via 10.10.10.11 dev rmnet0
30.30.30.30 via 20.20.20.11 dev rmnet1
위와 같이 되어 있는 경우 목적지 30.30.30.30에 대해 Routing Table lookup 결과 rmnet1을 통해 패킷을 보내야 하고 rmnet1에 할당된 IP 주소가 20.20.20.20이므로, 목적지 30.30.30.30로 가는 패킷의 source IP 주소는 20.20.20.20이 됩니다. 만약 30.30.30.30이 아닌 목적지에 대해서는 default에 매칭되어 source IP 주소 10.10.10.10을 달고 나가게 되구요.
제가 이해하고 있었던 바로는 MME에서 UE로 Bearer 생성을 요청할때 TFT를 보내고 단말은 이를 수신하여
다음부터 패킷을 전송할때 TFT를 통해 서비스에 맞는 Bearer 를 선택하여 태워 보내게 되죠.
근데 TFT 정보는 Default Bearer 생성시에는 보내지 않으며, Dedicated Bearer 생성시에만 전송합니다.
이는 표준동작으로 넷매니아즈 기술문서 Initial Attach (Part 2)의 그림11에서 Attach Accept 메시지내에 TFT(UL)
정보가 UE로 내려가는 것처럼 되어있으나 이부분은 잘못된 것 같습니다.
표준문서에 따르면 (TS 24.301) Attach Accept 혹은 Activate Default EPS Bearer Context Request에 TFT 정보는
없으며, Activate Dedicated EPS Bearer Context Request 에 TFT가 mandatory로 정의되어 있습니다.
그렇다면 오동엽님 질문대로 Default Bearer가 여러개 즉 단말 IP가 여러개 존재할 경우 서비스별로 어떻게
구분하여 IP를 사용하는지 저도 그게 궁금한 내용인데요.
제 생각에는 망에서는 관련된 정보를 전송하는게 없으니 아마도 단말측에서 판단하여 구분할 것 같습니다.
예를들어 단말이 전원 ON 했을때 IMS와 Internet APN 용으로 각각 IP를 얻어왔을 때, VoLTE 서비스를 이용시
단말 APP 단에서는 이를 인지하고 IMS APN으로 받은 IP를 사용하고, 일반 인터넷을 사용할 경우 이또한 단말에서
구분하여 Internet APN으로 받은 IP를 사용하는게 아닌가 싶습니다.
좀더 정확히 아시는 분은 답변 부탁드릴께요.
저 역시 관리자님께서 말씀하신것처럼 일반 유선망에서 source IP를 입력할때 Routing Tables를 참조하는게
아닌가 생각이 들었었는데요.
요점은 이것인거 같습니다.
Routing Table에 등록된 (아래와같이)
30.30.30.30 via 20.20.20.11 dev rmnet1
라우팅 정보를 언제 어디서 어떻게 받아 왔느냐는 것입니다.
Yoo님 말씀처럼 (혹시 TFT 정보라는 것이 라우팅 정보인가요?^^;) 베어러 생성시 IP를 각각 얻어온후
APP 단에서 별도로 라우팅정보를 얻어오고 이를 커널 Routing table에 입력을 하는건지..
아니면 3GPP TR 23.853 이 문서를 보니 UE가 PDN에 연결하는 동안 PCO를 통해서 routing information을 받아오는
문구가 있는데 이런방식인 것인지..
아직도 알쏭달쏭하네요..
터미널에뮬레이터는 Google Play에서 쉽게 구하실 수 있습니다.
실행 예는 아래와 같습니다.
■ Interface 확인
u0_a218@android:/proc/net $ ifconfig rmnet0
rmnet0: ip 100.66.114.44 mask 255.255.255.248 flags [up running]
u0_a218@android:/proc/net $ ifconfig rmnet1
rmnet1: ip 10.198.49.106 mask 255.255.255.252 flags [up running]
■ Routing Table 확인
u0_a218@android:/proc/net $ ip route show
default via 10.198.49.105 dev rmnet 1
10.113.13.211 via 100.66.114.45 dev rmnet 0
10.113.13.250 via 100.66.114.45 dev rmnet 0