Soru mtr neden traceroute'den daha hızlı?


İçinde mtr man sayfaları, okur:

mtr, tek bir ağ tanılama aracında traceroute ve ping programlarının işlevselliğini birleştirir

kullanırım mtr çok, ve çok daha hızlı olduğunu bulmak traceroute. içgüdüsel, mtr Bana cevap verirken, traceroute Her ip adresini her saniye listeler. Kendi bilgisayarımda kullandım time mtr www.google.com ve time traceroute www.google.com, sonuç 21.9s VS 6.1s.

Soru neden? Dan beri mtr = ping + tracerouteBu, daha yavaş veya en azından aynı olduğu anlamına gelmez traceroute.

Herkes bana makul ve ayrıntılı bir cevap verebilir mi?


9
2018-04-01 10:27


Menşei




Cevaplar:


Paralelcilik, bu araçların hızındaki değişimin başlıca nedenidir. Diğer bir katkı faktörü, hop'un yanıt vermemesi kabul edilmeden önce bir cevap için ne kadar beklediğidir. Ters DNS gerçekleştirilirse, bunun için de beklemeniz gerekir. Ters DNS'yi devre dışı bırakırsanız, düz traceroute komutu çok daha hızlı olur.

Bahsettiğim bir diğer önemli fark, iki aracın çıkışı nasıl sağladığının. Traceroute çıkışı yukarıdan aşağıya doğru üretir. Mtr, çıktıyı farklı yollarla işler, burada mtr geri dönebilir ve önceki satırlardaki çıktıları güncelleyebilir.

Bu, mtr'nin çıktı alındığı anda çıktı gösterebileceği anlamına gelir, çünkü eğer daha sonra yanıtlar bu çıktının doğru olmamasına neden olursa, mtr geri dönebilir ve güncelleyebilir. Traceroute çıkıp çıktıyı güncelleyemediğinden, neyi göstereceğine karar verene kadar beklemek zorundadır.

Örneğin, atlama sayısı 2 yanıt vermiyorsa (bu, birden çok ISS'de gördüğüm bir belirti), traceroute, atlama sayısı 1'i gösterecek ve daha sonra 2 ve 3 numaralı sekme görüntülenmeden önce bir süre bekleyecektir. 3 geldiyse görüntüleniyor çünkü traceroute hala hop numara 2'den gelen cevabı beklemektedir. Mtr bu kısıtlamaya sahip değildir ve 3 no.lu yanıtı görüntüleyebilir ve eğer cevabın 2 no.lu sekmesinden görüntülenmesini istiyorsanız daha sonra gelir.

Çok fazla paralellik, çıktının hatalı olmasına neden olabilir. Bazı senaryolarda, kaç paket için cevap alabileceğiniz konusunda limitler vardır. Bu durumlarda daha fazla paket göndermek süreci hızlandırmaz, ancak daha fazla paketin gönderilmesiyle aynı sayıda yanıt aldığınız için daha fazla kayıp paketlere neden olur.

Bunun bir örneği, rotadaki bir atlama ARP isteklerine cevap vermemesidir. Genellikle ilk paket bir ARP isteğini tetikleyecektir ve ARP talebinin zaman aşımına uğramadan önce daha fazla paket gelmesi durumunda, bu paketlerin sadece sonuncusu arabelleğe alınacak ve bir yanıt alacaktır.

Diğer bir fark, takımın daha fazla atlama göstermesini durdurmadan önce yanıtsız kaç atlama gösterileceğidir. Traceroute komutunun talep edildiği kadar çok atlama için (varsayılan olarak 30) devam ettiğini ve mtr komutunun yanıtsız beş atlamadan geçtikten sonra duracağını gördüm.


20
2018-04-01 11:44



Bu çok daha iyi bir cevap. - NickW


Traceroute komutu, 1 probla sınırlandırırsanız, atlama başına 3 prob gönderiyor -q 1daha sonra sonuçlar karşılaştırılabilir hale geldi

time mtr -r -c 1 google.com
.
.
.
real    0m2.640s
user    0m0.003s
sys     0m0.018s


time traceroute6 -q 1 google.com
.
.
.
real    0m0.445s
user    0m0.006s
sys     0m0.007s

Karşılaştırılabilir testler arasındaki ana farklılıkların DNS sorgu zamanı ve yol farklılıkları ile ilgili olmasını beklerim. Traceroute'umun mtr'den daha hızlı olduğuna dikkat edersiniz, ancak bu her zaman geçerli değildir.


3
2018-04-01 10:37





Sanırım bu, rota izlemenin uygulandığı yoldan geliyor. traceroute sırayla hedefe giden rotada her atlama için en az 3 paket gönderdi.

mtr önce rotadaki atlamaları keşfedin ve sonra paralel olarak her bir düğüme paket gönderin.

Bana öyle geliyor ki, yolda bir fark var. mtr ping / problara yanıt vermeyen hop kolları; o zaman daha kibarca yok sayar traceroute İlk denemelerin cevap alamamış olsa bile, 3 paketini her zaman gönderiyormuş gibi görünüyor.


2
2018-04-01 10:34





Birincil neden traceroute'un çalıştığı yoldur. Bir UDP (veya pencerelerde ICMP) paketini bir ilk TTL ile gönderir ve bir zaman aşımı yanıtı aldığında (veya bir iç zaman aşımı geçirir), bir sonraki ana bilgisayar için bir TTL ile bir sonraki paketi oluşturur. iki ve daha fazlası (her bir ana bilgisayar için TTL'ye eklenir). Dolayısıyla, traceroute'un toplam süresi, sırayla, her bir ana bilgisayar için paketlerin gönderilmesini ve alınmasını içerir.

mtr, paketlerin aldığı yolu belirledikten sonra, tüm ICMP ECHO paketlerini paralel olarak gönderir.


1
2018-04-01 10:35



Mtr paketlerin nereye gönderileceğini nasıl biliyor? - Iain
Evet, şunu eklemeliyim, ancak "aslında" bunun dışarıdaki kaynağı okumamı gerektirdiğini düşündüğü halde buluyor :) - NickW
[mtr] investigates the network connection between the host mtr runs on and a user-specified destination host. After it determines the address of each network hop between the machines - NickW
@Iain Tüm paketleri, belirttiğiniz bir adrese gönderir. Farklı paketler, bir hata geri gelmeden önce seyahat edecekleri farklı bir maksimum mesafe belirler. Mtr veya traceroute tarafından görüntülenen adresler yalnızca yanıt geldiğinde bilinir. - kasperd