Hallo, ich möchte gern einen TCP Stack ohne Betriebssystem installieren - hab mir den uIP schon näher angeschaut. Jedoch habe ich einige fragen (allgemeiner Art): ich möchte gern die IP Fragmentierung zulassen - wie groß sollte dann mein Buffer gewählt werden bzw. wielange wartet man auf ein noch fehlendes Paket (wenn die Pakete aufgrund von Routern etc. in unterschiedlicher Reihenfolge ankommen)? Gibt es da auch entsprechende Zeiten wie beim ACK vom TCP Protokoll? Sobald ein Paket angekommen ist, wird die entsprechende Funktion ausgeführt, in der der Header auf IP oder ARP u.a. untersucht wird. Danach geht es immer weiter nach oben (im OSI Modell) - wartet man solange mit der Abarbeitung des nächsten ankommenden Frames, bis das erste komplett abgearbeitet wurde? Oder verwendet man Semaphoren (Zugriffsschutz) und Mailboxen (asynchrone Abarbeitung), um "gleichzeitig" mehrere Frames bearbeiten zu können? Gibt es hier noch andere Mechanismen die eingesetzt werden (und performance-mäßig für einen ARM gut sind)? Bernd
"Man" macht beides, je nach Anwendung und Stack. uIP und U.Radigs Variante sind eher simpel gestrickt, eins kommt nach dem anderen. Schon allein deshalb, weil sich alles in einem einzigen Framebuffer abspielt. Braucht dafür kaum RAM. Ethernut wiederum ist "klassisch". Normalen Betriebssystem vergleichbar sind mehrere Prozesse parallel zu Gange. Weshalb Ethernut eben auch gleich ein RTOS mitbringt. Nachteil ist der grosse RAM-Verbrauch, der oft externes RAM erfordert. Bist du schon einmal über das Fragmentierungsproblem gestolpert? Was das konkrete Verhalten von TCP/IP angeht: Es gibt diverse RFCs. Nicht nur die zu TCP und IP und ... sondern auch ein paar, die sich dem erwarteten Verhalten widmen. Das wären insbesondere 1122 und 1123.
>Bist du schon einmal über das Fragmentierungsproblem gestolpert? es wird auf jeden fall so sein, dass nicht alle pakete hintereinander in der gleichen Reihe wie sie losgeschickt werden auch ankommen... von daher tritt diese thematik auf jeden fall irgendwann auf. >sondern auch ein paar, die sich dem erwarteten Verhalten widmen. Das >wären insbesondere 1122 und 1123. das hab ich jetzt nicht ganz verstanden. Bis jetzt hab ich 8 Buffer für ankommmende Pakete, die nach einander beschrieben werden und anschließend gehts von vorne los. Die Idee mit den Pointern / Strukturen auf diese Buffer würde ich auch machen. Bernd
Bernd Schuster wrote: >>Bist du schon einmal über das Fragmentierungsproblem gestolpert? > > es wird auf jeden fall so sein, dass nicht alle pakete hintereinander in > der gleichen Reihe wie sie losgeschickt werden auch ankommen... von > daher tritt diese thematik auf jeden fall irgendwann auf. Nunja, wenn du eh den uIP Stack beispielsweise benutzt, dann wird die Max. Segment Size für die hereinkommenden Pakete eh mit der Größe des Buffers angegeben, den du auf dem Mikroprozessor zur Verfügung stellst. Sind dies beispielsweise nur 1500Bytes, so wird der Gegenspieler (zum Beispiel Rechner) immer nur 1500Bytes schicken und auf ein ACK vom Mikrocontroller warten. Hier ist also nicht anzunehmen, dass Pakete "durcheinander" ankommen.
diese thematik möchte ich ja gern bei dem uIP ändern... sprich mehrere Buffer - fragt sie nur halt wieviele oder wie lange auf solche fehlenden Pakete gewartet wird. Bernd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.