Programm-Architektur



  • Hallo zusammen,

    ich möchte ein VPN-P2P-Programm für Linux schreiben. Es soll folgendermaßen aufgebaut sein:

    - Eine virtuelle NIC wird mit dem TUN/TAP-Modul realisiert. Das Programm kann also komplett im Userspace laufen. Es wird also nicht nötig sein, einen Kernel-Treiber zu implementieren.
    - Die Kommunikation zwischen den Peers soll über OpenSSL laufen. Die neuste Version unterstützt DTLS (Sichere Verbindugen über UDP).
    - Zum Herausfinden der aktuellen IP-Nummer eines Peers soll ein Kademlia-Netzwerk (Serverloses Netzwerk zum Speichern kurzer Informationen) genutzt werden. Hier kann die KadC-Bibliothek genutzt werden (kadc.sourceforge.net).

    Ich habe nun aber folgende Probleme:
    - Ich habe unter Linux noch keine größeren Programme geschrieben und daher die Frage, wie ich das Configure Script und das Makefile erstellen (gibt es hier empfehlenswerte Programme, die das für mich übernehmen? [hab mal KDevelop genutzt, hat mich aber nicht überzeugt]
    - Meint ihr, ich sollte erstmal eine ensprechende Bibliothek bauen? Da habe ich auch keine Idee, wie das unter Linux geht. Oder ein "einfaches Programm".

    Danke für eure Hilfe/Tipps
    Manuel



  • Wegen des Make-Files und der Conf. nimm doch eine Entwicklungsumgebung, z.B.: Kdevelop, die dir das automatisch erstellt.
    Vielleicht solltest du erstmal kleine Testprogramme schreiben um zusehen ob das was du dir so denkst auch klappt. Bsp.: Klappt die Kontaktaufnahme, wie binde ich OpenSSL ein, ........... Wenn die stehen, wirst du schon sehen wie dein fertiges Programm aussehen soll.



  • Hi,
    das habe ich schon gemacht.
    Verbindungen mit OpenSSL laufen, aber ich habe die Bibliotheken z.B. immer direkt ins Programm eingebunden.
    Ich weiss nicht, welche -l Flags etc. ich für gcc benötige.
    KDevelop find ich nich so dolle, z.Zt. programmier ich mit Emacs, aber das erstellt mir kein Makefile.

    Außerdem habe ich zur Zeit noch ein Problem:
    soll ich in einer Endlosschleife recvfrom (für die OpenSSL-Daten) und read (für die Tun/Tap-Daten) aufrufen, oder ist das irgendwie mit select zu bewältigen?.
    Also kann ich select zwei file discriptors mitgeben, sodass select() beendet wird wenn einer Daten hat?



  • Du kannst select auch mehr Diskriptoren mitgeben und ein timeout setzen.
    select funktioniert mit Diskriptormengen, wenn für manche Diskriptoren was anliegt verbleiben die in der Menge und du kannst sie abfragen. Musst dann vor dem nächsten select-Aufruf die Menge wieder zurücksetzten.
    Mir persönlich gefällt da poll besser.



  • hey, super.
    Poll ist wohl genau das, was ich brauche! Danke.



  • Zu der Make-Problematik:
    Entweder Du lernst selbst, autoconf und automake zu verwenden, oder aber Du greifst zu einer bequemeren Alternative wie scons.


Anmelden zum Antworten