Skip to content

조회 수 9300 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Netmanias Blog 12월 13일자 "문제: Google DNS를 쓰면 왜 느릴까요???"에 대한 답을 드리도록 하겠습니다.



DNS 동작 원리


일단 DNS 동작에 대해서 살펴 보도록 하겠습니다.

일반적인 상황은 아래 그림의 위쪽과 같이 제 PC에서 ping www.netmanias.com 하면 제 PC는 www.netmanias.com이라는 hostname에 대한 IP 주소를 받아 오기 위해 DNS query를 합니다. 그리고 이를 통해 IP 주소 112.220.75.18을 받아, 그 IP 주소로 ping (ICMP Echo Request)을 보내게 됩니다.

그런데 아래 그림의 밑에 쪽을 보면 ping www.cisco.com을 하였는데 www.cisco.com에 대한 IP 주소가 아닌 e144.cd.akamaiedge.net이란 hostname에 대한 IP 주소 202.43.48.170을 받아와 그 곳으로 ping을 하게 됩니다.

왜 이 2가지 경우가 다르게 나오는 걸까요?

그건 바로 www.netmanias.com 서버는 CDN 서비스를 받고 있지 않는 반면, Cisco는 Akamai라는 미국 회사의 CDN 서비스를 받고 있기 때문입니다(ping www.samsung.com을 해도 akamaiedge라는 이름이 포함된 hostname이 보이실 것입니다. 삼성 역시 Akamai CDN 서비스를 받고 있습니다.)




Akamai CDN과 Google DNS와의 관계


그럼 Akamai라는 회사가 제공하는 CDN 서비스의 개념은 뭘까요?

Akamai는 전세계적으로 약 7만여대의 Cache 서버를 가지고 있습니다. 왠만한 국가의 통신 사업자 Data Center에 모두 Akamai Cache 서버가 있다고 보시면 됩니다. 그래서 비록 Cisco 웹서버(www.cisco.com)는 미국에 한대 밖에 존재하지 않지만 이 Cisco 홈페이지내의 contents(text, image, video 등등)가 이 7만여대의 Akamai Cache 서버에 caching이 되어 있는 것입니다.

그리고 Akamai는 사용자와 가장 가까운 곳에 위치한 자사의 Cache 서버를 골라, 그 서버에 있는 Cisco web contents를 사용자에게 전달해 주는 방식입니다. 그래서 매우 빠릅니다!


그렇다면 Akamai는 어떤 로직으로 사용자와 가장 가까운 Cache 서버를 선택할까요? 여기에 문제의 해답이 있습니다.

Akamai는 DNS 기반으로 가장 가까운 Cache 서버를 선택하는 방법을 사용하는데요. 이를 위해서 Akamai는 자체 CDN용 DNS 서버를 운영하고 있습니다.


사용자가 www.cisco.com에 접속하기 위해, 자신의 PC에 설정된 Local DNS로 DNS Query(www.cisco.com의 IP 주소가 뭐에요?)를 합니다. 그리고 그 DNS Query는 ".com DNS 서버"를 거쳐 "cisco.com DNS 서버"에 도달하는데요. 이 "cisco.com DNS 서버"는 DNS의 CNAME을 사용하여 Local DNS에게 "www.cisco.com이란 hostname의 CNAME은 e144.cd.akamaiedge.net으로 되어 있으니, e144.cd.akamaiedge.net이란 hostname에 대한 IP 주소를 물어 보도록 해라"라고 전달합니다. 이 응답(DNS Response)을 수신한 Local DNS 서버는 www.cisco.com의 IP 주소를 알아 내기 위해 DNS Query(e144.cd.akamaiedge.net의 IP 주소가 뭐에요?)를 ".net DNS 서버"을 거쳐 결국 Akama가 관리하는 DNS 서버인 'akamaiedge.net DNS 서버'로 보내게 됩니다. 


이제 이 Akamai DNS 서버는 DNS Query를 보낸 Local DNS 서버의 IP 주소를 봅니다(이후 다시 말씀드리겠지만 사용자 단말의 IP 주소가 아닌 Local DNS 서버의 IP 주소를 봅니다. 왜? DNS 메시지 표준에는 단말의 IP 주소가 포함되지 않으니까요). 그리고 이 Local DNS 서버의 IP 주소를 통해, Local DNS 서버가 위치한 나라/통신 사업자를 파악하게 되구요(나라별/통신사업자별 IP 주소 대역을 table로 관리). 이 정보를 바탕으로 Akamai가 관리하는 7만여대의 Cache 서버 중에 Local DNS 서버와 같은 지역/같은 통신 사업자에 위치한 Cache 서버를 선택하여, 그 Cache 서버의 IP 주소를 Local DNS 서버에 알려 주게 됩니다. 이후 Local DNS 서버는 그 IP 주소를 단말에 전달하고, 이제 단말은 미국에 있는 Cisco 웹서버가 아닌 국내에 있는 Akamai Cache 서버를 통해 Cisco web contents륵 가져 오게 되는 것입니다.


이제 문제의 답을 말씀드리겠습니다.

바로 전에 말씀드린 바와 같이 DNS 표준(DNS 서버간에 DNS Query/Response)에는 DNS 메시지를 최초로 보낸 단말의 IP 주소가 포함되지 않습니다. 그래서 Akamai DNS 서버는 단말에 설정한 Local DNS 서버의 IP 주소만 알 수 있을 뿐, 단말의 IP 주소는 알 수 없습니다.

그래서 제가 Local DNS 서버의 IP 주소를 LG U+ DNS 서버로 설정하는 경우, Akamai DNS 서버는 LG U+ DNS 서버의 IP 주소를 보고, 한국에 있는 LG U+ 사용자의 요청인 것을 알 수 있어, 한국/LG U+ Data Center(논현동 KIDC)에 있는 Akamai Cache 서버를 선택해 주고, 결국 제가 보낸 ping www.cisco.com에 대해 응답을 해 주는 서버는 논현동 KIDC에 위치한 Akamai Cache 서버가 되는 것입니다.


그런데...

제가 Local DNS 서버를 Google DNS 서버인 8.8.8.8로 설정을 하면 어떤 일이 벌어질까요? 이 경우, Akamai DNS 서버는 8.8.8.8이란 Local DNS 서버의 주소를 보고 최적(가장 가까운)의 Akamai Cache 서버를 선택해 주어야 하는데, 전세계 어느 곳에서도 전부 8.8.8.8이란 하나의 DNS 서버 주소를 사용하게 되므로, Akamai DNS 서버는 8.8.8.8의 값을 보고 사용자 위치를 알 수 있는 방법이 없게 됩니다. 그래서 선택한 것이 결국 미국에 있는 Akamai Cache 서버인거죠.

그래서 이 경우, 제가 보낸 ping www.cisco.com에 대해 응답을 해 주는 서버는 미국에 위치한 Akamai Cache 서버가 되는 것이고, 그래서 태평양을 넘어 ping request/reply를 주고 받아야 하므로 그 응답이 느려지게 되는 것이랍니다.


위 설명을 그림 한장으로 표현하면 아래와 같습니다.




결언


자 이제 결언입니다.

앞서 설명드린 바와 같이 문제의 출발은 "Akamai의 DNS 방식이 사용자 IP 주소를 볼 수 없다" 입니다. 하지만 현 DNS 표준이 그러하니 Akamai에 뭐라 할 말은 없습니다. 그렇다고 Google DNS의 방식 역시 아무 문제가 없습니다. 

하지만 우리가 알아야 하는 한가지 사실은.... 현재 대부분의 Global 벤더는 Akamai 또는 다른 CDN 벤더(Limelight, Level 3, CDNetworks 등)의 서비스를 이미 사용 중입니다. Apple, Cisco, Samsung, Juniper, Ericsson, Time 등등등 너무 많습니다. 

따라서 빠른 웹/스트리밍 서비스를 위해서는 Google DNS 사용을 포기하는게 맞을 것이라는 생각입니다. 그리고 출장자 여러분들! 출장 가시면 그 나라의 Local DNS로 설정하세요. 우리나라 DNS로 설정해 놓으면 동일한 이유로 속도가 느릴 것입니다.


넷매니아즈에 손장우 박사님이 ETRI에서 CDN 세미나(주제: Operator CDN 트랜드 및 기술 동향, 83 Page) 발표를 하셨고, 그 문서가 현재 넷매니아즈(아래 링크 클릭)에 올라와 있습니다. CDN에 대해 이해하시는데 큰 도움이 되실 것으로 생각이 되네요.


List of Articles
번호 제목 글쓴이 날짜 조회 수
29 dnstop 설치 ADMINPLAY 2014.01.19 5272
28 [DNS] Bind 9.x 로 업그레이드 하기 ADMINPLAY 2013.09.09 7682
27 DNS 기본 동작 설명 2 file ADMINPLAY 2012.07.30 12227
26 DNS의 3가지 메시지 타입 1 ADMINPLAY 2012.07.30 9973
» [Contents Networking] [문제의 답] Google DNS와 Akamai CDN ADMINPLAY 2012.07.30 9300
24 [DNS] 응답의 종류: Non-authoritative Answer ADMINPLAY 2010.09.02 22256
23 각 ISP 업체별 DNS 서버목록 입니다. ADMINPLAY 2010.03.10 17961
22 RedHat 8에 bind-9.3.2 소스설치 ADMINPLAY 2010.01.25 17947
21 DNS 포워더 설정 ADMINPLAY 2010.01.05 19356
20 DNS 싱크홀 (악성 봇 감염) file ADMINPLAY 2009.12.08 23676
19 DNS 의 Cache Poisoning 취약점 ADMINPLAY 2009.12.08 21142
18 lame server resoving ADMINPLAY 2009.12.08 17568
17 서브도메인 유출 방지방법 ADMINPLAY 2009.11.11 19154
16 DNS 개념을 위한 상식용어 ADMINPLAY 2009.11.04 31089
15 bind 세부로그 남기기- named.conf logging설정 예제 ADMINPLAY 2009.10.31 23631
14 CentOS5,Fedora7 네임서버 설정법 file ADMINPLAY 2009.10.31 18820
13 'could not set file modification time' 와 같은 오류 메... file ADMINPLAY 2009.10.20 19906
12 네임서버 named.conf 파일과 zone파일 체크 방법 ADMINPLAY 2009.07.31 17971
11 DNS TCP53, UDP53 용도 ADMINPLAY 2009.06.04 18642
10 인버스 도메인 신청,위임 및 서브도메인 위임 ADMINPLAY 2009.03.29 17835
Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234