[네트워크] 패킷(Packet)

tae_in·2022년 10월 14일
0

CS

목록 보기
4/10

패킷

Host는 데이터를 전송할 수 있는데 전송하려는 데이터를 잘라서 보낸다. 이것을 Packet이라고 하며 쉽게 말해 전송하는 데이터를 일정한 크기의 데이터로 자르는 것을 Packet이라고 한다. 서버에서 주고받는 데이터는 모두 Packet이라고 생각해도 되며 실제 전송되는 데이터 단위이다.

패킷 전송 지연과 손실과 처리율(Packet transmission delay and loss and Throughput)

각 패킷의 길이가 L일 때 어떤 host에서 데이터를 보내는데 link에서 보낼 수 있는 전송률, 즉 link transmission rate를 R이라고 한다면 L bit짜리 데이터를 R이라는 link transmission rate를 가지고 있는 링크를 통해 전송할 때 전송 delay는 어떻게 될까?

패킷 전송 지연 = L비트의 패킷을 링크로 전송하는데 필요한 시간 = L(bits)/R(bits/sec)

  • link: 링크는 노드 사이의 패킷을 전달하기 위한 물리적인 통신경로를 말한다.
  • R은 capacity, link bandwidth라고 말할 수 있다.

즉, 패킷의 길이 L을 link의 전송률 R로 나누면 된다.

단위시간 동안 도착하는 패킷으이 수가 output link의 capacity를 넘어설 때 라우터의 queeu에 패킷잉 대기상태로 쌓이게 되어, delay가 발생하게 된다. 이것을 queueing delay라고 한다. 만약 queue가 가득 차서 더 이상 패킷을 받을 공간이 없다면 이 패킷은 버려지게 된다(packet loss).

위의 그림처럼 delay에는 총 4가지가 있다.

  • nodal processing
  • queueing delay
  • transmission delay
  • propagation delay

1. nodal processing delay(노드 처리 지연)

Nodal processing은 라우터(노드)에서 작업을 할 때 걸리는 시간을 의미한다. 참고로 Nodal delay는 Nodal processing과 다르고, Nodal processing은 Node processing과 같다. 라우터에서 하는 작업에는 패킷의 bit error를 측정하고, 목적지로 보낼 패킷의 헤더를 조사하고 어느 출력 링크(output link)로 보낼지 나갈 통로를 결정하는 작업(routing algorithm이 돌아가는 시간)을 한다.

2. queueing delay(큐잉 지연)

queue에서 패킷이 대기상태로 쌓여 나갈떄까지 기다리는 시간을 말한다.

3. transmission delay(전송 지연)

패킷의 모든 비트들을 링크로 전송하는데(밀어내는데) 필요한 시간을 말한다.
저장 후에는 전파 지연(propagation delay)
데이터가 전송되는데 걸리는 시간을 말한다.(L/R)
L: 패킷의 길이(bits)
R: 링크 전송률(link bandwidth, bps)

4. propagation delay(전파 지연)

출력 링크에서 다음 라우터까지 전파하는데 필요한 시간이며 전파 속도는 링크의 물리 매체(광섬유, 꼬임쌍선 등)에 좌우된다.

전파 지연 = d(두 라우터 간의 거리(length of physical link)) / s(매체의 전파 속도) (210^8 m/sec ~ 310^8 m/sec)

5. 전체 노드 지연(nodal delay)

nodal delay = dproc + dqueue + dtrans + dprop

  • transmission delay : 이미 결정되어 있는 프로토콜. 어떤 식으로 신호를 변환할지 결정되어 있다. 패킷의 길이에 따라 달라지겠지만 IP에 따라 패킷의 크기가 고정되어 있기에 값이 크게 달라지지 않는다.

  • propagation delay : 라우터들의 물리적인 거리를 바꾸지 않는 이상 바뀌지 않음. 거리 대비 커진다. 클 수도 있지만 고정된 값이기 때문에 예측하기 쉽다.

  • nodal processing : nodal processing은 CPU 노드에 따라 달라지지만 워낙 작은 값이라 크게 신경 안써도 된다.

  • queueing delay는 혼자 데이터를 보내는 것이 아니라 수많은 end systems이 언제 어디로 보낼지 예측 불가능하다. 가장 가변적이다.(4가지 delay 중 가장 가변적인 것은 queueing delay이다.)

6. 트래픽 강도(traffic intensity)

큐잉 지연의 정도를 측정, 큐가 아주 커서 무한대 비트를 저장한다고 가정
La / R(능력이 R인데 단위시간마다 La만큼 데이터를 처리해달라고 요청)

L: 패킷 길이(bits)
a: 패킷이 큐에 도착하는 평균율(packets/sec)
R: 링크 전송률로 비트가 큐에서 나가는 비율(bits/sec)
(0에 가까우면 평균 큐잉 지연이 작은거고 1에 가까우면 큐잉 지연은 매우 큰거다. 1보다 커지면 서비스 용량을 초과하여 평균 지연이 무한대로 커진다.)

※ 엄청나게 delay가 늘어나는 것보단 버리는 게 낫다.

7. 패킷 손실(packet loss)


Packet loss는 위와 같이 라우터의 buffer가 가득차서 packet이 들어갈 공간이 없을 때 버려지는 현상이다. 잃어버린 패킷은 이전 노드나 출발지 노드에서 재전송 될 수 있다.

8. 처리율(throughput)

단위시간 동안 sender와 receiver가 교환된 데이터의 양을 말한다. 정확히 말하자면 데이터를 보내는 source가 목적지를 향해서 데이터를 보냈고, source가 받은 데이터의 양을 말한다. throughput은 link의 bandwidth가 고정되었다 하더라고, 망상태에 따라(사용자가 얼마나 몰렸느냐) 달라지기도 한다. 처리율은 한마디로 성능이라고 할 수 있다.

<순간적인 처리율(instantaneous throughput)>

주어진 순간에 전송 비율을 말한다.
(파일 수신 시 파일을 수신하는 비율)

<평균 처리율(average throughput)>

주어진 시간 동안의 전송 비율
(파일의 크기가 F이고 모두 수신하는데 T초가 걸리면 F/T(비트/초)가 평균 처리율이다.)

bottleneck link(병목현상)

위 그림처럼 네트워크의 각 link의 capacity가 다를 수 있다. 이런 상황에서 자기가 가지고 있는 capacity를 낭비하거나 패킷이 버려지는 경우가 생길 수 있다. 이를 어떻게 하면 해결할 수 있을까? 가장 좁은 길을 파악해서 그 좁은 길의 용량을 기준으로 그 용량만큼 보내면 된다. 가장 좁은 길(성능이 가장 낮은 길(link))을 bottleneck(병목)이라고 한다. 결국 전체적인 네트워크의 link의 성능은 이 bottleneck link가 좌지우지한다.

※ 데이터를 보내는 입장에서는 데이터를 보낼 때 bottleneck이 어딘지 모른다. 이런 문제를 해결하기 위해 TCP가 있다. 데이터를 보낼 때마다 망상태를 보고 보낼 데이터를 결절한다.

네트워크는 여러사람과 공유하여 사용한다. 네트워크가 안되는 원인을 알아보자.(성능 저하)

  • link capacity가 작아서
  • core network 상에 있는 어떤 라우터가 라우터의 link를 여러 사용자들에게 공유하는데, 내 지분이 너무 작아서

그렇다면 end system과 ens system 사이의 성능은 누가 결정할까? 서버의 네트워크, source의 네트워크 destination의 네트워크 또는 공유하는 네트워크에 대한 내 지분의 최소값에 따라 좌지우지하게 된다. 보통 core는 좋은 걸 쓰기 때문에 나머지 부분에서 결정된다. 그래서 Rc나 Rs가 대부분 bottleneck이 된다.(link capacity에 의해 좌지우지됨.)

0개의 댓글