Baru-baru ini saya menghabiskan liburan bank Paskah dengan orang tua saya, yang tinggal di daerah pedesaan di Inggris. Mereka memiliki koneksi internet ADSL (mengerikan), yang dijalankan beberapa kilometer dari tembaga yang cerdik dan secara berkala terganggu ketika petani di dekatnya membalikkan traktor mereka ke saluran telepon.
Saya perhatikan bahwa router mereka berulang kali menjatuhkan pptp
jabat tangan, dan menegosiasikannya, mematikan koneksi secara efektif. Ini membuat frustrasi. Jadi, dalam upaya untuk menghindari menjadi gila, saya mengatakannya untuk menggandakan margin SNR minimum dan jabat tangan untuk kecepatan yang lebih rendah:
$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
U.S. Robotics Wireless MAXg ADSL Gateway
Login: ***********
Password:
> sh
BusyBox v1.00 (2006.02.17-20:30+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
# adsl configure --snr 200; exit
Connection closed by foreign host.
Ini meningkatkan masalah, dan benda itu mendapat (agak) stabil, jika sangat lambat, pipa ke dunia luar:
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
64 bytes from 8.8.8.8: icmp_seq=0 ttl=55 time=3236.679 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=3699.541 ms
...
Pada titik ini, kehidupan nyata turun tangan dan saya kemudian menghabiskan beberapa jam bermain dengan kucing, melihat gif kucing di ponsel saya, benar-benar berbicara dengan keluarga saya , dll. Saya lupa bahwa saya membiarkan proses ping ini berjalan, dan kembali lagi tentang sehari kemudian untuk memukul ctrl-c
.
Statistik ringkasan yang ditampilkan memiringkan saya:
--- 8.8.8.8 ping statistics ---
103074 packets transmitted, 100564 packets received, 2.4% packet loss
round-trip min/avg/max/stddev = 32.986/3034.479/3600577.732/87527.276 ms
Seperti yang Anda lihat, waktu respons maksimum yang tercatat untuk paket ICMP yang membuat lompatan transatlantik singkat ke server DNS Google adalah 3600577,732 ms . Itu hampir tepat satu jam , dan tentu saja jauh lebih lama dari ping
batas waktu default.
Bagaimana ini bisa terjadi? Apakah ini akurat? Router apa yang dengan senang hati akan memegang suatu paket selama enam puluh menit sebelum mengirimkannya dalam perjalanan? Mengapa paket ini tidak dijatuhkan? Apakah ini hasil dari overflow dari penghitung paket 8-bit yang dikombinasikan dengan latensi besar?
Akhirnya, saya akan tertarik untuk mengetahui apakah ada kode etik di Inggris yang menyatakan bahwa koneksi ADSL konsumen diharapkan memiliki latensi yang lebih rendah dan manajemen lalu lintas yang lebih baik daripada RFC 1149 dan RFC 2549 ;-).
sumber
ping
kode sumber (dari ~ l 761) saya dapat melihat bahwa zona waktu diabaikan dalam perhitungan berikutnya (gettimeofday(nv, NULL)
mengembalikan zaman mikrodetik). Itu benar-benar memakan waktu satu jam!Jawaban:
Paket ICMP dan respons untuk ping masing-masing berukuran 32 byte, jadi sepertinya untuk ping satu jam bahwa setiap byte membutuhkan waktu hampir satu menit untuk mentransmisikan.
Ini hanya dapat dijelaskan dengan jumlah retry error yang sangat murah hati (pekerjaan Anda?), Ditambah dengan router yang sangat lambat dan menunggu atau mencoba yang menyakitkan untuk setiap byte yang ditransmisikan.
Internet Protocol (IP) mentransmisikan data dengan datagram dan mencoba untuk tidak mengirim data parsial. Setelah transmisi dimulai, ia akan menunggu secara default selama 200 milidetik untuk lebih banyak byte yang akan ditambahkan ke datagram. Di masa lalu, perangkat lunak / firmware akan mengirimkan apa pun yang dimilikinya sebagai satu datagram. Dalam hal waktu ping selama satu jam, muatan paket mungkin sekecil satu byte. Selama data masih tiba, koneksi tidak akan diakhiri oleh kedua belah pihak yang berpartisipasi.
Apa yang dapat Anda lakukan:
Mungkin cukup rumit untuk menemukan sakelar yang bermasalah, seperti yang terjadi pada perusahaan telepon, tetapi ISP mungkin juga memiliki sakelar sendiri. Biasanya masalah dengan sakelar adalah area luas yang membantu menemukan sakelar yang tidak berfungsi. Tetapi di daerah pedesaan di mana tidak terlalu banyak pelanggan yang menggunakan sakelar ini mungkin tidak terdeteksi. Jika beberapa tetangga menggunakan ISP yang sama, coba cari tahu seperti apa koneksi mereka.
sumber
Saya melihat kasus ini sangat terkait dengan manajemen kemacetan data meskipun sangat buruk dikelola untuk alasan apa pun. Untuk pemahaman saya, ada buffer paket di sepanjang sistem transmisi yang dikelola dengan baik, yang menyebabkan anomali ini dalam paket echo request / reply ICMP.
Jadi kombinasi dari memiliki kebijakan manajemen kemacetan yang buruk dengan sesi ping dibuka selama berjam-jam dapat secara tak terduga menghasilkan skenario aneh seperti itu.
Informasi lebih lanjut tentang manajemen kemacetan di sini .
sumber