Hi there!

I am a student studying computer science.

컴퓨터 네트워크

컴퓨터 네트워크 Week 7-2: CDN

만능성구 2020. 10. 17. 00:01
728x90

인터넷 내에서 packet loss가 발생할 수 있따

두 host가 연결되어 있는지 여부에 관계없이 연결한다

p2p or client-server host들의 연결이 보장되지 않는다

Content distribution networks (CDNs)

challenge: 콘텐츠 (수백만 개의 비디오에서 선택)를 수십만 명의 동시 사용자에게 스트리밍하는 방법은 무엇입니까?


option 1 : 단일, 대형 "mega-server" 
    • 단일 장애 지점 # 한번 사고 나면 끝
    • 네트워크 정체 지점 # 엄청난 데이터를 뿌리고 있어서 주변 환경이 혼잡, 주변 사용자들이 낮은 품질을 겪음
    • 멀리 떨어져있는 고객과의 긴 경로 # 갈 곳이 한 곳 밖에 없을경우 멀리 있는 사용자가 고색
    • 발신 링크를 통해 전송 된 여러 개의 비디오 사본

   # 엄청 좋은 mega-server를 사용하면 엄청 비싸다
…. 매우 간단하게 :이 솔루션은 확장되지 않습니다.

 

option 2 : 지리적으로 분산 된 여러 사이트 (CDN)에 여러 개의 비디오 사본 저장 / 제공
     • enter deep : CDN 서버를 많은 액세스 네트워크로 밀어 넣습니다.
         • 사용자 가까이
         • Akamai : 120 개 이상의 국가에 240,000 대의 서버 배포 (2015 년)

         # CDN server 사이의 link 및 router 수를 줄인다. 사용자 지연시간 및 처리율 향상
    • bring home : 액세스 네트워크 근처 (내부 아님)에있는 POP의 더 작은 수 (10 개)의 대규모 클러스터
        • Limelight에서 사용

        #인터넷 교환지점에 CDN클러스터를 배치.

    #bring home은 유지 관리 비용이 enter deep보다 적다. 사용자 지연시간과 처리율은 낮다.

        

 

▪ CDN : 콘텐츠 사본을 CDN 노드에 저장합니다.
    • 예 : Netflix는 MadMen 사본을 저장합니다.
▪ 가입자가 CDN에서 콘텐츠 요청
    • 근처 사본으로 이동, 콘텐츠 검색
    • 네트워크 경로가 혼잡할 경우 다른 복사본을 선택할 수 있습니다.

# cache와 마찬가지로 cluster의 저장공간이 가득 차면 자주 사용하지 않는 것은 삭제한다.

# 클러스트에 없는것은 중앙 서버나 다른 클러스터로부터 전송받아 사용자에게 서비스하는 동시에 복사본 저장

# CDN클러스트에 대해 pull방식으로 사용한다.

보는 방법 1. 구독(요청) 2.server는 manifest파일로 응답한다. 3.CDN은 dash, http 프로토콜은  manifest파일과 manifest안의 URL과 해당 URL이 있는 파일를 보냅니다(client가 다른 서버에서 사본을 받을 수 있다고 알린다) 4. 할당된 서버(아마 가장 가까운곳)에서 packet을 가져오는데 가져오다가 혼잡해지면 근처 다른 서버에서 가져온다.

# 상위의 어플리케이션을 만들면 인터넷의 기본을 어기는것

# 인터넷의 의미는 소통하거나 링크를 만드는 것

# ICN/NDN 서로 의사소통하는데 관심이 없지만 호스트는 관심이 있다. 어떻게 달성되는지 중요하지 않다

# ndn은 주소다 호스트가 아니다

# url을 전달 받지만 그것을 ip 주소로 변환하기 위해서 DNS 시스템이 필요

# 코어가 복잡해지면 새로운 어플리케이션이 생기기 어려움. 비지니스적으로 좋지 않다. 유지하는데 힘들다

# 코어는 단순하게, 복잡한것은 access측면

OTT challenges: 혼잡한 인터넷 대처
    ▪ 콘텐츠를 검색 할 CDN 노드는 무엇입니까?
    ▪ 혼잡시 시청자 행동?
    ▪ 어떤 CDN 노드에 어떤 콘텐츠를 배치해야합니까?

CDN content access: a closer look

1.

- 사용자가 netcinema 웹페이지를 방문

2.

-사용자가 http://vido.netcinema.com/6Y7B23V 링크를 클릭하면, 사용자의 호스트는 video.netcinema에 대한 DNS query를 보낸다. 

3.

- 사용자 local DNS서버(LDNS)는 호스트 이름의 video문자열을 감지하고, 해당 query를 NetCinema의 책임DNS서버(netcinema's authoratative DNS)로 전달. 

- 책임DNS서버는 DNS query를 KingCDN의 호스트 이름을 LDNS에게 알려준다.

4.

- DNS query는 KingCDN의 사설 DNS 구조로 들어간다.

- 사용자의 LDNS는 KingCDN의 호스트 이름에 대한 두번째 qeury를 보낸다.

- 이는 KingCDN의 DNS에 의해 KingCDN 콘텐츠 서버의 IP주소로 변환되어 LDNS에 응답 (이때 콘텐츠 받을 서버 결정)

5.

- LDNS는 콘텐츠를 제공할 서버의 IP주소를 사용자 host에 알려준다 

6.

- client는 얻음 KingCDN서버의 IP주소로 직접 TCP연결 설정하고 비디오에 대한 HTTP Get요청을 전송

     - DASH가 사용된다면 서버는 서로 다른 버전의 비디오에 대한 URL목록을 포함하는 manifest파일을 client에 전송

     - client는 도적으로 서로 다른 버전 비디오 조각 데이터를 선택

= 클릭 - 책임자 찾기 - 받을 곳 이름 알아오기 - 받을 곳 ip주소 알아오기 - http연결

Case study: Netflix

- netflix서버는 계정 관리만 한다 (비디오가 없다)

- 비디오는 amazon cloud에 있고, CDN으로 보낼 수 있다.

- CDN은 access network 가까이에 있다

1. 밥 계정 관리

2. amazon 에서 비디오 선택 요청

3. 서버에서 manifest file 전송 

4. DASH서버가 cnd 서버 선택, 데이터 받음

Socket programming

goal: socket을 사용하여 통신하는 client / server application을 build하는 방법을 배웁니다.

socket: application process와 end-end-transport 프로토콜 사이의 문

통신하는 과정에서 암호화를 한다

두 가지 전송 서비스에 대한 두 가지 소켓 유형 :
▪ UDP : 신뢰할 수없는 datagram 

▪ TCP : 신뢰할 수있는 byte stream-oriented

 

응용 예 :

1. client가 키보드에서 한 줄의 문자 (데이터)를 읽고 데이터를 server로 보냅니다.

2. server가 데이터를 수신하고 문자를 대문자로 변환

3. server가 수정 된 데이터를 client로 전송

4. client는 수정 된 데이터를 수신하고 화면에 라인을 표시합니다.

Socket programming with UDP

UDP : client와 server간에 "연결"없음
▪ 데이터 전송 전 handshaking 없음
▪ 발신자는 각 패킷에 IP 대상 주소와 포트 번호를 명시적으로 첨부합니다.
▪ 수신자는 수신된 패킷에서 발신자 IP 주소와 포트 번호를 추출합니다.


UDP : 전송된 데이터가 손실되거나 잘못 수신 될 수 있습니다.


애플리케이션 관점 :
▪ UDP는 클라이언트와 서비스간에 신뢰할 수없는 바이트 그룹 (“datagrams”) 전송을 제공합니다.

Client/server socket interaction: UDP

AF_INET : ipv4

SOCK_DGRAM : UDP프로토콜

ip주소를 안다는것은 이미 DNS를 거쳐왔다는 것

server는 계속 실행된다(무한 루프로 구현), client는 통신이 끝나면 close

Example app: UDP client

Example app: UDP server

servers는 ip주소와 port번호를 입력하지 않고 모든 종류의 컴퓨터에서 요청을 받는다

Socket programming with TCP

client는 server에 접속해야합니다
▪ server 프로세스가 먼저 실행되고 있어야합니다.
▪ server는 client의 접촉을 환영하는 socket(문)을 생성해야합니다.

 

client contacts server :
▪ TCP 소켓 생성, server 프로세스의  IP 주소, port 번호 지정
client가 소켓을 생성 할 때 : client TCP가 server TCP에 연결을 설정합니다. # UDP와 다른 부분, handshaking, 노크

 

▪ client가 접속하면 server TCP는 server프로세스가 해당 특정 client와 통신 할 수 있도록 새 socket을 생성합니다.

     # 노크를 들었을 때

    • server가 여러 client와 통신 할 수 있습니다.
    • client를 구별하는 데 사용되는 소스 포트 번호 (자세한 내용은 3 장 참조)

 

Application 관점

TCP는 client와 server간에 신뢰할 수있는 순서대로 byte-stream 전송 ( "pipe")을 제공합니다.

Client/server socket interaction: TCP

Example app: TCP client

Example app: TCP server

728x90