Azure Speedtest

Wie können Sie die Geschwindigkeit zu einem Azure Datacenter messen?. Diese Frage ist wichtig, ehe Sie Dienste nach Azure verlagern und auch später ist ein schneller Check nützlich bei der Suche nach Performanceproblemen. Dies gilt insbesondere auch beim Einsatz von Express Route. Microsoft stellt entsprechende Testgegenstelle bereit. Natürlich können Sie auch selbst eigene Tests fahren.

Basis Speedtests

Microsoft bietet verschiedene Endpunkte in der Cloud an, die man in verschiedenen Skripten und Tabellen finden kann. Hier ein Ausschnitt:

 $urls = @{
            'North Central US' = 'speedtestnsus.blob.core.windows.net'
            'Central US'='speedtestcus.blob.core.windows.net'
            'West Central US'='speedtestwcus.blob.core.windows.net'
            'South Central US'='speedtestscus.blob.core.windows.net'
            'West US' = 'speedtestwus.blob.core.windows.net'
            'West US 2' = 'speedtestwus2.blob.core.windows.net'
            'East US'='speedtesteus.blob.core.windows.net'
            'East US 2'='speedtesteus2.blob.core.windows.net'
            'West Europe'='speedtestwe.blob.core.windows.net'
            'North Europe'='speedtestne.blob.core.windows.net'
            'Southeast Asia'='speedtestsea.blob.core.windows.net'
            'East Asia'='speedtestea.blob.core.windows.net'
            'Japan East'='speedtestjpe.blob.core.windows.net'
            'Japan West'='speedtestjpw.blob.core.windows.net'
            'Brazil South'='speedtestbs.blob.core.windows.net'
            'UK West'='speedtestukw.blob.core.windows.net'
            'UK South'='speedtestuks.blob.core.windows.net'
            'Canada Central'='speedtestcac.blob.core.windows.net'
            'Canada East'='speedtestcae.blob.core.windows.net'
        }

Wenn Microsoft mehr Datacenter aufbauen, dann kommen sicher noch weitere Adressen dazu. Hinter den Namen steht ein "BLOB"-Storage von Windows Azure. Ich habe nicht weiter analysiert, wie ich mich da nun anmelden und eine URL für Testdateien (Upload/Download) erhalten kann. Unter den Link finden Sie aber Webseiten von Drittherstellern, die das geschafft haben. Mir reicht es eigentlich schon einfach die Verbindung aufzubauen und zu testen.

Leider scheint Test-NETConnection vorher einen ICMP-Ping zu machen, auf den aber nicht alle Systeme antworten also mache ich eine direkte HTTPS-Abfrage auf den Hostnamen und hänge ein "/cb.json" mit dran.

foreach ($testurl in $urls.values) { `
   (Measure-command { `
      $null= invoke-RestMethod `
         -uri "https://$($testUrl)/cb.json" `
      } ) `
   | select @{Name="URL";Expression={$testUrl}},TotalMilliseconds 
}

Allerdings sind die Werte hier natürlich eher zu hoch, da ein kompletter HTTPS-Handshake stattfindet, bei dem viele Pakete sequentiell übertragen werden, wie ein WireShark Mitschnitt auch zeigt:

Die gemessene Zeit ist also nicht die Roundtrip-Zeit für ein Paket, sondern die Summer aller Pakete. Wer wirklich die Einzellatenz testen will, muss mit anderen Werkzeugen eine TCP-Verbindung aufbauen und die Antwortzeit der einzelnen Pakete messen. Das entspricht dann wieder eher einem PING mit dem Unterschied, dass hier TCP Port 443 und nicht ICMP genutzt werden muss. Ein ICMP-Ping kommt nicht immer durch und könnte auch hinsichtlich der Priorisierung anders behandelt werden.

Fertige Webseiten zum Messen

Die Liste der Azure-Endpunkte ist bekannt und die Anfragen sind einfache HTTPS-Requests. Das ist es relativ einfach für einen Entwickler einer Webseite diese Aufrufe per JavaScript zyklisch auf einem Client auszuführen und die Ergebnisse anzuzeigen. Ich habe da zwei Webseiten gefunden, die solche Daten lokal visualisieren. Sie können die Webseiten einfach anonym ohne Anmeldung aufrufen:

Wenn Sie auch hier mit WireShark und Fiddler schauen, dann sehen Sie, dass auch diese Tests in der Regel die Datacenter per HTTPS ansprechen.

Soweit also nichts ungewöhnliches.

Es ist zwar nett mit solchen Tools einen Test zu allen Azure Datacenter-Standorten durchzuführen und sich die Zahlen anzuschauen. Aber es ist kein Dauertest und eigentlich wissen wir doch eh schon, welche Datacenter in der Nähe stehen. Ein richtiges Netzwerk Assessment kann so ein einfacher Test nicht ersetzen. Sie prüfen damit keinen Weg, haben keine unbelastete Leitung, wissen nichts über ihren Proxy und zuletzt ist es nur eine Momentaufnahmen

Eigene Tests

Wenn Sie vorhaben, Dienste in Azure zu betreiben, dann sollten Sie eine Überwachung der Erreichbarkeit in ihrem vorhandenen Monitoring-System integrieren. Dabei reicht es aber sich auf die eigenen Dienste zu konzentrieren. Schließlich müssen Sie ja nicht für Microsoft das Monitoring machen. Aber es sollte eine regelmäßige bzw. kontinuierliche Überwachung sein, um Unterbrechungen oder auch nur Verschlechterungen entsprechend zu ermitteln.

Sie wissen ja nun die URLs und es sollte kein Problem sein diese Werte per PowerShell zu ermitteln und einzuspeisen, wenn ihre Lösung nicht selbst einen "HTTP-Get" als Sensor mitbringt.

Weitere Links