Intro
Overlay Network란 기존의 Network 위에 만들어진 가상의 Network를 의미한다. 그렇기에 물리적인 광통신 네트워크에 구성된 모든 네트워크를 Overlay Network라고 볼 수도 있지만, 일반적으로는 Public Internet 위에 구성된 가상의 Network라는 의미로 사용된다.
대표적인 예시로 P2P, VPN을 들 수 있다. 그 외에도 VLAN, MPLS 등도 들 수 있지만 Application 계층에서 구현한 P2P와 VPN을 해당 Posting에서 중점적으로 다룰 것이다. Overlay Network는 상위에 계층에 의해서 만들어지기 때문에 하위 계층에서는 해당 data를 분석하는 것은 사실상 불가능할 뿐만 아니라 이렇게 데이터의 크기가 더 커지기 때문에 네트워크의 과부하를 초래하기도 한다. 하지만, 이러한 기술은 구현이 하드웨어단에서 진행하는 것보다 간략할 뿐만 아니라 유연한 구성이 가능하기 때문에 여러 분야에서 활용되고 있다. 이로인해서 이러한 서비스를 구현하는 업체를 Free Rider
라고 부르기도 한다. 통신 사업자 입장에서는 traffic 증가로 운영 비용이 증가하는데 비해 이에 대한 이득은 서비스 제공업체에서만 가져가는 현상때문이다.
P2P
Peer To Peer의 약자로 여러 client 간의 통신을 수행할 때, 가장 기본적인 모델로 모든 Client가 서로 동등하게 연결되는 Network이다. 이는 Client-Server
구조와는 반대되는 개념으로, 하나의 Server로 모든 Client가 연결되어 이를 통해서 서로 정보를 주고 받는 구조와는 형태가 매우 다르다. 특히 파일 공유, 통신, VoIP, Instance Message, CDN과 같은 분야에서 많이 사용된다. 이는 P2P의 다음과 같은 장점 덕분이다.
- Scalability :
Client-Server
구조에서는 Client의 증가는 곧 Server의 부하 증가를 의미한다. 하지만, P2P에서는 노드 수의 증가는 전체 Network의 크기 증가를 의미하지만, 각 Node에게 부과되는 부하의 증가를 야기하지는 않는다. - Low Cost : Service 제공자 입장에서는 값비싼 Server를 유지하지 않아도 되기 때문에 이로 인한 비용적 이득을 볼 수 있다. 하지만, 통신 사업자 입장에서는 이것이 더 신경쓰이는 부분이다.
- Availability : 일부 노드에 장애가 발생해도 전체 네트워크 연결에 미치는 영향은 적다.
하지만, P2P는 여러 인터넷 문제를 야기할 수도 있다. 대표적으로 제기되는 것이 다음과 같은 문제이다.
- 과도한 인터넷 대역폭 소모
P2P에 참여하는 Node는 Bandwidth의 대부분을 P2P에 사용한다. 이를 통해서 P2P 전송의 효율을 최대화하고자 한 것이다. 하지만, 이로 인해 여타 다른 Network 장비들의 성능에 영향을 줄 수 있다. - 통제가 어려움
P2P를 통해서 공유되는 자료가 부정적인 컨텐츠(음란물, 불법 저작물 유통)를 포함하더라도 이를 통제할 수단이 없을 뿐만 아니라 과도한 Traffic에 대한 차단을 수행하려고 해도 P2P port를 주기적으로 바꾸거나 VPN 등을 활용하며 이러한 차단마저도 우회하고있다. - 낮은 보안성
P2P software는 각 client에서 동작하며, 각 Client는 Host의 기능도 수행해야 하는데 이에 대한 책음은 원래 Service 제공자에서 Client로 전과되었으며, 이는 Client에서 직접적으로 방어해야 한다. 그렇기에 보안성이 낮고 악성코드에 무방비하다.
2000년대 중반까지만 해도 이러한 P2P Traffic이 전체 인터넷의 60~80%를 차지하여 큰 문제가 되었지만, 현재에는 2.4%로 감소하였다. 이는 Streaming Platform의 성장이 컸다고 보고 있다. 다음은 대표적인 P2P Service에 대한 예시이다.
Napster
최초의 P2P service로 유명하며, 무료 음원 MP3 파일을 공유하는 서비스를 제공하였다. Login Server
만을 유지하고, 이곳에서 각 node의 MP3 file 정보와 user 정보를 mapping하여 관리하고 이들을 통해서 조회를 수행하면 Download는 P2P에 의해서 수행되는 원리이다. 그런데 이 단계에서 문제가 발생할 수 있다. 바로 Client 간의 P2P를 수행할 때에 NAT로 인해서 실제 Client의 주소를 알아내는 것이 어려울 뿐만 아니라 방화벽에 의해서 막힐 수 있기 때문이다. 이를 해결하기 위해서 STUN
이라는 개념을 활용한다. 여기서는 자세히 다루지 않지만 NAT에 의해서 만들어진 Public Address와 Private Address를 저장하여 이를 저장하고 있다가 NAT 내부에 Node를 식별할 수 있도록 돕는 기술로 별도의 Server를 구성하여 해당 장소에 저장해두는 것이 일반적이다. 또한, file을 갖고 있는 Node에서 방화벽이 존재한다면, 이를 우회하기 위해서 외부 Server가 file을 보유한 Node에서 오히려 요청을 보내고 파일을 전송하는 것처럼 우회를 수행하기도 한다.
Torrent
BitTorrent와 uTorrent에 대해서만 알아볼 것이다. BitTorrent는 가장 초기 버전으로 OpenSource로 공개되었고, version 6인 uTorrent부터는 비공개로 개발되었다. 32, 64, 128, 256 KB 단위로 file을 나누고 조각 단위로 전송하는 방식이다. Torrent Network를 구성하는 요소는 다음과 같다.
- Web Server : Torrent는 별도의 File 공유 Web Service를 제공하지 않기 때문에 사용자들은 자신이 파일을 가지고 있음을
X.torrent
라는 file에 담아서 Web Service에 업로드해야 한다. 이를 다운로드하여 Torrent Application을 실행시키면 file download가 진행되는 것이다. - Tracker : Torrent에서 제공하는 Server이다. P2P에서 각 peer들의 상태정보를 수집하고, 이를 통해서 통신을 중계한다.
- Seed : 완전한 파일을 가지고 있는 Peer
- Leech : 해당 파일을 일부 가지고 있는 Peer
- Downloader : Leech와 같은 의미로 사용되기도 하며, 다운로드가 완료되면 Leech 또는 Seed가 된다.
Downloader가 Download를 X.torrent
file을 기반으로 수행하기를 Tracker에게 요청하면, Tracker는 해당 파일을 소유한 Peer List를 반환하고 이를 통해서 각 Peer로 부터 파일 조각을 다운 받아 결합하여 최종 file을 완성한다는 원리에 기반하고 있다. uTorrent는 기존 TCP에서 UDP로의 변경 뿐만 아니라 STUN 기능 등을 포함하여 성능을 향상시켜 출시되었다.
Skype
VoIP를 기반으로 하여 파일 전송 등을 제공하는 P2P 서비스이다. 2003년에 처음 시작되어 현재는 MicroSoft에 인수되었고, 2012년 이후로는 Client-Server
구조로 전환하였다. 시스템을 구성하는 요소는 다음과 같다.
- Login Server : 회원가입 및 사용자 정보를 저장하는 Server로 Skype에 의해서 관리된다.
- SN(Super Node) : 실제 Skype Client가 연결되는 Node로 이들은 각자 연결되어 각 Client에게 통신을 제공한다. 초기에는 항상 켜져 있고, 공인 IP 주소를 가지고 있는 고성능 고대역 장비이면 어떤 Skype Client도 Super Node가 될 수 있었다. 하지만, 2012년 대규모 장애가 발생한 이후 MicroSoft에서 운용하는 Machine(Azure)으로 대체되었다.
- SC(Skype Client) : 일반 Skepe 이용자를 의미한다.
Skype의 Code가 공개되지 않았기 때문에 자세히 알 수 없지만 다음과 같이 추측은 가능하다. Login Server를 거쳐서 Login을 수행하며, 이 과정에서 적절한 Super Node를 통해서 먼저 연결 상태 체크 등을 수행한다. 이제 사용자가 통화를 시작한다면, 해당 Super Node를 기반으로 UDP 음성 packet이 오고 갈 것이다.
STUN
Session Traversal Utilities for NAT 의 약어로 UDP hole punching이라고도 부른다. Network Address Translation으로 번역되는 내부망의 node의 Private Address를 Public Address와 Mapping하여 관리한다. 원래는 NAT 내부에 존재하는 Node를 식별할 수 없지만, 이를 통해서 NAT 내부에 존재하는 대상에게 Request를 보내는 것이 가능해지는 것이다. 이와 유사한 개념으로 TURN이 존재하는데 이는 직접적으로 Traffic을 전달받아서 중계를 수행하는 역할을 맡는다.
VPN
Virtual Private Network의 약어로 90년대 말에 기업의 사설망 구축 시에 사용되던 기술이 공용화된 것이다. 이는 OSI 7계층에서 2 계층 이상에서 적용이 가능하며, 어느 계층에서 수행하냐에 따라 목적이 조금씩 다르지만, packet을 Encapsulation하여 도청, 감청, 탈취 등의 작업을 수행할 수 없도록 막는 것이 주 목적이다. 이를 통해서 개인정보를 암호화하고, 인터넷을 사용하는 것이 가능하다. 통신 사업자에 의해서 구성된 VPN이 아닌 경우 대역폭이 보장되지는 않는다. IPSec에서 부터 시작하여, SSL과 같은 기술이 이에 포함되고, 우리가 일반적으로 생각하는 VPN은 응용 계층에서의 활용이다. 이 경우에는 Proxy Server를 먼저 거쳐서 Traffic 자체를 우회시키는 방식이다.
Reference
- Thumbnail : Photo by Mark McGregor on Unsplash
Comments