Tuesday, November 25, 2008

IP Multicast မိတ္ဆက္


IP multicast အေၾကာင္းကုိေလ့လာမယ္ဆုိရင္ switch ရဲ့တာ၀န္ နဲ႔ router ရဲ့တာ၀န္ ႏွစ္ခုကြဲတာကေန စရင္ပုိလြယ္မလားလုိ႔ ထင္မိပါတယ္။ Multicast အခ်က္အလက္ကုိပုိ႔တဲ့သူ source ကုိ ထုတ္ေ၀သူ (publisher) လုိ႔ေခၚေလ့ရွိျပီး၊ အခ်က္အလက္ရရွိလုိတဲ့သူ destination ကုိ လက္ခံသူ subscriber လုိ႔ေခၚေလ့ရွိပါတယ္။ Multicast အခ်က္အလက္ေတြကို သယ္ေဆာင္တဲ့ Packet တစ္ခုမွာပါတဲ့ source address ကုိ usa (unicast source address) လုိ႔ေခၚျပီး၊ destination address ကုိ dga (destination group address) လုိ႔ေခၚပါတယ္။ DGA တန္ဖုိးဟာ ၂၂၄.၀.၀.၀ ကေန ၂၃၉.၂၅၅.၂၅၅.၂၅၅ အထိရွိပါတယ္။ ၂၃၉ နဲ႔စတဲ့ address ေတြကေတာ့ Private address ျဖစ္တဲ့အတြက္ လုိသလုိရုံးတြင္း၊ အိမ္တြင္းမွာ လုိသလုိသုံးလုိ႔ရပါတယ္။ တနည္းေျပာရရင္ RIR မွာ မွတ္ပုံတင္ ခြင့္မေတာင္းဘဲနဲ႔ ၂၂၄.၀.၀.၀ က ၂၃၈.၂၅၅.၂၅၅.၂၅၅ အတြင္းက address ကုိ မသံုးသင့္ပါဘူး။

Switch ရဲ့တာ၀န္

ကြန္ပ်ဴတာတစ္ခုက Broadast လုပ္တဲ့အခါမွာ လက္ခံလုိတာ၊ မလုိတာအသာထား Network ေပၚမွာရွိတဲ့ ကြန္ပ်ဴတာတုိင္း အခ်က္အလက္ကုိ ရရွိတယ္လုိ႔ အၾကမ္းျဖင္းေျပာႏုိင္ပါတယ္။ Multicast မွာေတာ့ အခ်က္အလက္ကုိ လုိခ်င္တဲ့အေၾကာင္း ရလုိသူကခြင့္ေတာင္းရပါတယ္။ ဒီလုိ လက္ခံလုိတဲ့ ကြန္ပ်ဴတာက Multicast အခ်က္အလက္ လုိခ်င္ေၾကာင္း ခြင့္ေတာင္းတာကုိ Join လုပ္တယ္လုိ႔ေခၚပါတယ္။ Join လုပ္တာကုိ IGMP (Internet Group Management Protocol) သုံးျပီးလုပ္ပါတယ္။ တနည္းအားျဖင့္ IGMP Join လုပ္တယ္လုိ႔လဲေခၚပါတယ္။ Linux OS မွာ netstat -ng ဆုိတဲ့ command နဲ႔ ကြန္ပ်ဴတာတစ္ခုက ဘယ္ Multicast group ေတြကုိ ေလာေလာဆယ္ Join လုပ္ထားတယ္ဆုိတာ စစ္ေဆးလုိ႔ရပါတယ္။


kkhine@bart:/opt/# netstat -ng
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 224.0.0.1
eth0 1 224.0.0.251
eth0 1 224.0.0.1



Switch တစ္ခုမွာ လာခ်ိတ္ထားတဲ့ ကြန္ပ်ဴတာေတြထဲက ဘယ္ကြန္ပ်ဴတာက ဘယ္ Multicast group ရဲ့အခ်က္အလက္ကုိ လက္ခံရရွိ လုိေၾကာင္း switch က မွတ္ထားရပါတယ္။ ဒီလုိ switch ကမွတ္ထားတာကုိ IGMP Snooping လုိ႔ေခၚျပီး၊ မွတ္ထားတဲ့ ဇယားကုိ IGMP Snooping Table လုိ႔ေခၚပါတယ္။ Default အေနနဲ႔ IGMP Snooping က enable လုပ္ထားေလ့ရွိပါတယ္။ ဒါကုိ disable သြားလုပ္လုိက္ရင္ေတာ့ switch မွာခ်ိတ္ထားတဲ့ကြန္ပ်ဴတာတုိင္းကုိ multcast group အားလုံးရဲ့အခ်က္အလက္ပုိ႔ေပးမွာျဖစ္ျပီး၊ switch ဟာ hub တစ္ခုလုိျဖစ္သြားပါလိမ့္မယ္။ ဘယ္လုိျပသနာေတြျဖစ္ႏုိင္တယ္ဆုိတာ ေသခ်ာမေလ့လာ မတြက္ခ်က္ဘဲနဲ႔ ဘယ္ေတာ့မွ IGMP Snooping ကုိ disable မလုပ္ပါနဲ႔


Switch>show ip igmp snooping groups
Vlan Group Type Version Port List
-------------------------------------------------------------
100 224.5.6.7 igmp v2 Fa1/0/1, Fa1/0/3
110 224.6.7.8 igmp v2 Fa1/0/1, Fa1/0/4, F1/0/5


Cisco 3750 က IGMP Snooping Table


Router ရဲ့တာ၀န္
Router ရဲ့တာ၀န္ကေတာ့ အာလုံးသိတဲ့အတိုင္း packet ကုိ route လုပ္ဖုိ႔ျဖစ္ပါတယ္။ Router ရဲ့ ဘယ္ Interface က ဘယ္ Multicast group လုိ လက္ခံလုိတယ္ဆုိတဲ့အေၾကာင္းကုိ IGMP ကုိသုံးျပီးမွတ္သားထားပါတယ္။ Multicast routing protocol ေတြကေတာ့
၁၊ DVMRP (Distance Vector Multicast Routing Protocol)
၂၊ MOSPF (Multicast extensions to OSPF)
၃၊ PIM (Protocol Independent Multicast) တုိ႔ျဖစ္ပါတယ္။ ပထမ ၂ ခုကုိမေလ့လာဘဲ ေမ့ထားလုိက္လုိ႔ရပါတယ္။ အသုံးအမ်ားဆုံးက PIM ျဖစ္ပါတယ္။ Network တစ္ခုရဲ့ဖြဲ႔စည္းတည္ေဆာက္ပုံကုိေလ့လာတဲ့ နည္းလမ္း (Topology Discovery Mechanism) PIM မွာမပါ၀င္ပါဘူး။ PIM က (BGP, OSPF, EIGRP, RIP) အစရွိတဲ့ routing protocol တစ္ခုရဲ့ topology discovery mechanism ကုိမွီခုိသံုးစြဲတဲ့အတြက္ေၾကာင့္ unicast routing protocol တစ္ခုရွိမွအလုပ္လုပ္မွာျဖစ္ပါတယ္။ Protocol Independent လုိ႔ေခၚတဲ့အေၾကာင္းရင္းကေတာ့ ဘယ္ unicast routing protocol ကုိအသုံးျပဳရမယ္လုိ႔ မသတ္မွတ္တဲ့ အတြက္ေၾကာင့္ျဖစ္ပါတယ္။ တစ္ခုခု ရွိေနရင္းအလုပ္ျဖစ္တယ္ေပါ့။
ကြန္ပ်ဴတာေတြက Multicast အခ်က္အလက္ရလုိေၾကာင္း သတင္းပုိ႔တာကုိ IGMP Join လုိ႔အထက္မွာေျပာခဲ့ပါတယ္။ IGMP Join packet က switch ကုိ ျဖတ္ျပီး router ဆီကုိ ေရာက္တဲ့အခါ router က IGMP table အေနနဲ႔သိမ္းထားပါတယ္။ (switch မွာရွိတဲ့ IGMP snooping table နဲ႔ မတူဘူးဆုိတာ မွတ္ထားပါ။)။
Router က IGMP Join ရတယ္ဆုိတာ Multcast အခ်က္အလက္ကုိ လက္ခံလုိတဲ့ကြန္ပ်ဴတာအနည္းဆုံးတစ္လုံး Interface တစ္ခုမွာရွိေနတယ္ဆုိတာ သတင္းရတာျဖစ္ပါတယ္။ Router အေနနဲ႔ Multicast အခ်က္အလက္ကုိ ျဖန္႔ေ၀ေပးမဲ့ ကြန္ပ်ဴတာ (publisher) ဆီကုိ အျခား router ေတြကတဆင့္ျဖတ္ျပီး သတင္းပုိ႔ရမွာျဖစ္ပါတယ္။
Router ေတြအခ်င္းခ်င္း Multicast group လက္ခံလုိသူမ်ား သတင္းပို႔ေပးတာကုိ PIM register လုပ္တယ္လုိ႔ေခၚပါတယ္။ Network ထဲမွာရွိတဲ့ Router တစ္ခုရဲ့ေနရာကၾကည့္လုိ႔ RouterA က source နဲ႔ပုိနီးရင္ RouterA ကုိ ေရဆန္ upstream router လုိ႔ေခၚျပီး၊ destination နဲ႔ပုိနီးရင္ ေရစုန္ downstream router လုိ႔ေခၚပါမယ္။
PIM register packet ေတြကုိ upstream router ေတြဆီပုိ႔ေပးရျပီး၊ Multicast data ေတြက downstream router ေတြဆီကုိ ျဖန္႔ေ၀ေပးရတယ္လုိ႔ေျပာရင္ သိပ္မ်က္ေစ့မလယ္ဘူးလုိ႔ေမွ်ာ္လင့္ပါရဲ့။

Multicast data flow
source ------> switch ------> RouterB ------> RouterA ------> RouterZ ------> switch ------> destination

Multicast control flow
host --- (IGMP Join) ---> switch ----> RouterA --- (PIM Register) ---> RouterB

PIM ကုိ ေလးမ်ဳိးထပ္ထားပါတယ္။
၁၊ PIM-SM (PIM Sparse Mode)
၂၊ PIM-DM (PIM Dense Mode)
၃၊ PIM-Bidir (PIM Bi-directional)
၄၊ PIM-SSM (PIM Source Specific Multicast)

ေနာက္ေန႔မွ ဆက္ေဆြးေႏြးၾကေသးတာေပါ့။

Post a Comment