Δίκτυα Υπολογιστών Κεφάλαιο 21 – Πρωτόκολλα πραγματικού χρόνου: streaming ήχου και video

Δημοσιεύτηκε από τον/την codebrakes στις

Δίκτυα Υπολογιστών
Κεφάλαιο 20 - Πρωτόκολλα πραγματικού χρόνου: Τεχνικές συμπίεσης αρχείων

Εισαγωγή

Στην καθημερινότητα μας όταν σερφάρουμε στο διαδίκτυο πολύ συχνά θα ακούσουμε μουσική, θα δούμε κάποιο video στον ελεύθερο μας χρόνο, θα ζητήσουμε πρόσβαση σε έναν web stream ραδιοφωνικό σταθμό κοκ. Στο κεφάλαιο αυτό θα περιγράψουμε τις τεχνικές με τις οποίες πραγματοποιούνται τα παραπάνω καθώς και τα απαραίτητα πρωτόκολλα που χρησιμοποιούν.

 

Κάνοντας streaming ένα αποθηκευμένο ήχο ή video

  1. Με χρήση ενός διακομιστή (web server): Ο πελάτης (browser) μπορεί να χρησιμοποιήσει υπηρεσίες του HTTP και να στείλει ένα GET μήνυμα για να κατεβάσει ένα αρχείο ήχου. O web server θα στείλει ένα συμπιεσμένο αρχείο προς τον πελάτη – browser. Στην συνέχεια ο πελάτης (browser) μπορεί να χρησιμοποιήσει μια βοηθητική εφαρμογή (ας πούμε για παράδειγμα το windows media player) για να αναπαράγει το αρχείο. Η παρακάτω εικόνα αποτυπώνει αυτό το παράδειγμα.
Παράδειγμα streaming αρχείου ήχου με web server
    • Βήμα 1: Ο HTTP πελάτης αποκτά πρόσβαση σε έναν διακομιστή χρησιμοποιώντας ένα GET μήνυμα
    • Βήμα 2: Ο HTTP πελάτης λαμβάνει από τον διακομιστή ένα metafile το οποίο παρέχει πληροφορίες για το αρχείο που θέλει να κατεβάσει
    • Βήμα 3: Το metafile αρχείο μεταβιβάζεται στο windows media player
    • Βήμα 4: Το πρόγραμμα windows media player χρησιμοποιεί το URL που βρίσκεται στο metafile για να αποκτήσει πρόσβαση στον διακομιστή προκειμένου να κατεβάσει το αρχείο
    • Βήμα 5: Ο διακομιστής προωθεί στον πελάτη μέσω του προγράμματος windows media player το αντίστοιχο αρχείο.
  1. Χρήση ενός media server: Το πρόβλημα με την δεύτερη περίπτωση που είδαμε παραπάνω είναι ότι ένας browser και το windows media player χρησιμοποιούν και οι δύο υπηρεσίες HTTP. Το HTTP είναι σχεδιασμένο για να τρέχει πάνω από το πρωτόκολλο TCP. Αυτό αποτελεί καλή λύση για να λάβουμε ένα metafile αρχείο αλλά όχι για να λάβουμε αρχεία ήχου ή video. Ο λόγος αυτός οφείλεται διότι το TCP αναμεταδίδει τα καταστραμμένα ή χαμένα τμήματα (segments) το οποίο είναι αρνητικό για streaming υπηρεσίες. Οπότε το πιο κατάλληλο θα ήταν να έχουμε ένα πρωτόκολλο το οποίο να εκτελείται πάνω από το UDP. Παρόλα αυτά όταν χρησιμοποιούμε το HTTP κι όταν αποκτήσουμε πρόσβαση σε έναν web server χρειαζόμαστε επίσης έναν media server. Στην παρακάτω εικόνα αποτυπώνεται αυτή η προσέγγιση.
Παράδειγμα χρήσης media server
  1. Χρησιμοποιώντας Media Server και RTSP: Το πρωτόκολλο ροής πραγματικού χρόνου (Real-Time Streaming Protocol – RTSP) είναι σχεδιασμένο έτσι ώστε να προσθέτει περισσότερες λειτουργίες σε μια streaming διεργασία. Χρησιμοποιώντας το RTSP, μπορούμε ελέγξουμε την αναπαραγωγή ενός αρχείου ήχου ή video. Το RTSP είναι ένα εξερχόμενο πρωτόκολλο (out-of-band). Η παρακάτω εικόνα αποτυπώνει αυτό το παράδειγμα.
Παράδειγμα χρήσης media server και RTSP
    • Βήμα 1: Ο HTTP πελάτης αποκτά πρόσβαση σε έναν διακομιστή στέλνοντας ένα GET μήνυμα

    • Βήμα 2: Ο HTTP πελάτης λαμβάνει από τον διακομιστή ένα metafile αρχείο

    • Βήμα 3: Αυτό το αρχείο metafile προωθείται στο windows media player
    • Βήμα 4: Το πρόγραμμα windows media player στέλνει ένα SETUP μήνυμα για να δημιουργηθεί σύνδεση με τον media server

Διαδραστικός ήχος και video σε πραγματικό χρόνο

Οι άνθρωποι επικοινωνούν μεταξύ τους σε πραγματικό χρόνο. Το διαδικτυακό τηλέφωνο ή το voice over IP είναι παραδείγματα εφαρμογών πραγματικού χρόνου. Η τηλεδιάσκεψη (video conferencing) είναι επίσης άλλο ένα παράδειγμα εφαρμογής πραγματικού χρόνου. Προτού όμως αναφερθούμε τα πρωτόκολλα πραγματικού χρόνου θα αναφερθούμε στα χαρακτηριστικά που διαθέτουν αυτά τα οποία είναι τα εξής:

  1. Χρονική σχέση (Time Relationship)
  2. Χρονοσφραγίδες (Timestamps)
  3. Αριθμοί ακολουθίας (Sequence numbers)
  4. Πολυδιανομή (Multicasting)

Χαρακτηριστικά πρωτοκόλλων πραγματικού χρόνου: Χρονική σχέση (Time Relationship)

Τα δεδομένα πραγματικού χρόνου σε ένα δίκτυο μεταγωγής πακέτων απαιτεί την διαφύλαξη της χρονικής σχέσης ανάμεσα στα πακέτα μιας συνόδου. Για παράδειγμα, ας υποθέσουμε ότι ένας διακομιστής video πραγματικού χρόνου δημιουργεί, live video εικόνες και τις στέλνει στο διαδίκτυο. Αυτό το video ψηφιοποιείται και τεμαχίζεται σε πακέτα, καθένα από τα οποία κρατάει 10 δευτερόλεπτα πληροφορίας του video. Το πρώτο πακέτο ξεκινά την χρονική στιγμή 00:00:00, το δεύτερο πακέτο ξεκινά την χρονική στιγμή 00:00:10 και το τρίτο πακέτο την χρονική στιγμή 00:00:20. Ας υποθέσουμε 2 δευτερόλεπτα για κάθε πακέτο για να φτάσει στον τελικό του προορισμό. Ο παραλήπτης μπορεί να αναπαράγει το πρώτο πακέτο στο χρονικό διάστημα 00:00:01, το δεύτερο στο χρονικό διάστημα 00:00:11 και το τρίτο πακέτο στο χρονικό διάστημα 00:00:21. Παρόλα αυτά υπάρχει διαφορά ενός δευτερολέπτου ανάμεσα σε αυτό που στέλνει ο διακομιστής και σε αυτό που βλέπει ο πελάτης στην οθόνη του υπολογιστή του. Η παρακάτω εικόνα αποτυπώνει αυτό το παράδειγμα.

Χρονική σχέση πακέτων μεταξύ πελάτη (client) και διακομιστή (server)

Χαρακτηριστικά πρωτοκόλλων πραγματικού χρόνου: Jitter

Τι θα συμβεί όμως αν υπάρξει καθυστέρηση στα πακέτα που μεταδίδονται ;

Για παράδειγμα ας υποθέσουμε ότι το πρώτο πακέτο φτάνει το χρονικό διάστημα 00:00:01 (καθυστέρηση 1 δευτερολέπτου), το δεύτερο φτάνει το χρονικό διάστημα 00:00:15 (καθυστέρηση 5 δευτερολέπτων) και το τρίτο φτάνει το χρονικό διάστημα 00:00:27 (καθυστέρηση 7 δευτερολέπτων). Ο παραλήπτης μπορεί να αναπαράξει το πρώτο πακέτο στο χρονικό διάστημα 00:00:01 το οποίο και θα τερματίσει στο χρονικό διάστημα 00:00:11. Παρόλα αυτά το επόμενο πακέτο θα φτάσει στο χρονικό διάστημα 00:00:15, δηλαδή 5 δευτερόλεπτα αργότερα απο την λήξη του πρώτου πακέτου. Οπότε υπάρχει ένα χρονικό κενό ανάμεσα στο πρώτο και το δεύτερο πακέτο. Αυτό το φαινόμενο αποκαλείται Jitter. Η παρακάτω εικόνα αποτυπώνει ένα τέτοιο παράδειγμα.

Φαινόμενο Jitter στην επικοινωνία ενός πελάτη (client) και ενός διακομιστή (server)

Χαρακτηριστικά πρωτοκόλλων πραγματικού χρόνου: Χρονοσφραγίδες (timestamps)

Οι χρονοσφραγίδες από μόνες τους δεν μπορούν να ενημερώσουν τον παραλήπτη αν ένα πακέτο έχει χαθεί. Για παράδειγμα ας φανταστούμε τις χρονοσφραγίδες 0, 10 και 20. Εάν το δεύτερο πακέτο χαθεί, ο παραλήπτης λαμβάνει μόνο δύο πακέτα με τις χρονοσφραγίδες 0 και 20. Ο παραλήπτης υποθέτει ότι το πακέτο με την χρονοσφραγίδα 20 είναι το δεύτερο πακέτο, που παράχθηκε μετά από το 1ο πακέτο. Ο παραλήπτης δεν γνωρίζει ότι το 2ο πακέτο έχει χαθεί. Οπότε λοιπόν οι αριθμοί ακολουθίας χρειάζονται σε τέτοιες περιπτώσεις. Οπότε με αυτόν τον τρόπο δεν θα υπάρχουν χρονικά κενά μεταξύ των πακέτων. Η παρακάτω εικόνα αποτυπώνει αυτό το παράδειγμα.

Χρήση χρονοσφραγίδων (timestamps) στην επικοινωνία ενός πελάτη (client) και ενός διακομιστή (server)

Απαιτούμενα χαρακτηριστικά για τα πρωτόκολλα πραγματικού χρόνου

  • Απαιτούν υψηλό throughput (ρυθμαπόδοση δηλαδή ο ρυθμός με τον οποίο στέλνονται τα δεδομένα από το μέσο μετάδοσης).
  • Η δυνατότητα πολυδιανομής (Multicast) είναι απαραίτητη.
  • Χρειάζεται διαχείριση για την ποιότητα της μετάδοσης.
  • Τα πιο γνωστά πρωτόκολλα πραγματικού χρόνου είναι:
    1. Πρωτόκολλο Μεταφοράς Πραγματικού Χρόνου (Real – time Transport Protocol – RTP)
    2. Πρωτόκολλο Ελέγχου Μεταφοράς Πραγματικού Χρόνου (Real – Time Transport Control Protocol).

Γενικές πληροφορίες για το RTP και το RTCP

Αναπτύχθηκαν προκειμένου να καλύψουν υπηρεσίες πραγματικού χρόνου (για παράδειγμα πολυμεσικές υπηρεσίες όπως video και ήχος). Ο αρχικός τους σχεδιασμός βασιζόταν για multicast επικοινωνίες, στην συνέχεια όμως χρησιμοποιήθηκαν και για unicast επικοινωνία. Μπορούν να χρησιμοποιηθούν για μονόδρομη επικοινωνία (Video on Demand – VoD) και για αμφίδρομη επικοινωνία (Video Conference).

Τελευταία ενημέρωση: 23/02/2017