王浦衡
【摘 要】隨著計(jì)算機(jī)通信技術(shù)的發(fā)展,多播通信以其高效、快捷的數(shù)據(jù)傳輸技術(shù)得到廣泛應(yīng)用。本文主要論述IGMP協(xié)議v1,v2,v3三個(gè)版本的原理和區(qū)別。
【關(guān)鍵詞】多播協(xié)議;IGMP;TCP/IP
中圖分類號: TP212.9;TN929.5 文獻(xiàn)標(biāo)識碼: A文章編號: 2095-2457(2019)34-0207-002
DOI:10.19694/j.cnki.issn2095-2457.2019.34.096
Analysis on the Difference of Three Versions of Multicast Protocol IGMP
WANG Pu-heng
(Hunan Chemical Vocational and Technical College,Zhuzhou Hunan 412000,China)
【Abstract】With the development of computer communication technology,multicast communication has been widely used for its efficient and fast data transmission technology.This paper mainly discusses the principles and differences of three versions of IGMP protocol v1,V2 and v3.
【Key words】Multicast protocol;IGMP;TCP/IP
1 多播協(xié)議IGMP介紹
IGMP英文全稱Internet Group Management Protocol,中文稱多播協(xié)議或者組播協(xié)議,是TCP/IP協(xié)議簇中負(fù)責(zé)聯(lián)網(wǎng)設(shè)備節(jié)點(diǎn)多播成員管理的協(xié)議,用于管理各IP主機(jī)以及和其連接的路由器共同搭建維護(hù)多播組成員關(guān)系。
截至目前,有V1/V2/V3三個(gè)版本多播協(xié)議。
這三個(gè)版本的IGMP都支持“任意信源多播”;V3版本可以直接支持“指定信源多播”,而V1和V2兩個(gè)版本則需要在IGMP指定信源多播映射技術(shù)支持下才能支持“指定信源多播”。
2 多播工作原理
2.1 v1版多播協(xié)議工作機(jī)制
v1版IGMP協(xié)議通過查詢報(bào)文和響應(yīng)報(bào)文來實(shí)現(xiàn)對多播組成員的管理。當(dāng)一個(gè)多播網(wǎng)絡(luò)中存在多個(gè)多播路由器時(shí),因?yàn)樗械亩嗖ヂ酚善鞫寄軓闹鳈C(jī)節(jié)點(diǎn)接收到IGMP成員發(fā)送過來的關(guān)系報(bào)告報(bào)文,所以,只需要指定一個(gè)路由器能發(fā)送IGMP查詢報(bào)文就可以了,因此這個(gè)時(shí)候就需要有一個(gè)選舉機(jī)制來選出其中某一個(gè)路由器作為IGMP查詢器。
如圖1所示,假設(shè)PC-B與PC-C想要接收到多播組信源為G1的多播數(shù)據(jù),而PC-A想要收到多播組信源為G2的多播數(shù)據(jù),那么主機(jī)加入多播組以及IGMP協(xié)議查詢器路由器(RB)與主機(jī)構(gòu)建成員組關(guān)系的基本過程應(yīng)該是:
1)網(wǎng)絡(luò)中的主機(jī)首先將主動(dòng)向查詢路由器發(fā)送成員關(guān)系報(bào)告報(bào)文用來申明它要加入的多播組,而不是被動(dòng)等待IGMP協(xié)議查詢路由器發(fā)來的IGMP查詢報(bào)文;
2)IGMP查詢路由器以目的地址為224.0.0.1周期性向本地網(wǎng)段內(nèi)的所有路由器與主機(jī)發(fā)送IGMP查詢報(bào)文;
3)本網(wǎng)段內(nèi)主機(jī)和路由器收到查詢報(bào)文之后,延時(shí)定時(shí)器先到時(shí)的主機(jī)或路由器會先以多播的方式向G1(查詢器)發(fā)送IGMP成員關(guān)系報(bào)文報(bào)告自己屬于多播組G1。因?yàn)槭且远嗖バ问桨l(fā)送的報(bào)告,所以本地網(wǎng)段中同屬于此多播組的其他主機(jī)都能收到此報(bào)告報(bào)文,因此,其他同屬于此多播組的主機(jī)或路由器將不再發(fā)送同樣的報(bào)告報(bào)文,這時(shí)的IGMG查詢路由器已經(jīng)知道本地網(wǎng)段中有主機(jī)從屬于G1多播組。這種機(jī)制稱為成員關(guān)系報(bào)告抑制機(jī)制,這個(gè)機(jī)制有助于降低本地網(wǎng)段中的報(bào)文流量;
4)與此同時(shí),屬于多播組G2的其他主機(jī)或者路由器,仍將依據(jù)上述原理以多播方式向G2查詢器發(fā)送報(bào)告報(bào)文,告知G2查詢器本網(wǎng)段中有從屬于G2多播組的成員。
5)通過上述的查詢和報(bào)告后,IGMP路由器可以確認(rèn)多播組G1和G2在本地網(wǎng)段中有相應(yīng)的成員,隨后多播路由協(xié)議如PIM生成任意源多播數(shù)據(jù)向多播組G1和G2進(jìn)行多播數(shù)據(jù)發(fā)送;
2.2 v2版多播協(xié)議工作機(jī)制
與v1版IGMP協(xié)議相比,v2版IGMP協(xié)議改進(jìn)了查詢器選舉機(jī)制,并定義了成員離開多播組機(jī)制。
1)多播協(xié)議查詢路由器選舉機(jī)制
在v1版的IGMP協(xié)議中,當(dāng)某個(gè)網(wǎng)絡(luò)上有多個(gè)多播路由器時(shí),多播路由協(xié)議將直接指定其中某個(gè)路由器作為IGMP的查詢器。但在第二版的IGMP協(xié)議中,多播路由協(xié)議不是直接指定某一臺路由器作為查詢器,而是會在這幾個(gè)路由器之間實(shí)施一個(gè)選舉機(jī)制,選出一個(gè)路由器作為查詢器。選舉過程是:
當(dāng)啟用v2版多播協(xié)議的所有路由器在開機(jī)初始化時(shí),默認(rèn)情況下都會認(rèn)為自己是IGMP查詢路由器,然后以目的地址為224.0.0.1的多播報(bào)文向本網(wǎng)段內(nèi)的所有主機(jī)及路由器發(fā)送IGMP查詢報(bào)文。本網(wǎng)絡(luò)中其他路由器(或者主機(jī))收到該查詢報(bào)文后,會將路由器發(fā)來的查詢報(bào)文的源IP地址跟自己的接收報(bào)文接口IP地址做比較,IP地址相對小的路由器將被選舉成為IGMP查詢路由器,其他路由器自動(dòng)成為非查詢路由器。而且,所有非查詢路由器上都會啟用一個(gè)計(jì)時(shí)器,用來記錄“查詢器”存在的時(shí)間,如果在計(jì)時(shí)器結(jié)束計(jì)時(shí)前收到了來自查詢路由器的查詢報(bào)文,則重置這個(gè)計(jì)時(shí)器,不然就認(rèn)為原來選舉出來的查詢路由器失效不存在,并以此觸發(fā)查詢器的重新選舉。
2)多播離組機(jī)制
在v1版的多播協(xié)議中,如果其中某一個(gè)主機(jī)要離開多播組時(shí),這個(gè)主機(jī)是不會向多播路由器發(fā)出任何離組通告的,這種機(jī)制設(shè)定導(dǎo)致了多播路由器只能依據(jù)多播組路由器向成員主機(jī)發(fā)送查詢報(bào)文的響應(yīng)超時(shí)來判斷成員離組。但在v2版的多播協(xié)議中,當(dāng)某一臺主機(jī)離開多播組時(shí),這臺主機(jī)將以目的IP地址為224.0.0.2向本地網(wǎng)段中的所有多播路由器發(fā)送離組報(bào)文,當(dāng)多播組的查詢器路由器收到這個(gè)離組通告報(bào)文后,會立即向這臺主機(jī)聲明要離開的多播組發(fā)送特定的多播查詢報(bào)文,查詢該多播組是否還有其他的成員,如果這個(gè)網(wǎng)絡(luò)中這個(gè)多播組還有其他的多播成員主機(jī),則會在收到這個(gè)特定的多播查詢確認(rèn)報(bào)文后,會在規(guī)定的響應(yīng)時(shí)間內(nèi)(查詢路由器查詢報(bào)文給出)向查詢器路由器發(fā)送關(guān)系報(bào)告報(bào)文,告知查詢路由器自己的存在。查詢路由器收到這個(gè)關(guān)系報(bào)告報(bào)文后,會繼續(xù)保持這個(gè)多播組的成員關(guān)系表,不然的話,查詢路由器會認(rèn)為這個(gè)網(wǎng)絡(luò)中已經(jīng)沒有這個(gè)多播組成員,就不會再維護(hù)這個(gè)多播的成員關(guān)系表。
2.3 v3版多播協(xié)議的改進(jìn)
v3版的IGMP相比v1版IGMP和v2版IGMP,在兼容和繼承的基礎(chǔ)上進(jìn)一步加強(qiáng)了主機(jī)的控制能力,改進(jìn)了查詢路由器查詢報(bào)文和主機(jī)報(bào)告報(bào)文的功能。
1)改進(jìn)主機(jī)控制能力
v3版多播協(xié)議增加了針對多播源的過濾模式,方法就是當(dāng)某臺主機(jī)在加入某多播組G的同時(shí),能夠明確是接收(include)還是拒絕(exclude)來自某個(gè)特定多播源Sources的多播報(bào)文。
如圖2所示,一個(gè)網(wǎng)絡(luò)中存在Source 1(S1)和Source 2(S2)兩個(gè)多播源,同時(shí)向多播組G發(fā)送多播報(bào)文。但是Pc B只想接收從Source1發(fā)往多播組G的信息,而不想接收從Source 2發(fā)往多播組G的信息。這時(shí),如果這個(gè)網(wǎng)絡(luò)中的主機(jī)和路由器之間運(yùn)行的是v1和v2版的IGMP多播協(xié)議,那么Pc B將無法對來自不同多播源(Source1、Source2)的信息進(jìn)行取舍,結(jié)果就造成不管Pc B是否需要,所有發(fā)往多播組G的多播信息都將被Pc B接收。但如果此時(shí)運(yùn)行的是v3版的IGMP多播協(xié)議,Pc B就可以按照自己的需求,只接收來自Source1發(fā)往多播組G的多播信息(或者按照自己的需求拒絕接收來自Source2 的多播信息),這樣,Pc B就可以按自己的需求接收自己想要的多播信息,以便節(jié)約線路和設(shè)備的資源。
2)增強(qiáng)查詢路由器查詢報(bào)文和主機(jī)報(bào)告報(bào)文功能
A.查詢路由器的查詢報(bào)文包含源地址
v1版IGMP協(xié)議的“普通組查詢報(bào)文”,不包含源地址,也不包含組地址;
v2版IGMP協(xié)議的“特定組查詢報(bào)文”,不包含源地址,但包含組地址;
v3版IGMP多播協(xié)議,在原有支持v1版和v2版的“普通組查詢報(bào)文”及“特定組查詢”的基礎(chǔ)之上,還支持對特定源組的查詢,所謂的“特定源組查詢”就是既包含1個(gè)或多個(gè)源地址,還包含組地址;
B.主機(jī)的報(bào)告報(bào)文包含多個(gè)多播組的組記錄
v3版多播協(xié)議主機(jī)報(bào)告報(bào)文中,目的地址為多播地址“224.0.0.22”,同時(shí)多播組的組記錄可以包含一個(gè)或多個(gè)組記錄。而在每個(gè)組記錄中,包含有多播組地址和多播源地址列表。
3 小結(jié)三個(gè)版本IGMP協(xié)議的區(qū)別
3.1 IGMP V1:沒有l(wèi)eave報(bào)文,主要依靠Timer計(jì)時(shí)器,來決定是否離開組。
3.2 IGMP V2:增加leave報(bào)文,明確了查詢路由器的選舉機(jī)制。
3.3 IGMP V3:增加SSM(Source Specific Multicast)功能。取消V1&V2版本中的響應(yīng)抑制功能。
【參考文獻(xiàn)】
[1]侯艷,徐寶海.《IGMP工作原理與安全技術(shù)》,《才智》,2010.10.25.
[2]王躍.《IGMP組播協(xié)議與應(yīng)用》,《才智》,2010.3.15.