Bandbreite ermitteln
werner
- internet-anbindung
Liebe Mitstreiter,
hat jemand eine Idee, wie ich Zuverlässig die zur verfügung stehende Bandbreite einer Verbindung ermitteln kann? Auch so, dass bei einem wiederholten Aufruf nicht der interne Cache angesprochen wird?
Hintergrund: Wenn ich ein Video-Stream sende, z. B. mit 300 K will ich wissen, ob der User diesen überhaupt empfangen kann. Wenn er z.b. via ISDN zugreift, müsste ich ihm einen schmalbandigen Stream anbieten oder ihm eine "freundliche" Warnmeldung ausgeben.
Gruss - Werner
Hallo Siemens, ;-))
hat jemand eine Idee, wie ich Zuverlässig die zur verfügung stehende Bandbreite einer Verbindung ermitteln kann? Auch so, dass bei einem wiederholten Aufruf nicht der interne Cache angesprochen wird?
Das ist eingentlich fast unmöglich, das verbindlich festzustellen.
Wir teilen uns hier einen Anschluss und alle, die hiter dem ersten Hub/Switch sitzen, haben eine schnelle Verbindung. Der wird dann nochmals unterteilt mit einem Group-Hub für eine weitere Etage. Da bleibt schon nur noch die halbe Power, auch wenn niemand anders im Netz aktiv ist. Die Schaltverzögerungen der Netzwerkarchitektur wirken sich aus. Die Pakete aus und ins Internet werden eben verzögert und das vermindert den Datendurchsatz.
LG
Chris
Hi,
hat jemand eine Idee, wie ich Zuverlässig die zur verfügung stehende Bandbreite einer Verbindung ermitteln kann?
Ja und zwar mittels 'ping', also schlicht die Zeit messen und hochrechnen. Dieser Meßwert gilt jedoch nur für den jeweiligen Meßpunkt, er verfällt sofort wieder.
Auch so, dass bei einem wiederholten Aufruf nicht der interne Cache angesprochen wird?
Diese Bedingung verstehe ich nicht.
Hintergrund: Wenn ich ein Video-Stream sende, z. B. mit 300 K will ich wissen, ob der User diesen überhaupt empfangen kann.
Aha, daher weht der Wind. Was Du da wissen willst interessiert den Benutzer nicht die Bohne, denn er kennt die Leistung seines Anschlusses.
Wenn er z.b. via ISDN zugreift, müsste ich ihm einen schmalbandigen Stream anbieten oder ihm eine "freundliche" Warnmeldung ausgeben.
Entweder hast Du die Möglichkeit verschieden Streams anzubieten oder nicht. Den Benutzer interessiert keine Warnmeldung, seinen Anschluß kennt er ja, aber ich wiederhole mich. Biete also am Besten direkt Alternativen.
BTW: auch wenn da mitunter unterschieden wird: zwischen Modem und ISDN ist kein wirklicher Unterschied, für Filme ist beides zu lahm. Würde also wenn möglich den Schmalbandstream als Download anbieten (Evt Zippen auch wenn's nix bringt, aber das spart die Fummelei mit dem HTTP-Header).
so short
Christoph Zurnieden
hi,
hat jemand eine Idee, wie ich Zuverlässig die zur verfügung stehende Bandbreite einer Verbindung ermitteln kann?
Ja und zwar mittels 'ping', also schlicht die Zeit messen und hochrechnen.
welchen zusammenhang siehst du zwischen ping und bandbreite?
ping erlaubt rückschluss darauf, wie schnell die daten über die verschiedenen hops von a nach b gelangen - aber doch m.E. kaum darüber, wie _viele_ daten dabei parallel über die leitung gehen könnten.
(schließlich haben sich die online-zocker mit DSL ja bei der telekom beschwert, weil ihnen ihr ping zu hoch war. stichwort fastpath.)
gruß,
wahsaga
Hi,
welchen zusammenhang siehst du zwischen ping und bandbreite?
Ping schickt ICMP-Päckchen bekannter Größe, ncoh die Zeit gestoppt und die Geschwindigkeit der Verbindung zum Zeitpunkt der Messung ist bekannt.
Das ist die effektive Bandbreite. Was heir gemient wurde ist die theoretische maximale Bandbreite, die läßt sich auf technischem Wege natürlich nicht bestimmen.
ping erlaubt rückschluss darauf, wie schnell die daten über die verschiedenen hops von a nach b gelangen - aber doch m.E. kaum darüber, wie _viele_ daten dabei parallel über die leitung gehen könnten.
Doch das kann es, schau in die Manpage.
(schließlich haben sich die online-zocker mit DSL ja bei der telekom beschwert, weil ihnen ihr ping zu hoch war. stichwort fastpath.)
Ja, die Art und Weise des Routing hat mit der Bandbreite rein gar nix zu tun, das ist korrekt. Aber Onlinegamer interessiert ja nicht die maximale Bandbreite sondern die effektive Bandbreite. Die wird jedoch von der Telekom nicht garantiert.
Wären'se ja auch schön blöd wenn 'se datt täten ;-)
so short
Christoph Zurnieden
Moin!
Ping schickt ICMP-Päckchen bekannter Größe, ncoh die Zeit gestoppt und die Geschwindigkeit der Verbindung zum Zeitpunkt der Messung ist bekannt.
Ping sendet standardmäßig aber nur winzig kleine Pakete von kaum mehr als 64 Byte - die sind absolut kein Maßstab für irgendeine Bandbreite. Außerdem mißt du beim Ping die Laufzeit vom Sender des Pakets hin zur Gegenstelle und zurück. Die Laufzeit auf jeder der beiden Teilstrecken kann aber durch beliebig denkbare Einflüsse vollkommen verzerrt werden. Üblicherweise haben beispielsweise sendend ausgelastete ADSL-Anschlüsse die Angewohnheit, Ping-Pakete extrem zu verzögern - in der Folge wäre die Laufzeitmessung sehr in Richtung "schmalbandig" verschoben. Und selbstverständlich tun lange Strecken ihr Übriges dazu. Die Verbindung nach Amerika beispielsweise kann gar nicht schneller als mit etwa 0,1 Sekunden überwunden werden. Zusätzlich zur simplen Laufzeitmessung käme also mindestens noch die Lokalisierung des Besuchers dazu, um die theoretisch notwendige Laufzeit auf "Luftlinie" als Einflußfaktor herauszurechnen.
Einem Stream aber ist es vollkommen egal, ob er nun 0,01 ms nach dem Absenden empfangen wird, oder ob das Internet dafür 5 Sekunden benötigt - solange alle Daten ohne Verlust oder Verstopfung von Leitungen nacheinander beim Empfänger eintreffen, hat dieser keinerlei Abstriche beim Empfang zu machen.
Ja, die Art und Weise des Routing hat mit der Bandbreite rein gar nix zu tun, das ist korrekt. Aber Onlinegamer interessiert ja nicht die maximale Bandbreite sondern die effektive Bandbreite. Die wird jedoch von der Telekom nicht garantiert.
Online-Gamer verbrauchen verhältnismäßig wenig Bandbreite. Die wollen nur, dass die Daten ultraschnell beim Server sind, von wegen Reaktionszeit, und so. Online-Spiele lassen sich (oder zumindest ließen sich sich mal) auch mit Modem oder ISDN spielen - und wenn die Ping-Zeiten mit ISDN kleiner sind, als mit ADSL, dann spielt man lieber per ISDN (sofern der Preis gleich ist - ISDN-Flatrates sind ja aber leider wieder ausgestorben).
Bandbreite definiert sich nach meinen Informationen immer noch als "Menge an Informationseinheiten, die pro Zeiteinheit übertragen werden können" - und zwar von A nach B. Eine Messung würde also erfordern, dass bei A und B gemessen wird, was maximal über die Leitung geht. Wie schnell B eine Antwort zurück an A senden kann, ist für die Bandbreite von A nach B unerheblich.
Und PS: Meine Ping-Manpage sagt nichts von irgendwelchen Bandbreiten-Tests, die man damit machen kann.
Hi,
Ping schickt ICMP-Päckchen bekannter Größe, ncoh die Zeit gestoppt und die Geschwindigkeit der Verbindung zum Zeitpunkt der Messung ist bekannt.
Ping sendet standardmäßig aber nur winzig kleine Pakete von kaum mehr als 64 Byte - die sind absolut kein Maßstab für irgendeine Bandbreite.
Doch, für genau die Bandbreite über die ich sprach: die zum Zeitpunkt der Messung und zwar _ausschließlich_ zum Zeitpunkt der Messung. Nicht davor, nicht danach und hat auch rein gar nix mit der Anschlußbezeichnung auf der Rechnung der Telekom zu tun.
Sie ist aber die einzige Art von Bandbreite über die der Server sichere Auskunft erwerben kann. Deshalb mein dringender Vorschlag von Spielerein jeglicher Art abzusehen und doch bitte gleich mehrere Alternativen zur Verfügung zu stellen auch wenn's das schööööne Design kaputt haut.
Einem Stream aber ist es vollkommen egal, ob er nun 0,01 ms nach dem Absenden empfangen wird, oder ob das Internet dafür 5 Sekunden benötigt - solange alle Daten ohne Verlust oder Verstopfung von Leitungen nacheinander beim Empfänger eintreffen, hat dieser keinerlei Abstriche beim Empfang zu machen.
BTW: die müssen mittlerweile noch nicht einmal zwingend in der richtigen Reihenfolge ankommen. Auch wenn dabei Worst Case der Stream rückwärts ankommt und erst nach vollständigem Laden abgespielt werden kann.
Online-Gamer verbrauchen verhältnismäßig wenig Bandbreite. Die wollen nur, dass die Daten ultraschnell beim Server sind, von wegen Reaktionszeit, und so.
Dann ist aber die Bandbreite in dem gewünschtem Zeitfenster riesig. Wie das eben ist, wenn der Maßstab proportional und nicht linear ist.
Online-Spiele lassen sich (oder zumindest ließen sich sich mal) auch mit Modem oder ISDN spielen - und wenn die Ping-Zeiten mit ISDN kleiner sind, als mit ADSL, dann spielt man lieber per ISDN (sofern der Preis gleich ist - ISDN-Flatrates sind ja aber leider wieder ausgestorben).
Bandbreite definiert sich nach meinen Informationen immer noch als "Menge an Informationseinheiten, die pro Zeiteinheit übertragen werden können" - und zwar von A nach B.
Das wiederspricht aber der Einschränkung des OP, das er nur eine Weg benutzen möchte. Probleme umdefinieren bis sie zur Antwort passen ist doch eher mein Metier, oder? ;-)
Und PS: Meine Ping-Manpage sagt nichts von irgendwelchen Bandbreiten-Tests, die man damit machen kann.
Die Gebrauchsanweisung meines Autos sagt rein gar nix darüber, das man auf der Rückbank ganz prima und äußerst vergnüglich Kinder verhüten kann.
so short
Christoph Zurnieden
PS:
Jetzt machen die von GPL-Flash sogar schon bei /. Werbung für ihre Wiederaufnahme der Entwicklung. Wenn das so weitergeht muß ich mich doch tatsächlich noch mit Flash beschäftigen? Und SVG bleibt derweil liegen?
Oh, grausame Welt! *sigh*
;-)
CZ
Hi werner,
echtes, an Bandbreiten angepasstes Streaming ist über HTTP nicht möglich, da brauchst Du einen Video-Server, es gibt inzwischen kostenlose Software, die erträglich funktioniert. Dazu brauchst Du allerdings Zugriff auf einen Server.
Viele Grüße
Mathias Bigge
hallo,
echtes, an Bandbreiten angepasstes Streaming ist über HTTP nicht möglich, da brauchst Du einen Video-Server, es gibt inzwischen kostenlose Software, die erträglich funktioniert. Dazu brauchst Du allerdings Zugriff auf einen Server.
Du brauchst doch keinen Videostream, um die Geschwindigkeit zu ermitteln! Einfach eine rel. große Datei runterladen und die Zeit messen sollte doch reichen.
Gruß
Reiner
hi,
Du brauchst doch keinen Videostream, um die Geschwindigkeit zu ermitteln! Einfach eine rel. große Datei runterladen und die Zeit messen sollte doch reichen.
also gut, dann lasse ich den user erst mal ein knoppix-image runterladen, bevor er sich ein dreiminütiges video ansehen darf ...?
gruß,
wahsaga
hi,
Du brauchst doch keinen Videostream, um die Geschwindigkeit zu ermitteln! Einfach eine rel. große Datei runterladen und die Zeit messen sollte doch reichen.
also gut, dann lasse ich den user erst mal ein knoppix-image runterladen, bevor er sich ein dreiminütiges video ansehen darf ...?
das mußt Du mal erklären!
hi,
Du brauchst doch keinen Videostream, um die Geschwindigkeit zu ermitteln! Einfach eine rel. große Datei runterladen und die Zeit messen sollte doch reichen.
also gut, dann lasse ich den user erst mal ein knoppix-image runterladen, bevor er sich ein dreiminütiges video ansehen darf ...?
das mußt Du mal erklären!
das nennt sich "sarkasmus", und sollte darauf hinweisen, dass ich deinen vorschlag für blöds^H^H^H^H^Hsuboptimal halte.
wenn also jemand was erklären "muss", dann wohl eher du - wo der nutzen deines vorschlages liegen soll.
gruß,
wahsaga
hi,
Du brauchst doch keinen Videostream, um die Geschwindigkeit zu ermitteln! Einfach eine rel. große Datei runterladen und die Zeit messen sollte doch reichen.
also gut, dann lasse ich den user erst mal ein knoppix-image runterladen, bevor er sich ein dreiminütiges video ansehen darf ...?
das mußt Du mal erklären!
das nennt sich "sarkasmus", und sollte darauf hinweisen, dass ich deinen vorschlag für blöds^H^H^H^H^Hsuboptimal halte.
wenn also jemand was erklären "muss", dann wohl eher du - wo der nutzen deines vorschlages liegen soll.
Auch ein Argument, naja.
Also, mal ganz platt:
Wie würdest Du die Geschwindigkeit eines Autos messen?
(Physik, 5. Klasse)...
Eben so geht es auch mit (großen, damit der Fehler klein ist) Dateien.
Groß heißt ja nicht direkt 500MB, aber auch nicht 100Byte.
Gruß
Reiner
Hallo Reiner.
Also, mal ganz platt:
Wie würdest Du die Geschwindigkeit eines Autos messen?
(Physik, 5. Klasse)...
Mit einem Blitzer?
Gruß, Ashura
Also, mal ganz platt:
Wie würdest Du die Geschwindigkeit eines Autos messen?
(Physik, 5. Klasse)...Mit einem Blitzer?
Der Dopplereffekt wird aber sicher noch nicht in der 5. Klasse gelehrt, oder hat sich da so viel geändert, seitdem ich nicht mehr zur Schule gehe?
Gruß
Reiner
Hallo Reiner.
Der Dopplereffekt wird aber sicher noch nicht in der 5. Klasse gelehrt, oder hat sich da so viel geändert, seitdem ich nicht mehr zur Schule gehe?
Keine Ahnung, ich habe die derzeitigen Lehrpläne der 5. Klasse nicht im Kopf. Sonderlich gehaltvoll können sie aber nicht sein...
Gruß, Ashura
Also, mal ganz platt:
Wie würdest Du die Geschwindigkeit eines Autos messen?
(Physik, 5. Klasse)...
Sicher nicht, indem ich es erstmal 5km fahren lasse...
Also, mal ganz platt:
Wie würdest Du die Geschwindigkeit eines Autos messen?
(Physik, 5. Klasse)...Sicher nicht, indem ich es erstmal 5km fahren lasse...
Hat auch niemand gesagt. Aber die Frage ist noch immer, ob es wichtig ist, daß das Objekt ein Auto ist oder die Technik nicht auch auf ein Motorrad angewendet werden kann (Videostream/http-Daten).
Gruß
Reiner
Hi Reiner,
Du brauchst doch keinen Videostream, um die Geschwindigkeit zu ermitteln! Einfach eine rel. große Datei runterladen und die Zeit messen sollte doch reichen.
Du hast die Problemstelllung nicht verstanden: Die Download-Geschwindigkeit für den eigenen Rechner festzustellen, dürfte wohl kaum die Problemstellung sein, wenn ich Videostreams im Internet anbiete.
Der Video-Server schiebt Daten rüber und stellt die Geschwindigkeit des Connects zum Client fest, puffert dann soviel Daten, dass ein kontinuierlicher Stream gewährleistet sein könnte, und der Client startet dann die Wiedergabe. Um variabel zu sein, werden auf dem Server mehrere Auflösungen in einer Datei gespeichert, während des Streaming-Vorgangs kommunizieren Client und Server weiter, was bei HTTP schwerlich nachzubilden ist.
Man kann so etwas ansatzweise mit HTTP nachfummeln, aber eben nicht perfekt.
Viele Grüße
Mathias Bigge
Hi,
hat jemand eine Idee, wie ich Zuverlässig die zur verfügung stehende Bandbreite einer Verbindung ermitteln kann?
Ungefähr:
Merke dir den Zeitpunkt des Beginns einer Anforderung, den Zeitpunkt des Abschlußes und ermittle aus Zet und Datenmenge die Geschwindigkeit (die natürlich, wie mehrfach gesagt, stets variiert)
Auch so, dass bei einem wiederholten Aufruf nicht der interne Cache angesprochen wird?
An den URL einen wechselnden Parameter hängen.
Hintergrund: Wenn ich ein Video-Stream sende, z. B. mit 300 K will ich wissen, ob der User diesen überhaupt empfangen kann. Wenn er z.b. via ISDN zugreift, müsste ich ihm einen schmalbandigen Stream anbieten oder ihm eine "freundliche" Warnmeldung ausgeben.
S. z.B. Coding: Systemvariable.
Damit kannst Du die zum jeweiligen Messzeitpunkt ungefähre Geschw. messen (agt_speed). Sie wird, mit lineType(), auf Wunsch auch gleich in Kategorien eingeteilt:
1 (sehr langsame Verbindungsgeschwindigkeit, 1-50 kbps)
2 (langsame Verbindungsgeschwindigkeit, 50-120 kbps)
3 (mittlere Verbindungsgeschwindigkeit, 120-300 kbps)
4 (schnelle Verbindungsgeschwindigkeit, 300-600 kbps)
5 (sehr schnelle Verbindungsgeschwindigkeit, >600 kbps)
bzw. "Modem", "ISDN", "Cable", "DSL" und "High".
Damit läßt sich dann ggf. eine Warnung (oder ein andere Default-Link) ausgeben, was der Surfer dann befolgt - oder auch nicht. ;-)
Gruß, Cybaer