tcp 组播_华为组播理论知识详解(二)
二、IGMP協議簡介
IGMP是Internet Group Management Protocol的簡稱,又被稱為互聯網組管理協議,是TCP/IP協議族中負責IPv4組播成員管理的協議。
IGMP用來在接收者主機和與其直接相鄰的組播路由器之間建立和維護組播組成員關系。
IGMP通過在接收者主機和組播路由器之間交互IGMP報文實現組成員管理功能,IGMP報文封裝在IP報文中。
IP組播通信的特點是報文從一個源發出,被轉發到一組特定的接收者。但在組播通信模型中,發送者不關注接收者的位置信息,只是將數據發送到約定的目的組播地址。要使組播報文最終能夠到達接收者,需要某種機制使連接接收者網段的組播路由器能夠了解到該網段存在哪些組播接收者,同時保證接收者可以加入相應的組播組中。
IGMP就是用來在接收者主機和與其所在網段直接相鄰的組播路由器之間建立、維護組播組成員關系的協議。
圖1 IGMP在組播網絡中的部署位置
IGMP在組播網絡中的部署位置如上圖1所示。
1、IGMP版本簡介
到目前為止,IGMP有三個版本:IGMPv1版本(由RFC 1112定義)、IGMPv2版本(由RFC 2236定義)、IGMPv3版本(由RFC 3376定義)。
IGMPv1中定義了基本的組成員查詢和報告過程,IGMPv2在此基礎上添加了查詢器選舉和組成員離開的機制,IGMPv3中增加的主要功能是成員可以指定接收或指定不接收某些組播源的報文。
三個版本在演進過程中對協議報文的處理是向前兼容的,因此盡管各個版本的協議報文格式不同,但是運行IGMP高版本的路由器可以識別低版本的IGMP報文。
所有IGMP版本都支持ASM(Any-Source Multicast)模型。IGMPv3可以直接應用于SSM(Source-Specific Multicast)模型,而IGMPv1和IGMPv2則需要IGMP SSM Mapping技術的支持才可以應用于SSM模型。
IGMP三個版本的比較如下表1所示。
2、IGMPv1工作原理
2.1、IGMPv1報文介紹
IGMPv1包括兩種類型的報文:
普遍組查詢報文(General Query):
查詢器向共享網絡上所有主機和路由器發送的查詢報文,用于了解哪些組播組存在成員。
成員報告報文(Report):
主機向查詢器發送的報告報文,用于申請加入某個組播組或者應答查詢報文。
IGMPv1報文的格式如下圖1所示,其中各個字段的說明見下表1。
圖1 IGMPv1報文格式
2.2、IGMPv1工作機制
IGMPv1協議主要基于查詢和響應機制完成組播組管理。
當一個網段內有多個組播路由器時,由于它們都可以接收到主機發送的成員報告報文,因此只需要選取其中一臺組播路由器發送查詢報文就足夠了,該組播路由器稱為IGMP查詢器(Querier)。
在IGMPv1中,由組播路由協議PIM選舉出唯一的組播信息轉發者(Assert Winner或DR)作為IGMPv1的查詢器,負責該網段的組成員關系查詢。
IGMPv1的工作機制可以分為普遍組查詢和響應機制、新組成員加入機制和組成員離開機制三個方面。
圖2 組播網絡示意圖
下面以上圖2所示組網為例,介紹IGMPv1的工作機制。
如上圖2所示,組播網絡中RouterA和RouterB連接主機網段,RouterA為IGMP查詢器,在主機網段上有HostA、HostB、HostC三個接收者。HostA和HostB想要接收發往組播組G1的數據,HostC想要接收發往組播組G2的數據。
2.2.1、IGMPv1普遍組查詢和響應機制
通過普遍組查詢和響應,IGMP查詢器可以了解到該網段內哪些組播組存在成員。
圖3 IGMP查詢和響應示意圖
如上圖3所示,普遍組查詢和響應過程如下:
IGMP查詢器發送目的地址為224.0.0.1(表示同一網段內所有主機和路由器)的普遍組查詢報文;收到該查詢報文的組成員啟動定時器。
普遍組查詢報文是周期性發送的,發送周期可以通過命令配置,缺省情況下每隔60秒發送一次。HostA和HostB是組播組G1的成員,則在本地啟動定時器Timer-G1。缺省情況下,定時器的范圍為0~10秒之間的隨機值。
第一個定時器超時的組成員發送針對該組的報告報文。
假設HostA上的Timer-G1首先超時,HostA向該網段發送目的地址為G1的報告報文。也想加入組G1的HostB收到此報告報文,則停止定時器Timer-G1,不再發送針對G1的報告報文。這樣報告報文被抑制,可以減少網段上的流量。
IGMP查詢器接收到HostA的報告報文后,了解到本網段內存在組播組G1的成員,則由組播路由協議生成(*,G1)組播轉發表項,“*”代表任意組播源。網絡中一旦有組播組G1的數據到達路由器,將向該網段轉發。
2.2.2、IGMPv1新組成員加入機制
圖4 新組成員加入示意圖
如上圖4所示,主機HostC加入組播組G2的過程如下:
主機HostC不等待普遍組查詢報文的到來,主動發送針對G2的報告報文以聲明加入。
IGMP查詢器接收到HostC的報告報文后,了解到本網段內出現了組播組G2的成員,則生成組播轉發項(*,G2)。網絡中一旦有G2的數據到達路由器,將向該網段轉發。
2.2.3、IGMPv1組成員離開機制
IGMPv1沒有專門定義離開組的報文。主機離開組播組后,便不會再對普遍組查詢報文做出回應。如上圖2所示。
假設HostA想要退出組播組G1
HostA收到IGMP查詢器發送的普遍組查詢報文時,不再發送針對G1的報告報文。由于網段內還存在G1組成員HostB,HostB會向IGMP查詢器發送針對G1的報告報文,因此IGMP查詢器感知不到HostA的離開。
假設HostC想要退出組播組G2
HostC收到IGMP查詢器發送的普遍組查詢報文時,不再發送針對G2的報告報文。由于網段內不存在組G2的其他成員,IGMP查詢器不會收到G2組成員的報告報文,則在一定時間(缺省值為130秒)后,刪除G2所對應的組播轉發表項。
3、IGMPv2與IGMPv1相比的變化
IGMPv2的工作機制與IGMPv1基本相同,最大的不同之處在于IGMPv2增加了離開組機制。
主機離開組播組時,會主動發送成員離開報文通知IGMP查詢器;IGMP查詢器收到成員離開報文后,會連續發送特定組查詢報文,詢問該組播組是否還存在組成員。
如果在一段時間內沒有收到成員主機發送的報告報文,IGMP查詢器將不再維護該組的組成員關系。
IGMPv2可以使IGMP查詢器及時了解到網段內哪些組播組已不存在成員,從而及時更新組成員關系,減少網絡中冗余的組播流量。
1、IGMPv2報文介紹
與IGMPv1相比,IGMPv2的變化如下:
除了普遍組查詢報文和成員報告報文之外,IGMPv2新增了兩種報文:
1.1、成員離開報文(Leave):
成員離開組播組時主動向查詢器發送的報文,用于宣告自己離開了某個組播組。
1.2、特定組查詢報文(Group-Specific Query):
查詢器向共享網段內指定組播組發送的查詢報文,用于查詢該組播組是否存在成員。
IGMPv2對普遍組查詢報文格式也做了改進,添加了最大響應時間(Max Response Time)字段。此字段取值可以通過命令配置,用于控制成員對于查詢報文的響應速度。
IGMPv2報文的格式如下圖1所示,其中各個字段的說明見下表1。
圖1 IGMPv2報文格式
2、IGMPv2工作機制
在工作機制上,與IGMPv1相比,IGMPv2增加了查詢器選舉和離開組機制。
圖2 組播網絡示意圖
下面以上圖2所示組網為例,介紹IGMPv2的工作機制。
如上圖2所示,組播網絡中RouterA和RouterB連接主機網段,在主機網段上有HostA、HostB、HostC三個接收者。假設HostA和HostB想要接收發往組播組G1的數據,HostC想要接收發往組播組G2的數據。
查詢器選舉機制、離開組機制的過程如下。
2.1 、IGMPv2查詢器選舉機制
IGMPv2使用獨立的查詢器選舉機制,當共享網段上存在多個組播路由器時,IP地址最小的路由器成為查詢器。
圖3 查詢器選舉示意圖
如上圖3所示,在IGMPv2中,查詢器的選舉過程如下:
最初,所有運行IGMPv2的組播路由器(RouterA和RouterB)都認為自己是查詢器,向本網段內的所有主機和組播路由器發送普遍組查詢報文。
RouterA和RouterB在收到對方發送的普遍組查詢報文后,將報文的源IP地址與自己的接口地址作比較。通過比較,IP地址最小的組播路由器將成為查詢器,其他組播路由器成為非查詢器(Non-Querier)。
如上圖3所示,RouterA的接口地址小于RouterB,則RouterA當選為查詢器,RouterB為非查詢器。
此后,將由IGMP查詢器(RouterA)向本網段內的所有主機和其他組播路由器發送普遍組查詢報文,而非查詢器(RouterB)則不再發送普遍組查詢報文。
非查詢器(RouterB)上都會啟動一個定時器(即其他查詢器存在時間定時器Other Querier Present Timer)。在該定時器超時前,如果收到了來自查詢器的查詢報文,則重置該定時器;否則,就認為原查詢器失效,并發起新的查詢器選舉過程。
2.2、IGMPv2離開組機制
圖4 離開組示意圖
如上圖4所示,在IGMPv2中,主機HostA離開組播組G1的過程如下:
HostA向本地網段內的所有組播路由器(目的地址為224.0.0.2)發送針對組G1的離開報文。
查詢器收到離開報文,會發送針對組G1的特定組查詢報文。發送間隔和發送次數可以通過命令配置,缺省情況下每隔1秒發送一次,共發送兩次。同時查詢器啟動組成員關系定時器(Timer-Membership=發送間隔x發送次數)。
該網段內還存在組G1的其他成員(如上圖4所示的HostB),這些成員(HostB)在收到查詢器發送的特定組查詢報文后,會立即發送針對組G1的報告報文。查詢器收到針對組G1的報告報文后將繼續維護該組成員關系。
如果該網段內不存在組G1的其他成員,查詢器將不會收到針對組G1的報告報文。在Timer-Membership超時后,查詢器將刪除(*,G1)對應的IGMP組表項。當有組G1的組播數據到達查詢器時,查詢器將不會向下游轉發。
總結
以上是生活随笔為你收集整理的tcp 组播_华为组播理论知识详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 携程2022年第四季度营收50亿元 全年
- 下一篇: 解决摇一摇广告弹窗?努比亚Z50 Ult