대역폭을 제한하는 방법에 대한 좋은 답변은 다음과 같습니다..
대역폭은 현재 나의 가장 큰 관심사가 아닙니다. 대기 시간은 대기 시간입니다.
내 애플리케이션 서버와 해당 데이터베이스 서버가 수백 킬로미터 떨어져 있으면 어떻게 되나요?
각 IP 패킷의 예상 지연을 시뮬레이션할 수 있는 방법을 찾고 있습니다.
답변1
를 사용하여 이 작업을 수행할 수 있습니다 netem
. ~에서그들의 홈페이지:
WAN 대기 시간 시뮬레이션
이것은 가장 간단한 예입니다. 로컬 이더넷에서 나가는 모든 패킷에 고정된 양의 지연을 추가합니다.
# tc qdisc add dev eth0 root netem delay 100ms
이제 로컬 네트워크의 호스트에 대한 간단한 ping 테스트에서 100밀리초 증가가 표시됩니다. 지연 시간은 코어 클럭 해상도(Hz)에 의해 제한됩니다. 대부분의 2.4 시스템에서 시스템 클럭은 100Hz로 실행되므로 10밀리초 단위로 대기 시간이 허용됩니다. 2.6에서 이 값은 1000~100Hz의 구성 매개변수입니다.
나중 예에서는 qdisc를 다시 로드하지 않고 매개변수만 변경합니다.
실제 WAN은 가변성을 나타내므로 임의의 변형이 추가될 수 있습니다.
# tc qdisc change dev eth0 root netem delay 100ms 10ms
이로 인해 100 ± 10ms의 지연이 추가됩니다. 네트워크 지연 시간 변동은 순전히 무작위가 아니므로 시뮬레이션할 상관 값도 있습니다.
# tc qdisc change dev eth0 root netem delay 100ms 10ms 25%
이로 인해 100 ± 10ms의 지연이 추가되고 다음 무작위 요소는 이전 무작위 요소의 25%에 따라 달라집니다. 이는 실제 통계적 상관관계가 아니라 근사치입니다.
지연 시간 분포
일반적으로 네트워크의 대기 시간은 고르지 않습니다. 대기 시간의 변화를 설명하기 위해 정규 분포와 같은 것을 사용하는 것이 더 일반적입니다. netem 규칙은 테이블을 사용하여 비균일 분포를 지정할 수 있습니다.
# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal
실제 테이블(정규, 파레토, 파레토정규)은 iproute2 컴파일의 일부로 생성되어 /usr/lib/tc에 배치됩니다. 따라서 약간의 노력을 기울이면 실험 데이터를 기반으로 자신만의 배포판을 만들 수 있습니다.