2016-05-14 9 views
-2

Ich prüfe ping mal und fand heraus, dass das Gehen von Ostküsten-Datenzentren einer amazon ec2 linux-Instanz zu einer windows azure-Instanz eine Ping-Zeit von 3ms hat. Da es so klein ist, frage ich mich, ob ich etwas falsch mache. Ich glaube, das azurblaue Rechenzentrum befindet sich in Virginia. Wenn ich von meinem Computer aus eine Verbindung herstelle, bekomme ich 57-60ms, was mich glauben lässt, dass mein Test korrekt ist. Wenn ich 127.0.0.1 auf der azurblauen Instanz teste, erhalte ich 8-10ms, was mich denken lässt, dass ich mindestens 10ms übertreffen sollte, wenn ich ec2 zu azurblauen teste. Ich möchte nur wissen, ob ein 3ms-Ping auch zwischen zwei Computern in verschiedenen Rechenzentren möglich ist. Ich kann nicht von der Befehlszeile aus pingen, weil keine der Boxen auf Standard-Pings reagiert. Mein Programm sendet eine Zufallszahl, startet einen Timer und überprüft dann, ob das Rückpaket die Nummer enthält, also glaube ich, dass der Test korrekt ist.Ist ein 3ms-Ping zwischen zwei verschiedenen Cloud-Anbietern möglich

loop{ 
     byte[] senddata; 
      senddata = CreatePacketString(
         Guid.Parse(players.randomTestGuidPlayer[2]), 
         players.udpc[2].packetnumber, moveto2); 

      Random g = new Random(); 
      int k = g.Next(5000); 
     players.udpc[2].packetnumber += k; 

      Send(players.udpc[2].listener, getServerIP(), getServerPort(), senddata); 

      long t1 = DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond; 

      bool found = false; 
      while (found == false) 
      { 
       byte[] data = IncomingPacket(players.udpc[2].listener.Receive(ref players.udpc[2].groupEP)); 

       byte[] packetnumberAsBytes = new byte[4]; 
       Buffer.BlockCopy(data, 10, packetnumberAsBytes, 0, sizeof(Int32)); 
       Int32 gt = BitConverter.ToInt32(packetnumberAsBytes, 0); 

       if (gt == players.udpc[2].packetnumber - k) 
       { 
        found = true; 
       } 

       if(found == false) 
        System.Console.WriteLine(String.Format("UNEXPECTED")); 

      } 
      long t2 = DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond; 

      System.Console.WriteLine(String.Format("pings {0}", t2 - t1)); 
} 
+0

Alex, danke für die Information. Meine ec2-Instanz ist nur ein Terminal, daher glaube ich nicht, dass ich einen azurblauen Geschwindigkeitstest von der Amazon-Instanz ausführen kann. Wenn es in demselben Datencenter azurblau bis azur ist, würde ich 3ms für möglich halten. Ich bin immer noch auf der Suche nach Fehlern im Test, weil ich denke, dass 3ms von ec2 nach azure unmöglich ist. 1 ms mit Lichtgeschwindigkeit beträgt etwa ~ 200 Meilen und der Ping ist eine Rundreise, so dass die Datenzentren innerhalb von ~ 300 Meilen voneinander entfernt sein müssen. –

+0

Diese Frage ist off-topic für StackOverflow - es hat nichts mit Programmierung zu tun. Und die Ping-Zeit ist nicht an den physischen Ort oder die physische Entfernung gebunden. –

Antwort

0

Das hängt wirklich davon ab, was mit dem Netzwerk in genau diesem Moment passiert. Sie können versuchen, sich an der virtuellen Maschine anzumelden und die Statistik mit beliebten Tools wie Azure Speed Test zu sehen - es zeigt Ihnen nicht nur den Ping, sondern viele andere relevante Zahlen.

Und ich würde nicht versuchen, irgendwelche Zahlen, die von der Welt verfügbar sind, mit etwas zu vergleichen, das in der Netzwerkinfrastruktur der Cloud-Anbieter geschieht. Beispielsweise befinden sich Datencenter in der Microsoft Azure-Cloud im eigenen Netzwerk. Ich würde vermuten, dass Amazon das gleiche ist.

0

Ich habe das Problem gefunden.

Es war eine schlechte Idee, die Sendefunktion vor dem Einstellen von t1 aufzurufen.

Ich glaube, diese Anweisungen wurden nicht unmittelbar nacheinander ausgeführt, weil das OS den Thread anhalten würde, um den UDP-Send zu behandeln. Dann würde ich irgendwann die Zeit einstellen, aber das muss wirklich vor dem Senden geschehen, weil ich diese Zeit aus dem Thread aufzeichnen musste. Dies führte zu Pings, die viel zu niedrig waren.

Verwandte Themen