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


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


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


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


    FC為什么擴(kuò)展性差?就是因為如果通信雙方距離太遠(yuǎn)的話,需要自己架設(shè)光纜,或者租用電信的專線光纜,這兩者成本都夠高的。并且如果租用電信部門的專線光纜,則FC最低速度為1Gb,1Gb帶寬的專線光纜,呵呵,不是不可能,而是一般人承擔(dān)不起這費用。目前電信提供的專線接入,其骨干網(wǎng)一般采用SDH傳輸,一般下到終端用戶,為2M的E1線路。當(dāng)然也可以直接從高速骨干下來高速的線路,比如OC3,Oc48等等,但是費用無法直接承受。E1線路有自己的編碼格式,不能直接將ISP過來的光纖插到FC設(shè)備上,這樣是沒用的,因為編碼都不一樣,不能和局端的設(shè)備建立連接,所以需要增加一個協(xié)議轉(zhuǎn)換設(shè)備,將E1協(xié)議轉(zhuǎn)換成比如V35串口、以太網(wǎng)等其他協(xié)議,好像沒有E1轉(zhuǎn)FC的協(xié)議轉(zhuǎn)換器。


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


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


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


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


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


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


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


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


    我們可以體會到,協(xié)議之間也是在互相利用,互相排擠,吞并,融合,以適應(yīng)不同的應(yīng)用環(huán)境,因為不可能為每一種應(yīng)用環(huán)境都設(shè)計一種協(xié)議,協(xié)議之間互相利用,融合,才是最好的解決辦法。


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


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


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


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


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


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


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


    尋址層,如果是點對點傳輸協(xié)議,則可以忽略此層,因為不需要尋址。而且不同協(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ù),則表示這個協(xié)議是直接被上層應(yīng)采用程序來調(diào)用,從而完成程序之間的遠(yuǎn)程網(wǎng)絡(luò)通信的。如果payload封裝的是另一種協(xié)議的信息表示層+payload數(shù)據(jù),那么就證明這個協(xié)議此時正在承載另一種協(xié)議。比如協(xié)議A封裝了協(xié)議B的信息表示層+payload,則就可以說協(xié)議A封裝了協(xié)議B,或者協(xié)議A承載了協(xié)議B,或者說協(xié)議B is over 協(xié)議A。


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


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


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


    Use,使用,也就是一種協(xié)議自身沒有某些功能,需要使用另一種協(xié)議提供的功能。一種協(xié)議怎么去使用另一種協(xié)議呢?例子太多了,比如TCP使用IP,因為TCP沒有尋址功能,所以它利用IP來尋址。而IP又可以使用以太網(wǎng),因為IP只是一個尋址功能,它沒有鏈路傳輸?shù)墓δ?,所以它利用以太網(wǎng)交換提供的鏈路傳輸。IP使用PPP等等,也就是上層協(xié)議為了達(dá)到通信目的,使用另一種協(xié)議為他自己服務(wù)。


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


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


    我們在這里主要說一下tunnel和map。


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


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


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


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


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


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


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


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


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


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


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


    小過和無忌從此握手言和!


    本文節(jié)選自《信息存儲》雜志2006年度特刊,點擊此處瀏覽全部文章。
    想要免費申請訂閱《信息存儲》雜志,請點擊此處。

分享到

多易

相關(guān)推薦