cosmos
07-07-06, 09:42
Κάποιο σκορπιοχώρι σκέψεων για το θέμα SIP. Κάτι σε blog, αλλά μια που δεν έχω σχετική σελίδα και βαριέμαι να ψάξω, τα γράφω εδώ.
Κατ'αρχήν μου φαίνεται μεγάλη υπόθεση που παίζουν οι συσκευές σε SIP. Μέσα σε λίγο καιρό έχω δει ΑΤΑ/softphones από τη μία αλλά και SIP servers να κάνουν ότι γουστάρουν, βιάζοντας κατά συρροή και κατ'εξακολούθηση τα σχετικά πρότυπα... Απορίας άξιον πως έχουμε VoIP που δουλεύει. Λ.χ.:
- O parser του Voipbuster & SIPDiscount μπορεί να μην αποδέχεται (λόγω σφάλματος) συγκεκριμένα codecs
- Στο (αγαπημένο μου κατά τα άλλα) Fritz Box Fon, έχω μετρήσει τουλάχιστον μία προφανή παραβίαση των specs και κανά 2 ακόμα αποκλίσεις από recommended (μη υποχρεωτικές, αλλά ισχυρά συνιστώμενες) προδιαγραφές.
- Με ένα quick peek στο evoice (παλιά υποδομή) υπάρχει τουλάχιστον μία προφανή παραβίαση των specs.
- Σειρά έχει το i-call να δω τι παίζει...
Εδώ πρέπει να πω ότι όσο αφορά τα σχετικά φθηνά routers-ata combos, τα Vigor φαίνεται να μην παίζονται σε επίπεδο βρέθηκε bug -> υποβλήθηκε -> βγήκε πατσάκι (νέο firmware)...
Αν έπαιρνα 1$ για κάθε bug που υπέβαλλα... :p
Τέσπα, βρήκα και κάτι άξιο λόγου για το πως δουλεύει η συνενόηση μεταξύ SIP client και server για την επιλογή του codec. Αρκετά μπερδεμένο, αλλά με λίγα λόγια πάει κάπως έτσι:
1) Ο client προσφέρει κάποια codec, λ.χ. g729, iLBC, g711a, g711u με αυτή τη σειρά. Το πρώτο codec είναι αν θέλετε και το προτιμητέο, αλλά δε δεσμεύει το server για την επιλογή του codec που θα χρησιμοποιηθεί
2) Με το που θα το πάρει ο server, σχηματίζει μία απάντηση στην οποία πρέπει να δηλώσει και αυτός κάποια codec με συγκεκριμένη σειρά, εκ των οποίων το πρώτο το θεωρεί από τη μεριά του ως προτεινόμενο (όχι για αποχώρηση).
Τώρα, εδώ είναι κομμάτι μπερδεμένο. Αν νομίζατε ότι εδώ περιλαμβάνονται μόνο τα codecs που προσφέρθηκαν από τον client, χάσατε. Τι πρέπει οπωσδήποτε να υπάρχει και τι συνίσταται να υπάρχει;
- Υποχρεωτικά πρέπει να υπάρχει στην απάντηση του server τουλάχιστον ένα από τα codecs που δηλώθηκαν στην προσφορά του client
- Υποχρεωτικά πρέπει στην απάντηση του server να μην αναγράφονται codecs που προσφέρθηκαν από τον client, αλλά δεν υποστηρίζονται από τον server
- Μπορεί η απάντηση να περιέχει και άλλα codecs λ.χ. η απάντηση να έχει τα εξής "g729,g726-32,g726-24,g723" (όπου εδώ θεωρείται ότι τα iLBC και τα G711 δεν υποστηρίζονται από το server, αλλιώς ο τελευταίος θα έπρεπε να τα βάλει και αυτά)
- Αν από τα codecs της αρχικής προσφοράς υποστηρίζονται πολλά από το server, τότε συνίσταται και η απάντηση να τα έχει με την ίδια σειρά. Mε άλλα λόγια, αν ο server υποστηρίζει τα ίδια ακριβώς codec με την προσφορά του client, η συνιστώμενη απάντηση είναι "g729, iLBC, g711a, g711u". Αλλά είναι σωστή και μία απάντηση του τύπου "g711a, g711u, g729, iLBC"!
3) Τώρα η απάντηση έχει σχηματιστεί. Μία σειρά από codecs λοιπόν έχει αποστελεί προς τον client, όπου συνήθως το πρώτο codec που αναφέρεται είναι και το προτιμώμενο από την πλευρά του server αλλά και υποστηρίζεται από τον client.
To ενδιαφέρον τώρα ποιο είναι: ο server με το που στέλνει την απάντηση μπορεί αμέσως να αρχίσει να στέλνει πληροφορία φωνής με χρήση του συνιστώμενου (από αυτόν) codec.
Ηθικόν δίδαγμα: τον κ**ο σας να βαράτε να θέλετε να βγει ένα codec, όταν δηλώνετε στις προτιμήσεις σας περισσότερα από ένα, ο server μπορεί να διαλέξει όποιο του γουστάρει... Ο σίγουρος τρόπος για να χρησιμοποιείται ο προτιμώμενός σας codec είναι να είναι ενεργός στον client σας μόνον αυτός...
Πέρα από αυτό, ενδιαφέρουσα φαίνεται η χρήση κανονικών αριθμών τηλεφώνων στη νέα υποδομή του evoice. Ο δρόμος που θα πάει το πράμα 99%.
Ακόμα πιο ενδιαφέρουσα (αν την έχω καταλάβει καλά) η δυνατότητα να καλείς έναν αριθμό 800, να δίνεις τα στοιχεία του evoice account που έχεις και στη συνέχεια να πραγματοποιείς κλήσεις προς τον προορισμό σου. Δωρεάν φυσικά αν είναι προς έτερους voip users.
Αλλά και η δυνατότητα interworking με ENUM, FWD και άλλους χρήστες, χωρίς χρήση SIP διεύθυνσης της μορφής χχχχ@fwdnet. Απλά με το αριθμητικό πρόθεμα. Αν το i-Call έχει κάτι αντίστοιχο interworking με FWD για παράδειγμα, θα είναι πολύ απλό να καλεί κάποιος από evoice -> icall και αντίστροφα, από το τηλέφωνο απλά με χρήση ίσως ένός προθέματος (λ.χ. **0).
Κατ'αρχήν μου φαίνεται μεγάλη υπόθεση που παίζουν οι συσκευές σε SIP. Μέσα σε λίγο καιρό έχω δει ΑΤΑ/softphones από τη μία αλλά και SIP servers να κάνουν ότι γουστάρουν, βιάζοντας κατά συρροή και κατ'εξακολούθηση τα σχετικά πρότυπα... Απορίας άξιον πως έχουμε VoIP που δουλεύει. Λ.χ.:
- O parser του Voipbuster & SIPDiscount μπορεί να μην αποδέχεται (λόγω σφάλματος) συγκεκριμένα codecs
- Στο (αγαπημένο μου κατά τα άλλα) Fritz Box Fon, έχω μετρήσει τουλάχιστον μία προφανή παραβίαση των specs και κανά 2 ακόμα αποκλίσεις από recommended (μη υποχρεωτικές, αλλά ισχυρά συνιστώμενες) προδιαγραφές.
- Με ένα quick peek στο evoice (παλιά υποδομή) υπάρχει τουλάχιστον μία προφανή παραβίαση των specs.
- Σειρά έχει το i-call να δω τι παίζει...
Εδώ πρέπει να πω ότι όσο αφορά τα σχετικά φθηνά routers-ata combos, τα Vigor φαίνεται να μην παίζονται σε επίπεδο βρέθηκε bug -> υποβλήθηκε -> βγήκε πατσάκι (νέο firmware)...
Αν έπαιρνα 1$ για κάθε bug που υπέβαλλα... :p
Τέσπα, βρήκα και κάτι άξιο λόγου για το πως δουλεύει η συνενόηση μεταξύ SIP client και server για την επιλογή του codec. Αρκετά μπερδεμένο, αλλά με λίγα λόγια πάει κάπως έτσι:
1) Ο client προσφέρει κάποια codec, λ.χ. g729, iLBC, g711a, g711u με αυτή τη σειρά. Το πρώτο codec είναι αν θέλετε και το προτιμητέο, αλλά δε δεσμεύει το server για την επιλογή του codec που θα χρησιμοποιηθεί
2) Με το που θα το πάρει ο server, σχηματίζει μία απάντηση στην οποία πρέπει να δηλώσει και αυτός κάποια codec με συγκεκριμένη σειρά, εκ των οποίων το πρώτο το θεωρεί από τη μεριά του ως προτεινόμενο (όχι για αποχώρηση).
Τώρα, εδώ είναι κομμάτι μπερδεμένο. Αν νομίζατε ότι εδώ περιλαμβάνονται μόνο τα codecs που προσφέρθηκαν από τον client, χάσατε. Τι πρέπει οπωσδήποτε να υπάρχει και τι συνίσταται να υπάρχει;
- Υποχρεωτικά πρέπει να υπάρχει στην απάντηση του server τουλάχιστον ένα από τα codecs που δηλώθηκαν στην προσφορά του client
- Υποχρεωτικά πρέπει στην απάντηση του server να μην αναγράφονται codecs που προσφέρθηκαν από τον client, αλλά δεν υποστηρίζονται από τον server
- Μπορεί η απάντηση να περιέχει και άλλα codecs λ.χ. η απάντηση να έχει τα εξής "g729,g726-32,g726-24,g723" (όπου εδώ θεωρείται ότι τα iLBC και τα G711 δεν υποστηρίζονται από το server, αλλιώς ο τελευταίος θα έπρεπε να τα βάλει και αυτά)
- Αν από τα codecs της αρχικής προσφοράς υποστηρίζονται πολλά από το server, τότε συνίσταται και η απάντηση να τα έχει με την ίδια σειρά. Mε άλλα λόγια, αν ο server υποστηρίζει τα ίδια ακριβώς codec με την προσφορά του client, η συνιστώμενη απάντηση είναι "g729, iLBC, g711a, g711u". Αλλά είναι σωστή και μία απάντηση του τύπου "g711a, g711u, g729, iLBC"!
3) Τώρα η απάντηση έχει σχηματιστεί. Μία σειρά από codecs λοιπόν έχει αποστελεί προς τον client, όπου συνήθως το πρώτο codec που αναφέρεται είναι και το προτιμώμενο από την πλευρά του server αλλά και υποστηρίζεται από τον client.
To ενδιαφέρον τώρα ποιο είναι: ο server με το που στέλνει την απάντηση μπορεί αμέσως να αρχίσει να στέλνει πληροφορία φωνής με χρήση του συνιστώμενου (από αυτόν) codec.
Ηθικόν δίδαγμα: τον κ**ο σας να βαράτε να θέλετε να βγει ένα codec, όταν δηλώνετε στις προτιμήσεις σας περισσότερα από ένα, ο server μπορεί να διαλέξει όποιο του γουστάρει... Ο σίγουρος τρόπος για να χρησιμοποιείται ο προτιμώμενός σας codec είναι να είναι ενεργός στον client σας μόνον αυτός...
Πέρα από αυτό, ενδιαφέρουσα φαίνεται η χρήση κανονικών αριθμών τηλεφώνων στη νέα υποδομή του evoice. Ο δρόμος που θα πάει το πράμα 99%.
Ακόμα πιο ενδιαφέρουσα (αν την έχω καταλάβει καλά) η δυνατότητα να καλείς έναν αριθμό 800, να δίνεις τα στοιχεία του evoice account που έχεις και στη συνέχεια να πραγματοποιείς κλήσεις προς τον προορισμό σου. Δωρεάν φυσικά αν είναι προς έτερους voip users.
Αλλά και η δυνατότητα interworking με ENUM, FWD και άλλους χρήστες, χωρίς χρήση SIP διεύθυνσης της μορφής χχχχ@fwdnet. Απλά με το αριθμητικό πρόθεμα. Αν το i-Call έχει κάτι αντίστοιχο interworking με FWD για παράδειγμα, θα είναι πολύ απλό να καλεί κάποιος από evoice -> icall και αντίστροφα, από το τηλέφωνο απλά με χρήση ίσως ένός προθέματος (λ.χ. **0).