MTU (Maximum Transmission Unit) Tester

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

MTU (Maximum Transmission Unit) Tester

Beitrag von ts-soft »

Code: Alles auswählen

; Dieses kleine Progamm ermittelt die maximale MTU
; 
; Leider ist die MTU bei vielen Systemen zu hoch, was dazu führt, das einige Webseiten nicht, oder nur
; schlecht erreicht werden. Unter Windows wird, insofern kein Wert hierfür in die Registry eingetragen
; wurde, eine MTU von 1500 vorgegeben. Dieser Wert ist für DSL meist zu hoch. Typischer Wert wären hier
; 1492 Bytes.
; 
; Manche Tools wie z.B. cFosSpeed, sowie auch einige Router, passen diesen Wert, entweder autom. oder
; durch festgelegte Einstellungen des Providers an. Dies ist leider nicht in allen Fällen so, deshalb hab
; ich diesen kleinen TestCode geschrieben, der die maximale ("optimale?") MTU ermittelt.
; 
; Als Grundlage diente mir dieser Artikel:
; http://www.gschwarz.de/mtu-wert.htm#mtu-wert_ermitteln
; Dort findet man auch Infos, wo man den Wert in der Registry anpassen kann, bzw. welche Tools es hierfür
; gibt.
; 
; Weitere Infos zur MTU auch auf Wikepedia:
; http://de.wikipedia.org/wiki/Maximum_Transmission_Unit
; 
; Dieser Code funktioniert nur auf deutschen Systemen. Für die Richtigkeit der ermittelten Werte übernehme
; ich keinerlei Haftung!
; 
; Autor: Thomas Schulz aka ts-soft
; Erstellt am: 13.04.2008
; PureBasic 4.xx
; Windows only (sollte mit kleinen Änderungen auch unter Linux laufen)


EnableExplicit

Procedure.l IsMTU2High(MTU.l, URL$ = "www.purebasic.fr")
  Protected tmpMTU = MTU - 28 ; Internetprotokoll beansprucht 28 Bytes
  Protected tmpURL$ = "-f -l " + Str(tmpMTU) + " " + URL$

  Protected Output.s = "", result.l = 0
  Protected Ping = RunProgram("ping", tmpURL$, "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)

  If Ping
    While ProgramRunning(Ping)

      If IsWindow(0)
        While WindowEvent() : Delay(0) : Wend
      EndIf
      
      Output + ReadProgramString(Ping) + #CR$
      
    Wend
    CloseProgram(Ping)

    OemToChar_(Output, Output)
    Output = PeekS(@Output, #PB_Any, #PB_Ascii)
    
    ProcedureReturn FindString(Output, "sste fragmentiert werden", 1)

  EndIf

  ProcedureReturn -1 ; error
EndProcedure

Define.l result, testMTU = 1500; 1500 ist der default Wert (WinXP), wenn nichts in der Registry steht

If OpenWindow(0, 0, 0, 240, 40, "MTU-Test - Bitte etwas Geduld!", #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  TextGadget(0, 10, 10, 220, 20, "", #PB_Text_Center | #PB_Text_Border)
  
  Repeat

    result = IsMTU2High(testMTU)

    Select result
      Case 0, -1
        CloseWindow(0)
        Break
      Default
        SetGadgetText(0, "Test mit " + Str(testMTU) + " Bytes fehlgeschlagen")
        While WindowEvent() : Delay(0) : Wend
        testMTU - 2
    EndSelect

  ForEver

EndIf

If result = 0
  MessageRequester("MTU-Test", "Die maximale MTU beträgt: " + Str(testMTU))
Else
  MessageRequester("MTU-Test", "Ein Fehler ist aufgetreten")
EndIf
Die Ereignisbehandlung für das Fensterlein wurde etwas vernachläßigt :mrgreen:
Wäre schön, wenn der eine oder andere sein Ergebnis, + Art des Internet-
Zugangs, sowie Provider posten würde.

Ich fang mal an :)
DSL 16000, Freenet, MTU: 1454 Bytes

Gruß
Thomas

// edit:
funktioniert jetzt auch im Unicode-Modus
Zuletzt geändert von ts-soft am 13.04.2008 19:02, insgesamt 2-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

dsl 1000
weiß nicht
1500 bytes
pb 4.51 win7 64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Riacon hat geschrieben:dsl 1000
weiß nicht
1500 bytes
Dann sollte ja alles optimal sein und Du brauchst nicht auf allen vieren durch
die Registry krauchen ums anzupassen :mrgreen:

dsl 1000 gibts ja kaum noch, ich tippe mal auf nen alten Vertrag mit T-Online

Danke erstmal für die Werte
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

DSL 6000
T-Online
MTU: 1500 (Sollte eigentlich 1454 sein)
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

DSL 3000
Alice
MTU: 1480
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

VDSL 4000
interGGA.ch
MTU: 1500
Benutzeravatar
legion
Beiträge: 467
Registriert: 08.10.2006 18:04
Computerausstattung: Intel Core i5-6500 @ 4x 3.6GHz mit Windows 10 Pro, Intel Core-i7 mit Ubuntu 18.04 bionic, x86_64 Linux 4.18.0-16-generic, Microsoft Surface Pro - Windows 10 Pro
Wohnort: Wien
Kontaktdaten:

Beitrag von legion »

XDSL 16000
INODE.AT
MTU: 1492
PB 5.71 LTS Windows 10 Pro & Ubuntu 18.04.2 LTS & Linux Mint 19.3
-----------------------------------------------------
Alles ist, wie man glaubt, dass es ist!
Benutzeravatar
RAaBe
Beiträge: 80
Registriert: 07.09.2004 12:52
Wohnort: Münsterland
Kontaktdaten:

Beitrag von RAaBe »

VDSL 25000
T-Online
MTU: 1492

MfG

RAaBe
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Beitrag von Lord »

DSL 6000
Telekom
MTU: 1492
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

Die maximale MTU beträgt: 1492
KD DSL 4000
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten