• SSH session में एक single key input पर सैकड़ों packets transmit होने की घटना मिली, और उसके कारण को trace किया गया
  • tcpdump analysis में पाया गया कि ज़्यादातर packets 36-byte size के repeating messages थे, जो लगभग 20ms के interval पर हो रहे थे
  • कारण 2023 में SSH में जोड़ा गया 'keystroke timing obfuscation' feature था, जो user के input timing को छिपाने के लिए कई 'chaff' packets (SSH2_MSG_PING) भेजता है
  • इस feature को disable करने पर, या server को [email protected] extension advertise न करने के लिए बदलने पर CPU usage और bandwidth आधे से भी कम हो गए
  • यह एक उदाहरण है कि SSH के security features real-time performance महत्वपूर्ण applications (जैसे gaming) में बड़ा overhead बन सकते हैं

समस्या का पता चलना

  • SSH के जरिए चलने वाले high-performance game के TUI को test करते समय पाया गया कि एक single key input पर भी 270 packets बन रहे थे
    • tcpdump के अनुसार, 66% packets 36-byte messages थे, 33% TCP ACK थे, और बाकी थोड़ा-बहुत अन्य data था
    • औसतन 90 packets/second, यानी लगभग 11ms interval पर data transmission हो रहा था
  • Test के दौरान server ग़लती से केवल “your screen is too small” message भेजने के लिए सेट था, और इस स्थिति में CPU और bandwidth usage आधा हो गया
    • Game data transmit नहीं होना चाहिए था, इसलिए CPU usage लगभग 0% के पास होना चाहिए था, लेकिन फिर भी लगभग 50% बना रहा
    • इससे SSH के अपने communication overhead की संभावना सामने आई

जांच की प्रक्रिया

  • tcpdump का उपयोग करके normal operation और error state के SSH traffic की तुलना की गई
    • Error state में भी 36-byte packets 20ms interval पर लगातार आते रहे
    • macOS के default SSH client में भी वही pattern मिला
  • Claude Code से pcap files का analysis करने पर
    • कुल 413,703 packets में 66% 36-byte थे, 34% 0-byte ACK थे
    • SSH client खुद सक्रिय रूप से packets बना रहा था

मूल कारण

  • SSH debug log (ssh -vvv) में यह message मिला
    obfuscate_keystroke_timing: starting: interval ~20ms
    obfuscate_keystroke_timing: stopping: chaff time expired (101 chaff packets sent)
    
    • 20ms interval और दर्जनों से लेकर 100+ chaff packets का यह pattern, वास्तविक observation से मेल खाता था
  • कारण 2023 में SSH में जोड़ा गया keystroke timing obfuscation feature था
    • User के typing-speed pattern के उजागर होने से बचाने के लिए random 'chaff' packets भेजे जाते हैं
    • Security के लिए उपयोगी होने के बावजूद, latency महत्वपूर्ण environments में यह बहुत ज़्यादा overhead पैदा कर सकता है

समाधान

  • Client side पर ObscureKeystrokeTiming=no option से this feature को disable किया जा सकता है
    • इसे लागू करने के बाद CPU usage और bandwidth काफ़ी घट गए, जबकि data transmission सामान्य बना रहा
  • Server side पर समाधान के लिए Go की SSH library में [email protected] extension advertisement हटा दिया गया
    • संबंधित commit को revert करके test करने पर
      • CPU usage 29.9% → 11.6% ,
        system calls 3.10s → 0.66s,
        cryptographic operations 1.6s → 0.11s,
        bandwidth 6.5Mbit/s → 3Mbit/s
    • Performance में 50% से अधिक सुधार हुआ

LLM का उपयोग करके debugging का अनुभव

  • Claude Code की मदद से tcpdump, tshark analysis को automate करते हुए समस्या के कारण को तेज़ी से narrow down किया गया
    • Commands के execution process को real time में देखते हुए mental model बनाए रखना संभव हुआ
  • ChatGPT ने SSH के behavior को “सामान्य” मान लिया, जिससे models के बीच का अंतर भी सामने आया
  • LLM पूरे problem-solving process की जगह नहीं लेता, लेकिन supporting analysis tool के रूप में बहुत प्रभावी साबित हुआ
  • यह एक ऐसा उदाहरण है जहाँ मानव reasoning और LLM analysis को जोड़कर जटिल network performance समस्या हल की गई

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.