Infrastructure/Networking

[통신 네트워크 설계] Network Performance

EddyLee 2024. 3. 11. 21:54

오늘은 어떤 것을 설계할 때 Technical Goals와 그것에 영향을 주는 여러 부수적인 performance factors를 정리해보도록 하자.

 

Technical Goals

1. Scalability (확장성)

: (정의) 네트워크가 증가하는 규모나 요구에 맞게 효율적으로 확장 가능한 능력. 새로운 사용자나 데이터 양이 증가할 때 시스템이 유연하게 대응할 수 있어야 한다.

: (예시) 만약 내가 만든 네트워크를 50명이 사용 중이라면, 10명이 추가돼도 네트워크가 안정적으로 잘 service를 제공할 수 있는가 (이전 네트워크와 동일한 퍼포먼스를 보이는가)

2. Availability

: (정의) 시스템이 항상 사용 가능한 상태를 유지하는 데에 중점. 장애 또는 고장 시에도 서비스가 지속적으로 제공되야함.

: (예시) 장애가 발생했는데도 네트워크를 continuous하게 이용할 수 있는가?

 

: Five Nines라는 개념이 존재하는데, 99.999%의 availability를 의미함. 

: error가 1hrs/year이라면 FiveNines를 만족함. - error 시간이 늘어나면 점점 availability는 낮아짐

: Five Nines를 만족하기 위해서 Triple Redundancy 해야 한다는 주장이 나옴. 3개의 ISP로부터 네트워크를 제공 받는 것을 의미함. 가격이 굉장히 비싸지만, 하나의 ISP에서 장애가 발생해도 다른 ISP로부터 네트워크를 안정적으로 유지할 수 있음.

 

: Availability를 측정하는 방법은 Mean TIme Between Failure (MTBF)과 Mean Time To Repair (MTTR)로 측정함.

MTBF / (MTBF + MTTR)

3. Performance

: (정의) 네트워크가 작업을 효율적으로 처리하고 응답 시간이 최소화되는 능력

: (예시) 네트워크의 KPI(Key Performance Indicator)

4. Security

: (정의) 외부 침입, 데이터 유출 및 다른 보안 위협으로부터 시스템을 보호하는 것.

: (예시) 내가 다른 디바이스한테 msg를 보낼 때 3rd party가 content에 access 할 수 없게 하는 능력

5. Manageability

: (정의) 시스템을 효과적으로 관리하고 모니터링하기 위한 기능을 갖추는 것

: (예시) 유지보수, 업그레이드, 문제 해결 능력

6. Usability

: (정의) 사용자가 시스템을 쉽게 이해하고 사용할 수 있는 능력

: (예시) GUI, easily usable

7. Adaptability

: (정의) 변화하는 환경에 적응할 수 있는 능력

: (예시) 다른 시나리오에서도 견고하게 네트워크를 운용할 수 있는 능력

8. Affordability

: (정의) 비용 효율성이 좋은지에 대한 능력

: (예시) 예산 내에 네트워크가 작동하는지

 

 

network performance라는 단어는 참으로 추상적이다.

그 안에 무엇이 있는지 확인해보자.

 

Network performance factors

1. Bandwidth

: 네트워크에서 전송할 수 있는 데이터 양을 나타내는 측정치. bits per second로 표시

2. Throughput

: 실제로 전송된 데이터 양

3. Bandwidth utilization

: 네트워크 대역폭 중에서 실제로 사용되고 있는 비율. 전체 대역폭 중에서 얼마나 효과적으로 사용되는지 평가.

4. Offered load

: 네트워크에 주어진 일정 기간 동안의 트래픽 양을 의미, 이는 네트워크에 얼마나 많은 데이터가 생성되었는지를 나타낸다.

: (예시) 7명이 각 1Mbps를 사용중이라고 가정했을 때, 어떤 기업에서 이 group은 5Mbps만 주어졌다고 하면, 해당 group은 이것을 지켜야 함. 즉, 제공된 maximum amount가 얼마냐를 뜻하는 것

5. Accuracy

: 데이터 전송이나 처리 과정에서 오차 없이 얼마나 정확하게 수행되는지를 나타내는 지표

6. Efficiency

: 주어진 자원을 최대한으로 활용하여 작업을 수행하는 능력. 높은 효율성은 자원의 효율적인 사용을 의미한다.

: How much overhead is required to deliver an amount of data

 

: 즉, 데이터를 전송하는 데에 오버헤드가 얼마나 많이 소모되는가를 확인하는 수치.

: 패킷의 크기가 클수록 efficiency가 더 좋음. (오버헤드가 그만큼 더 줄어들기 때문에)

위에는 extra bandwidth consumption이 더 자주 일어나고 있으므로, efficiency가 낮다.

하지만 그렇다고 크게크게 보내기엔.. 조그만 부분이 망가지면 그 패킷 전체가 박살나기 때문에 단점은 당연히 존재.

 

7. Delay (latency) and delay variation

: 데이터가 얼마나 지연되는지, Jitter가 얼마인지. (Jitter가 낮을수록 좋음)

 

: propagation delay + transmission delay + packet-switching delay + queuing delay

: 총 4개의 delay가 존재함. -> 데통에서 확인하시길

 

Queuing delay와 bandwidth utilization의 관계.

큐가 깊어지면 왜 BW utilization이 좋아지는 것일까?

 

왜냐하면, 큐가 깊어질수록 더 많은 패킷을 보낼 수 있기 때문.

만약 BW util이 1Mbps일 때, queue 크기가 1M -> great한 상태 / 0.5M -> 더 안 좋은 상태.

 

처음엔 왜그러지!? 했는데 돌아보니 참 쉬운 개념.

 

 

8. Response Time

: 데이터를 전송했을 때 해당 작업이 완료되고 결과를 반환하는 데에 걸리는 전체 시간. 낮은 응답 시간은 빠른 시스템 응답을 나타낸다.

 

Bandwidth vs Throughput

Bandwidth는 data carrying capacity of a circuit

(bps로 나타냄)

Throughput은 quantity of error free data transmitted per unit of time

(bps, Bps, packets per second (pps)로 나타낸다)

 

wireless 환경에선 Throughput은 BW보다 항상 작다.

왜냐하면, interference때문에 대역폭에 맞출 수가 없음.

 

 

* Throughput에 영향을 주는 다른 요인들

size of packets

inter-frame gaps between packets

pps ratings of devices that forward packets

protocols

network design

distance

.. 등등

 

 

Throughput vs Goodput

throughput은 전체 데이터 양을 포함하여 네트워크 또는 시스템의 처리량을 측정.

goodput은 실제로 사용 가능한 유용한 데이터만을 고려하여 얼마나 효과적으로 데이터가 전송되었는지를 나타낸다.

 

goodput은 실제 응용 프로그램에 도달하는 유효한 데이터 양을 측정하는 데 더 중요한 지표일 수 있다.

즉, application-layer에서의 throughput으로 봐도 무방함.

 

 


=> 네트워크를 디자인해주는 회사를 설립했을 때 PDIOO를 기억하자.

1. customer의 requirement를 파악할 것

2. logical design을 할 것 (w/ technical goals and performance metrics)

3. physical design을 할 것 (이때는 실제로 network를 설립해보는 것임

4. Test할 것 (잊지 말자, requirement를)

5. Optimize할 것 (문제가 발생하면 다시 처음부터 해결)

 

최종적인 목표는 technical goals를 모두 만족하는 그런 네트워크.