최적화된 서비스 구축을 위한 네트워크 환경에서 TCP의 중요성 + TCP UDP 서비스 차이?

박지현·2021년 3월 24일
0

네트워크 궁금증

목록 보기
4/7

UDP -> 실시간 영상 서비스,DNS, 멀티미디어
TCP -> 웹 HTTP 통신, 이메일, 파일전송

실제 서비스에서 어떻게 사용되는지 궁금

  1. 해외 네트워크에서 실시간 영상 서비스를 개발해야 하는 상황

해외 현지 네트워크를 통째로 기록해서 한국으로 가져와 똑같이 에뮬레이션 할 수 있다면??

네트워크 환경을 이루는 요소?

  1. 레이턴시(latency) :송신자-수신자 패킷 도달 시간
  2. 대역폭(bandwidth) :통신 채널의 최대 처리량

(+ 통신 선로길이, 매질의 굴절율, 링크의 용량, 라우터의 크기, 무선 주파수 대역폭, 안테나 중계기 등 무선 통신 인프라 밀집도, 무선 통신 전송 전력, 무선 통신 SNR....)

TCP에 의한 네트워크 환경 영향

1. 서버와 클라이언트는 현재 처리 가능한 버퍼 크기를 언제, 어떤 방식으로 서로 알 수 있을까?

ACK패킷의 rwnd값을 통해 연속적으로 상호 교환(흐름제어)
-> 많은 양의 패킷을 전송하는 시도를 사전에 방지

  • 송수신자 간의 처리 가능 용량 알 수 있음

2. 현재 연결된 채널에서 처리할 수 있는 채널 용량을 어떻게 알 수 있을까?

실제로 채널에서 데이터를 교환해 가면서 허용량을 측정하는 작업을 수행해야 함.
slow-start: 초기값에서 한번의 RTT마다 cwnd값 2배
패킷전송을 실패, 일정시간 넘으면 속도 절반
실제로 송신자가 송신하는 데이터 크기는 min(rwnd,cwnd) 로 결정
(혼잡제어)

일반적인 네트워크 환경에서는 채널의 최대 처리량을 활용하지 못하고 윈도우 크기에 맞춰서 전송하고 ACK수신하여 나머지 다시 전송해야 하는 성능저하

그렇다고 무한히 윈도우 크기를 증가시킬수는 없기에...

3.너무 많은 양의 패킷이 전송되면 채널과 라우터에서는 어떤 일이 일어날까?
채널에 연결된 라우터는 처리 용량의 한계가 있기 때문에, 혼잡이 발생하면 패킷이 큐에서 대기하며 정체가 발생하고, 지정된 시간 내에 처리하지 못하면 타임 아웃되어 라우터가 패킷을 폐기하기 시작

4. 패킷이 유실된다는 것은 정확히 어떤 의미일까?
패킷손실은 오류라기 보다는 네트워크의 부담을 덜어주기 위한 의도적인 피드백 동작

  • 혼잡제어: 2배씩 cwnd 증가
  • 혼잡으로 인한 패킷 손실: 지수적감소, cwnd리셋
  • 혼잡회피: 산술적으로 cwnd증가

실제 대역폭은 톱니 모양의 패턴

대역폭, 레이턴시와 TCP 의 관계를 이해하고 이둘을 파악해 오는 것이 네트워크 환경에 서비스를 최적화 하기 위해 중요하다.

ex) LINE TV 태국 현지 서비스

의문... 왜 스트리밍 서비스인데 UDP를 안쓰고 TCP를 사용한건지

(예상)

  1. 우리나라는 TCP환경이 더 익숙하다.
    (이미 최고 수준의 인프라 환경을 갖추고 있기 때문에 실시간 멀티프레이어게임도 TCP로 구현)
  1. UDP는 특정 환경에서는 동작하지 않는다는 말이 있음

udp를 사용하는 서비스들

왜 이런 서비스들은 udp를 사용할까?

  1. 하나의 소켓으로 멀티 플랙싱 지원

    TCP는 연결형 서비스
    하나의 패킷만 유실되도 전체 패킷이
    application layer 로 넘어가지 못하는 head of blocking 발생!!

    웹 브라우저의 경우, 다수의 HTTP요청을 위해 6개 TCP 소켓 사용

    게임의 경우 각 오브젝트에 별도의 채널을 할당해서 성능 향상을 기대할수 있다.
  1. 다양한 Qos (Quality of service)
  • tcp는 하나의 Qos타입 제공

    MTU - ip계층이 전송할수 있는 고정크기
  • 패킷사이즈 조절을 잘 해주는것 중요
    게임 데이터의 경우에는 패킷 사이즈가 작다.
    -> UDP는 다양한 Qos 타입 제공 (애플리케이션과 데이터 특성에 맞게 프로토콜 구현)
  1. Wi-Fi Cellular handover
    ex) 밖에있다가 게임을 하면서 집으로 들어가는경우
    LTE -> wifi
  • tcp는 ip를 기준으로 연결을 유지(환경 대응 부적합)
  • udp를 사용하면 ip변화에 유연하게 대처할 수 있다.
  1. 암호화

  • udp는 연결과 암호화 동시 수행 -> 불필요한 Round trip을 줄일 수 있다
  • 게임과 같은 데이터 지연에 민감한 어플리케이션의 경우, 꼭 필요한 경우에만 암호화를 수행할 수 있도록 제공하는 것이 일반적

의문에 대한 답을 찾아가고 있다.

응용계층에서
RTSP(Real-Time Streaming Protocol) 나 RTR(Real-time Transport Protocol)등을 사용.

  1. 별도의 스트리밍 서버가 필요.

  2. 스트리밍 서버는 비디오 플레이어와 커넥션을 유지한 채로 비디오 재생을 함

  3. 커넥션을 유지함에 따라 HTTP를 이용한 전송시 불가능 했던 Adaptive Streaming이 가능해짐
    (Adaptive Streaming은 사용자의 네트워크, CPU등의 상태를 모니터링하여 상황에 최적화된 화질을 전송해주는 방법을 말함)

  4. 서버에 고화질/일반화질/저화질 등으로 영상을 준비해 놓고 Player에서는 Client의 네트워크나 대역폭 상황에 따라 화질을 변경하여 사용자 환경에 최적화된 화질을 제공.

  5. 시청하고 있는 주변의 스트림만 클라이언트의 버퍼로 저장해 놓게 된다.
    네트워크 비용절감 + 서버의 Capacity를 효과적으로 운영하게 되는 이점이 생김으로 운영하게 되는 이점이 생김

신뢰적인TCP, 비신회적인UDP 등 다양한 전송 프로토콜 위에서 동작 가능토콜 위에서 동작 가능

0개의 댓글