mtr neden traceroute'dan daha hızlı?


12

Gelen mtradam sayfalarında, okur:

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

Çok kullanıyorum mtrve bundan çok daha hızlı olduğunu düşünüyorum traceroute. İçgüdüsel olarak, her ip adresini her saniye listelerken mtrbana yanıtı anında verir traceroute. Kendi bilgisayarımda kullandım time mtr www.google.comve time traceroute www.google.comsonuç 21.9s VS 6.1s.

Soru neden? Çünkü bu mtr = ping + traceroute, daha yavaş veya en azından aynı olduğu anlamına gelmez traceroute.

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

Yanıtlar:


21

Paralellik bu araçların hızındaki değişimin başlıca nedenidir. Katkıda bulunan bir başka faktör, sıçramanın yanıt vermediği düşünülmeden önce bir cevap bekledikleri süredir. Ters DNS gerçekleştirilirse, bunu da beklemeniz gerekir. Ters DNS'yi devre dışı bırakırsanız, düz traceroute komutu çok daha hızlı olur.

Bahsetmediğim bir diğer önemli fark, iki aracın çıktıyı nasıl oluşturduğu. Traceroute çıktıyı yukarıdan aşağıya doğru sıralar. Mtr çıktıyı farklı bir şekilde işler, burada mtr geri dönebilir ve önceki satırlarda çıktıyı güncelleyebilir.

Bu, mtr çıktısının kullanılabilir olduğu anda görüntülenebileceği anlamına gelir, çünkü daha sonraki yanıtlar bu çıktının doğru olmamasına neden olursa, mtr geri dönüp güncelleyebilir. Traceroute geri dönüp çıktıyı güncelleyemediğinden, sonuçta ne göstereceğine karar verene kadar beklemek zorundadır.

Örneğin, atlama sayısı 2 yanıt vermiyorsa (birden çok ISS'de gördüğüm bir belirtidir), traceroute, atlama sayısı 1'i görüntüler ve ardından atlama sayısı 2 ve 3'ü görüntülemeden önce bir süre bekler. 3 geldi, çünkü traceroute hala hop numarası 2'den cevap bekliyor. Mtr bu kısıtlamaya sahip değil ve hop numarası 3'ten yanıtı görüntüleyebilir ve yine hop numarası 2'den yanıtı görüntülemek için geri dönebilir. daha sonra gelir.

Çok fazla paralellik, çıktının yanlış olmasına neden olabilir. Bazı senaryolarda yanıt alabileceğiniz paket sayısı sınırlamaları vardır. Bu durumlarda daha fazla paket göndermek işlemi hızlandırmaz, ancak daha fazla paket gönderilirken aynı sayıda yanıt aldığınız için daha fazla paket kaybına neden olur.

Bunun bir örneği, rotadaki bir atlama ARP isteklerine yanıt vermemesidir. Genellikle ilk paket bir ARP isteğini tetikler ve ARP isteği zaman aşımına uğramadan önce daha fazla paket gelirse, bu paketlerin yalnızca sonuncusu arabelleğe alınır ve bir yanıt alır.

Başka bir fark, araç daha fazla atlama göstermeyi durdurmadan önce yanıtsız kaç atlama görüntüleneceğidir. Traceroute komutunun (varsayılan olarak 30) istendiği kadar çok şerbetçiotu için devam ettiğini gördüm, mtr komutu ise yanıtsız beş atlama geçtiği anda dururdu.


Bu çok daha iyi bir cevap.
NickW

3

1 prob ile sınırlandırırsanız, traceroute komutu her hop için 3 prob gönderir -q 1ve sonuçlar karşılaştırılabilir hale gelir

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 temel farklılıkların DNS sorgu süresi ve yol farklılıklarıyla ilgili olmasını beklerim. Traceroute'umun mtr'den daha hızlı olduğunu göreceksiniz, ancak bu her zaman böyle değildir.


2

Sanırım bu rota izlemenin uygulanma biçiminden geliyor. traceroutehedefe giden güzergâhtaki her sekme için en az 3 paket gönderilir.

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

Bana öyle geliyor ki mtrhop'un ping / problara cevap vermemesinde kulplar arasında bir fark var ; tracerouteilk denemeler yanıt alamadıysa bile , 3 paketini her zaman gönderiyor gibi göründüğünden daha hızlı göz ardı eder .


1

Birincil neden traceroute'un çalışma şeklidir. İlk ana bilgisayara bir TTL'si olan bir UDP (veya pencerelerde ICMP) paketi gönderir ve bir zaman aşımı yanıtı aldığında (veya dahili bir zaman aşımını geçtiğinde), daha sonra bir TTL'li bir sonraki ana bilgisayar için bir sonraki paketi oluşturur iki, vb. (her ana bilgisayar için TTL'ye bir tane ekleyerek). Dolayısıyla, traceroute'un toplam süresi, her ana bilgisayar için sırayla paketlerin gönderilmesini ve alınmasını içerir.

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


Mtr paketlerin nereye gönderileceğini nasıl bilebilir?
user9517

Evet, bunu eklemeliyim, ancak "aslında" nasıl olduğunu düşünüyorum ben kaynak okumamı gerektireceğini düşünüyorum :)
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

2
@Iain Tüm paketleri belirttiğiniz adrese gönderir. Farklı paketler, bir hata geri dönmeden önce ne kadar uzağa gidecekleri için farklı bir maksimum mesafe belirler. Mtr veya traceroute tarafından görüntülenen adresler yalnızca yanıt geri geldiğinde bilinir.
kasperd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.