4 पॉइंट द्वारा GN⁺ 2024-01-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Go में लिखा गया एक TCP proxy, जो विभिन्न प्रकार की परिवर्तनीय network latency को simulate कर सकता है

बुनियादी उपयोग उदाहरण

  • पोर्ट 2000 पर listen करने वाला एक नया instance बनाकर TCP traffic को localhost:80 पर proxy करें, जहाँ default latency 100ms है, sine wave amplitude 100ms है (अधिकतम अतिरिक्त latency 200ms, न्यूनतम 0), और period 1 मिनट है:
    speedbump --latency=100ms --sine-amplitude=100ms --sine-period=1m --port=2000 localhost:80  
    
  • या kffl/speedbump container image का उपयोग करके speedbump चलाते समय:
    docker run --net=host kffl/speedbump:latest --latency=100ms --sine-amplitude=100ms \  
      --sine-period=1m --port=2000 localhost:80  
    
  • default latency 300ms के साथ एक नया instance बनाएं, जिसमें नीचे दिए गए graph की तरह amplitude 200ms और period 2 मिनट की sawtooth wave latency हो:
    speedbump --latency=300ms --saw-amplitude=200ms --saw-period=2m --port=2000 localhost:80  
    
  • एक ही समय में कई latency के योग को चलाना संभव है.
  • Speedbump को lib package के माध्यम से Go library के रूप में इस्तेमाल किया जा सकता है.

GN⁺ की राय:

  • Speedbump network latency को simulate करने के लिए एक उपयोगी tool है, जो network-आधारित applications की performance test और optimization में मदद कर सकता है.
  • यह Go में लिखा गया है, इसलिए Go developers के लिए परिचित है, और विभिन्न latency patterns को आसानी से simulate करने की क्षमता देता है.
  • यह open source है और Apache 2.0 license का पालन करता है, इसलिए community के योगदान के जरिए इसके लगातार बेहतर होने की संभावना है.

1 टिप्पणियां

 
GN⁺ 2024-01-17
Hacker News राय
  • ActivityPub implementation को अलग-अलग network size और conditions में test करने के लिए इसी तरह के काम को देखा था। tc command का इस्तेमाल करके किसी खास interface पर latency जोड़ना सीखा, और यह Docker container में भी अच्छी तरह काम करता है। यह कई systems में पहले से installed भी हो सकता है.
    • उदाहरण command: tc qdisc add dev eth0 root netem delay 100ms
  • Netflix ने latency monkey नाम का एक tool बनाया था। downstream services के धीमे होने का पता लगाना, service पूरी तरह unavailable होने का पता लगाने से कहीं ज़्यादा मुश्किल है। यह tool packets को एक तय अनुपात में drop करता है ताकि retransmission हो, और इससे packets delay हो सकते हैं या उनका order बदल सकता है। network access के लिए error handling code में इससे बहुत-सी समस्याएँ मिलीं.
  • Internet applications पर काम करने वाले हर software engineer को इस तरह के tools रोज़मर्रा में इस्तेमाल करने चाहिए। QUIC और TCP दोनों की ज़रूरत है, और DNS सहित सभी UDP को capture कर पाना चाहिए। अगर developers high-performance computing environments का इस्तेमाल न करें, तो मुझे यक़ीन है कि 90% web apps गायब हो जाएँगी.
  • बहुत-से apps intermittent network connectivity में खराब प्रदर्शन करते हैं। app developers simulated intermittent connectivity को test करके दूसरों की मदद कर सकते हैं। कई apps में email client जैसी outbox सुविधा की कमी होती है। यह सवाल उठाया गया कि disaster relief situations में आम connectivity समस्याओं को simulate करने के लिए reference toxiproxy test case mutator कौन बना सकता है.
  • Mac पर built-in tools का उपयोग करके ऐसा ही काम किया जा सकता है। network connection speed को simulate करने के लिए command examples दिए गए.
  • Mac पर slow network simulate करना हो तो Network Link Conditioner उपयोगी है। इसे proxy settings या दूसरी settings के बिना इस्तेमाल किया जा सकता है, और इसे Xcode additional tools से install करना पड़ता है.
  • काफ़ी समय से सक्रिय नहीं हूँ, लेकिन comcast नाम अपने-आप में बहुत कुछ कह देता है.
  • Windows पर इस्तेमाल किया गया ऐसा ही एक tool clumsy है.
  • FreeBSD में भी dummynet नाम की सुविधा है, जो ipfw का हिस्सा है, और इससे latency, bandwidth limits, queue size, और packet loss inject किए जा सकते हैं। यह MacOS जैसी ही क्षमता है.
  • अपनी पहली नौकरी में manager ने FreeBSD IPFW firewall को इस तरह configure किया था कि ICMP responses धीमे हो जाएँ। जब भी कोई ping भेजता था, response time सबसे ज़्यादा दिखाई देता था। वह manager बड़ा शरारती था.