Saturday, July 19, 2008

Path MTU Discovery

အရင္ေခါင္းစဥ္မွာေျပာခဲ့တဲ့အတုိင္း Network တစ္ခုမွာရွိတဲ့ အငယ္ဆုံး MTU ကုိ အလုိအေလ်ာက္ ရွာတဲ့နည္းလမ္းကုိ Path MTU Discovery (RFC 1191) လုိ႔ေခၚပါတယ္။ Network ထဲမွာရွိတဲ့ Router ေတြ fragmentation အလုပ္ပုိ မလုပ္ရေအာင္ ျဖစ္ပါတယ္။ IP Packet ရဲ့ Header မွာ DF (don't fragment) ဆုိတဲ့ flag bit တစ္ခု ပါပါတယ္။ Don't Fragment ဆုိတဲ့အတုိင္း၊ Packet မွာပါတဲ့ DF bit ရဲ့တန္ဖုိး ၁ ျဖစ္ေနရင္ လမ္းခုလပ္မွာရွိတဲ့ router က အဲဒီ packet ကုိ အပုိင္းပုိုင္းျဖတ္ခြင့္မရွိပါဘူး။

အရင္းေခါင္းစဥ္က ပုံကုိဆက္သုံးၾကရေအာင္။ Host0 ကေန Host2 ဆီကုိ DF bit တန္ဖုိး ၁ ရွိတဲ့ packet တစ္ခုကုိ ပုိ႔ေပးလုိက္တယ္ဆုိပါစို႔။ ပုံမွန္ဆုိရင္ Router0 ရဲ့ အထြက္ interface MTU က အ၀င္ interface MTU ထက္ ငယ္တယ္ဆုိရင္၊ Router က Packet ကုိ အပုိင္းပုိင္း ျဖတ္ေပးရပါမယ္။ Packet ထဲမွာပါတဲ့ DF bit ရဲ့ တန္ဖုိး ၁ ျဖစ္ေနခဲ့ရင္ ေတာ့ Route က Packet ကုိ အပုိင္းပုိင္းျဖတ္ရမဲ့အစား၊ Packet ကုိလည္း ဆက္ပုိ႔မေပးေတာ့ပါဘူး။ ဒါ့အျပင္ Router0 ပုိ႔ေပးတဲ့ ကြန္ပ်ဴတာ (Host0) ဆီကုိ ICMP destination unreachable (type 3) fragmentation needed and DF set (code 4) (လုိရာကုိပုိ႔မေပးႏုိင္ဘူး၊ အပုိုင္းပုိင္းျဖတ္ဖုိ႔လုိေပမယ့္ DF bit က လုပ္ခြင့္မေပးဘူး) packet တစ္ခုျပန္ပုိ႔ေပးပါတယ္။ အဲဒီ ICMP Packet ထဲမွာဘဲ Router0 Output interface ရဲ့ MTU အရြယ္အစားကုိ ထည့္ေပးလုိက္ပါတယ္။

Host0 က ICMP Packet ကုိ ရတဲ့အခ်ိန္ကစျပီး၊ Host0 ကေန Host2 ကုိ ေနာက္ထပ္ပုိ႔ေပးတဲ့ Packet အားလုံးရဲ့ အရြယ္အစားက ICMP မွာပါလာတဲ့ MTU အရြယ္အစားထက္ ပုိၾကီးျပီး မပုိ႔ေတာ့ပါဘူး။ တနည္းေျပာရရင္ Router0 က ပုိ႔ေပးလုိက္တဲ့ MTU တန္ဖုိးကုိ Host0 က လက္ခံလုိက္ျပီး၊ ေရွ.ေရွာက္ Host0 က Host2 ကုိ ပုိ႔ေပးတဲ့ packet တုိင္းဟာ အဲဒီ MTU ထက္မၾကီးေတာ့ဘူးေပါ့။

Path MTU-D ျပသနာအခ်ဳိ.
Path MTU-D အလုပ္လုပ္ဖုိ႔အတြက္ Router ကေန စပုိ႔ေပးတဲ့ကြန္ပ်ဴတာ (source host) ကုိ ျပန္ပုိ႔ေပးတဲ့ ICMP သတင္း ျပန္ေရာက္ဖုိ႔လုိအပ္ပါတယ္။ လက္ေတြ႔မွာ firewall ေတြ၊ router မွာရွိတဲ့ access control list ေတြက ICMP ကုိတားျမစ္ထားတဲ့အတြက္ေၾကာင့္ Path MTU-D ပုံမွန္ အလုပ္မလုပ္ႏုိင္ေတာ့ပါဘူး။
ဒီျပသနာကုိ ေျဖရွင္းဖုိ႔အတြက္ firewall rule ၊ router access control list မွာ ICMP type 3, code 4 ကုိ ခြင့္ျပဳေပးဖုိ႔လုိပါတယ္။

Path MTU-D အလုပ္မလုပ္ေတာ့ရင္ ကြန္ပ်ဴတာ တစ္ခုနဲ႔ တစ္ခု ဆက္သြယ္လုိ႔မရႏုိင္ပါဘူး။ ကၽြန္ေတာ္ ၾကဳံဖူးသေလာက္ Path MTU-D ျပသနာ အတက္ဆုံးေနရာေတြကေတာ့ IPSec နဲ႔ GRE tunnel ေတြပါတဲ့ ရုံးတြင္း network ေတြမွာ မ်ားပါတယ္။ အင္တာနက္ေပၚမွာေတာ့ PPPoE ကုိသုံးတဲ့ DSL network ေတြမွာ ျဖစ္တာေတြ႔ဖူးပါတယ္။
အိမ္က Windows ကြန္ပ်ဴတာက MTU ကုိ အလြယ္တကူ ျပင္ခ်င္ရင္ Dr. TCP ဆုိတဲ့ program ကုိ သုံးျပီး စမ္းၾကည့္ပါ။

စာညြန္း

IPSec/GRE ေၾကာင့္ Path MTU-D ျပသနာျဖစ္လ်င္ Cisco router ေတြမွာ ဘယ္လုိေျဖရွင္းရမယ္ဆုိတာ ဒီမွာ ဖတ္ၾကည့္ပါ





Post a Comment