组播IP地址到底是谁的IP?
組播也是一種IP包,也有源IP地址,目的IP地址,源IP地址為組播源的服務(wù)器IP地址,目的地址為一個(gè)特殊的IP地址,它位于 224.0.0.0 - 239.255.255.255 中,由于 224.0.0.0/8用于本地鏈路,即一跳的組播,239.0.0.0/8 為私有組播地址,所以實(shí)際的可用于在互聯(lián)網(wǎng)上組播地址是225.0.0.0/8 - 238.0.0.0/8,這個(gè)組播地址不屬于任何服務(wù)器或個(gè)人,它有點(diǎn)類似一個(gè)微信群號(hào),任何成員(組播源)往微信群(組播IP)發(fā)送消息(組播數(shù)據(jù)),這個(gè)群里的成員(組播接收者)都會(huì)接收到此消息。
IPTV就是組播的應(yīng)用:
IPTV里的一個(gè)電視頻道對(duì)應(yīng)一個(gè)組播IP, 假設(shè)CCTV1 對(duì)應(yīng)的組播IP =238.1.1.1 ,IPTV節(jié)目源IP=1.1.1.1,就以238.1.1.1 為目的地址封裝發(fā)送,這里有兩個(gè)問(wèn)題需要解決:
IPTV組播源不知道收看此節(jié)目的用戶在哪里?
收看此節(jié)目的用戶不知道IPTV組播源在哪里?
用戶IPTV機(jī)頂盒只知道節(jié)目組播地址為238.1.1.1 ,至于誰(shuí)是這個(gè)節(jié)目源(IP=1.1.1.1)并不清楚。
于是就引入了一個(gè)中介機(jī)構(gòu)(RP),Rendezvous Point,RP點(diǎn),組播的匯聚點(diǎn),RP IP = 2.2.2.2 ,組播源通過(guò)單播隧道的方式把組播238.1.1.1 發(fā)給 RP,簡(jiǎn)稱組播源的注冊(cè)。
機(jī)頂盒靜態(tài)配置了RP IP = 2.2.2.2,知道RP會(huì)有組播數(shù)據(jù),于是就向RP( 2.2.2.2)申請(qǐng)加入這個(gè)238.1.1.1 的組,于是RP就把自己收到的注冊(cè)組播源數(shù)據(jù)發(fā)送給機(jī)頂盒,這個(gè)就是基于RP的 樹(shù),RPT。
機(jī)頂盒收到第一個(gè)組播包,定睛一看,原來(lái)組播源是1.1.1.1,于是發(fā)一個(gè)申請(qǐng)給1.1.1.1 ,申請(qǐng)加入238.1.1.1,這就是基于源的 樹(shù),SPT。即然已加入了SPT ,就不需要RPT 了,向RP申請(qǐng)退出就可以了。
著重強(qiáng)調(diào)一點(diǎn):一旦組播用戶(接收者)知道了組播源,那RP的任務(wù)就算完成了,RP的存在就是為了組播接收者發(fā)現(xiàn)組播源,組播用戶會(huì)加入路徑更優(yōu)的SPT樹(shù),會(huì)申請(qǐng)退出路徑不是最優(yōu)的RPT樹(shù),避免收到兩份組播的復(fù)制。
以上就是組播工作的大概過(guò)程,IPTV是IGMPv2 以及 PIM SM mode 的一個(gè)應(yīng)用。
IPTV是電信獨(dú)立的IP網(wǎng)絡(luò),部署起來(lái)很容易;但是如果在全球網(wǎng)絡(luò)里部署組播,將會(huì)遇到很多挑戰(zhàn)。
如果想了解IGMPv3 以及PIM SSM 請(qǐng)回復(fù),會(huì)繼續(xù)更新。
想深入學(xué)習(xí)的童鞋請(qǐng)繼續(xù)
------------------------------------
IP multicast 組播
在組播的世界里,我們又見(jiàn)到了樹(shù)的概念,關(guān)于樹(shù),你一定會(huì)有似曾相識(shí)的感覺(jué),二層交換網(wǎng)絡(luò)就有樹(shù)的概念了,那個(gè)樹(shù)我們稱之為:生成樹(shù),spanning tree,盡管這個(gè)樹(shù)中文名稱有點(diǎn)別扭,但它就是一棵樹(shù)。
喜愛(ài)大自然的童鞋仔細(xì)觀察一棵樹(shù),會(huì)發(fā)現(xiàn)一棵樹(shù),有根,主干,樹(shù)杈,葉子,水分通過(guò)根,源源不斷地輸送到主干,樹(shù)杈,然后到達(dá)葉子。水分在從根擴(kuò)散到葉子的過(guò)程中,一直是單向的,沒(méi)有水倒流的現(xiàn)象,即使水有倒流,也不會(huì)有環(huán)路,因?yàn)闃?shù)的結(jié)構(gòu)是發(fā)散的,沒(méi)有物理的樹(shù)杈的交織,自然不會(huì)發(fā)生環(huán)路。
網(wǎng)絡(luò)科學(xué)家發(fā)現(xiàn)了這個(gè)規(guī)律,有一個(gè)大膽設(shè)想,如果把樹(shù)的拓?fù)浣Y(jié)構(gòu)用于二層交換網(wǎng)絡(luò),在二層網(wǎng)絡(luò)里選擇一個(gè)根(root bridge),其它交換機(jī)當(dāng)作樹(shù)的樹(shù)杈,每個(gè)樹(shù)杈自然有一個(gè)根末梢(root port),這個(gè)就是交換機(jī)的上游接口,除了根末梢,其它的接口都是下游接口,至于下游接口是暢通的、還是阻斷的,取決于到根的路徑成本,誰(shuí)更接近根,誰(shuí)就暢通(Forwarding) ,即常說(shuō)的Designated Port; 誰(shuí)遠(yuǎn)離根,誰(shuí)就需要被阻斷(Blocked), 即常說(shuō)的 Non Designated Port。通過(guò)這種仿生的機(jī)制,可以有效地避免網(wǎng)絡(luò)環(huán)路。
今天我們主題并不是spanning tree,而是組播樹(shù)。至于為什么要有樹(shù)的概念,上文已經(jīng)闡述,為了避免潛在的網(wǎng)絡(luò)環(huán)路,那我們來(lái)談?wù)劷M播樹(shù)的概念。
組播第一個(gè)挑戰(zhàn)就是組播的接收者(Receiver)不知道組播源在哪里,換句話說(shuō),就是不知道組播源的IP地址,如果知道了,可以直接向這個(gè)IP地址發(fā)送加入組播的請(qǐng)求,那一切就簡(jiǎn)單了,組播可以直接推送到組播的接收者。這僅僅是一個(gè)美好的假設(shè),事實(shí)是接收者無(wú)從知道組播源的IP地址。
為了克服這個(gè)困難,引入了一個(gè)中介機(jī)構(gòu)(RP),Rendezvous Point,RP點(diǎn),組播的匯聚點(diǎn)。
為了更便于闡述這個(gè)復(fù)雜的過(guò)程,假定:
Multicast Source IP: 1.1.1.1
Multicast Group IP : 238.1.1.1
Rendezvous Point IP: 2.2.2.2
IGMPv2: Host chat with Router
PIM Sparse Mode: Router chat with Router
于是組播源就把組播238.1.1.1封裝在一個(gè)單播(source IP 1.1.1.1,destination IP 2.2.2.2) 發(fā)給RP,我們稱之為組播源的單播注冊(cè)。
雖然組播的接收者不知道組播源在哪里,但他們深深地知道,他們所在的廣播域里的路由器一定知道,而路由器如果靜態(tài)配置RP,或動(dòng)態(tài)發(fā)現(xiàn)RP,可以知道RP在哪里,可以間接的知道組播源在哪里。這就是美其名曰的:曲線救國(guó)!
于是組播接收者用IGMPv2發(fā)送一個(gè)廣播請(qǐng)求,這個(gè)廣播域里的路由器聽(tīng)到了這個(gè)廣播請(qǐng)求,查詢自己的單播路由表,可以知道誰(shuí)是通向RP的上游路由器,然后發(fā)送一個(gè)PIM Join請(qǐng)求給上游,上游路由器按照相同的方式把這種Join 請(qǐng)求一級(jí)一級(jí)的中繼到RP,RP簡(jiǎn)單地將收到Join請(qǐng)求這個(gè)接口放入組播出接口列表(OIL),然后把組播僅僅復(fù)制(Replication)一份從OIL發(fā)送出去。PIM Join 在層層向上中繼的過(guò)程,路由器已經(jīng)形成一個(gè)上下游的關(guān)系,越是靠近RP的路由器,為上游;而遠(yuǎn)離RP的路由器,為下游。這其實(shí)就是一種樹(shù),因?yàn)闃?shù)的根是RP,我們稱這種組播樹(shù)為基于RP的樹(shù),即RP-Based Tree,簡(jiǎn)稱RPT。
當(dāng)組播接收者直連的路由器收到第一個(gè)組播,就知道組播源在哪里?為什么?因?yàn)榻M播包里的源IP告訴我們的啊!于是向組播源IP發(fā)起了一個(gè)新的PIM Join請(qǐng)求,為什么要這樣啊?是不是畫(huà)蛇添足啊?好,我們來(lái)分析一下:
組播先從組播源發(fā)到RP,然后再?gòu)腞P順著RPT樹(shù)一級(jí)一級(jí)向下游擴(kuò)散,直到到達(dá)組播的接收者,這條路徑有點(diǎn)繞,因?yàn)橄纫@到RP,所以不是最優(yōu)路徑。既然RP的存在是為了組播的接收者發(fā)現(xiàn)組播源,那一旦這個(gè)任務(wù)完成了,也就沒(méi)有必要再走這條有點(diǎn)繞路的路徑了,為什么不直接走組播源到達(dá)組播接收者的路徑呢?省時(shí)、省力、省路徑!于是組播接收者的直連路由器向著組播源1.1.1.1的方向,如何知道?查詢單播路由表啊,然后順著朝向1.1.1.1 的方向發(fā)送 Join 請(qǐng)求,也是一級(jí)級(jí)向著上游發(fā)請(qǐng)求,直到到達(dá)組播源1.1.1.1,這個(gè)有上下游關(guān)系也是組播樹(shù),因?yàn)闃?shù)的根是組播源,我們稱之為:基于源的樹(shù),Source Path Tree,簡(jiǎn)稱SPT。
即然加入了SPT樹(shù),收到了組播數(shù)據(jù),就沒(méi)有必要賴在RPT樹(shù)上,否則將會(huì)收到兩份復(fù)制,這實(shí)在沒(méi)有必要。于是組播接收者直連的路由器向RP提出leave 請(qǐng)求,RP將收到 leave 請(qǐng)求的這個(gè)接口從OIL列表里刪掉,即不會(huì)再?gòu)?fù)制組播數(shù)據(jù)了。
忘了一個(gè)細(xì)節(jié),RP在接收到組播源的單播注冊(cè),會(huì)發(fā)一個(gè)單播停止消息給組播源,即 Register Stop 消息,既然RP已經(jīng)知道組播源在哪里了,繼續(xù)單播注冊(cè)就沒(méi)有必要了。同時(shí)RP也會(huì)朝著組播源1.1.1.1 的方向發(fā)送Join請(qǐng)求,請(qǐng)求加入SPT樹(shù)。1. 組播IP地址是視頻網(wǎng)站服務(wù)器的?還是ISP某個(gè)服務(wù)器的呢?
答:不是,組播IP用于描述一組接收者,視頻網(wǎng)站服務(wù)器是組播信源,組播信源的IP是單播地址。
例子:視頻網(wǎng)站在放NBA(信源),當(dāng)我切換頻道到NBA后,我就是組播接收者
當(dāng)然和我同時(shí)看NBA的人肯定不止一個(gè),組播地址就是為了描述我們這一組人,組播流量最終也會(huì)推向我們這群同時(shí)收看NBA的人。
2. 加入組播組意思是通過(guò)這個(gè)有組播IP的服務(wù)器獲取數(shù)據(jù)么?
答:概念性錯(cuò)誤,組播IP不是服務(wù)器的IP,我前面說(shuō)了服務(wù)器的IP是單播地址
例子:服務(wù)器里有一個(gè)軟件,專門(mén)用來(lái)放NBA,這個(gè)軟件寫(xiě)好到每天早上9點(diǎn)后就準(zhǔn)時(shí)向22x.x.x.x這個(gè)組播地址去flooding視頻流量(這股流量的三層報(bào)頭里源地址是視頻服務(wù)器的單播IP地址,目的地址就是22x.x.x.x這個(gè)組播地址)
而22x.x.x.x這個(gè)組播地址就是我們看NBA的客戶端上寫(xiě)死的頻道地址,我切到NBA的頻道,就表示我要接受22x.x.x.x的流量,沿途的網(wǎng)絡(luò)設(shè)備就會(huì)將NBA相關(guān)的流量給我送下來(lái)
盡量沒(méi)寫(xiě)那些復(fù)雜的理論,用我能做到的簡(jiǎn)單的方式給你解釋了( ̄▽ ̄)
因?yàn)镮GMP,PIM-DM,PIM-SM,RPF,RP,BSR,MSDP這些東西一說(shuō),都能寫(xiě)一本厚厚的書(shū)了
組播是個(gè)很有趣,又很實(shí)用的技術(shù),簡(jiǎn)單的介紹一下三層環(huán)境、IPv4情況下,組播的簡(jiǎn)單概念吧。
P2P會(huì)造成大量的數(shù)據(jù)重復(fù),并且給路由器造成很大的壓力,廣播又讓每一個(gè)接收者去判斷流量是不是給自己的,在浪費(fèi)帶寬的同時(shí)也給所有人帶來(lái)判斷流量的壓力。組播便應(yīng)運(yùn)而生,它實(shí)現(xiàn)的關(guān)鍵技術(shù)在于把流量給合適的路由器,并且在合適的節(jié)點(diǎn)復(fù)制,盡可能的減輕網(wǎng)絡(luò)負(fù)擔(dān)。
組播的關(guān)鍵技術(shù)有兩大塊,一個(gè)是IGMP: internet Group Management Protocol,一個(gè)是PIM:Protocol Independent Multicast。我們從接收者往上說(shuō)。先說(shuō)下組播基礎(chǔ)知識(shí),224.0.0.1是向本網(wǎng)段所有設(shè)備發(fā)送組播報(bào)文,224.0.0.2是向本網(wǎng)段所有路由器發(fā)送組播報(bào)文。換句話說(shuō)收到這個(gè)報(bào)文的接收者會(huì)因此判斷這個(gè)包是不是給自己的。
接收者到終端節(jié)點(diǎn)采用的是IGMP技術(shù),目前主要應(yīng)用的是IGMPv2,v1和v3不去擴(kuò)展。IGMP技術(shù)完成的主要功能就是題主問(wèn)的加入組播地址的意思。要研究IGMPv2工作的機(jī)制(偷懶不分析報(bào)文了)有幾個(gè)關(guān)鍵點(diǎn),目的地址(給誰(shuí)發(fā)),加入的組,TTL = 1。
服務(wù)端會(huì)向目的地址(224.0.0.1),加入的組(0.0.0.0),這條報(bào)文的意思是,朋友有誰(shuí)加了哪個(gè)組播組嗎?告訴我一下。
客戶端,也就是PC用戶,如果你點(diǎn)播了某個(gè)節(jié)目,加入了組,比方說(shuō)是224.1.1.1這個(gè)組。那就是發(fā)送報(bào)文,目的地址(224.1.1.1),加入的組(224.1.1.1)。目的地址和組是同一個(gè)的目的是為了抑制其它PC發(fā)送同樣的報(bào)文,因?yàn)槁酚善饕呀?jīng)知道這個(gè)組有人,不需要再發(fā)送一次了。
在IGMPv2中,客戶端離組也是要發(fā)消息的。會(huì)發(fā)一條目的地址(224.0.0.2),加入的組(224.1.1.1)這樣一條消息,告訴服務(wù)端,我走了,你再看看其它人吧。
就簡(jiǎn)單說(shuō)這三種報(bào)文吧,想詳細(xì)了解時(shí)間信息,報(bào)文包頭等內(nèi)容可以留言。
好了,經(jīng)過(guò)IGMP報(bào)文提供的消息后,我們已經(jīng)知道了,最終端用戶有哪幾個(gè)組,也就是說(shuō),我們需要給哪些終端的服務(wù)器發(fā)送哪些組播報(bào)文是已經(jīng)清楚了,但從最初始的源是如何經(jīng)過(guò)層層設(shè)備到達(dá)終端的呢?幸好我們有PIM協(xié)議。
PIM協(xié)議也是很復(fù)雜,在這里大概介紹一下。PIM模式完成的主要功能是盡可能簡(jiǎn)單的給相應(yīng)組的路由器發(fā)送消息。完成簡(jiǎn)單這項(xiàng)功能,采用了SPT: Shortest-Path Trees or Source Distribution Tree,RPT: Shared Distribution Trees,這兩種樹(shù)型結(jié)構(gòu)和DR一同完成了這項(xiàng)功能。正確的發(fā)送信息有兩種模式Dense Mode,Sparse Mode。Dense是推流模式,也就是說(shuō)相當(dāng)于從源端主動(dòng)向客戶端路由器推送組播信息,Sparse是拉流模式,相當(dāng)是客戶端路由器從源端拉取自己想要的信息。還有兩者結(jié)合的方式,Auto-RP這些先不說(shuō)了。有需要再留言吧。
組播IP就是你加入的QQ群號(hào),標(biāo)識(shí)了只有這個(gè)群里的人才需要這個(gè)報(bào)文。
組播IP不屬于任何主機(jī),是屬于組播數(shù)據(jù)源,要給這個(gè)組里的人發(fā)送消息。
這樣看來(lái),組播IP地址是屬于組播源發(fā)送報(bào)文的目的地址
組播ip地址更像是組播組的一個(gè)標(biāo)識(shí)。全網(wǎng)運(yùn)行pimsm組播路由協(xié)議后,任何想加入某組的接受者會(huì)向上申請(qǐng)建樹(shù) 然后組播流量會(huì)沿樹(shù)傳播。 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔為你收集整理的组播IP地址到底是谁的IP?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: http协议与web本质
- 下一篇: 帧内16*16模式的宏块数据传输顺序