Tuesday, June 17, 2008

Tunneling Protocols (1)


Tunneling Protocol ေတြဟာ ေတာ္ေတာ္ ရွုပ္ေထြးတဲ့နည္းပညာျဖစ္လုိေလ့လာသူတုိင္း အနည္းနဲ႔အမ်ား အခက္အခဲ ေတြ႔ရေလ့ရွိပါတယ္။ Tunneling Protocol ကုိေလ့လာဖုိ႔အတြက္ Protocol Layering သေဘာကုိ ေသခ်ာနားလည္ဖုိ႔ လုိပါတယ္။ အင္တာနက္မွာ ကြန္ပ်ဴတာတစ္လုံးနဲ႔ တစ္လုံးဆက္သြယ္ၾကတဲ့အခါ Protocol တစ္လႊာျပီး တစ္လႊာျဖတ္ သြားရပါတယ္။

Web Server မွာရွိတဲ့ HTML Page တစ္ခုကုိ Browser ကေနဖတ္တယ္ဆုိပါစုိ႔ -
Web server မွာ
၁၊ Web Page ကုိ HTTP Protocol (application layer) က သယ္ယူျပီး Transport Layer ကုိေပးလုိက္တယ္၊
၂၊ Transport layer မွာရွိတဲ့ TCP က HTTP data ကုိယူ၊ ျပင္ဆင္စရာရွိတာျပင္ဆင္ျပီး Network Layer ကုိေပးလုိက္မယ္၊
၃၊ Network Layer မွာရွိတဲ့ IP က TCP segment ကုိယူ၊ လိပ္စာတပ္၊ လုိအပ္တာေတြ လုပ္ျပီး Data Link အလႊာ ကုိပုိ႔ေပးလုိက္ပါမယ္။ (Data Link အလႊာဆုိတာ ကြန္ပ်ဴတာမွာရွိတဲ့ Network Card တုိ႔၊ Network ၾကိဳး တုိ႔ကုိ ရည္ညႊန္း ပါတယ္။)

ဒီအဆင့္ ၃ ဆင့္ကုိ အထုပ္ထုပ္ျခင္း (Encapsulation) လုိ႔ေခၚျပီး၊ အဆင့္ ၃ဆင့္လုံးဟာ ကြန္ပ်ဴတာ တစ္လုံးထဲမွာလုပ္တဲ့ အဆင့္ေတြျဖစ္ပါတယ္။ အဆင့္ ၃ ျပီးတဲ့အခါမွာ Data ေတြဟာ ၀ါယာၾကဳိးေပၚမွာ IP Packet ေတြအေနနဲ႔ ျဖတ္သြားျပီး Browser ရွိတဲ့ ကြန္ပ်ဴတာကုိ Network ကတဆင့္ ပုိ႔ေပးမွာ ျဖစ္ပါတယ္။

Browser ရွိတဲ့ ကြန္ပ်ဴတာကုိ ေရာက္တဲ့အခါ အဆင့္ ၃၊ ၂၊ ၁ ဆုိျပီး ေျပာင္းျပန္ျပန္လုပ္ပါတယ္။ အဲဒါကုိေတာ့အထုပ္ေျဖျခင္း (De-encapsulation)လုိ႔ေခၚပါတယ္။



ပုံမွာ Host A က Web Server ျဖစ္ျပီး Host B က Browser ရွိတဲ့ ကြန္ပ်ဴတာျဖစ္ပါတယ္။

ေအာက္အလႊာေတြက Protocol ေတြက အေပၚအလႊာက Data ကုိ သယ္ေပး၊ ထုပ္ေပး (တနည္းေျပာရင္ encapsulate လုပ္ေပး) ရပါတယ္။
အင္တာနက္မွာ အသုံးအမ်ားတဲ့ Protocol တခ်ဳိ. -
(4) Application Layer - HTTP, HTTPS, SSH, DNS
(3) Transport Layer - TCP, UDP
(2) Network Layer - IP
(1) Data Link - Ethernet

ဥပမာ ၁ -
SSH(4) ကုိ TCP(3) က သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးမယ္၊
TCP(3) ကုိ IP(2) က သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးမယ္၊
IP(2) ကုိ Ethernet(1) က သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးမယ္။


ဥပမာ ၂ -
DNS(4) ကုိ UDP(3) က သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးမယ္၊
UDP(3) ကုိ IP(2) က သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးမယ္၊
IP(2) ကုိ Ethernet(1) က သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးမယ္။

Tunneling Protocol မွာေတာ့ encapsulation လုပ္တဲ့ အဆင့္ေတြ ၄၊၃၊၂၊၁ အစီအစဥ္အတုိင္းမဟုတ္ေတာ့ဘဲ ကေျပာင္းကျပန္ျဖစ္သြားပါတယ္။ ဘယ္အလႊာက ဘယ္အလႊာကုိ encapsulate လုပ္မယ္ဆုိတာကေတာ့ Tunneling Protocol တစ္ခုနဲ႔ တစ္ခုမတူပါဘူး။

IPSec Tunnel မွာ Layer 3 Protocol ျဖစ္တဲ့ IPSec Protocol က Layer 3 Protocol ျဖစ္တဲ့ IP Protocol ကုိ သယ္၊ ထုပ္၊ encapsulate လုပ္ပါတယ္။ IPSec (IP Secured) Tunnel ကုိသံုးၾကတဲ့အေၾကာင္းရင္းတစ္ခုကေတာ့ - အင္တာနက္ေပၚမွာ ပုိ႔လုိက္တဲ့အခ်က္အလက္ ေတြကုိ ၾကားလူတစ္ေယာက္ေယာက္က ဖတ္လုိ႔နားမလည္ေအာင္ စကား၀ွက္နဲ႔ ဖြက္ထားႏုိင္လုိ႔ျဖစ္ပါတယ္။
(IPSec Encapsulation Order - ၄၊၃၊၃၊၂၊၁)

SSH (Secure SHell) Tunnel မွာ Layer 4 Protocol ျဖစ္တဲ့ SSH Protocol က အျခား Layer 4 Protocol ျဖစ္တဲ့ SMB, HTTP စတာေတြကုိ သယ္၊ ထုပ္၊ encapsulate လုပ္ေပးပါတယ္။ SSH Tunnel ကုိသံုးၾကတဲ့အေၾကာင္းရင္းတစ္ခုကေတာ့လည္း IPSec နဲ႔တူပါတယ္။
(IPSec Encapsulation Order - ၄၊၄၊၃၊၂၊၁)

Tunneling Protocol မ်ဳိးစုံရွိတဲ့အထဲက အသုံးမ်ားတဲ့အခ်ဳိ ့ကုိစာရင္းျပဳရလ်င္ -
၁၊ IP Sec Tunnel
၂၊ GRE Tunnel
၃၊ IP in IP Tunnel
၄၊ SSH Tunnel
၅၊ MPLS
၆၊ PPPoE
ရ၊ HTTP Tunnel

ဆက္ေရးသြားပါမယ္။

မွတ္ခ်က္ -
သုံးထားတဲ့ Protocol Layer ေတြက DoD TCP/IP 4 Layers Model ကုိညႊန္းထားပါတယ္။ ISO's OSI 7 Layers Model ကုိေလ့လာထားသူေတြအတြက္ Layer ရဲ့ နံပါတ္ေတြမတူတာကုိ သတိျပဳပါ။ OSI မွာ Application Layer က No.7 ျဖစ္ျပီး TCP/IP မွာ No.4 ျဖစ္ပါတယ္။

Wednesday, June 11, 2008

တခ်ိန္တံုးက Pentium ...


CPU အေၾကာင္းေရးရင္းနဲ. စိတ္ထဲသတိရတာေလး ေရးလုိက္ပါဦးမယ္။

Intel က ပထမဦးဆုံး Pentium CPU ကုိ ၁၉၉၃ ခုႏွစ္မွာ တီထြင္ခဲ့ပါတယ္။ အဲဒီအခ်ိန္က ကၽြန္ေတာ္ ရန္ကုန္ ကြန္ပ်ဴတာ တကၠသုိလ္မွာ ေက်ာင္းတက္ ေနတုံးေပါ့။ ေက်ာင္းကုိ ICST (Institute of Computer Science and Technology) နာမည္ နဲ.ေခၚခဲ့တဲ့ အခ်ိန္ပါ။
ကၽြန္ေတာ့သူငယ္ခ်င္းေတြနဲ. (ကုိေနထြန္းသိန္း နဲ. ကုိထြန္းခုိင္) USIS မွာ Pentium architecture ကုိသြားဖတ္ ၾကျပီး အျပန္လမ္းမွာ အားရပါးရ ေျပာဆုိျငင္းခုံၾကတာ မွတ္မိပါေသးတယ္။

"Dual Pipeline ေၾကာင့္ Instruction ကုိ တစ္ျပဳိင္တည္း ၂ ခု ဖတ္ႏုိင္မယ္။ ဒါ့ေၾကာင့္ CPU ဟာ theoretically ၂ ဆ ျမန္လာမယ္။ ဒါေပမယ့္ Compiler ကုိ optimize လုပ္မထားရင္ ဖတ္ထားတဲ့ pre-fetch Instruction ေတြကုိ ဆက္သုံးလုိ.မရေတာ့ဘဲ အလဟသ ျဖစ္သြားမယ္။ Out-of-order execution အတြက္ ပထမဦးဆုံး Pentium မွာ Compiler ကုိ မွီခုိရတယ္။ Programmer ေတြအေနနဲ. တတ္ႏုိင္သေလာက္ goto statement, jump statement ေတြကုိ တတ္ႏုိင္သေလာက္ေရွာင္က်ဥ္ရမယ္ ...... "

ပန္းဆုိးတမ္း စာအုပ္ဆုိင္ေတြက Pentium မ်က္ႏွာဖုံးပါတဲ့ PC Magazine ကုိလည္း ၀ယ္ဖတ္ပါေသးတယ္။

Pentium အေၾကာင္းသိတာ ေမ်ာက္ အုံးသီးရသလုိျဖစ္ျပီး စာသင္ခန္းထဲမွာ ဆရာနဲ. သြား အျငင္းအခုံလုပ္လုိ. အခန္းထဲက ေမာင္းထုတ္ ခံခဲ့ရပါတယ္။ ကၽြန္ေတာ့ဘက္ကေန လုိက္ေျပာေပးတဲ့ သူငယ္ခ်င္းကေတာ့ လားရွုိးက ကုိလွစိန္ပါ။
(မၾကာေသးခင္ကဘဲ ငယ္ငယ္ရြယ္ရြယ္နဲ. ဆုံးသြားရွာပါတယ္။ ကုိလွစိန္ ေကာင္းရာသုဂတိ လားပါေစ။)

Non-Stop Forwarding and Non-Stop Routing


ေခတ္သစ္ Router ေတြမွာ Control Plane နဲ. Data Plane ကုိ သီးျခားစီ ခြဲျပီး တည္ေဆာက္ၾကပါတယ္။ Control Plane မွာ သီးသန္. bus, processor နဲ. memory ရွိျပီး၊ Data Plane အတြက္ သီးသန္. bus, processors နဲ. memory သတ္သတ္ထားေပး ပါတယ္။

Control Plane ရဲ. အဓိက အလုပ္ကေတာ့
- Routing protocols ေတြကုိ ထိန္းခ်ဳပ္ဖုိ.
- Route ေတြကုိ တြက္ခ်က္ဖုိ. လုိအပ္တဲ့ database ကုိ ထိန္းသိမ္းဖုိ. နဲ.
- Data Plane က အသုံးျပဳဖုိ.လုိတဲ့ FIB (Forwarding Information Base) ကုိ ျပင္ဆင္ေပးဖုိ. ျဖစ္ပါတယ္။

Data Plane ရဲ့ အဓိက အလုပ္ကေတာ့ Control Plane က ျပင္ဆင္ေပးလုိက္တဲ့ FIB ကုိသုံးျပီး Packet ေတြကုိ Interface တစ္ခုကေန Interface တစ္ခုကုိ ျမန္ႏုိင္သေလာက္ ျမန္ျမန္ပုိ.ေပးဖုိ. ျဖစ္ပါတယ္။

Non-Stop Forwarding (NSF) ကုိတည္ထြင္ခဲ့တဲ့ အေၾကာင္းရင္းက Control Plane အလုပ္မလုပ္ေတာ့တဲ့ အခ်ိန္မွာ Data Plane က Packet Foward လုပ္တာကုိ အေႏွာက္အယွက္မျဖစ္ေစဖုိ. ျဖစ္ပါတယ္။ တနည္းေျပာရရင္ ေခါင္းခဏျပတ္သြားတဲ့အခ်ိန္မွာ ကုိယ္ကုိ အလုိေလ်ာက္ ဆက္အလုပ္လုပ္ေစခ်င္ တဲ့သေဘာပါ။

Control Plane အလုပ္မလုပ္ေတာ့တဲ့ ဥပမာတခ်ဳိ.ေပးရရင္ Router ရဲ့ CPU hang ျဖစ္တာမ်ဳိး၊ Operating System reboot ျဖစ္တာမ်ဳိး၊ Memory parity error / bus error ျဖစ္တာမ်ဳိး - စတာေတြျဖစ္ပါတယ္။ NSF feature ကုိလုိခ်င္ရင္ router မွာ CPU ၂ ခုလုိပါတယ္၊ တစ္ခုက primary၊ တစ္ခုက backup ေပါ့။ ပုံမွန္အခ်ိန္မွာ backup CPU က primary CPU မွာရွိတဲ့ အခ်က္အလက္ေတြကုိ အျပည့္အစုံ ကူးယူထားပါမယ္။ Primary CPU အလုပ္မလုပ္ေတာ့ရင္ backup CPU က primary CPU ရဲ. တာ၀န္ကုိ ေျပာင္းယူျပီး router ကုိ ထိန္းခ်ဳပ္ပါမယ္။

Cisco Systems က CPU ကုိ Route Processer (RP) လုိ. ေခၚျပီး၊
Juniper Networks က CPU ကုိ Routing Engines (RE) လုိ. ေခၚပါတယ္။

Backup CPU ကေန Primary CPU ရဲ.တာ၀န္ေျပာင္းယူတာကုိ
Cisco Systems က Stateful Switch Over (SSO) လုိ. ေခၚျပီး၊
Juniper Networks က Graceful Routeing Engine Switchover (GRES) လုိ. ေခၚပါတယ္။

Cisco Catalyst 6500 Layer 3 switch မွာ SSO နဲ. NSF သုံးဖုိ. လုိအပ္တာ ေတြကုိ ဥပမာ ေပးသြားပါမယ္။`
Cisco 6500 က CPU ကုိ Supervisor လုိ.ေခၚျပီး အသုံးအမ်ားဆုံး model ကေတာ့ Supervisor 720 (အတုိေကာက္ Sup720) ျဖစ္ပါတယ္။

၁၊ Supervisor ၂ ခု Switch ထဲမွာ ထည့္.ထားဖုိ. လုိပါတယ္။
၂၊ Supervisor ကုိ SSO Mode ျဖစ္ေအာင္ configure လုပ္ရပါမယ္။
၃၊ Switch မွာ သုံးမဲ့ Routing protocol ကုိ NSF mode မွာ အသုံးျပဳမယ္ဆုိတာသိေအာင္ configure လုပ္ရပါတယ္။ NSF-Aware ျဖစ္ေအာင္လုပ္တယ္လုိ. ေခၚပါတယ္။ Multicast, OSPF, BGP, EIGRP, နဲ. IS-IS routing protocols ေတြအားလုံး NSF-aware ျဖစ္ေအာင္ configure လုပ္လုိ.ရပါတယ္။ ဒီလုိ Routing protocol ေတြက NSF-aware ျဖစ္သြားတာကုိ Non-Stop Routing (NSR) လုိ.ေခၚပါတယ္။

Cisco ရဲ့ စာတန္းတစ္ခုမွာ Primary CPU fail ျဖစ္တဲ့ အခ်ိန္နဲ. Backup CPU က တာ၀န္စယူတဲ့အခ်ိန္ဟာ အၾကာဆုံး ၃ စကၠန္.၊ အျမန္ဆုံး ၀ စကၠန္.လုိ. ဆုိပါတယ္။



Configuring Stateful Switch Over (SSO)

Router# configure terminal
Router(config)# redundancy
Router(config-red)# mode sso
Router(config-red)# end

Router# show redundancy states
my state = 13 -ACTIVE
peer state = 8 -STANDBY HOT
Mode = Duplex
Unit = Primary
Unit ID = 5
Redundancy Mode (Operational) = sso
Redundancy Mode (Configured) = sso
Split Mode = Disabled
Manual Swact = Enabled
Communications = Up
client count = 29
client_notification_TMR = 30000 milliseconds
keep_alive TMR = 9000 milliseconds
keep_alive count = 1
keep_alive threshold = 18
RF debug mask = 0x0
Router#


Configuring NSF for BGP

Router# configure terminal
Router(config)# router bgp
Router(config-router)# bgp graceful-restart


Configuring NSF for OSPF

Router# configure terminal
Router(config)# router ospf
Router(config-router)# nsf


Configuring NSF for EIGRP

Router# configure terminal
Router(config)# router eigrp
Router(config-router)# nsf

Configuring NSF for Multicast

Router# configure terminal
Router(config)# mls ip multicast sso convergence-time



စာညြန္း -
Configuring SSO and NSF on Cisco IOS
Jeff Doyle's Article (ရွင္းျပထားတာ အရမ္းေကာင္းတယ္)
SSO and NSF Deployment Guide (2006)