Wie kann ich den ToS-Wert eines eingehenden Pakets lesen?



  • Hallo,
    ich hoffe hier den fehlenden Tipp zu bekommen, der mir bei meinem Problem hilft:

    Ich bin gerade dabei den rtpproxy von portaone etwas zu modifizieren. Der rtpproxy empfängt rtp-Daten (udp auf ipv4/ipv6) und leitet diese dann weiter. Leider wird dabei das ToS-Feld nicht beibehalten. Bei den ausgehenden Paketen kann ich zwar ohne Probleme das ToS-Feld setzen, aber bei den eingehenden Paketen weiß ich nicht wie ich an den Wert rankomme. Ich habe erst überlegt einen Raw-Socket zu nutzen, aber das ist wohl nicht das richtige, ich will ja auch nur die an mich gerichteten Pakete empfangen und nicht alle. Weiß jemand eine Möglichkeit IP-Flags aus ankommenden Paketen zu bekommen?

    Vielen Dank

    Achim



  • Hallo,

    du kannst rawsockets verwenden. Und ja, dann emfpängst du halt alles.
    Ansonsten schau mal in Google ob es vielleicht ein schönes Netfilter GUI gibt, welches dir die TOS Typen logged.

    Grüße 🙂



  • @Headhunter: kennst du dich gut mit der socketprogrammierung aus? Hätte villeicht ein Auftrag für dich. Hättest du interesse?



  • Hmm, keine Idee wie man das ohne Raw-Socket lösen kann? Wollte den UDP/IP-Stack ungerne neuentwickeln. Ein Auslesen mit IPTables oä wäre sehr gefrickelt und nicht performant.



  • Seit wann sind Iptables nicht performant und dass man den TCP Stack neu programmieren müsste wenn man Raw Sockets verwendet wäre mir auch neu. Du hast nicht in Google gesucht wie mans macht, gibs zu!
    Du hast also zwei potentielle Lösungsansätze, viel Spaß 🙂



  • Headhunter schrieb:

    Seit wann sind Iptables nicht performant und dass man den TCP Stack neu programmieren müsste wenn man Raw Sockets verwendet wäre mir auch neu. Du hast nicht in Google gesucht wie mans macht, gibs zu!
    Du hast also zwei potentielle Lösungsansätze, viel Spaß 🙂

    Hallo Headhunter,

    hab' mich vielleicht etwas missverständlich ausgedrückt. Was bei IPtables nicht performant ist, ist wenn ich die Adresse, den Port und den ToS-Wert aller eingehenden Pakete in eine Datei mitlogge und mit meiner Software wieder einlese (oder gibt es da noch ne andere Möglichkeit??? Kenne mich mit den Kommunikationsmöglichkeiten von IPTables nicht aus!).

    Bei Raw-Sockets muss ich nach meinem Wissen doch noch IP- und UDP-Header abziehen bevor ich die reinen Nutzdaten habe? Da ich auch IPv6-Pakete verarbeiten möchte, muss ich dann auch überprüfen, ob da Erweiterungsheader vorhanden sind usw. Diese Arbeit wollte ich eigentlich vermeiden.

    Naja, ich werde mir mal überlegen welchen Weg ich nehme (jetzt weiß ich wenigstens warum diese Funktion im rtpproxy nicht implementiert ist).

    Vielen Dank für die Antworten

    Achim

    Ps. Ich habe bei Google lange gesucht, nur ToS wird leider wenig genutzt.


Anmelden zum Antworten