Vor wenigen Tagen wurde der SVN-Trunk von OpenSIPS für die Fertigstellung der Version 1.6 eingefroren. Und ich muss sagen: so langsam wird OpenSIPS erwachsen! Zwar hatte ich in den letzten Wochen das Vergnügen, teilweise beinahe täglich einen oder mehrere Bugs zu melden - mir gefällt aber immer besser, was sich da so entwickelt.
Die beeindruckende vollständige Liste der Neuerungen findet in den Relese Notes, nachfolgend eine kurze Übersicht über jene Neuerungen, die mich persönlich besonders freuen:
Ausgefeiltere Dialog-Unterstützung
Damit habe jetzt auch ich es gewagt, mein Routing komplett über den Haufen zu werfen und die Dialog-Unterstützung von OpenSIPS zu nutzen. Das Ganze läuft bei mir mittlerweile schon im Produktivbetrieb und beeindruckend gut. Von mir entwickelte kleine Bibliotheken, die live eine beeindruckende Vielzahl an Informationen abfragen und darstellen können, zeigen erst so richtig, was in dem Modul steckt.
Ein paar kleine Wünsche liegen mir diesbezüglich noch auf dem Herzen, der wichtigste davon wäre die Preisgabe von Dialog-Variablen und -Profilen via MI.
Textops Modul
Die interessanteste Verbesserung besteht in einer Serie von neuen Funktionen zum Manipulieren von Codec-Informationen im SDP-Body. Hier wurden auch ein paar Verbesserungsvorschläge meinerseits umgesetzt.
Ich nutze dies vor allem für einen Zweck: SIP-Pakete zu verkleinern, um Probleme mit fragmentierten Paketen zu vermeiden. Es klappt erstaunlich gut!
Nat_traversal
Das Modul erlaubt ja bekanntlich sofern man Mediaproxy (und nicht RTPproxy) nutzt, auf das Modul nathelper zu verzichten. Zwar hatte ich schon vor einer Weile diesbezüglich nachgefragt, einer neuen konkreten Anfrage wurde jetzt aber stattgegeben: ein neuer Test (8) ist nämlich meiner Meinung nach der wichtigste und "beste" NAT-Test.
Bei Interesse findet sich online die kurze Vorgeschichte als auch der von mir eingereichte Feature-Request.
Durchgehende Unterstützung für Branches
Gibt es doch schon ewig, mag mancher sagen. Doch der kleine aber feine Unterschied zwischen damals und heute liegt im Detail! Habe ein wenig rumgemeckert, und darf ganz unbescheiden behaupten, das Ganze ins Rollen gebracht zu haben.
Individuelle Reply-Routen pro Branch erleichtern jetzt die Arbeit im Routing-Skript. Wozu man so etwas braucht? Mir war es in erster Linie eine große Hilfe als es darum ging, für parallele und auch serielle Branches das Handling des Mediaproxy-Moduls zu perfektionieren. Hier meine Antwort auf die entsprechende Ankündigung von Anca nebst einem Beispiel, wie man Branch-Routen jetzt noch besser nutzen könnte.
Aber gibt es nicht längst schon engage_media_proxy() für solche Zwecke? Klar, und ich hatte es fast schon im Produktiveinsatz - bis ich über einen großen Nachteil des Moduls stolperte. Es arbeitet Dialog-basiert, aber ohne Unterstützung für Branches. Hatte darüber bereits vor einer Weile eine Diskussion hierzu angestoßen, damals schien Dan der nötige Aufwand aber nicht gerechtfertigt. Der prinzipiell für gut befundene Ansatz wurde vertagt.
Also hieß es für mich: zurück zur klassischen Konfiguration - und die verbesserten Reply-Routen kamen mir da gerade Recht. Ein Dialog-Profil setzen, wenn der Anrufende NAT-Probleme hat - Branch-Flags, wenn einer der Anzurufenden das Bedürfnis danach zu haben scheint. Damit lassen sich auch Weiterleitungen etc sauber handhaben, vorausgesetzt man setzt seine reply- und failure-route Abschnitte entsprechend um.
Und nachdem man so etwas jetzt auch selbst im Routing-Skript hinbekommt, sollte das im Modul selbst erst Recht möglich sein. Deshalb habe ich mir erlaubt, einen entsprechenden Feature-Request zu posten. Für Version 1.6 wird es sich für diesen aber zeitlich leider nicht mehr ausgehen.
Sonstige Erweiterungen und neue Module
Ein Highlight ist das neue B2BUA-Modul (Back-to-Back User Agent). Mich persönlich hätte es seeehr gereizt, es im Laufe meiner Migration gleich in Betrieb zu nehmen, gerade weil Topology Hiding und Reduktion der Route-Header für mein Setup ein wichtige Themen sind. Mittlerweile bin ich aber doch recht froh, darauf verzichtet zu haben, das Modul hat noch so seine Kinderkrankheiten.
Großes Potential sehe ich auch im Memcached Modul, damit ließe sich so einiges optimieren. Das neue STUN-Modul stellt einen RFC 3489 konformen STUN-Server bereit. Getreu dem Motto "never touch a running system" bin ich hier aber noch beim Stund geblieben. Interessant wird das neue Modul, sobald es eine umfassende Unterstützung für RFC 5389 bietet, und auch entsprechende Clients verfügbar sind.
Zum UAC-Modul wurde uac_replace_to() hinzugefügt, auch hierfür hatte ich Verwendung. Außerdem lassen sich diese Transformationen jetzt zuverlässig pro Branch steuern - auch das ist eine sehr wichtige Verbesserung. Die Funktion alias_db_find() leistet mir auch bereits nützliche Dienste.
Damit habe ich noch bei weitem nicht alle Änderungen aufgezählt, doch hierzu verweise ich lieber noch einmal auf die entsprechenden Release Notes. Und jetzt: viel Spaß mit euren neuen SIP-Proxy!!
Nur kurz, bevor ich ins Bett falle: OpenSIPS 1.6 ist vor einer Stunde freigegeben worden (und seit fünf Stunden bei mir im Produktivbetrieb ). Was es so alles an Neuem zu entdecken gibt, findet Ihr in meiner Vorankündigung. Und, was mich natürlich ganz be
Aufgenommen: Okt 16, 04:53