數(shù)年來(lái),兩人在市場(chǎng)上的競(jìng)爭(zhēng)可謂你死我活。無(wú)忌僅僅抱著FC SAN的速度和穩(wěn)定性來(lái)炮轟小過(guò)的IP SAN,而小過(guò)也不甘示弱,處處舉著可擴(kuò)展性和成本的大旗,聲討FC SAN,鬧得江湖上風(fēng)風(fēng)雨雨。無(wú)忌憑借著FC的優(yōu)勢(shì),占據(jù)了高端市場(chǎng),而小過(guò)則以成本優(yōu)勢(shì)在低端市場(chǎng)占據(jù)了一席之地。然而兩人誰(shuí)都想一統(tǒng)天下,把對(duì)方徹底驅(qū)逐出市場(chǎng),但是,相持?jǐn)?shù)年了,誰(shuí)也沒(méi)能把誰(shuí)干掉。兩人都累了,這么多年的互相攻擊,誰(shuí)也沒(méi)有取得絲毫勝利,無(wú)忌還是穩(wěn)固地占據(jù)高端市場(chǎng),小過(guò)依然馳騁低端。


    終于有一天,無(wú)忌和小過(guò)決定握手言和,不再投入無(wú)謂的人力物力財(cái)力來(lái)和對(duì)方競(jìng)爭(zhēng)。與其大肆攻擊對(duì)方,不如多用點(diǎn)精力來(lái)提升和發(fā)展自己的技術(shù),同時(shí)學(xué)習(xí)對(duì)方的技術(shù),取長(zhǎng)補(bǔ)短,方為正道?。?! 無(wú)忌和小過(guò)徹夜長(zhǎng)談,終于取得了一致的見(jiàn)解,決定雙方各取所長(zhǎng),發(fā)展自己的技術(shù),共同為江湖做貢獻(xiàn)。


    首先,無(wú)忌決定由小過(guò)入股自己的公司,給FC SAN提供更高的擴(kuò)展性架構(gòu)解決方案;同時(shí),無(wú)忌也入股小過(guò)的公司,給小過(guò)提供研發(fā)經(jīng)費(fèi),用于其研發(fā)出基于以太網(wǎng)的新型的,適合存儲(chǔ)區(qū)域網(wǎng)絡(luò)的專用上層協(xié)議體系。


    入股無(wú)忌公司之后,小過(guò)便開(kāi)始了研究如何將FC協(xié)議體系轉(zhuǎn)向一個(gè)可擴(kuò)展的,開(kāi)放的結(jié)構(gòu)。說(shuō)到可擴(kuò)展并且開(kāi)放,一定非TCP/IP末屬??墒荈C和TCP/IP是完全兩套毫不相干的協(xié)議體系,如果將FC全部轉(zhuǎn)為T(mén)CP/IP,那豈不是叛變成IP SAN了么?但是如果絲豪不變,那只能是FC SAN,還是不具備開(kāi)放和擴(kuò)展性。 


    FC為什么擴(kuò)展性差?就是因?yàn)槿绻ㄐ烹p方距離太遠(yuǎn)的話,需要自己架設(shè)光纜,或者租用電信的專線光纜,這兩者成本都?jí)蚋叩摹2⑶胰绻庥秒娦挪块T(mén)的專線光纜,則FC最低速度為1Gb,1Gb帶寬的專線光纜,呵呵,不是不可能,而是一般人承擔(dān)不起這費(fèi)用。目前電信提供的專線接入,其骨干網(wǎng)一般采用SDH傳輸,一般下到終端用戶,為2M的E1線路。當(dāng)然也可以直接從高速骨干下來(lái)高速的線路,比如OC3,Oc48等等,但是費(fèi)用無(wú)法直接承受。E1線路有自己的編碼格式,不能直接將ISP過(guò)來(lái)的光纖插到FC設(shè)備上,這樣是沒(méi)用的,因?yàn)榫幋a都不一樣,不能和局端的設(shè)備建立連接,所以需要增加一個(gè)協(xié)議轉(zhuǎn)換設(shè)備,將E1協(xié)議轉(zhuǎn)換成比如V35串口、以太網(wǎng)等其他協(xié)議,好像沒(méi)有E1轉(zhuǎn)FC的協(xié)議轉(zhuǎn)換器。


    目前看來(lái),如果要擴(kuò)展FC網(wǎng)絡(luò),讓相隔很遠(yuǎn)的兩地之間跑上FC協(xié)議,只能自己架設(shè)專用光纜,可是市政部門(mén),讓你架設(shè)么?不可能的。除非在一個(gè)大廠區(qū)之內(nèi),別人管不著,但是如果是在兩個(gè)城市,兩個(gè)省之間,你一點(diǎn)辦法也沒(méi)有。怎么辦?首先,要出去,就一定要租用電信部門(mén)的線路,電信又提供了兩種線路,一種是接到Internet的線路,也就是接入電信的Internet運(yùn)營(yíng)網(wǎng)絡(luò),通信的雙方都接入,并且使用TCP/IP通信。另一種,就是點(diǎn)對(duì)點(diǎn)光纖專線,也就是上文所說(shuō)的那種情況。這條專線端到端的帶寬獨(dú)享。Internet線路,雖然可以最大到100Mb的速率,但是這只是本地帶寬,端到端的帶寬,以現(xiàn)在的TCP/IP協(xié)議體系,除非花錢(qián)買(mǎi)ISP的QoS或者M(jìn)PLS TE服務(wù),否則沒(méi)有人保證。而點(diǎn)對(duì)點(diǎn)專線,雖然保證了帶寬,但是通常承受的起的,只有E1這樣的低速專線,而且價(jià)格相對(duì)Internet接入要貴,還有它似乎目前只能承載IP作為網(wǎng)絡(luò)層協(xié)議,因?yàn)槟壳癊1協(xié)轉(zhuǎn)只能轉(zhuǎn)成V35串口或者以太網(wǎng),而他們不能承載FC協(xié)議。有些路由器不用協(xié)轉(zhuǎn),直接可以連接從光端機(jī)出來(lái)的G703或者BNC接頭,直接編碼E1,但是這些也都是IP路由器,和FC絲豪沒(méi)有關(guān)系??梢钥闯觯現(xiàn)C如果脫離了“后端專用”這四個(gè)字,到開(kāi)放領(lǐng)域,顯然是無(wú)法生存的。而IP SAN,則及其開(kāi)放,磧餐ǔ裕?只要有IP的地方,就可以部署IP SAN。


    說(shuō)到這里,租用Internet線路,只能承載IP,而租用點(diǎn)對(duì)點(diǎn)專線,也是只能承載IP,可能感覺(jué)FC的擴(kuò)展似乎就是死路一條了。想到這里,小過(guò)似乎已經(jīng)沒(méi)有什么招數(shù)了。他感到非常郁悶。忽然,他想起了iSCSI,當(dāng)初自己不就是把SCSI協(xié)議給封裝到了TCP/IP協(xié)議中來(lái)傳輸,才擴(kuò)展了SCSI協(xié)議么?是不是可以這么說(shuō):將一種協(xié)議封裝到另一種協(xié)議中,就可以使用另一種協(xié)議帶來(lái)相應(yīng)的好處呢?不妨就這么假設(shè)一下,F(xiàn)C不可擴(kuò)展,TCP/IP擴(kuò)展性很強(qiáng),那么如果把FC協(xié)議封裝到TCP/IP協(xié)議中來(lái)傳輸,是不是也可以獲得TCP/IP的擴(kuò)展性呢?這個(gè)想法比較大膽,因?yàn)镕C本身也是作為一種可以傳輸其他協(xié)議的協(xié)議,F(xiàn)C甚至可以承載IP,作為IP的鏈路層,那么為什么現(xiàn)在確反過(guò)頭來(lái)需要被IP來(lái)承載呢?Protocol over Protocol,PoP,即一種協(xié)議被over到另一種協(xié)議上。且聽(tīng)下面分解。


    不能不說(shuō)的以太網(wǎng)和TCP/IP。我們前面已經(jīng)對(duì)以太網(wǎng)和TCP/IP協(xié)議進(jìn)行了詳細(xì)的介紹。我們知道,以太網(wǎng)是一個(gè)網(wǎng)絡(luò)通信協(xié)議,以太網(wǎng),并不一定就是HUB,就是交換機(jī),就像某人說(shuō)過(guò)的一句話一樣:“網(wǎng)絡(luò)就是水晶頭”。這句話比較有意思,他反映出說(shuō)這句話的人對(duì)網(wǎng)絡(luò)的不了解。網(wǎng)絡(luò)就是水晶頭,證明他平時(shí)所見(jiàn)到的網(wǎng)絡(luò),只是以太網(wǎng)而已,青蛙只能看到它頭頂上的一片天。但是這句話從某種角度也反映出了以太網(wǎng)在當(dāng)今的普及程度。前面講到了以太網(wǎng)是可以尋址的,也就是說(shuō)它涉及到了OSI第三層的內(nèi)容,也就是網(wǎng)絡(luò)層。大家都連接到一個(gè)以太網(wǎng)環(huán)境中,不需要任何其他上層協(xié)議,大家就可以區(qū)分開(kāi)對(duì)方,進(jìn)行通信。既然這樣,為什么又需要TCP/IP協(xié)議呢?而我們總是說(shuō)以太網(wǎng)+TCP/IP協(xié)議二元組,而不是僅僅說(shuō)以太網(wǎng),或者TCP/IP協(xié)議?因?yàn)橐蕴W(wǎng)和TCP/IP協(xié)議,是邏輯上分開(kāi)的,他們各自是不同的協(xié)議體系,那么為什么總是把他們組合起來(lái)說(shuō)呢?他們之間為什么有著割舍不斷,藕斷絲連的聯(lián)系呢?這其中原因,還要從IP講起。


    前面也說(shuō)過(guò)了,IP就是一個(gè)身份標(biāo)志,一個(gè)用來(lái)把你區(qū)別于其他人的一個(gè)ID。以太網(wǎng)的MAC地址,從原理上講,就足夠用來(lái)區(qū)分各個(gè)節(jié)點(diǎn)了。但是前面也分析過(guò)完全靠MAC來(lái)尋址的缺點(diǎn)。一是MAC地址太長(zhǎng),48位,這個(gè)理由現(xiàn)在已經(jīng)不成立了,因?yàn)镮Pv6的地址是128位的,二是世界上并不都用以太網(wǎng)來(lái)建立局域網(wǎng)的,那么就有其他的尋址方式,需要一個(gè)秦始皇來(lái)統(tǒng)一天下,IP就擔(dān)任了這個(gè)任務(wù)。不管以太網(wǎng),或者串口,或者FDDI之類的局域網(wǎng)方式,它給每個(gè)節(jié)點(diǎn)都分配一個(gè)全球唯一的地址:IP地址。那么IP就是它的大名,MAC是它的小名,主機(jī)名或者域名,是它的筆名,這么比喻大家應(yīng)該能理解了。一般大家訪問(wèn)網(wǎng)站之類的,其實(shí)就是和提供網(wǎng)站服務(wù)的服務(wù)器來(lái)建立通信,獲取他的網(wǎng)頁(yè)和其他服務(wù),此時(shí)我們需要用筆名和他通信,然后你輸入筆名在IE瀏覽器中之后,DNS程序自動(dòng)把筆名轉(zhuǎn)換成大名,用大名進(jìn)行通信。那么你的包帶著大名到了服務(wù)器所在的局域網(wǎng)之后,會(huì)由那個(gè)局域網(wǎng)的路由器通過(guò)發(fā)出ARP,來(lái)把大名對(duì)應(yīng)成小名,最后通過(guò)交換機(jī)把你的包發(fā)給服務(wù)器。為什么要這么麻煩,經(jīng)過(guò)多次轉(zhuǎn)換?首先,把IP轉(zhuǎn)換成域名,是為了我們使用方便,不必記憶那些復(fù)雜的IP地址。其次,把MAC轉(zhuǎn)換為IP,是為了天下一統(tǒng),剛才說(shuō)過(guò)了。其實(shí)如果所有人加靡蘊(yùn)?網(wǎng)聯(lián)網(wǎng),那么就可以完全拋棄IP這一層尋址了,但是實(shí)際是不可能的,以太網(wǎng)現(xiàn)在還沒(méi)有一統(tǒng)天下,而且就算一統(tǒng)天下了,人們也似乎不愿意拋棄IP,就像同一個(gè)局域網(wǎng)內(nèi),還是用IP來(lái)直接通信,而不是直接用MAC。如果直接用MAC,則還需要改變程序代碼。


    原來(lái),整個(gè)Internet,不僅僅都是以太網(wǎng),以太網(wǎng)適合局域網(wǎng)聯(lián)網(wǎng)通信,但是不適合廣域網(wǎng)情況,廣域網(wǎng)的聯(lián)網(wǎng)協(xié)議,比如PPP,HDLC,F(xiàn)rame Relay,x25,ATM等等。他們各自都有各自的尋址體系,都有各自的地址,就像以太網(wǎng)有自己的MAC地址一樣,F(xiàn)rame Relay也有自己的尋址地址,就是DLCI地址,x25也有自己的地址,ATM同樣有自己的地址。如果在一個(gè)Internet上有這么多種地址,相互融合,尋址,那后果將是不堪設(shè)想,很難維護(hù),需要在各種地址之間,相互翻譯,轉(zhuǎn)換,每遇到一種,就轉(zhuǎn)換一次,這非常麻煩,所以IP出現(xiàn)了IP地址,使得所有聯(lián)網(wǎng)的節(jié)點(diǎn),不管用的什么方式,以太網(wǎng)也好,F(xiàn)rame Relay也好,統(tǒng)統(tǒng)都分配一個(gè)IP地址給他,對(duì)外最終以IP地址作為尋址地址,而將IP地址,再映射到自己使用的聯(lián)網(wǎng)方式所使用的尋址地址上,比如IP映射到以太網(wǎng)的MAC,或者IP映射到Frame Relay的DLCI,IP映射到ATM的ATM地址,等等,用來(lái)進(jìn)行地址映射的一套程序,稱為address resolution protocol,ARP。很多人聽(tīng)到ARP,就認(rèn)為是以太網(wǎng),其實(shí)這也是錯(cuò)誤的,ARP不僅僅代表以太網(wǎng)中的IP地址和MAC地址的映射,它同樣可以代表IP和DLCI的映射等等。


    IP,統(tǒng)治了OSI的第三層,將原來(lái)占據(jù)第三層的,比如以太網(wǎng)MAC地址,F(xiàn)R的DLCI等等這些雜亂的尋址體系,給統(tǒng)一了,就像秦始皇統(tǒng)一貨幣一樣。而原來(lái)的這些尋址體系,成了在野黨。而映射到以太網(wǎng)的IP,稱為IPoE,映射到FR的IP,稱為IPoFR,映射到ATM的IP,稱為IPoA,等等等等。從此,一種新的概念誕生了:PoP,即protocol over protocol。


    IP統(tǒng)一了天下,還不夠。各種協(xié)議,比如以太網(wǎng),以太網(wǎng)是一個(gè)面向無(wú)連接的網(wǎng)絡(luò),它不保障數(shù)據(jù)一定會(huì)傳送的對(duì)方,它是一個(gè)不負(fù)責(zé)任的網(wǎng)絡(luò),不管目的地有沒(méi)有收到,只管發(fā)送。而FR,其前身x25,是一個(gè)有著很好傳輸保障的協(xié)議,在TCP/IP沒(méi)有出現(xiàn)之前,x25的傳輸保障機(jī)制,做得非常到位,因?yàn)閤25其設(shè)計(jì)初衷,就是為了運(yùn)行在極其不穩(wěn)定的鏈路上。而隨著鏈路質(zhì)量的不斷提高,x25的做法顯得越來(lái)越因噎廢食了,所以其改良版本Frame Relay,就逐漸替代了x25。FR拋棄了x25中很多無(wú)謂的傳輸保障機(jī)制,而僅僅留下一些流控機(jī)制。相對(duì)于以太網(wǎng)的不負(fù)責(zé)任,F(xiàn)R起碼在鏈路層面,實(shí)現(xiàn)了比較好的流控措施。而不管是以太網(wǎng),還是FR,他們都沒(méi)有實(shí)現(xiàn)端到端的保障,端到端,是相對(duì)于“過(guò)路”來(lái)說(shuō)的,也就是通信的最終兩端無(wú)誤的收到數(shù)據(jù),才能算作真正的保障,而FR做的,只是在過(guò)路的時(shí)候,也就是在鏈路傳輸?shù)臅r(shí)候,保障鏈路正確傳輸,但是如果鏈路正確傳輸給了終端,但是終端到最終上層的某個(gè)環(huán)節(jié)出錯(cuò)了,那么數(shù)據(jù)同樣也是錯(cuò)誤的,這就是端到端發(fā)現(xiàn)錯(cuò)誤。為了實(shí)現(xiàn)這個(gè)目的,TCP出現(xiàn)了。TCP的作用,就是運(yùn)行在通信的兩個(gè)終點(diǎn),不管兩點(diǎn)之間用什么樣的鏈路連接,以太網(wǎng)也好,F(xiàn)R也好,專門(mén)來(lái)收發(fā)數(shù)據(jù),并對(duì)終端最終收到的數(shù)據(jù)做檢查,看看是否順序,是否正確,是否有丟棄,也就是TCP不是運(yùn)行在鏈路上的,而是運(yùn)行在兩端的。即使鏈路保障機(jī)制再健全,TCP也是有必要的,因?yàn)橹挥斜蛔钭罱K端正確收到數(shù)據(jù),才能算正確的傳輸。


    所以,在IP之上,又凌駕了一層,TCP層。而FR等等這些聯(lián)網(wǎng)協(xié)議的保障機(jī)制,只能保障鏈路傳輸無(wú)誤,不能保障端到端的正確收發(fā),所以只能淪為收據(jù)鏈路層的角色了。


    我們可以體會(huì)到,協(xié)議之間也是在互相利用,互相排擠,吞并,融合,以適應(yīng)不同的應(yīng)用環(huán)境,因?yàn)椴豢赡転槊恳环N應(yīng)用環(huán)境都設(shè)計(jì)一種協(xié)議,協(xié)議之間互相利用,融合,才是最好的解決辦法。


    我們現(xiàn)在可以回答上面沒(méi)有找到答案的那個(gè)問(wèn)題了,為什么以太網(wǎng)偏要和TCP/IP組合成一對(duì)呢?因?yàn)橐蕴W(wǎng)使用的太廣泛了,而OSI的第三層,第四層,也幾乎被IP、TCP給統(tǒng)一了,所以以太網(wǎng)+TCP/IP就成了一對(duì)好搭當(dāng)了。協(xié)議和協(xié)議之間,各有分工,雖然一個(gè)協(xié)議可能OSI各個(gè)層的功能它都有,就像ATM,但是如果和其他協(xié)議合作,那么就要有個(gè)分工,ATM目前也是用來(lái)承載IP,但不能越權(quán),它只管傳輸IP包到目的就可以,而不管數(shù)據(jù)是否出錯(cuò),是否亂序等等,雖然它可能有這個(gè)功能。這就是協(xié)議互相融合。以太網(wǎng)雖然自己可以尋址,但是它還是配合IP,進(jìn)行IP到MAC的映射,統(tǒng)一使用IP尋址,它默默無(wú)聞,所有光輝都被TCP/IP所披掛。


    網(wǎng)絡(luò)通信協(xié)議,一般可以分成payload層、交互邏輯層、信息表示層和尋址層。其中最重要的是交互邏輯層,它是一個(gè)協(xié)議的靈魂。


    payload層,也就是協(xié)議所承載的與本協(xié)議無(wú)關(guān)的最終數(shù)據(jù),也就是本協(xié)議最終需要傳送給對(duì)方的數(shù)據(jù)。


    信息表示層,就是附加在payload數(shù)據(jù)之外的一段數(shù)據(jù),也稱作協(xié)議開(kāi)銷,因?yàn)檫@段數(shù)據(jù)和最終應(yīng)用程序無(wú)關(guān),是運(yùn)行在通信雙方的通信協(xié)議,用來(lái)交互信息,從而作出正確動(dòng)作的一段重要數(shù)據(jù)。


    交互邏輯層,這一層其實(shí)就是運(yùn)行在通信雙方協(xié)議系統(tǒng)上的動(dòng)作代碼,邏輯,它根據(jù)對(duì)方傳送過(guò)來(lái)的信息表示層數(shù)據(jù),來(lái)作出相應(yīng)的動(dòng)作邏輯,生成自己的信息表示層,發(fā)送給對(duì)方,然后對(duì)方再做相同的動(dòng)作,就這樣完成通信雙方之間的正確動(dòng)作邏輯。


    尋址層,就是幫助協(xié)議怎么來(lái)找到需要通信的目標(biāo),比如IP地址,MAC地址,DLCI地址,等等。


    以上的這四層,是任何一個(gè)網(wǎng)絡(luò)通信協(xié)議所必須具備的,不管多么簡(jiǎn)單或者多么復(fù)雜的協(xié)議。


    尋址層,如果是點(diǎn)對(duì)點(diǎn)傳輸協(xié)議,則可以忽略此層,因?yàn)椴恍枰獙ぶ?。而且不同協(xié)議之間的尋址層,可以互相映射翻譯,典型的例子,就是IP到MAC,IP到DLCI等等。


    payload層中的數(shù)據(jù),既可以是最終應(yīng)用產(chǎn)生的數(shù)據(jù),也可以是另一種協(xié)議的信息表示層+payload數(shù)據(jù)。如果payload封裝的是最終應(yīng)用產(chǎn)生的數(shù)據(jù),則表示這個(gè)協(xié)議是直接被上層應(yīng)采用程序來(lái)調(diào)用,從而完成程序之間的遠(yuǎn)程網(wǎng)絡(luò)通信的。如果payload封裝的是另一種協(xié)議的信息表示層+payload數(shù)據(jù),那么就證明這個(gè)協(xié)議此時(shí)正在承載另一種協(xié)議。比如協(xié)議A封裝了協(xié)議B的信息表示層+payload,則就可以說(shuō)協(xié)議A封裝了協(xié)議B,或者協(xié)議A承載了協(xié)議B,或者說(shuō)協(xié)議B is over 協(xié)議A。


    交互邏輯層,每種協(xié)議都不相同,但是很多都類似,可以說(shuō)基本思想有些協(xié)議是類似的,因?yàn)樗麄兯鶎?shí)現(xiàn)的目的都是一樣的,就是將數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)侥康牡亍U驗(yàn)槿绱?,各種協(xié)議的交互邏輯層,可以互相融會(huì)貫通,將一種協(xié)議的邏輯,映射翻譯到另一種協(xié)議的邏輯,從而將各種協(xié)議的優(yōu)點(diǎn)結(jié)合起來(lái),完成目的。


    協(xié)議之間相互融合的另一個(gè)促成因素,就是協(xié)議使用廣泛程度不同,而要完成一個(gè)目標(biāo),不得不借用某種協(xié)議。就像TCP/IP協(xié)議,TCP/IP協(xié)議占領(lǐng)了全球Internet的領(lǐng)地,那么如果有一種其他協(xié)議,它想跨越地域,或者國(guó)家,來(lái)進(jìn)行通信,但是自己又無(wú)能為力,因?yàn)樗紫染蜎](méi)有專門(mén)為它準(zhǔn)備的物理線路,其次他的設(shè)計(jì),也就不適合大范圍,長(zhǎng)距離,廣域,保障傳輸?shù)那闆r下完成端到端的通信。能適合Internet規(guī)模的網(wǎng)絡(luò)通信協(xié)議,唯TCP/IP末屬!而其他協(xié)議想要完成Internet范圍的通信,就不得不借助TCP/IP,搭TCP/IP的車,讓TCP/IP來(lái)承載它們。它們是怎么搭上TCP/IP的快車呢?


    協(xié)議和協(xié)議之間的相互作用,有三種種基本的思想。一種是use,也就是一種協(xié)議完全利用另一種協(xié)議,另一種是tunnel,也就是遂道,一種協(xié)議將另一種協(xié)議遂道封裝。還有一種是map,也就是一種協(xié)議對(duì)另一種協(xié)議進(jìn)行映射翻譯。


    Use,使用,也就是一種協(xié)議自身沒(méi)有某些功能,需要使用另一種協(xié)議提供的功能。一種協(xié)議怎么去使用另一種協(xié)議呢?例子太多了,比如TCP使用IP,因?yàn)門(mén)CP沒(méi)有尋址功能,所以它利用IP來(lái)尋址。而IP又可以使用以太網(wǎng),因?yàn)镮P只是一個(gè)尋址功能,它沒(méi)有鏈路傳輸?shù)墓δ埽运靡蕴W(wǎng)交換提供的鏈路傳輸。IP使用PPP等等,也就是上層協(xié)議為了達(dá)到通信目的,使用另一種協(xié)議為他自己服務(wù)。


    Tunnel,遂道封裝,顧名思義,就是將一種協(xié)議二話不說(shuō)直接作為另一種協(xié)議的payload來(lái)進(jìn)行封裝,打包傳輸?shù)侥康牡?,然后解開(kāi)外層協(xié)議,露出內(nèi)存被封裝承載的協(xié)議,再提交給內(nèi)層協(xié)議處理邏輯模塊進(jìn)行處理。也就是說(shuō)進(jìn)行協(xié)議轉(zhuǎn)換的設(shè)備根本就不需要去理解內(nèi)層協(xié)議到底是什么東西,到底想要干什么,只要你給了我,我就統(tǒng)統(tǒng)打包發(fā)出去,完事了。Tunnel的出現(xiàn),往往是由于被tunnel的協(xié)議雖然和外層協(xié)議都在某一方面有所實(shí)現(xiàn),但是在這一方面被tunnel協(xié)議不如外層協(xié)議做的優(yōu)秀,不適合某種特定的環(huán)境,而這種環(huán)境,恰恰被外層協(xié)議所適合。


    而map,是比tunnel更復(fù)雜的,也更有擴(kuò)展性的一種方式。所謂map,也就是映射,就是說(shuō)將內(nèi)層協(xié)議的部分或者全部邏輯,映射翻譯到外層協(xié)議對(duì)應(yīng)的功能相似的邏輯上,而不是僅僅不管三七二十一的簡(jiǎn)單的封裝。map相對(duì)于tunnel,是內(nèi)外層協(xié)議的一種最徹底的融合,它將兩種協(xié)議的優(yōu)點(diǎn),融合的天衣無(wú)縫。


    我們?cè)谶@里主要說(shuō)一下tunnel和map。


    打個(gè)比方來(lái)說(shuō),火車,汽車,這是兩種運(yùn)輸方式,他們看似有太大的不同,但是他們的目的都是相同的,即都是為了將貨物運(yùn)送的目的地。而火車呢,它需要跑在鐵道上,但汽車需要跑在公路上;火車因?yàn)殍F軌很平滑,需要用鋼鐵輪子,而汽車因?yàn)楣泛茴嶔ぃ枰贸錃廨喬?;火車幾乎不需要紅綠燈來(lái)制約,而汽車跑在公路上,會(huì)有很多紅綠燈來(lái)制約它;火車由于跑在專用的鐵軌上,所以他能而且也敢達(dá)到很高的時(shí)速,而汽車由于跑在共享的公路上,它能,但是不敢達(dá)到太高的時(shí)速;火車不能跨出國(guó)境,而汽車可以方便的穿越國(guó)境;火車只能按照他的鐵軌來(lái)運(yùn)行,而汽車幾乎隨處可達(dá)……我們一下子列舉出了火車和汽車的種種特點(diǎn),相應(yīng)的,飛機(jī),輪船,火箭等等都可以拿來(lái)對(duì)比,這些特點(diǎn),就像各種通信協(xié)議自身的特點(diǎn)一樣。同樣都是運(yùn)輸貨物,為什么各種方式千差萬(wàn)別?因?yàn)樗麄冞m應(yīng)了不同的需要。同樣的,一個(gè)網(wǎng)絡(luò)通信協(xié)議,只不過(guò)它運(yùn)輸?shù)牟皇秦浳?,而是一?和1,是高低變化的電平,是數(shù)據(jù),是信息。通信協(xié)議也是千差萬(wàn)別,同樣也是為了滿足不同的情況,不同的需求。TCP/IP協(xié)議,它就滿足了Internet范圍的網(wǎng)絡(luò)通信;FC協(xié)議,它就滿足了后端存儲(chǔ)的專用高速這個(gè)環(huán)境,二者都各自占有自己的領(lǐng)地,誰(shuí)也取代不了誰(shuí),鐵路不可能為了和民航競(jìng)爭(zhēng),而把鐵軌往天上修,航空公司也不可能為了和陸運(yùn)公司競(jìng)爭(zhēng),而讓飛機(jī)跑在公路上。


    但是,如果某個(gè)駕駛汽車出遠(yuǎn)門(mén)的人,需要到國(guó)外,并且在國(guó)外也需要開(kāi)自己的車辦事,而又很急,趕時(shí)間,怎么辦?開(kāi)車東繞西繞,繞到國(guó)外么?當(dāng)然太慢了,那么此時(shí)怎么辦呢?當(dāng)然要考慮飛機(jī),但是飛機(jī)是運(yùn)輸工具,汽車也是運(yùn)輸工具,怎么把汽車帶到國(guó)外呢?可能有人說(shuō),在國(guó)外租一輛車開(kāi)不就完了么,那另當(dāng)別論,我們就假設(shè)這么一個(gè)模型來(lái)說(shuō)明問(wèn)題。車主考慮飛機(jī)托運(yùn),也就是用一種能將原先的交通工具所不能實(shí)現(xiàn)或者實(shí)現(xiàn)不好的另一種交通工具,來(lái)托運(yùn)或者封裝,或者承載原先的交通工具,到達(dá)目的地之后,再次發(fā)揮原先交通工具的作用。我們這個(gè)例子,也就是:因?yàn)槠嚥荒芎芸爝_(dá)到目的,那么我們暫時(shí)先將汽車承載于飛機(jī)之上,然后達(dá)到“快速到達(dá)目的”這個(gè)目標(biāo)之后,再將汽車取出來(lái),行使汽車的便利。相反,如果存在這種情況,比如將飛機(jī)承載于汽車之上,會(huì)不會(huì)發(fā)生呢?當(dāng)然理論上可以發(fā)生,不過(guò)現(xiàn)實(shí)中可能很少,考慮這么一種情況:某架飛機(jī)需要大修,已經(jīng)飛不動(dòng)了,需要到異地去修理,怎么辦呢?我們可以將飛機(jī)拆卸,然后封裝到集裝箱汽車中,運(yùn)輸?shù)疆惖兀缓笤龠M(jìn)行維修,這就是將飛機(jī)承載到汽車之上。那么同樣,將飛機(jī)承載到火車上,或者汽車over火車,甚至:自己over自己,也就是用飛機(jī)來(lái)運(yùn)輸飛機(jī),悶?車來(lái)運(yùn)輸汽車,當(dāng)然這些都在現(xiàn)實(shí)中是存在的?


    咱們還是再把話題拉回來(lái)。說(shuō)完了貨運(yùn)協(xié)議,咱們?cè)僬f(shuō)說(shuō)信息通信協(xié)議。因?yàn)門(mén)CP/IP適合整個(gè)Internet范圍的通信,而SCSI協(xié)議不適合,所以如果SCSI協(xié)議需要跨越大范圍通信,就要將其承載到TCP/IP上,也就形成了iSCSI協(xié)議,然而TCP/IP根本就不關(guān)心什么是SCSI,更不知道SCSI是怎樣一種作用邏輯,它只是負(fù)責(zé)封裝,傳輸。因?yàn)橐蕴W(wǎng)沒(méi)有認(rèn)證機(jī)制,沒(méi)有NCP機(jī)制(PPP協(xié)議中用來(lái)協(xié)商上層協(xié)議參數(shù)的機(jī)制),而PPP卻有這些機(jī)制,但是PPP使用程度遠(yuǎn)遠(yuǎn)不如以太網(wǎng)廣泛,怎么辦?Over吧!大家一起來(lái)over,于是形成了PPPoE。


    iSCSI和PPPoE,這兩個(gè)協(xié)議,是典型的tunnel模式。我們上面已經(jīng)給tunnel下過(guò)定義了,首先一種PoP的模式被定義為tunnel的前提,就是這兩種協(xié)議對(duì)某一特定的功能,均有自己的實(shí)現(xiàn)。我們拿iSCSI來(lái)分析,TCP/IP可以實(shí)現(xiàn)網(wǎng)絡(luò)通信,SCSI協(xié)議也可以實(shí)現(xiàn)網(wǎng)絡(luò)通信,所以他們具備了這個(gè)前提。第二個(gè)要說(shuō)的:什么時(shí)候才會(huì)被tunnel?需要的時(shí)候。因?yàn)镾CSI通信協(xié)議擴(kuò)展性太差,傳輸距離太短,而TCP/IP可以擴(kuò)展到Internet,所以將SCSI tunnel到TCP/IP,形成iSCSI,完畢。我們以后做協(xié)議分析,都推薦使用這種因果分析法,來(lái)分析一個(gè)協(xié)議所產(chǎn)生的原因,以及他的發(fā)展趨勢(shì),是要被淘汰,還是將要被發(fā)展壯大。
  Tunnel的另一個(gè)作用,就是偽裝,有時(shí)候雖然兩種協(xié)議實(shí)現(xiàn)的功能,適用環(huán)境都相同,但是還是將其中一種tunnel到另一種之上,這是為什么呢?有些情況確實(shí)需要這種實(shí)現(xiàn)方式,比如IP協(xié)議中的GRE,通用路由封裝,就是這樣一種協(xié)議。將IP協(xié)議承載到IP協(xié)議之上,自己承載自己,這樣就可以使得一些不能在公網(wǎng)路由的IP包,封裝到可以在公網(wǎng)路由的IP包之中,到達(dá)目的后,解開(kāi)封裝,露出原來(lái)的IP包,再次路由。這就是偽裝。利用這種思想,人們發(fā)明了所謂VPN,Vitual Private Network,用來(lái)將身隔千里的兩個(gè)內(nèi)部網(wǎng)絡(luò),通過(guò)Internet連接起來(lái),走internet的時(shí)候,使用公網(wǎng)地址封裝內(nèi)網(wǎng)的IP包。這是最簡(jiǎn)單的VPN。在這基礎(chǔ)上,又對(duì)IP包進(jìn)行加密,反修改等等措施,形成IPSec體系,將其和原始的VPN結(jié)合,形成了帶加密和反修改的VPN,真正使得這種PoP,穿越外層協(xié)議的時(shí)候,能夠保障安全。


    我們還是拿一個(gè)例子來(lái)說(shuō)明,到底什么是tunnel。郵政系統(tǒng),目前已經(jīng)是舉步維艱。21世紀(jì)之前,網(wǎng)絡(luò)還沒(méi)有很普及,除了電話電報(bào),寫(xiě)信似乎是大家長(zhǎng)距離通信的唯一選擇。寄信人將自己的信件(數(shù)據(jù),payload)裝入信封,填好收信人地址、郵編、名稱(通信協(xié)議的信息表示層、尋址層)等等,交給郵局,由郵局進(jìn)行層層路由轉(zhuǎn)發(fā)(協(xié)議交互邏輯層),最終到達(dá)目的地。IP網(wǎng)絡(luò)和郵政系統(tǒng),他們及其相似。而為什么郵政系統(tǒng)目前已經(jīng)陷入了困境呢?原因就是競(jìng)爭(zhēng)。進(jìn)入21世紀(jì)之后,物流業(yè)快速興起,他們借助陸路,水路,航路,鐵路等等“鏈路層”,加上自己的一套管理體系,充分利用這些資源,達(dá)到物流目的。以前只有郵政一種方式,而現(xiàn)在,物流公司多如牛毛,每個(gè)公司都有自己不同的物流體系,但是他們基本思想都是大同小異,都是要將用戶的貨物運(yùn)送到目的地。21世紀(jì),雖然網(wǎng)絡(luò)已經(jīng)很發(fā)達(dá),但是網(wǎng)絡(luò)只能走信息流,走不了實(shí)物流。所以物流公司還是能占據(jù)一定市場(chǎng)。我們來(lái)看看21世紀(jì),用戶是怎么來(lái)寄出一封信件或者包裹的。同樣寄出一封信,如果還是用古老的“協(xié)議”,比如信封+80分郵票的形式,還是可以的,大街上現(xiàn)在還有郵筒。但是很多快遞公司,也提供信件包裹服務(wù),只不過(guò)他們用的信封,比普通信封大,結(jié)實(shí),而且他們信封上的標(biāo)簽,所包含的信息更加具體,比如增加了收件人電話,發(fā)件日期,受理人簽字,委托人簽字等等。郵政信封具有的,快遞信封都具有。我們從這里就可以看出這兩種協(xié)議的不同之處了。你可以把信件封裝到郵政普通信封直接發(fā)送,也可以封裝到快遞公司信封中發(fā)送,也就是選用其中一種協(xié)議。那么如果我先把信件(最終數(shù)據(jù))封裝到普通信封中,填好信封頭信息(協(xié)議信息表示層和尋址層),然后將封裝好的普通信封,再封裝到快遞公司的信封中,并再次填一份快遞公司的信封頭信息??爝f公司按照這些信息,將信件送到目的地,目的收到之后,解開(kāi)外層信封,然后解讀內(nèi)層信封的信息頭,再次轉(zhuǎn)發(fā),或者直接打開(kāi)。剛才描述的這種情況,就是一個(gè)典型的協(xié)議tunnel方式的相互作用,把郵政協(xié)議,tunnel到快遞公司的協(xié)議,這種tunnel的目的,就是為了獲得快速,優(yōu)質(zhì)的服務(wù),因?yàn)猷]政協(xié)議提供不了快速高效的服務(wù)。


    我們?cè)賮?lái)看這種情況,比如,快遞公司A,在青島沒(méi)有自己的送貨機(jī)構(gòu),但是有人需要向青島送貨,怎么辦?此時(shí)當(dāng)然要考慮借助在青島有送貨機(jī)構(gòu)的快遞公司,讓他們代送,將信件封裝到快遞公司A的信封,然后再裝入快遞公司B的信封,讓快遞公司B做轉(zhuǎn)發(fā),到目的地之后,B的送貨員剝開(kāi)外層信封,最終用戶會(huì)收到一個(gè)快遞公司A的信封,客戶就認(rèn)為是快遞公司A全程護(hù)送過(guò)來(lái)的,其實(shí)不是的。這樣就很好的偽裝了信件。這是tunnel的另一個(gè)目的。


    說(shuō)完了tunnel,我們?cè)賮?lái)說(shuō)說(shuō)map。Map,抽象來(lái)說(shuō),就是將一種協(xié)議的邏輯,翻譯映射成另一種協(xié)議的邏輯,達(dá)到兩種協(xié)議部分或者完全融合。


    還是那個(gè)快遞公司的例子。兩個(gè)快遞公司(兩種協(xié)議),快遞公司A在青島沒(méi)有自己的送貨機(jī)構(gòu),但是B有。所以A和B達(dá)成協(xié)議,A將青島地區(qū)的送貨外包給B,凡是A公司在青島的業(yè)務(wù),都由B來(lái)運(yùn)送,但是面上必須保持A的原樣,這種方式目前商業(yè)已經(jīng)廣泛使用。起初的做法是:先將客戶信件裝入A信封,然后再封裝一層B信封,帶著A信封來(lái)轉(zhuǎn)發(fā),也就是tunnel。后來(lái),B公司嫌這種方法浪費(fèi)了人力,因?yàn)轭~外攜帶了一個(gè)A信封,這增加了信件的重量。所以B公司琢磨出一套方法,即先讓B公司的取件人了解寄件人所要提供的信息,此時(shí)取件人擔(dān)當(dāng)A公司的角色,用戶認(rèn)為取件人是A公司的,用戶按照A公司的協(xié)議,將信封頭信息告訴取件人,然后取件人此時(shí)并沒(méi)有將信件裝入A公司信封,而是直接裝入了B公司信封,但是在填寫(xiě)B(tài)公司信封頭的時(shí)候,取件人將用戶提供的針對(duì)A公司特有的信封頭信息,轉(zhuǎn)換翻譯成B公司特有的信封頭信息。經(jīng)過(guò)B公司轉(zhuǎn)發(fā)后,到達(dá)目的之后,送貨員再次將B公司的信封頭信息,轉(zhuǎn)換翻譯成A公司所特有的信封頭信息,這樣兩端的用戶,同樣也絲毫感覺(jué)不出中間環(huán)節(jié)其實(shí)是B公司完成的。但是這種方式相對(duì)于tunnel凡是,卻節(jié)約了B公司的成本,提高了轉(zhuǎn)發(fā)效率。這種方式的協(xié)議之間的相互作用,就是map。


    我們?cè)購(gòu)膶?shí)際情況說(shuō)起。最簡(jiǎn)單的map,就是IP和以太網(wǎng)之間的map。IP地址必須映射到MAC地址,才能享受以太網(wǎng)的服務(wù),所以有了ARP,專門(mén)用來(lái)做IP和MAC的映射關(guān)系。上文說(shuō)過(guò),IP和以太網(wǎng)之間,是use+tunnel關(guān)系,怎么又出來(lái)映射關(guān)系了呢?實(shí)際上,各種協(xié)議之間的相互作用,不可能只是其中一種作用方式。尋址體系之間一定需要map,交互邏輯層可以tunnel,也可以map,payload一定需要tunnel。所以針對(duì)協(xié)議不同的層次,都有相對(duì)應(yīng)的相互作用方式的。我們?cè)賮?lái)看看交互邏輯上的map,這中map可比尋址層的map,要復(fù)雜的多。尋址層的map,或者信息表示層的map,只是維護(hù)一張映射表就可以,交互邏輯的map,需要維護(hù)一個(gè)代碼轉(zhuǎn)換邏輯層。比如TCP的流控機(jī)制和FC協(xié)議的流控機(jī)制之間的map,TCP是靠窗口機(jī)制實(shí)現(xiàn)端到端的流控,F(xiàn)C靠buffer to buffer和end to end兩種機(jī)制實(shí)現(xiàn)流控。如果把FC協(xié)議承載到TCP/IP協(xié)議之上,那么會(huì)出現(xiàn)tunnel模式,和map模式,當(dāng)然tunnel中也需要map。我們不妨稱作:以tunnel為主的模式,和以map為主的模式。如果是tunnel模式,那么TCP/IP根本不管FC協(xié)議的交互邏輯是怎么樣的,TCP僅僅把FC當(dāng)成payload來(lái)封裝并傳送,充其量將FC尋址層來(lái)映射到IP層。而map模式中,進(jìn)行map操作的設(shè)備或者軟件,就需要既了解TCP/IP協(xié)議的交互邏輯,又了解FC協(xié)議的交互邏輯,因?yàn)橹挥辛私饬穗p方的邏輯,才有可能進(jìn)行map。具體來(lái)講,比如FC協(xié)議發(fā)出了一個(gè)信號(hào),說(shuō)本方緩存將滿,請(qǐng)降低發(fā)送速度。則map設(shè)備收到這個(gè)信號(hào)之后,就會(huì)map成TCP/IP可識(shí)別的信號(hào),即:本方處理受阻,窗口減小至某某數(shù)值,這就是FC協(xié)議到TCP/IP協(xié)議關(guān)于流控機(jī)制map的一個(gè)方法。被承載到IP之上之后,F(xiàn)C協(xié)議就可以漂洋過(guò)海遠(yuǎn)隔千里之間被傳遞了。如果再tunnel模式中,F(xiàn)C協(xié)議發(fā)出的這個(gè)流控信號(hào),也會(huì)被TCP/IP給tunnel傳送到對(duì)方,然后再由對(duì)方的FC協(xié)議模塊來(lái)根據(jù)這個(gè)信號(hào)來(lái)判斷流控機(jī)制應(yīng)該作出的動(dòng)作,動(dòng)態(tài)調(diào)整發(fā)送速率,而其中,TCP/IP不參與任何FC協(xié)議內(nèi)部的邏輯。出了流控邏輯的映射,比如登陸機(jī)制,連接機(jī)制等等的映射,比如,F(xiàn)C發(fā)起一個(gè)flogin過(guò)程,那么map設(shè)備會(huì)map到TCP/IP的一個(gè)握手過(guò)程,等等。


    呼啦,呼佟,哎呀??!小過(guò)從夢(mèng)中醒來(lái)。剛才做的那場(chǎng)黃梁美夢(mèng),在早晨的陽(yáng)光中,煙消云散。但是仿佛那個(gè)夢(mèng),就是一場(chǎng)真實(shí)。小過(guò)按照夢(mèng)中描述的PoP的規(guī)則,鬼使神差的將FC協(xié)議果真映射到了IP上。給他做了兩種模式,一種是以tunnel為主的模式,稱作FCIP,另一種是以map為主的模式,稱作iFCP。


    至此,F(xiàn)C協(xié)議終于可以享受TCP/IP帶來(lái)的擴(kuò)展性了,小過(guò)大獲成功!


    小過(guò)和無(wú)忌從此握手言和!


    本文節(jié)選自《信息存儲(chǔ)》雜志2006年度特刊,點(diǎn)擊此處瀏覽全部文章。
    想要免費(fèi)申請(qǐng)訂閱《信息存儲(chǔ)》雜志,請(qǐng)點(diǎn)擊此處。

分享到

多易

相關(guān)推薦