4P by neo 10달전 | favorite | 댓글 1개
  • Go 언어로 작성된 TCP 프록시로, 다양한 가변 네트워크 지연 시간을 시뮬레이션 가능

기본 사용 예시

  • 포트 2000에서 리스닝하는 새 인스턴스를 생성하여 TCP 트래픽을 localhost:80으로 프록시하고, 기본 지연 시간은 100ms, 사인파 진폭은 100ms(최대 추가 지연 시간 200ms, 최소 0), 주기는 1분:
    speedbump --latency=100ms --sine-amplitude=100ms --sine-period=1m --port=2000 localhost:80  
    
  • 또는 kffl/speedbump 컨테이너 이미지를 사용하여 speedbump을 실행할 때:
    docker run --net=host kffl/speedbump:latest --latency=100ms --sine-amplitude=100ms \  
      --sine-period=1m --port=2000 localhost:80  
    
  • 기본 지연 시간이 300ms이고, 아래 그래프에 표시된 것처럼 진폭 200ms, 주기 2분의 톱니파 지연 시간을 가진 새 인스턴스를 생성:
    speedbump --latency=300ms --saw-amplitude=200ms --saw-period=2m --port=2000 localhost:80  
    
  • 여러 지연 시간 합산을 동시에 실행하는 것이 가능함.
  • Speedbump은 lib 패키지를 통해 Go 라이브러리로 사용될 수 있음.

GN⁺의 의견:

  • Speedbump는 네트워크 지연 시간을 시뮬레이션하는 데 유용한 도구로, 네트워크 기반 애플리케이션의 성능을 테스트하고 최적화하는 데 도움이 될 수 있음.
  • Go 언어로 작성되어 있어 Go 개발자들에게 친숙하며, 다양한 지연 시간 패턴을 쉽게 시뮬레이션할 수 있는 기능을 제공함.
  • 오픈 소스이며 Apache 2.0 라이선스를 따르므로, 커뮤니티의 기여를 통해 지속적으로 개선될 가능성이 있음.
Hacker News 의견
  • ActivityPub 구현을 다양한 네트워크 크기와 조건에서 테스트하기 위해 비슷한 작업을 조사했음. tc 명령어를 사용하여 특정 인터페이스에 지연을 추가하는 방법을 배웠고, 이는 Docker 컨테이너에서도 잘 작동함. 이미 많은 시스템에 설치되어 있을 수 있음.
    • 예시 명령어: tc qdisc add dev eth0 root netem delay 100ms
  • Netflix에서 'latency monkey'라고 부르는 도구를 개발함. 하류 서비스가 느려지는 것을 감지하는 것이 서비스가 사용 불가능할 때 감지하는 것보다 훨씬 어려움. 이 도구는 패킷을 일정 비율로 떨어뜨려 재전송을 유도하고, 이로 인해 패킷이 지연되거나 순서가 뒤바뀌게 함. 네트워크 접근에 대한 오류 처리 코드에서 많은 문제를 발견함.
  • 인터넷 어플리케이션을 작업하는 모든 소프트웨어 엔지니어는 이와 같은 도구를 일상적으로 사용해야 함. QUIC과 TCP 모두 필요하며, DNS를 포함한 모든 UDP를 캐치할 수 있어야 함. 개발자들이 고성능 컴퓨팅 환경을 사용하지 않으면 웹앱의 90%가 사라질 것이라고 확신함.
  • 많은 앱들이 간헐적인 네트워크 연결 상태에서 성능이 떨어짐. 앱 개발자들이 시뮬레이션된 간헐적 연결성을 테스트함으로써 다른 이들을 도울 수 있음. 많은 앱들이 이메일 클라이언트처럼 '발송 대기함' 기능이 부족함. 재난 구호 상황에서 일반적인 연결 문제를 시뮬레이션하기 위한 참조 toxiproxy '테스트 케이스 변조기'를 누가 개발할 수 있을지에 대한 질문이 있음.
  • Mac에서는 내장 도구를 사용하여 비슷한 작업을 수행할 수 있음. 네트워크 연결 속도를 시뮬레이션하기 위한 명령어 예시 제공.
  • Mac에서 느린 네트워크를 시뮬레이션하고자 할 때 Network Link Conditioner를 발견함. 프록시 설정이나 기타 설정 없이 사용할 수 있으며, Xcode 추가 도구에서 설치해야 함.
  • 오랫동안 활동하지 않았지만, 'comcast'라는 이름이 많은 것을 시사함.
  • Windows에서 사용해본 비슷한 도구로 'clumsy'가 있음.
  • FreeBSD에도 'dummynet'이라는 기능이 있어서 ipfw의 일부로 지연, 대역폭 제한, 큐 크기, 패킷 손실을 주입할 수 있음. MacOS에서와 같은 기능임.
  • 첫 직장에서 매니저가 FreeBSD IPFW 방화벽을 설정하여 ICMP 응답을 느리게 만들었던 일을 잊을 수 없음. 누군가가 핑을 보낼 때마다 응답 시간이 가장 높게 보였음. 그 매니저는 장난꾸러기였음.