[네트워크] 2.6 CDN & Socket Programming

PADO·2020년 11월 12일
2

컴퓨터 네트워크

목록 보기
11/27
post-thumbnail

지난 시간 배운 내용

OTT(Over The Top) 사업자가 가진 가장 큰 challenging issue

OTT service: 인터넷을 통해 contents를 streaming (downloading 하며 동시에 processing)하는 service. 확보된 bandwidth가 아닌 인터넷망을 통해 서비스

  1. storage, network bandwidth를 고려한 server infra 구축
    → content distribution network 등장
  2. client 마다의 이질적인 downlink capacity와, 각기 다른 device에 따른 processing speed
    → 표준화된 DASH: 서버는 하나의 컨텐츠를 chunk로 쪼갠 후 chunk를 각기 다른 bit rate으로 encoding, 각기 다른 url에 저장. manifest 파일에 저장한 후 client에게 제공 (client는 pull)

그렇다면 content를 가진 server를 어디에 둬야할까?

how to stream content to hundreds of thousands of simultaneous users?

  1. single, large "mega-server"
  • single point of failure
  • point of network congestion
  • long path to distant clients
  • multiple copies of video sent over outgoing link
  1. store/serve multiple copies of videos at multiple geographically distributed sites (CDN)
  • enter deep: push CDN servers deep into many access networks
    아예 client가 있는 access network에. external traffic이 줄어들어 latency(delay)가 감소하며 throughput도 좋다. but, 관리가 어려움
    ⇒ close to users, used by Akamai(Public CDN)
  • bring home: smaller number (10's) of larger clusters in POPs near (but not within) access networks
    ISP home에 놓는 방식. enter deep 보다 윗단. 여러 access ISP에서 가져가면 돼서 관리가 쉬움, but host 입장에선 한 번 더 나와서 가져가야 하니 throughput은 enter deep 방식에 비해 떨어짐.
    ⇒ used by Limelight(Public CDN)
  • Private CDN: NW owner = content provider (Google, Netflix)
  • Public CDN: NW owner ≠ content provider

CDNs

OTT 사업자가 가진 문제 중 storage, network bandwidth 문제를 극복한 server 구축 방식으로 등장한 네트워크

  • enter deep : Client ISP network 안에
  • bring home : 좀 더 윗단에 (관리는 쉽지만 client 입장에선 조금 느림)
스크린샷 2020-11-12 오전 9 38 57

enter deep 방식(하늘색 구름에 놓음)

(bring home은 파란 원에 놓는 방식. 파란 원은 ISP와 ISP를 연결한 third party-IXP: Internet Exchange Point나 POP-아랫층 ISP(custom ISP)가 좀 더 넓은 ISP(provider ISP)와 연결될 때 연결지점-에 둠)

  • CDN stores copieds of content at CDN nodes
  • subscriber requests content from CDN
  • directed to nearby copy, retrieves content
  • may choose different copy if network path congested

CDN content access: a closer look

CDNs: Internet Server-Client communication as a service

Ex. watcha, 옥수수

스크린샷 2020-11-12 오전 9 39 07

(1) Bob이 영화보려고 netcinema.com에 영화 파일 주소를 요청함. netcinema.com/@#R*@#에)(url:hostname/filename)에 있다고 답변

(2) Bob의 Local DNS(LDNS)에게 파일 주소(url)인 netcinema.com/@#R*@#에)를 요청.

(3) LDNS는 .com DNS 서버에게 요청. .com은 netcinema.com의 Authoratative DNS Server의 hostname을 답변. Authoratative DNS Server는 KingCDN.com/23483r29를 답변 (CNAME)

(4) 해당 도메인을 관장하는 DNS 서버에게 다시 요청. KingCDN.com의 주소를 받음

(5) LDNS가 해당 주소를 Bob에게 돌려줌

video는 HTTP를 이용해 KingCDN.com에서 오더라.

⇒ CNAME을 이용한 DNS redirection을 통해 server distribution

Case study: Netflix

Bob이 넷플릭스의 영화를 보려고 함

(1) Bob은 Netflix 계정을 관리하는 서버에 접속, 인증

(2) (3) Bob은 Netflix가 대여한 Amazon cloud에서 Manifest file을 받아옴

(4) DASH streaming. 가장 가까운 CDN server들에서 영화 streaming

Push Caching 사용


Socket programming

socket: door between application process and end-end transport protocol

  • UDP: fast, simple

    • Why down DNS use UDP not TCP?

      • one time transaction (한 번만 묻고 답한다)

      • short msg (no need to setup connection)

  • TCP: reliable (no loss, in-order, byte stream-oriented (connection estabilshed)

Socket programming with UDP

no "connection" between client & server

  • no handshaking before sending data

  • sender explicitly attaches IP destination address and
    port # to each packer

    application process는 IP 주소와 포트번호를 항상 알고 있어야 함
  • receiver extracts sender IP address and port # from
    received packet

(sender receiver와 client server를 혼용하지 않도록 주의)

Client/server socket interaction: UDP

스크린샷 2020-11-12 오전 9 39 38

no closing UDP server socket (또다른 UDP 연결을 위해 기다림)

connection을 별도로 맺지 않기 때문에 connection setup과정이 필요 없으며, 포트번호를 항상 들고 있어야 하고 server는 port를 닫지 않는다.

Socket programming with TCP

  • client must contact server

    connection을 별도로 맺어줘야 하기 때문에 (socket을 하나 더 연다)

    • server process must first be running
    • server must have created socket (door socket/welcome socket) that welcomes client’s contact
  • client contacts server by:

    • creating TCP socket, specifying IP address, port
      number of server process
    • when client creates socket:
      client TCP establishes connection to server TCP
  • when contacted by client,
    server TCP creates new socket for server process to
    communicate with that particular client

    이 새로운 소켓을 여는 과정(handshaking) 후에 client와 통신
  • allows server to talk with multiple clients

  • source port numbers used to distinguish clients

door socket과 dedicated된 socket 두 가지를 열고 관리

dedicated 된 socket을 생성하고 여는 과정이 UDP에는 없는 TCP connection setup 과정, connection이 끝나면 close

→ socket이 dedicated 되었기 때문에 end가 port 번호를 함께 전송할 필요 없음

TCP provides reliable, in-order byte-stream transfer (“pipe”) between client and server

0개의 댓글