Mobile IP(IPv4)

資料來源:IPv6 Forum Taiwan

Mobile IP通訊協定架構

Mobile IP的主要目的為可以使得主機使用一個固定的IP位址,和一個暫時位址來連接到網際網路。對於使用者而言,並不會感覺到暫時位址的存在,因此原先所作到一半的事情就不會被干擾而中斷。以下我們將簡單介紹Mobile IP的運作原理。

Mobile IP網路系統架構

Mobile IP網路架構與各子系統如下圖所示,當中:



Mobile Host: 在網際網路上,一台主機如果常常改變其對網路的接點(point of attachment),稱為Mobile Host。接點的改變可能發生在網路正在通信中的狀態。但是通常假設接點的變化時間比通訊協定反應的時間來得慢。


Home Network: 對Mobile Host有管理權的網路,對網際網路上的其他主機而言,Mobile Host不論其目前的位址為何,"似乎"是接在此處。

Home Address: 和其他固定主機的位址一樣,此位址是固定的,由Home Network的管理者提供給Mobile Host。當傳送資料給Mobile Host時,只須知道此位址,不須知道Mobile Host目前的暫時位址。

Home Agent : 在Home Network上的某一台主機,能夠使得Mobile Host對網路上的其他主機而言,是隨時都可以存取的。

Foreign Network : 對任一Mobile Host而言,任一個除了Home Network之外,允許其接上的網路,就稱為Foreign Network。

Care-of-Address: 一個表示當Mobile Host不在Home Network時,在網路上接點的IP位址。

Foreign Agent: 在Foreign Network上的主機,能使封包傳送到Care-of-Address。

Register: Mobile Host告知Home Agent其Care-of-Address。

--------------------------------------------------------------------------------

基本工作原理

Mobile IP是由IETF所制定的RFC 2002, "IP Mobility Support" 作為標準。工作原理其實很簡單,但是細節就很複雜了。Mobile IP只用了三個元件─Mobile Host,Home Agent 和Foreign Agent。Mobile IP的好處就是它只需要這三個元件,不須更動網路的其他部分,例如DNS。
當Mobile Host接上網路時,必須先判斷其位置是在Home Network或是Foreign Network。Mobile Host可以經由”收聽”局部的廣播,來達成這件事,或是主動送出訊息給Agent。只要將現有的RFC 1256-Internet Control Message Protocol (ICMP) Router Discovery通訊協定作擴充,就可以達到這個目的。
如果Mobile Host收到由Home Agent的廣播,表示它是在Home Network,那麼只要經由原本的IP 選擇路徑的方法,就可以了。但是如果是在Foreign Network,那麼它可以取得一個Care-of-Address(一個在Foreign Network上的IP address),然後向它的Home Agent註冊(Register)。Care-of-Address的取得方法有兩種,一種是由Foreign Agent指定,另一種則是透過DHCP通訊協定,動態取得一個IP位址,這種狀況時Mobile Host就是自己的Foreign Agent。
接下來,當Mobile Host和它的Home Agent達成聯繫之後,考慮以下的動作:當有一台網際網路上的主機,要傳送封包給Mobile Host時,所有傳送到Mobile Host的封包,都會由它的Home Agent所收到。在收到後,Home Agent將此封包加上Foreign Agent的位址,然後傳送到Foreign Agent。這個加上Foreign Agent的技術稱為Encapsulate。Encapsulate有兩種方法,分別為RFC 2003 (IP Encapsulation within IP) 和RFC 2004 (Minimal Encapsulation within IP)。這個傳送的動作則稱為Tunneling。
還有另一個相關的問題,就是安全性。Home Agent必須要使用某種方法來認證某一個Mobile Host,不然很有可能被有心人士冒充Mobile Host而取得資料封包。在RFC 2002中,也規定了關於安全性的規範。
由以上所述,可以知道Mobile IP並沒有使用什麼特殊的技巧,因此可以和現有的IPv4通訊協定完全相容。以下,將更深入的觀察Mobile IP的三個主要過程,就是如何取得、註冊、和傳送封包到Care-of-Address的方法。

取得Care-of-Address (Discovering Care-of-Address)

一個Mobile Host取得Care-of-Address的方法,是根據現有的RFC 1256-Internet Control Message Protocol (ICMP) Router Discovery通訊協定作擴充。這個通訊協定原本是用來告訴一個主機它的default routers,但是在此協定上再加上有關於Care-of-Address的資訊。
Home Agent和Foreign Agent每隔一段時間就會作”廣播”這個動作(broadcast),發出有關於Care-of-Address的封包給LAN上的每個主機,如果LAN上有Mobile Host,就可以取得Care-of-Address。這麼作的原因是如果Mobile Host現在不是在Home Network時,只能收到廣播的封包。當然,如果Mobile Host現在是在Home Network時,Home Network可以不提供任何的Care-of-Address。當RFC 1256的Router Advertisement再加上Care-of-Address時,這個訊息稱為"Agent Advertisement"。
只靠廣播這個動作時,有時候Mobile Host會等不及,這時Mobile Host也可以主動的broadcast
或者是multicast一個封包,來偵測現在是否有Home Agent 或Foreign Agent的存在。還有一個情形,就是Mobile Host已經隔一段時間都沒有收到任何的Agent Advertisement,就可以假設它現在已經不在這個Foreign Agent的管轄範圍。這時,Mobile Host也可以主動的隔一段時間,就送出一個封包。這個封包是使用RFC 1256的Router Solicitation再加上一些資訊,例如Mobile Host需要這個Care-of-Address多久的時間,這整個訊息稱為"Agent Solicitation"。當Agent收到這個封包時,就必須馬上送出Agent Advertisement 的訊息出去。
作完以上動作,這時Mobile Host就已經取得了Care-of-Address。但是Home Agent還不知道這個Mobile Host目前的位址,所以還要有以下的步驟:

註冊Care-of-Address (Registering Care-of-Address)

參考下圖,可以看到註冊的過程如下:Mobile Host向Foreign Agent要求服務(這是上一步─Discovering所作的),然後由Foreign Agent向Home Agent要求服務。因為在目前,Mobile Host雖然取得了一個Care-of-Address,但是還不能使用它,要等到Home Agent同意後才可使用。Home Agent會告訴Foreign Agent它同意或是不同意,然後Foreign Agent再把這個結果廣播給Mobile Host。



註冊這個動作包括了三個重要的元素:Home address,Care-of-Address,以及Registration Lifetime,這三個元素又合稱為Binding。當註冊成功時,就產生了Binding。而且Binding是有期限的,超過了這個期限後就要重新註冊,重新取得Binding,稱為Binding Update。
Binding Update這種動作會影響到Home Agent的Routing Table,因此是很危險的。所以為了確保網路的安全性,必須再註冊時作認證Authentication 。Mobile IP規定了Home Agent和Mobile Host都要有相同的一組”key”,相同才表示認證通過。這組key是使用Message Digest 5 – MD5 (RFC 1321)編碼,為128-bit。但是光使用一組key,還是有可能被有心人士所”猜出來”─replay attack。所以光一組key還不夠,另外還再註冊時加上一個特別的identification field,在每次認證時它的值都不相同。這個identification field產生的方法主要是使用時間作為註記,因為每次註冊的時間都不相同。而Home Agent和Mobile Host必須要能夠互相對時才行。
接下來,就是如何真正的來傳送資料。

Tunneling to the Care-of-Address

要怎麼把傳送到Home Network的封包,傳送到Foreign Network給Mobile Host? 這裡使用了Encapsulate 這個技術。Encapsulate有兩種方法,一種是IP-within-IP(RFC 2003),另一種是Minimal Encapsulation(RFC 2004),下圖所示的是前一種。由Home Agent在收到封包後,在封包前加上一個新的標頭,但是原本的標頭維持不變。這樣子,就可以使用原本IP層傳送封包的方法,而不須更動路徑上其他電腦的設定。Foreign Agent在收到封包之後,再把新加上去的標頭刪除,傳送給Mobile Host。這樣子就完成了Mobile IP的所有動作。



如果是Mobile Host想要傳送封包給網路上的主機時,則可以依照原本的IP擇路方式來傳。如果是網路上的主機想要傳送封包給Mobile Host時,其資料傳送途徑則需經過Home Agent與Foreign Agent。由於此兩種傳送資料路徑 的不相同,會造成傳送路徑是三角形(Triangular Routing of Data,見下圖) 的情形。這種路徑雖然是有效的路徑,但是卻沒什麼效率。當Mobile Host改變其位置時,在Mobile Host向Home Agent註冊前,所有的封包會送到舊的路徑而遺失。一直到註冊成功後,產生了一個新的Binding,這時所有的封包就會依循新的路徑來傳送。

Comments

Popular posts from this blog

TCP/IP 明確擁塞通知 (ECN)

L2TPv3 Enables Layer 2 Services for IP Networks

Q-in-Q(Dot1Q Tunnel) Sample Configuration