소개
이 문서에서는 SGW(Serving GateWay) 및 PGW(Packet Data Network Gateway) 선택을 위한 MME(Mobile Management Entity)의 DNS에 대한 쿼리에 대한 DNS(Domain Name System) 시간 초과와 관련된 문제를 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 이해해야 합니다.
배경 정보
DNS
DNS는 도메인 이름을 IP 주소로 변환하며 브라우저가 ABCD 페이지를 로드하는 데 사용합니다. 네트워크에 연결된 모든 디바이스에는 고유한 IP 주소가 있으며, 이는 다른 디바이스에서 디바이스를 찾는 데 사용됩니다.
모빌리티의 관점에서 DNS는 APN(Access Point Name)과 네트워크의 노드와의 연결을 기반으로 URL 확인에 사용되는 외부 서버입니다.
1. MME-DNS 연결: SPGW 선택을 위한 APN 확인에 사용됩니다.
2. SPGW 대 DNS 연결: ISP(인터넷 서비스 공급자)에 연결하기 위한 URL 확인에 사용됩니다.
DNS에 사용되는 레코드 유형입니다.
1. A/AAA 기록 IPv4에 사용되는 A 레코드와 IPv6에 사용되는 AAA(Authentication, Authorization and Accounting)가 있는 호스트의 정규화된 이름에 매핑된 IPv4 및 IPv6 호스트 주소를 정의하는 데 사용됩니다.
2. NAPTR 레코드: 4G APN 및 TAC 확인을 위한 SPGW 선택 프로세스의 서비스 레코드(SRV) 및 A/AAA 레코드를 가리키는 조회 서비스로 사용됩니다.
3. SRV 레코드: NAPTR(Name Authority Pointer)과 A/AAA 레코드 간에 매핑하기 위한 조회로 사용됩니다.
예: A/SRV/NAPTR이 매핑되는 방식을 확인합니다.
DNS와 관련된 MME 기능
- DNS와 관련된 MME의 기본 기능은 DNS 쿼리를 기반으로 SGW 및 PGW 선택을 위한 것입니다.
- Cisco MME에는 외부 서버에 대한 잦은 쿼리를 방지하고 MME DNS 캐시에서 수행된 모든 쿼리를 저장하여 외부 DNS 서버로 쿼리를 보낼 필요가 없도록 하는 자체 DNS 캐시가 있습니다.
- UE가 EPS(Evolved Packet System) 네트워크에 등록될 때 적절한 SGW 및 PGW를 할당해야 합니다. MME는 DNS를 기반으로 GW를 선택합니다.
- NAPTR 쿼리는 GW 주소 확인을 위해 사용됩니다.
- MME는 DNS 쿼리를 기반으로 S-GW와 P-GW 간의 인터페이스를 결정합니다.
SPGW 선택 절차
- MME는 초기 DNS 쿼리를 수행하여 GW ID 및 우선 순위 목록을 가져옵니다.
- S-GW 선택은 TAI(Tracking Area Identifier)에 따라 수행됨
- APN에 따라 P-GW 선택 완료
- MME는 우선 순위 정보 또는 MME 컨피그레이션을 기반으로 GW를 선택합니다.
- 그런 다음 원하는 GW의 IP 주소를 가져오기 위해 두 번째 DNS 쿼리가 수행됩니다.
따라서 절차에 따라 MME는 항상 2개의 DNS 쿼리를 만들어 설명한 GW IP 주소를 가져옵니다.
쿼리 1: APN 또는 TAI를 통해 첫 번째 쿼리를 수행할 경우 SRV 프로필이 매핑되거나 응답으로 직접 매핑된 레코드 출력이 표시됩니다.
쿼리 2: 또한 SRV 프로필에 쿼리를 만들어 GW IP를 가져오기 위한 대체 문자열로 보냅니다.
예를 들면 다음과 같습니다.
Query Name: abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org
Query Type: NAPTR TTL: 515 seconds
Answer:
Order: 100 Preference: 50000
Flags: a Service: x-3gpp-pgw:x-s5-gtp:x-s8-gtp:x-gn:x-gp
Regular Expression:
Replacement: _nodes._pgw.epc.mncXXX.mccYYY.3gppnetwork.org
Query Name: _nodes._pgw.epc.mncXXX.mccYYY.3gppnetwork.org
Query Type: NAPTR TTL: 515 seconds
Answer:
Order: 100 Preference: 50000
Flags: a Service: x-3gpp-pgw:x-s5-gtp:x-s8-gtp:x-gn:x-gp
Regular Expression: topoff.pgw- s5s8.node.epc.mncXXX.mccYYY.3gppnetwork.org
Query Name: topoff.pgw- s5s8.node.epc.mncXXX.mccYYY.3gppnetwork.org
Query Type: A TTL: 646 seconds
Answer:
IP Address: X.X.X.X
문제
1. APN에 대해 MME에서 NAPTR을 쿼리하는 경우 MME에서 DNS 시간 제한을 받습니다.apn.epc.mncXXX.mccYYY.3gppnetwork.org
참고: String+nc-nr은 5G 서비스에 추가되고 서비스 인터페이스를 식별하기 위해 각 NAPTR RR(Resource Record)에 추가된 새 문자열입니다.
"x-3gpp-pgw:x-s5-gtp+nc-nr:x-s8-gtp:x-gn:x-gp"
참고: +nc-nr은 5G 서비스를 기반으로 하는 새 문자열이므로 MME가 DNS 쿼리를 만들고 MME에서 특정 서비스가 활성화되었는지 여부를 확인하기 위해 응답을 받을 때 MME가 이 서비스를 지원해야 합니다.
[gn]SGSN-MME# dns-client query client-name dnsclient query-type NAPTR query-name abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org
Wednesday October 27 17:06:20 ICT 2021
Query Name: abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org
Query Type: NAPTR TTL: 0 seconds
Answer: -Negative Reply-
Failure Reason: DNS query timed out
2. PCAP 추적에서 DNS 서버가 쿼리를 수신하고 패킷 크기가 4186바이트가 되고 MME가 TCP 연결을 시작하므로 응답 시 각 APN에 대해 30~35개의 교체 메시지를 보내는 것으로 확인되었습니다.
3. DNS가 쿼리 요청을 수신하고 응답을 전송하지만 "Message is truncted(메시지가 잘렸습니다)"라는 플래그가 하나만 있는 콘텐츠는 표시되지 않습니다. 이는 응답 메시지가 잘리고 메시지가 잘리지 않을 때 나머지 4G 응답이 제대로 작동하는 경우에만 관찰됩니다.
잘린 메시지의 이유는 APN에 대해 매핑된 여러 교체 항목이 30개를 초과하고 메시지 크기를 늘리고 응답으로 메시지 플래그를 보낸 경우입니다. 응답 메시지의 총 크기는 TCP 페이로드로서 4181바이트입니다(이미지 참조).
MME에서 이 응답을 수신하면 MME는 DNS와의 TCP 연결을 시작합니다.
MME에서 DNS로
- 프레임 31 - MME가 DNS에 쿼리를 보냅니다.
- 프레임 32 - DNS는 "Message is truncted(메시지가 잘렸습니다)"로 설정된 플래그를 사용하여 응답을 전송합니다.
- 프레임 33/34/35 - MME와 DNS 간에 설정된 TCP 연결과 자체 기능 교환
지정된 스냅샷에서 MME에서 보내는 최대 세그먼트 크기(MSS)가 9060임을 확인할 수 있습니다.
MME가 DNS가 "Message is truncted(메시지가 잘렸습니다)"로 응답을 보내는 쿼리를 만들 때 DNS 응답 MME를 기반으로 TCP 연결을 시작하는 다른 정보가 없습니다.
DNS에서 MME로
- MME는 TCP 연결 후 쿼리를 보냅니다.
- DNS가 승인합니다.
- DNS에서 공유하는 MSS가 9060바이트로 설정되고 전체 응답을 한 번에 전송하므로 DNS는 플래그가 "Message is not truncted"로 설정된 응답을 보냅니다.
- MME는 콘텐츠가 없는 ACK로 응답
- DNS는 메시지 38의 콘텐츠로 ACK를 전송하며, 여기서 페이로드는 4181바이트입니다.
- MME는 마지막 프래그먼트를 수신하는 즉시 연결을 재설정 및 종료하기 위해 TCP를 전송합니다.
MME가 2개에서 3개의 세그먼트로 전체 페이로드를 수신하거나 DNS에서 한 번 시도하면 MME는 TCP 재설정 메시지를 보냅니다.
DNS commands to troubleshoot
show dns-client statistics
show dns-client statistics client <DNS Client Name>
show dns-client cache client <client name> [query-name <query-name>[query-type <NAPTR | AAAA | A>] | [query-type <NAPTR | AAAA | A>]]
dns-client query client-name <client name> query-type <NAPTR | AAAA> [query-name <query name>].show port datalink counters
Commands to check if there were any problem internal to the starOS system where request is not able to reach from demux vpnmgr to DNS app in sessmgrs
show port npu counters
show cloud configuration
show iftask stats summary
show npu utilization table
show iftask port-stats card <card> ---- for all active SF cards
show iftask iomux-stats card <card> ---- for all active SF cards
MON SUB to be captured with options enabled (verbosity 5,Y,S,34,35,19,A,26)
PCAP traces to be captured
DNS cache flush commands
clear dns-client <client-name> cache
테스트 시나리오
1. 전용 테스트를 사용하여 필요한 모든 디버그 로그/추적을 캡처하고 문제가 있는 APN을 구독자가 검색할 때 동시에 로그를 활성화합니다.
2. 테스트 시나리오를 수행할 때마다 가입자는 가입자를 플러시하려면 새로 연결해야 합니다.
3. 시험용으로 테스터 1명을 할당하고, 테스터에게 IMSI로 전용 테스트를 실시하여 다음 각 목의 해당 APN에 액세스할 수 있도록 하는 방법 abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org
logging filter active facility vpn level debug ------ debug level logs
logging filter active facility tcpdemux level debug ------ debug level logs
logging monitor msid <MSID number> ------ (these logging command to be executed in config mode)
문제 해결
1. 언급된 모든 명령의 출력을 확인하여 시스템에 패킷 드롭이 있는지 확인합니다.
2. 노드의 DNS 시간 초과 빈도를 확인하려면 통계를 확인합니다.
[gn]SGSN-MME# show dns-client statistics client dnsclient
Friday August 20 13:31:48 ICT 2021
DNS Usage Statistics:
---------------------
Query Type Attempts Successes Failures
A 2430996860 2410410937 20546467
SRV 1325520986 1325516557 4429
AAAA 3939810089 0 3939810089
NAPTR 480586697 432853033 47732791
PTR 0 0 0
Total 3881947336 4168780527 4008093776
…
Total Resolver Queries: 4480708
Successful Queries: 670040
Query Timeouts: 409717
Domain Not Found: 2455918
Connection Refused: 0
Other Failures: 580612
이러한 명령을 실행하여 여러 이터레이션에 대한 통계를 캡처하고 쿼리 시간 제한이 점진적으로 증가하지만 Demux와 sessmgrs 사이에 패킷 드롭이 없으므로 내부 시스템에 문제가 없다는 것을 확인한 후
또한 DNS에서 외부 연결 또는 구성 문제에 대한 문제를 확인하려면 이미지에 표시된 대로 APN 대신 MME에서 직접 교체 값을 쿼리합니다. 이 경우 지체 없이 올바르게 해결되고 외부 연결 및 컨피그레이션에 문제가 없다고 결론을 내립니다.
[gn]SGSN-MME# dns-client query client-name dnsclient query-name TOPON.test.NODE.EPC.MNCXXX.MCCYYY.3GPPNETWORK.ORG
Monday August 02 18:51:29 ICT 2021
Query Name: TOPON.test.NODE.EPC.MNCXXX.MCCYYY.3GPPNETWORK.ORG
Query Type: A TTL: 1038 seconds
Answer:
IP Address: X.X.X.X ------ resolve properly and gave IP
DNS와 SGSN-MME 사이에 문제가 있습니다. 여기서 DNS는 대체 값을 toon으로 표시하고 MME는 토폴로지 항목을 다시 쿼리해야 하지만 수동으로 쿼리 확인에 성공하면 그렇지 않습니다
명령 출력 및 추적에 따라 APN을 쿼리할 때 TCP 연결을 통해 30개의 교체 응답이 프래그먼트로 수신되고 MME는 이러한 프래그먼트가 DNS로 재설정되었음을 승인합니다.
MME는 TCP를 전송하여 재설정할 수 있으므로 MME에서 DNS 쿼리가 오류를 쿼리 시간 초과로 표시하고 이 시점까지 프래그먼트가 완전히 확인되지 않고 이 프로세스가 완료되기 전에 MME 명령 출력에서 30개의 교체 값을 볼 수 없습니다.
Debug logs analysis
For abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org
2021-Oct-27+17:06:20.910 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:14585, UDP, Sent time 1635329180, Timeout set 1635329183 ---- timer is set here
2021-Oct-27+17:06:20.910 [vpn 5919 info] [9/0/11730 <vpnmgr:6> dns_resolver.c:323] [software internal system syslog] Sent out a DNS Query abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org to DNS Server --------- DNS query is send for the first time
2021-Oct-27+17:06:20.911 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Init, While Sending Query
2021-Oct-27+17:06:20.911 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Open with DHost
2021-Oct-27+17:06:20.911 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:14585, TCP, Sent time 1635329180, Timeout set 1635329183 ------------ DNS query is send for the second time
2021-Oct-27+17:06:20.911 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Successful - DHost-Id = 6766924, Sock_fd = 21
2021-Oct-27+17:06:21.008 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP READ, Kernel Closed, EOF - DHost-Id = 6766924, Sock_fd = 21, errno = 115, req_read_len = 0
2021-Oct-27+17:06:21.008 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection close - DHost-Id = 6766924, Sock_fd = 21
2021-Oct-27+17:06:23.019 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:14585, TCP, Timeout detected: 1635329183 ---------------- Timeout detected here
2021-Oct-27+17:06:23.019 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Init, While Sending Query --------------------- Query is send again
2021-Oct-27+17:06:23.019 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Open with DHost
2021-Oct-27+17:06:23.019 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:14585, TCP, Sent time 1635329183, Timeout set 1635329186 ------- Again send the query with new timer value set
2021-Oct-27+17:06:23.019 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Successful - DHost-Id = 6504921, Sock_fd = 23
2021-Oct-27+17:06:26.036 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:14585, TCP, Timeout detected: 1635329186 ---------------- Timeout detected here
2021-Oct-27+17:06:26.036 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:35196, UDP, Timeout detected: 1635329186 ---------------- Timeout detected here
Another example abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org
2021-Oct-27+17:06:27.257 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:19140, UDP, Sent time 1635329187, Timeout set 1635329190 ---- timer is set here
2021-Oct-27+17:06:27.257 [vpn 5919 info] [9/0/11730 <vpnmgr:6> dns_resolver.c:323] [software internal system syslog] Sent out a DNS Query abcd.apn.epc.mncXXX.mccYYY.3gppnetwork.org to DNS Server --------- Query send for the first time
2021-Oct-27+17:06:27.258 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Init, While Sending Query
2021-Oct-27+17:06:27.258 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Open with DHost
2021-Oct-27+17:06:27.258 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:19140, TCP, Sent time 1635329187, Timeout set 1635329190 -------- Same Query send for the second time
2021-Oct-27+17:06:27.258 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Successful - DHost-Id = 7201531, Sock_fd = 22
2021-Oct-27+17:06:27.309 [vpn 5921 debug] [7/0/12843 <sessmgr:79> dns_snaptr.c:1466] [software internal system syslog] VPN DEBUG : snaptr_match_valid_entries Initial ue_usage_type:0 nc_nr:0 ----- snaptr match starts
2021-Oct-27+17:06:27.309 [vpn 5921 debug] [7/0/12843 <sessmgr:79> dns_snaptr.c:237] [software internal system syslog] VPN DEBUG : snaptr_compare_service_protocol_set rr_service_parameter x-3gpp-mme:x-gn, inp_svc_param x-3gpp-sgw:x-s5-gtp ue_usage_type_enabled:0 nc_nr_enabled:0 ------- nc_nr enabled which I mentioned earlier
2021-Oct-27+17:06:27.309 [vpn 5921 debug] [7/0/12843 <sessmgr:79> dns_snaptr.c:237] [software internal system syslog] VPN DEBUG : snaptr_compare_service_protocol_set rr_service_parameter x-3gpp-sgw:x-s5-gtp:x-s8-gtp, inp_svc_param x-3gpp-sgw:x-s5-gtp ue_usage_type_enabled:0 nc_nr_e:nabled0
2021-Oct-27+17:06:27.309 [vpn 5921 debug] [7/0/12843 <sessmgr:79> dns_snaptr.c:279] [software internal system syslog] VPN DEBUG : 0.rr_prot_token x-s5-gtp, input token x-s5-gtp
2021-Oct-27+17:06:27.309 [vpn 5921 debug] [7/0/12843 <sessmgr:79> dns_snaptr.c:323] [software internal system syslog] VPN DEBUG : 4.Success Selected Protocol(Normal):x-s5-gtp ----------- snaptr protocol matched
2021-Oct-27+17:06:30.057 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:19140, TCP, Timeout detected: 1635329190 -------- TCP timeout happens
2021-Oct-27+17:06:30.057 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Init, While Sending Query ----- Again TCP connection initiated
2021-Oct-27+17:06:30.057 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Open with DHost
2021-Oct-27+17:06:30.057 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:19140, TCP, Sent time 1635329190, Timeout set 1635329193 ------ New timer value set with send query
2021-Oct-27+17:06:30.057 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection Successful - DHost-Id = 7136007, Sock_fd = 21
2021-Oct-27+17:06:30.158 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP READ, Kernel Closed, EOF - DHost-Id = 7136007, Sock_fd = 21, errno = 115, req_read_len = 0 – Error because TCP connection is busy because previous connection is not closed
2021-Oct-27+17:06:30.158 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] TCP Connection close - DHost-Id = 7136007, Sock_fd = 21 -------- Connection closed
2021-Oct-27+17:06:30.171 [vpn 5921 debug] [14/0/12709 <sessmgr:15> dns_snaptr.c:1466] [software internal system syslog] VPN DEBUG : snaptr_match_valid_entries Initial ue_usage_type:0 nc_nr:0 --- again snaptr match takes place
2021-Oct-27+17:06:30.171 [vpn 5921 debug] [14/0/12709 <sessmgr:15> dns_snaptr.c:237] [software internal system syslog] VPN DEBUG : snaptr_compare_service_protocol_set rr_service_parameter x-3gpp-mme:x-gn, inp_svc_param x-3gpp-sgw:x-s5-gtp ue_usage_type_enabled:0 nc_nr_enabled:0
2021-Oct-27+17:06:30.171 [vpn 5921 debug] [14/0/12709 <sessmgr:15> dns_snaptr.c:237] [software internal system syslog] VPN DEBUG : snaptr_compare_service_protocol_set rr_service_parameter x-3gpp-sgw:x-s5-gtp:x-s8-gtp, inp_svc_param x-3gpp-sgw:x-s5-gtp ue_usage_type_enabled:0 nc_nr_enabled:0
2021-Oct-27+17:06:30.171 [vpn 5921 debug] [14/0/12709 <sessmgr:15> dns_snaptr.c:279] [software internal system syslog] VPN DEBUG : 0.rr_prot_token x-s5-gtp, input token x-s5-gtp
2021-Oct-27+17:06:33.073 [vpn 5456 info] [9/0/11730 <vpnmgr:6> vpnmgr_func.c:8011] [software internal system syslog] query:19140, TCP, Timeout detected: 1635329193 -----TCP timeout detected
로그에서 첫 번째 시간 제한 후 MME가 다음 다시 시도에 대해 오류 115를 전송함을 나타냅니다. 첫 번째 TCP 연결이 소켓에서 여전히 닫히지 않기 때문입니다. 첫 번째 TCP 연결에 대한 시간 초과가 발생했으며 이전 연결이 닫히지 않았습니다.
이전 연결이 설정되고 지워지지 않은 동일한 소켓에 있는 새 연결이 시작됩니다. 새 연결이 형성되었지만 첫 번째 시간 제한 후 소켓이 이전 연결을 닫지 않은 경우에도 오류 115(작업 진행 중)가 표시됩니다.
솔루션
DNS 컨텍스트의 vpnmgr을 다시 시작합니다. 소프트웨어 수정 프로그램이 아직 제공되지 않습니다.