사전 대역폭
용어함정

대역폭

gabury1

대역폭은 분야마다 서로 다른 양을 가리키는 말입니다. 전파와 전자 회로를 다루는 분야에서는 신호가 차지하는 주파수 범위의 폭을 뜻합니다. 네트워크와 컴퓨터를 다루는 분야에서는 한 경로가 1초 동안 나를 수 있는 데이터의 양을 뜻합니다. 그래서 같은 장비를 두고도 누구는 헤르츠로 답하고 누구는 초당 비트로 답합니다.

쉽고 빠른 이해

대역폭은 한 낱말이 서로 다른 값을 부르는 경우입니다. 같은 무선랜 연결을 두고 전기 공학자는 25메가헤르츠를, 네트워크 엔지니어는 초당 11메가비트를, 사용자는 자기가 잰 초당 8메가비트를 댈 수 있습니다.

이걸 모르면 숫자를 엉뚱하게 견줍니다. 헤르츠와 초당 비트는 서로 바꿔 적을 수 있는 단위가 아닙니다. 회선이 낼 수 있는 최대치와 방금 잰 속도도 다른 값입니다.

대역폭이라는 말을 만나면 이렇게 가릅니다.

  1. 단위를 봅니다. 헤르츠면 주파수 폭이고, 초당 비트나 초당 바이트면 전송률입니다. 시간이면 주기마다 쓸 수 있는 몫입니다. 리눅스가 프로세서 몫에 이 말을 쓸 때가 그렇습니다
  2. 전송률이면 경로가 낼 수 있는 최대치인지, 방금 잰 속도인지, 운영자가 걸어 둔 상한인지 봅니다. 잰 속도는 처리량이라 부르면 덜 헷갈립니다
  3. 비트인지 바이트인지 봅니다. 1바이트는 8비트입니다

대가는 말이 짧은 대신 뜻을 문맥에 떠넘긴다는 것입니다. 그래서 네트워크 용량을 정의하는 문서 중에는 이 말을 피하고 「용량」이라고 쓰는 것도 있습니다.

상세

대역폭이라는 말이 가리키는 양은 셋입니다. 주파수 범위의 폭, 데이터 전송률, 그리고 주기마다 쓸 수 있는 시간의 몫입니다. 재는 대상이 다르고 단위도 다릅니다. 무엇인지는 말하는 사람이 어느 분야에 있느냐로 갈립니다.

전송률은 한 번 더 갈립니다. 경로가 낼 수 있는 최대치를 부르기도 하고, 실제로 낸 값을 부르기도 하고, 운영자가 걸어 둔 상한을 부르기도 합니다.

flowchart TD
    W["대역폭이라는 말"] --> F["주파수 범위의 폭 · 헤르츠 · 25 MHz"]
    W --> R["데이터 전송률 · 초당 비트 · 초당 바이트"]
    W --> T["주기마다 쓸 수 있는 시간의 몫 · 시간 단위"]
    R --> C["경로가 낼 수 있는 최대치 · 11 Mbit/s"]
    R --> M["실제로 낸 값 · 잰 8 Mbit/s"]
    R --> L["걸어 둔 상한"]

이렇게 겹쳐 쓰이다 보니 네트워크 용량을 정의한 RFC(Request for Comments) 중에는 이 말을 일부러 피하는 것도 있습니다. 그 문서는 대역폭 대신 용량(capacity)이라는 말을 씁니다. 그 문서는 용량이 덜 겹쳐 쓰여서 재는 것을 더 잘 드러낸다고 봅니다.

주파수 범위의 폭

주파수는 신호가 1초에 몇 번 진동하는지를 셉니다. 단위는 헤르츠(Hz)입니다. 이 분야에서 대역폭은 주파수 범위의 아래 끝과 위 끝 사이의 차이입니다.

장치를 두고 말할 때는 그 장치가 정해진 성능을 지키는 주파수 범위의 폭입니다. 증폭기가 어느 주파수부터 어느 주파수까지 신호를 흐트러뜨리지 않고 키우는지가 이 값입니다. 전파를 두고 말할 때는 한 송신이 차지하는 주파수 범위의 폭입니다.

전파 규제는 이 폭을 두 가지로 잡습니다. 필요 대역폭은 요구된 속도와 품질로 정보를 보내는 데 딱 충분한 폭입니다. 한 송신의 전력은 주파수 축 위에 퍼져 있어서 양 끝 밖에도 조금씩 남습니다. 점유 대역폭은 양 끝 밖에 남는 전력이 정해진 비율이 되도록 그 두 끝을 잡은 폭이고, 따로 정하지 않으면 그 비율은 한쪽마다 전체 전력의 0.5%로 잡습니다.

802.11b 무선랜 링크의 대역폭을 물으면 전기 공학자는 25메가헤르츠라고 답할 수 있습니다. 이 값은 그 링크가 차지하는 주파수의 폭입니다.

한자로 적으면 대역폭(帶域幅), 띠처럼 이어진 주파수 구간의 폭입니다. 국어사전에 실린 뜻도 이 하나뿐이고, 같은 뜻의 말로 띠폭을 듭니다.

경로가 낼 수 있는 최대치

네트워크에서 대역폭은 링크나 경로가 1초 동안 나를 수 있는 비트 수의 최대치입니다. 단위는 초당 비트(bit/s)입니다. 광회선 규격인 OC-3(Optical Carrier level 3) 링크는 초당 155.520메가비트를 낼 수 있습니다. 802.11b 링크의 대역폭을 물으면 네트워크 엔지니어는 대개 초당 11메가비트라고 답합니다.

경로 하나의 최대치는 그 경로 위에서 가장 작은 링크의 값으로 정해집니다. 링크가 여럿 이어져 있어도 가장 좁은 링크보다 많이 나를 수는 없습니다.

실제로 낸 값과 걸어 둔 상한

컴퓨터 안에서는 같은 말이 바이트 단위로 쓰이는데, 세는 것이 최대치가 아닐 때가 많습니다. 메모리 대역폭은 메모리에서 옮긴 바이트 수를 걸린 시간으로 나눠 잽니다. 메모리 벤치마크 STREAM 은 이 값을 지속적으로 낼 수 있는 값으로 재서 초당 메가바이트로 적습니다. 장치가 낼 수 있는 최대치가 아니라 실제로 낸 값입니다.

세는 방식도 갈립니다. 1초 동안 100만 바이트를 읽어 다른 곳에 쓴 경우를 봅니다. 옮긴 바이트만 세면 초당 1메가바이트입니다. 읽은 바이트와 쓴 바이트를 따로 더해 세면 그 두 배가 됩니다.

사용자도 자기가 잰 속도를 대역폭이라고 부릅니다. 802.11b 링크의 대역폭을 물으면 사용자는 관측한 초당 8메가비트를 댈 수 있습니다. 이 값은 링크가 낼 수 있는 최대치가 아니라 그 순간 관측한 전송률입니다. 처리량과 겹치는 쓰임이고, 처리량은 일정 시간 동안 실제로 옮긴 양입니다. 둘을 가르는 판정은 「경계」 절에 있습니다.

운영자가 걸어 둔 상한에도 같은 말이 붙습니다. 리눅스의 cgroup(control group)은 프로세스 묶음마다 자원 몫을 나눠 주는 커널 기능입니다. 이 기능은 장치별 읽기·쓰기 대역폭의 상한을 초당 바이트로 겁니다. 한 장치에 읽기 상한을 초당 2,097,152바이트로 두는 식입니다.

주기마다 쓸 수 있는 시간의 몫

같은 cgroup 은 CPU(Central Processing Unit, 중앙 처리 장치) 시간에도 이 말을 붙입니다. 이때 대역폭은 정해진 주기마다 쓸 수 있는 CPU 시간의 상한입니다. 옮기는 데이터가 아니라 시간의 몫을 셉니다. 그래서 단위도 헤르츠나 초당 바이트가 아니라 시간입니다.

상한은 $MAX $PERIOD 두 값으로 적습니다. 주기가 $PERIOD 이고, 그 주기 안에서 쓸 수 있는 시간이 $MAX 입니다. 두 값 다 시간이라 단위가 같습니다. 주기와 몫을 어느 시간 단위로 적는지는 자료에 없습니다(미확인).

$MAX 자리에 숫자 대신 max 를 적으면 상한을 걸지 않는다는 뜻입니다. 기본값이 그 꼴입니다. 주기는 정해져 있고 상한은 없습니다.

맥락별 뜻

이 절은 대역폭이 맥락마다 무엇을 세는지를 다룹니다. 맥락마다 그 분야의 정의 문서를 하나씩 댑니다. 세는 대상과 단위가 어떻게 갈리는지 봅니다.

표에 나오는 IP(Internet Protocol, 인터넷 프로토콜) 계층 비트부터 풀면, 받은 패킷의 옥텟 수에 8 을 곱해 센 값입니다. 옥텟은 8비트 묶음이고 곧 1바이트입니다. 그래서 초당 100메가비트는 초당 12.5메가바이트입니다.

맥락 뜻 출처
전자 장치 장치가 정해진 성능을 지키는 주파수 범위의 위아래 끝 차이. 단위는 헤르츠 ATIS(Alliance for Telecommunications Industry Solutions) 통신 용어집 「bandwidth」 1·2번 뜻
전파 규제 필요 대역폭은 요구된 속도와 품질로 정보를 보내는 데 딱 충분한 주파수 폭 ITU(International Telecommunication Union, 국제전기통신연합) 전파규칙의 정의를 옮긴 미국 연방규정 47 CFR(Code of Federal Regulations) §2.1
통신 채널 일반 일정 시간에 채널을 지나갈 수 있는 정보의 양. 대개 초당 비트로 적음 ATIS 통신 용어집 「bandwidth」 3번 뜻
IP 네트워크 혼잡이 없을 때 그 링크로 정확히 전달할 수 있는 IP 계층 비트의 최대 수. 재는 구간의 길이로 나눠 적음. 이 값을 용량이라 부름 RFC 5136 §2.3.2 · §2.3.3
메모리 메모리에서 옮긴 바이트를 걸린 시간으로 나눈 값. 지속적으로 낼 수 있는 값을 잼. 단위는 초당 메가바이트 메모리 벤치마크 STREAM 공식 페이지
리눅스 저장장치 입출력 cgroup 이 장치마다 거는 초당 읽기 바이트·쓰기 바이트의 상한 리눅스 커널 문서 cgroup-v2 io.max
리눅스 CPU 스케줄링 cgroup 이 정해진 주기마다 쓸 수 있게 허락하는 CPU 시간의 상한. 주기와 몫을 같은 시간 단위로 적음 리눅스 커널 문서 cgroup-v2 cpu.max
사용자의 말 자기가 관측한 전송 속도 RFC 5136 §3.4

위 두 줄은 주파수 폭입니다. 리눅스 CPU 스케줄링 줄은 주기마다 쓸 수 있는 시간이고, 나머지 줄들은 시간당 옮기는 양입니다. 주파수 폭 뜻과 전송률 뜻은 한 통신 용어집 안에 번호만 달리해 나란히 실려 있습니다.

옮기는 양을 세는 줄들도 무엇을 세는지가 또 갈립니다. IP 네트워크 줄은 낼 수 있는 최대치를 적고, 메모리 줄은 실제로 낸 값을 잽니다. 저장장치 줄은 넘지 말아야 할 상한을 겁니다. 같은 초당 바이트라도 하나는 측정값이고 하나는 설정값입니다.

배경

전송 시스템을 서로 견주려면 잣대가 하나 있어야 했습니다. 이 시스템으로 정보를 얼마나 보낼 수 있느냐입니다. 그러려면 그 양을 무엇이 정하는지부터 알아야 했습니다.

1928년 하틀리(R. V. L. Hartley)가 그 답을 냈습니다. 전송이 좁은 주파수 범위로 묶인 시스템에서는 정보를 보낼 수 있는 최대 속도가 그 범위의 폭에 비례합니다. 보낼 수 있는 정보의 총량은 그 폭에 쓸 수 있는 시간을 곱한 값에 비례합니다. 하틀리는 이 곱을 전송 시스템을 견주는 잣대로 들었습니다.

1948년 섀넌(C. E. Shannon)이 잡음을 넣어 이 관계를 식으로 세웠습니다. 주파수 폭이 W, 평균 송신 전력이 P, 열 때문에 생기는 잡음의 전력이 N 인 채널을 생각합니다. 이 채널로 보낼 수 있는 속도의 상한은 초당 C = W log2((P + N) / N) 비트입니다. 정보를 신호로 바꾸는 방식을 충분히 정교하게 하면 이 속도까지는 오류를 얼마든지 작게 줄여 보낼 수 있습니다. 이 속도를 넘으면 어떤 방식으로도 오류가 남습니다.

섀넌이 이 상한에 붙인 이름이 채널 용량입니다. 「경계」 절에서 말하는 용량은 IP 계층에서 센 비트 수라 다른 양입니다.

주파수 폭이 넓을수록 전송률의 상한이 올라갑니다. 두 양은 이렇게 묶여 있습니다. 다만 두 뜻 가운데 어느 쪽에 이 낱말이 먼저 붙었는지는 알려져 있지 않습니다(미확인).

경계

속도 측정에서 사용자가 잰 초당 8메가비트도 대역폭일까요? 네트워크에서 말하는 대역폭, 곧 링크가 낼 수 있는 최대치로는 아닙니다. 그 값은 그 시간 동안 실제로 얻은 전송률입니다. 처리량에 속합니다.

같은 링크를 두고 무엇을 세는지 갈라 보면 판정이 나옵니다. 표에 나오는 혼잡 제어는 길이 붐비면 보내는 속도를 스스로 줄이는 방식입니다.

이름 무엇을 세나
용량 혼잡이 없을 때 정해진 구간 동안 링크로 정확히 받을 수 있는 IP 계층 비트의 최대 수 ÷ 구간 길이
사용량 같은 구간 동안 어느 출발지에서든 링크로 정확히 받은 IP 계층 비트의 실제 수 ÷ 구간 길이
사용률 사용량 ÷ 용량. 0 이면 아무것도 안 쓰는 것이고 1 이면 링크가 꽉 찬 것
가용 용량 용량 × (1 − 사용률). 붐비는 링크에서 남은 몫
BTC(Bulk Transport Capacity, 대량 전송 용량) 혼잡 제어를 하는 전송 연결 하나가 보낸 고유 데이터 비트 ÷ 걸린 시간. 헤더와 재전송분은 세지 않음

용량과 사용량을 가르는 것은 최대치냐 실제 수냐입니다. 사용자가 잰 값은 맨 아래 줄에 가깝습니다. 많은 응용에서는 이 값이 사용자가 느끼는 성능을 좌우합니다. 파일 전송이나 큰 이미지를 내려받는 웹이 그런 응용입니다.

잰 값은 용량에서 여러 번 깎여 나온 값입니다. 다른 흐름이 같은 링크를 쓰고 있으면 남은 몫은 가용 용량뿐입니다. 헤더와 재전송분은 고유 데이터가 아니라서 세지 않습니다.

flowchart TD
    A["용량 · 링크가 낼 수 있는 최대치"] -->|"다른 흐름이 쓰는 몫을 뺀다"| B["가용 용량"]
    B -->|"헤더와 재전송분은 세지 않는다"| C["고유 데이터만 센 전송률"]
    C -->|"확인 한도와 왕복 시간에 묶인다"| D["사용자가 잰 값"]

지연도 잰 값을 깎습니다. 지연은 데이터가 출발해서 도착하기까지 걸리는 시간입니다. 왕복 시간은 보낸 데이터에 대한 확인이 되돌아오기까지 걸리는 시간입니다.

TCP(Transmission Control Protocol, 전송 제어 프로토콜)의 성능은 전송률 자체가 아니라 전송률과 왕복 시간을 곱한 값에 달려 있습니다. 이 곱의 이름은 대역폭-지연 곱(bandwidth-delay product)입니다. 이름에 든 지연은 편도 지연이 아니라 왕복 시간을 가리킵니다. 이 값은 회선을 가득 채우는 데 필요한 데이터의 양을 잽니다.

송신 측은 상대가 받았다는 확인이 오기 전까지 내보낼 수 있는 양에 한도를 둡니다. 이 한도가 대역폭-지연 곱보다 작으면, 한도를 왕복 시간으로 나눈 값이 처리량의 상한이 됩니다.

sequenceDiagram
    participant 송신측
    participant 수신측
    loop 왕복마다
        송신측->>수신측: 한도만큼 내보낸다
        Note over 송신측: 한도가 찼다. 확인을 기다린다
        수신측-->>송신측: 확인이 돌아온다
    end

대륙을 가로지르는 기간 회선의 왕복 시간이 60밀리초라고 합시다. 확인 없이 보낼 수 있는 양이 64킬로바이트로 묶여 있으면 전송률은 초당 약 1.1메가바이트에서 막힙니다. 경로의 이론상 전송률이 얼마나 높든 같습니다. 대역폭을 넓혀도 왕복 시간이 그대로면 이 상한은 안 움직입니다.

대부분의 TCP 구현은 동작 범위의 일부 구간에서 전송률에 비례해 움직이지 않는다는 근거가 있습니다. 링크 전송률을 올리면 전체 처리량이 오히려 낮아지는 구간이 생길 수 있습니다. 대역폭과 처리량은 같이 오르내린다고 가정할 수 있는 값이 아닙니다.

관련 항목

대역폭과 함께 네트워크 성능을 재는 지표

처리량 · 지연 · 왕복 시간 · 사용률 · 패킷 손실 · 지터 · 오류율 · IOPS

대역폭이 병목으로 바뀌는 자원

병목 · 포화 · CPU · 메모리 · 디스크 · 디스크 입출력 · 네트워크 · 버스 · 자원

대역폭을 아껴 쓰는 방법

캐싱 · CDN · 압축 · 페이지네이션 · 스트리밍

대역폭과 지연을 함께 다루는 전송 개념

BDP · TCP · 슬라이딩 윈도 · 혼잡 제어 · 재전송 · 확인응답

주파수 폭으로서의 대역폭이 기대는 신호 개념

주파수 · 헤르츠 · 채널 · 변조 · 신호 대 잡음비 · 채널 용량

전송률을 적는 단위

비트 · 바이트 · 옥텟 · 초당 비트

대역폭에 상한을 거는 수단

cgroup · 스로틀링 · 속도 제한 · 트래픽 셰이핑

대역폭이 매겨지는 네트워크 구간

링크 · 경로 · 링크 계층 · IP · 트래픽

다른 이름: bandwidth