2.4 Ποιος ο ρόλος και η λειτουργία του IGMP
Όπως συμβαίνει και με τα κλασσικά πρωτόκολλα δρομολόγησης πρέπει να υπάρχει ένας τρόπος να παρακολουθούνται τα πακέτα των γειτονικών κόμβων για να αποφασιστεί η σωστή δρομολόγηση ανάλογα με το πρωτόκολλο που χρησιμοποιείται. Με τους κλασσικούς router, πρωτόκολλα όπως το RIP (Routing Information Protocol) και το OSPF (Open Shortest Path First) χρησιμοποιούνται για να οδηγούν τα πακέτα unicast στο επιθυμητό πεδίο. Αυτές οι μέθοδοι ωστόσο δεν είναι δυνατόν να εφαρμοστούν στην μη φυσική δομή των multicast groups. To IGMP (Internet Group Management Protocol) χρησιμοποιείται από τους mrouters για να μάθουν ποια είναι η κατάσταση συμμετοχής άλλων mrouter που είναι πάνω σε απευθείας συνδεδεμένους κόμβους.
Το IGMP χρησιμοποιεί μία κατοχυρωμένη Class D διεύθυνση του τύπου 224.0.0.1. Αυτή η διεύθυνση ορίζει ένα μόνιμο γκρουπ για όλα τα συστήματα multicast με IP διευθύνσεις. Οι δρομολογητές multicast στέλνουν μηνύματα και ακολουθίες πακέτων με TTL τιμή 1 σε αυτή τη διεύθυνση, κρατώντας την κίνηση μέσα στο εσωτερικό τοπικό υποδίκτυο. Ένας κόμβος ο οποίος είναι ικανός για multicast πρέπει να γίνει μέλος του γκρουπ “all systems” για κάθε interface δικτύου που έχει και να παραμείνει σε αυτό το γκρουπ όση ώρα είναι ενεργός για να λαμβάνει πακέτα multicast. Υπάρχουν δύο τύποι μηνυμάτων IGMP:
Οι mrouters στέλνουν περιοδικά το πρώτο τύπο μηνύματος με σκοπό να αποφασιστεί ποια γκρουπ έχουν κόμβους μέλη που είναι κατευθείαν συνδεδεμένοι πάνω στο τοπικό δίκτυο τους. Όταν ένας κόμβος λαμβάνει ένα μήνυμα query δημιουργεί και στέλνει ένα μήνυμα αναφοράς (report) για κάθε γκρουπ στο οποίο ανήκει μετά από κάποιο τυχαίο χρονικό διάστημα προκειμένου να αποφευχθεί η συμφόρηση δεδομένων στον mrouter. Αν ένας κόμβος αντιληφθεί ότι υπάρχει κάποιος άλλος κόμβος ο οποίος είναι στην διαδικασία αποστολής μιας παρόμοιας αναφοράς για το ίδιο γκρουπ τότε ο πρώτος κόμβος δεν θα στείλει την αναφορά του εκείνη την στιγμή. Αυτός είναι ένας πιο αποδοτικός τρόπος χρήσης του χρόνου και της επεξεργαστικής ισχύος. Όταν ένας κόμβος γίνεται μέλος ενός γκρουπ, θα στείλει αμέσως μία αναφορά στην οποία θα δηλώνει ότι έγινε μέλος για να αρχίσει να λαμβάνει και αυτός ροή multicast δεδομένων αμέσως και όχι να περιμένει για query από τον multicast δρομολογητή.
Οι νεότερες εκδόσεις του IGMP εισάγουν ένα πρωτόκολλο βάση του οποίου αποφασίζεται ποιος multicast δρομολογητής, αν υπάρχουν περισσότεροι από έναν, θα στέλνει τις ερωτήσεις (queries) στους κόμβους. Ο mrouter με την πιο χαμηλή ΙΡ διεύθυνση στο δίκτυο γίνεται και αυτός που είναι υπεύθυνος για την αποστολή των ερωτήσεων στους κόμβους. Μία επιπλέον βελτίωση είναι η δυνατότητα του να αποστέλλεται η ερώτηση αναφοράς σε κάποιο γκρουπ ξεχωριστά και όχι σε ομαδικά σε όλα τα γκρουπ. Αυτή η δυνατότητα χρησιμοποιείται σε συνδυασμό με το group leave message. Όταν δηλαδή ένας κόμβος επιθυμεί να αποχωρήσει από το γκρουπ απλά στέλνει ένα μήνυμα (group leave message) που δηλώνει την επιθυμία του αυτή. Ο mrouter στέλνει ερώτημα για την συμμετοχή ειδικά στο γκρουπ από το οποίο προήλθε το μήνυμα group leave. Αν δεν επιστρέψει καμία αναφορά τότε η διεύθυνση που είχε το γκρουπ μπορεί να αφαιρεθεί από την λίστα μελών των γκρουπ για το συγκεκριμένο τοπικό δίκτυο.