การทดสอบและติดตงั้ระบบ mobile mpls mobile mpls testbed...
TRANSCRIPT
การทดสอบและตดตงระบบ Mobile MPLS Mobile MPLS Testbed
กานต หงษมเสยงศร
Karn Hongmeesiengsri
สารนพนธฉบบนเปนสวนหนงของการศกษา
ตามหลกสตรวทยาศาสตรมหาบณฑต
สาขาวชาวศวกรรมเครอขาย บณฑตวทยาลย
มหาวทยาลยเทคโนโลยมหานคร
ปการศกษา 2555
i
หวขอ การทดสอบและตดตงระบบ Mobile MPLS ชอนกศกษา กานต หงษมเสยงศร รหสนกศกษา 5417660021 หลกสตร วทยาศาสตรมหาบณฑต สาขาวศวกรรมเครอขาย ปการศกษา 2555 อาจารยทปรกษา ผศ.ดร.ประวทย ชมช
บทคดยอ
เนองจากปจจบนการสอสารในระบบเครอขายมอปกรณทสามารถเคลอนทไดเปนจ านวนมาก แตการสอสารดวยโปรโตคอลไอพในรปแบบปกตเมออปกรณตางๆมการยายขามเครอขายไปอยตางเครอขายไปจ าเปนตองเปลยนหมายเลขไอพแอดเดรสใหมตามเครอขายนนๆทเคลอนยายไป เพอใหแพกเกตจากตนทางสามารถสงมาถงได ทงนตนทางจ าเปนตองรหมายเลขไอพแอดเดรสใหมของอปกรณเคลอนทนนดวยเชนกน การน าแนวคดเรอง Mobile IP ซงเปนโปรโตคอลทพฒนาขนมาเพอสนบสนนความสามารถในการท างานกบอปกรณเคลอนทในเครอขายไอพ ซงการท างานของโปรโตคอลน เมออปกรณเคลอนทใดๆเปลยนทอยจากเครอขายหนงมาตอกบอกเครอขายหนง สามารถยายขามมาไดโดยไมจ าเปนตองเปลยนหมายเลขไอพแอดเดรสทใชอย มาใชงานจงเปนแนวคดทมประโยชน นอกจากนการน าแนวคดของ Mobile IP มาประยกตใชงานในระบบเครอขายทเปนเครอขาย MPLS เดมอยแลวโดยไมจ าเปนตองเปลยนอปกรณเพอใหสนบสนน Mobile IP จงเหมาะสมกบการปรบปรงเครอขายเพอใหรองรบการท างานในรปแบบทรองรบการเคลอนทของอปกรณโดยเรยกระบบนวา Mobile MPLS
ii
กตตกรรมประกาศ
สารนพนธนไดพฒนาจนส าเรจดวยด เพราะความกรณา ความชวยเหลอ และก าลงใจจากหลายคน ขาพเจาขอขอบพระคณมา ณ ทน
ขอขอบพระคณอาจารยประวทย ชมช ทชวยแนะน าทงแนวคด ทงกระบวนการท างานตางๆ ตลอดจนเทคนคตางๆ จนท าใหโครงงานนเสรจสมบรณ
ขอขอบพระคณปาและนองโอบ ทชวยเปนก าลงใจตลอดเวลา คอยกระตนใหท างานตอยามทอหรอหมดก าลงใจเวลาตดปญหาตางๆ
ขอขอบพระคณเพอนๆ The Gangs ทกคนทรวมทกขรวมสขกนตลอดเวลา 2 ปทเรยนและฟนฝาอปสรรคมาดวยกน ทงกนเทยวเลนทกสถานการณ กระตนกนใหมแรงฮดสทกครง ทงการท าโปรเจคและการเรยน
และสดทาย ขอขอบพระคณตวเองทสามารถพยายามท าใหสารนพนธนเสรจสนลงได
กานต หงษมเสยงศร เมษายน 2556
iii
สารบญ หนา
บทคดยอ I กตตกรรมประกาศ II สารบญ III สารบญรปภาพ V บทท 1 บทน า 1
1.1 กลาวน า 1 1.2 ปญหาและแรงจงใจ 1 1.3 จดประสงค 2 1.4 โครงสรางของสารนพนธ 2 1.5 ขอบเขตการด าเนนงาน 3 1.6 ประโยชนทไดรบ 3 1.7 ขนตอนการด าเนนงาน 3 บทท 2 ความรพนฐานและทฤษฎทเกยวของ 4 2.1 Multiprotocol Label Switching (MPLS) 4
2.2 Mobile IP 9
2.3 การน า MPLS และ Mobile IP มาใชงานรวมกน 13
บทท 3 การออกแบบระบบ 14 3.1 กลาวน า 14
3.2 ภาพรวมของการออกแบบระบบ Mobile MPLS 14 3.3 ภาพรวมของขนตอนการท างานของสวนตางๆในระบบ Mobile MPLS 15 3.4 การออกแบบโปรแกรม 17 3.5 การสรางค าสงเพอก าหนดอโมงค MPLS ระหวาง LER ของเครอขายโฮมกบเครอขายฟอเรนจ 21 3.6 การออกแบบโปรโตคอล 21 3.7 สรปทายบท 24
iv
สารบญ(ตอ) หนา
บทท 4 ผลการทดลองโครงงาน 25 4.1 กลาวน า 25
4.2 การทดสอบการสงขอมลผานสรางอโมงค MPLS เชอมระหวางเครอขายโฮมและฟอรเรนจ 25 4.3 การทดสอบเมอตดตงโปรแกรมลงบนโหนดโมบาย โฮมเอเจนต และ ฟอรเรนจเอเจนต 26
บทท 5 สรปผลการด าเนนงาน 39 5.1 ผลการด าเนนโครงการ 39
5.2 ปญหาและอปสรรค 39 5.3 แนวทางการพฒนาในอนาคต 39
เอกสารอางอง 40 ภาคผนวก ก วธการสงค าสงส าหรบการสรางอโมงคในอปกรณยหอ Acatel Lucent 41 ภาคผนวก ข โคดโปรแกรม 43 โปรแกรมในสวนของโหนดโมบาย 43
โปรแกรมในสวนของเอเจนต 47
v
สารบญรปภาพ หนา
รปท 2.1 โครงสรางของเครอขาย 5 รปท 2.2 ตวอยางตาราง LFIB 5 รปท 2.3 รปแบบของ MPLS Header 6 รปท 2.4 รปแบบของ Label Stacking 6 รปท 2.5 รปแสดงการด าเนนการเกยวกบ label 7 รปท 2.6 รปแสดงองคประกอบตางๆของระบบ Mobile IP 12 รปท 2.7 รปแสดงขนตอนการท างานในระบบ Mobile 14 รปท 3.1 รปแสดงองคประกอบตางๆของระบบ Mobile IP 15 รปท 3.2 รปแสดงองคประกอบตางๆของระบบ Mobile MPLS 16 รปท 3.3 รปแสดงขนตอนการท างานในระบบ Mobile MPLS 17 รปท 3.4 รปแสดงล าดบการท างานของโปรแกรมในสวนของโหนดโมบาย 18 รปท 3.5 รปแสดงล าดบการท างานของโปรแกรมในสวนของเอเจนต 19 รปท 3.6 รปแสดงตวอยางการจดเกบขอมลในตาราง Visitor List 21 รปท 3.7 รปแสดงตวอยางการจดเกบขอมลในตาราง Binding Update List 21 รปท 3.8 รปแสดงตวอยางค าสงทใชในการสรางอโมงค MPLS 22 รปท 3.9 รปแสดงตวอยางการจดเกบขอมลในตาราง Binding Update List 23 รปท 3.10 รปแสดงกลไกการรบสงขอมลในโปรโตคอล 25 รปท 4.1 รปแสดงค าสงส าหรบการเปลยนเสนทางอโมงคทLERของเครอขายโฮม 26 รปท 4.2 รปแสดงค าสงส าหรบสรางอโมงคทLERของเครอขายฟอเรนจ 26 รปท 4.3 รปแสดงการเชอมของอปกรณตางๆส าหรบการทดสอบสงขอมล 27 รปท 4.4 รปแสดงแพคเกตทสรางดวยเครองจ าลองทราฟฟกและดกจบไดทโหนดโมบาย 27 รปท 4.5 รปแสดง topology ส าหรบการทดสอบ 28 รปท 4.6 รปแสดง ขนตอนการเรมท างานของโหนดโมบายขณะอยในเครอขายโฮม 29 รปท 4.7 รปแสดงแพคเกตทดกจบการสอสารไดบนโหนดโมบายเมออยในเครอขายโฮม 29 รปท 4.8 รปแสดง ขนตอนการเรมท างานของโฮมเอเจนตขณะทโหนดโมบายอย ในเครอขายโฮม 30 รปท 4.9 รปแสดงแพคเกตทดกจบการสอสารไดบนโฮมเอเจนตเมอโหนดโมบายอย ในเครอขายโฮม 30 รปท 4.10 รปแสดง ขนตอนการท างานของโหนดโมบายเมอยายขามมาอย ในเครอขายฟอเรนจ 31
vi
สารบญรปภาพ(ตอ) หนา
รปท 4.11 รปแสดง ขนตอนการท างานของฟอเรนจเอเจนตเมอมโหนดโมบาย เขามาตดตอ 31 รปท 4.12 รปแสดงแพคเกตทดกจบการสอสารไดบนฟอเรนจเอเจนตเมอยายขามมาอย ในเครอขายฟอเรนจ 31 รปท 4.13 รปแสดง ขนตอนการท างานโฮมเอเจนตเมอโหนดโมบายยายไปตอกบ เครอขายฟอเรนจ 33 รปท 4.14 รปแสดง ขนตอนการท างานฟอเรนจเอเจนตเมอท าการตดตอกบโฮมเอเจนต เพอลงทะเบยน 36 รปท 4.15 รปแสดง ภาพจ าลองอโมงคMPLSทโฮมและฟอรเรนจเอเจนตไดสรางขน 39 รปท 4.16 รปแสดงการทดสอบการตดตอจาก CN ไปยง PC3 ดวยการ PING 39
1
บทท 1 บทน า
การทดสอบและตดตงระบบ Mobile MPLS Mobile MPLS Testbed
1.1 กลาวน า (Introduction)
Mobile IP เปนโปรโตคอลทพฒนาขนมาเพอสนบสนนความสามารถในการท างานกบอปกรณเคลอนท (Mobile Node MN)ในเครอขายไอพ ซงการท างานของโปรโตคอลน เมออปกรณเคลอนทใดๆเปลยนทอยจากเครอขายหนงมาตอกบอกเครอขายหนง สามารถยายขามมาไดโดยไมจ าเปนตองเปลยนหมายเลข IP Address ทใชอย นนคอเมออปกรณใดๆทตองการจะตดตออปกรณเคลอนทน (Correspondent Node : CN)กสามารถจะตดตอไดโดยสงไปยงหมายเลข IP Address เดมของอปกรณเคลอนทนน โดยไมจ าเปนตองรหมายเลข IP Address ใหมของเครอขายใหมทอปกรณเคลอนทนเคลอนทไปอย
Multiprotocol Label Switching (MPLS) เปนเทคโนโลยเครอขายทใชหลกการการท างานของอปกรณใน layer2 (Switching) ของ OSI Model มาท างานรวมกบการท างานใน layer3 (Routing) เพอใหการสงขอมลเปนไปไดอยางรวดเรวมากขน ซงการท างานนจะใชก ารตดปาย (Label) ลงไปใน Packet ทถกสงเขาเครอขาย MPLS โดยมความสมพนธกบหมายเลข IP Address และ Routing Table เพอใชในการตดสนใจสงตอ Packetขาม Router แทนทจะใชหมายเลขไอพ (IP Address) และท าการแกะปายออกเมอถง Router ปลายทางของเครอขาย MPLS
MPLS มความสามารถในการสนบสนนการท างานของ Routing Protocol ไดหลายชนด และ ดวยการท างานทมการตดปายตงแตขาเขาเครอขาย จงท าใหสามารถจ าแนกชนดของขอมลได จงท าใหสามารถจดการ Quality of Service (QoS) และท า Traffic Engineering ไดอกดวย
ดวยขอดของ MPLS ตางๆ ตอมากมแนวคดในการใช MPLS ในเครอขายไรสายดวย ซงไดมงานวจยทเสนอการน าเอา Mobile IP มาใชรวมกบเครอขาย MPLS เรยกวา Mobile MPLS ทม คณสมบตทสนบสนนการเคลอนทยายเครอขายของอปกรณ และ คณสมบตตางๆจาก MPLS อกดวย 1.2 ปญหาและแรงจงใจ (Problems/Motivations)
จากการท างานของ Mobile IP ทมหลกการคอ เมออปกรณเคลอนทยายขามเครอขายไปสเครอขายใหม (Foreign Network : FN) อปกรณจะท าการลงทะเบยนและ Foreign Agent (FA) จะท าการสสง ไอพบรการ (Care-of Address : CoA) ใหกบทาง Home Agent (HA) ของเครอขายเดม (Home Network : HN) ทราบแลวท าการสรางตาราง binding คาตางๆเกบไว เมอผทตองการตดตอ
2
กบอปกรณนตองการตดตอ ผนนกสามารถใชหมายเลขไอพเดมของอปกรณนไดเลยโดยไมจ าเปนตองทราบหมายเลขเครอขายใหมทอปกรณยายเขาไปอย เมอสงมาถงเครอขายโฮม โฮมเอเจนตจะท าการตรวจสอบคาของโหนดโมบายวายงคงอยในเครอขายหรอไม เมอพบวายายขามไปอยตางเครอขาย (FN) แลว โฮมเอเจนตจะท าการสรางอโมงค (Tunnel) เพอเชอมไปหาฟอเรนจเอเจนตซงการสรางอโมงคนท าไดโดยใชหลกการ IP in IP ซงเปนการเพมสวนหวในสวนของไอพ (IP Header) เพมเขาไปอกชนหนง เมอถงปลายทางฟอเรนจเอเจนตจะถอด สวนหวทเพมเขามานออกและสงแพตเกต ใหกบอปกรณตอไป นอกจากนยงมอกวธหนงคอการท า Route Optimization ซงการท าวธนโหนดตดตอสอสารจะเปนทจะตองรองรบการท างานของ Mobile IP ดวยเชนกน ซงในทางปฏบตแลวโหนดตดตอสอสาร ไมจ าเปนตองรองรบ เพราะโหนดตดตอสอสารไมไดตองการการเคลอนทแตอยางใด
ดวยกระบวนการทท า Tunnel เหนไดวาจะตองมการเพมสวนหวเขาไปในแพกเกต ขนาด 20 Byte สงผลตอขนาดแพกเกต และอาจยงเพมจ านวนแพกเกต เนองจากวาการเพมสวนหวนเปนไปไดวาจะท าให แพกเกต มขนาดใหญเกนกวาขนาดใหญทสดทสามารถสงผานเครอขายได (MTU) อกทง ยงตองท าการ route ไปหาเครอขายใหมหลงจากเพมสวนหวเขาไปแลว สงผลใหการสงขอมลชา ซงการน า MPLS มาใชในการสราง Tunnel สงแทนการใช IP Header นอกจากจะลดขนาดแพกเกต ทตองสงไปยงเครอขายฟอเรนจแลว ยงสามารถควบคมบรการตางๆไดเปนอยางด 1.3 จดประสงค (Objectives)
เพอพฒนาระบบการสงขอมลไปยงอปกรณทสามารถเคลอนทยายเครอขายไดผาน Mobile IP รวมกบการท างานของ MPLS
เพอทดลองการท า Tunnel ดวย MPLS ทดแทนการท า IP in IP ในการสงขอมลตอระหวางเครอขายเดมไปยงเครอขายใหม
เพอพฒนาโปรแกรมส าหรบการท า Home Agent , Foreign Agent และ Mobile Node
โดยไมตองเปลยนแปลงโครงสรางของเครอขายทมอยเดม
1.4 โครงสรางของโครงงาน (Project Infrastructure) แยกออกเปน 5 บท ดงน บทท 1 ภาพรวมของโครงงาน บทท 2 แนวคด และ ทฤษฎ บทท 3 การออกแบบและพฒนาระบบ บทท 4 ผลการทดลอง บทท 5 สรปผลการทดลอง
3
1.5 ขอบเขตการด าเนนงาน (Scope of the Project)
ศกษาการท างานของ MPLS, Mobile IP และ การท างานรวมกน สรางระบบการสงขอมลจากอปกรณหนงไปยงอกอปกรณหนงทเคลอนทขามเครอขาย
ดวย Mobile IP โดยใช MPLS ในการสราง Tunnel ระหวางเครอขายเดมและเครอขายใหมของอปกรณทเคลอนท
พฒนาโปรแกรมส าหรบการท า Home Agent , Foreign Agent และ Mobile Node โดยไมตองเปลยนแปลงโครงสรางของเครอขายทมอยเดม
1.6 ประโยชนทไดรบ (Contribution)
สามารถน าไปประยกตเพอตอบรบการท างานของเครองคอมพวเตอรทมความตองการในการใชงานในสถานททเปลยนแปลงไปไดโดยไมตองเปลยนแปลงหมายเลข IP Address และเครองตนทางทสงขอมลไมจ าเปนตองทราบวาเครองปลายทางไปอยในเครอขายใด
การสงขอมลสามารถสงผานเครอขาย MPLS ไดโดยการประยกตหลกการของ Mobile IP เขากบเครอขาย MPLS
ระบบทสรางขนไมจ าเปนตองเปลยนแปลงระบบ MPLS ทมอยเดมทงโครงสรางระบบ
และอปกรณ
1.7 ขนตอนการด าเนนงาน (Schedule)
กจกรรม สค. กย. ตค. พย. ธค. มค. กพ.
ศกษาความเปนไปไดของโครงงาน
ศกษาแนวคดและทฤษฎทเกยวของ
วเคราะหและออกแบบระบบงาน
พฒนาและทดสอบการท างานของระบบ
สรปผลและด าเนนโครงงาน
4
บทท 2
ความรพนฐานและทฤษฎทเกยวของ 2.1 Multiprotocol Label Switching (MPLS)
Multiprotocol Label Switching (MPLS) เปนเทคโนโลยเครอขายทถกพฒนาขนมาเพอใหการสงตอขอมลโดยการใชหลกการการท างานของแบบ switching ของสวทช ในระดบ layer 2 รวมกบการท างานแบบ routing ของเราเตอรใน layer 3 กลาวคอ แตเดมการสงขอมลขามเครอขายจ าเปนจะตองใชหมายเลขไอพแอดเดรส (ip address) ในการค านวณหาเสนทางผานเราเตอรไปยงเครอขายอนดวย routing table ท าใหทกครงทมแพคเกตสงเขามายงเราเตอร เราเตอรตองท าการประมวลผลเพอหาเสนทาง จงไดมการน าหลกการของการสงแพคเกตแบบสวตชงเขามาใชรวมเพอใหการสงขอมลท าไดอยางรวดเรวมากยงขนและยงชวยใหหนวยประมวลผลหรอ ซพยของอปกรณท างานลดลงตามไปดวย วธการนคอการเพมลาเบล (label) เขาไปทสวนหว(header) ระหวางสวนหวในระดบท 2 และ 3 เราเตอรทไดรบแพคเกตจงไมจ าเปนจะตองรบรถงหมายเลขไอพของปลายทางทจะตองสงไป แตมหนาทเพยงดหมายเลขลาเบลทเพมเขามาและท าการเปรยบเทยบกบคาในตารางขอมลลาเบล (Label Information Base : LIB) ทไดสรางขนกอนหนานแลวเทานน ดวยการท างานทมการตดลาเบลตงแตขาเขาเครอขาย จงท าใหสามารถจ าแนกชนดของขอมลได จงท าใหสามารถจดการ Quality of Service (QoS) และท า Traffic Engineering ไดอกดวย
2.1.1หลกการท างานของ MPLS การท างานของเครอขาย MPLS นน ในเครอขายจะประกอบไปดวย Label Edge Router (LER) เปนอปกรณทขอบของเครอขาย MPLS มหนาทหลกคอ LER ตนทางท าการเพมลาเบล เขาไปใหกบแพคเกตเพอก าหนดเสนทางชไปยง LER ปลายทาง เมอแพคเกตสงมาถง LER ปลายทาง จะถกแกะลาเบลออกและถกสงตอดวยโปรโตคอลไอพตามปกต อกสวนหนงของอปกรณคอ Label Switching Router (LSR) เปนอปกรณภายในเครอขาย MPLS มหนาทหลกคอ การสงผานแพคเกตทมการเพมลาเบล จาก LER ตนทางไปยง LER ปลายทาง การสงแพคเกตนจะถกก าหนดในลกษณะการท าเปนอโมงค (Tunnel) ซงเสนทางภายในเครอขายนเรยกวา Label Switched Path (LSP) โครงสรางของระบบเครอขาย MPLS แสดงในรปท 2.1
5
LSP
LSP
LSR
LERLSR
LSR
LER
MPLS Network
2.1.2 การท างานของการสงขอมลบนเครอขาย MPLS
กระบวนการสงตอแพคเกตผาน LSP ตางๆตามเสนทางทไดจดสรางไวกอนแลวจ าเปนจะตองอาศยขอมล 2 ชนด ไดแก ขอมลของลาเบลจากสวนหวของแพคเกต MPLS และ ขอมลในตารางการสงตอขอมล (Forwarding Table) หรอทเรยกวา Label Forwarding Information Base (LFIB) ทเกบไวท Label Switching Router (LSR) แตละตว ซงในตารางนจะประกอบไปดวย ลาเบลขาเขา (incoming label) , ลาเบลขาออก (outgoing label) และ interface ทจะสงออก ดงแสดงในรป 2.2 เมอ LSR ไดรบแพคเกตมา จะพจารณาหมายเลขของลาเบลและท าการเปรยบเทยบกบขอมล Incoming Label ใน LFIB เพอหา Outgoing Label เพอจะใชในการสงตอแพคเกตไปยง LSR ตวถดไป เชนนเรอยๆ จนกระทงแพคเกตเดนทางไปถง LER ขาออกจากเครอขาย
รปท 2.1 โครงสรางของเครอขาย
MPLS
รปท 2.2 ตวอยางตาราง LFIB
6
2.1.3 สวนหวของ MPLS (MPLS Header) MPLS Header หรอ MPLS Label มขนาด 32 บต แสดงในรปท 2.3 ประกอบดวยฟลดตางๆดงตอไปน
- Label (20 บต) เปนคาของหมายเลขลาเบลทใชในการพจารณาสงตอแพคเกต MPLS
- EXP (3 บต) เปนบตทเกบไวใชในการทดลอง (Experimental Bits) ซงในทางปฏบตใชส าหรบขอมลประเภทชนของบรการ (Class of Service) ของแพคเกต
- Bottom of Stack หรอ S-Bit (1 บต) ใชส าหรบบอกวาเปน ลาเบลสดทายของstackหรอไม
- Time-to-Live (TTL) (8 บต) ใชเพอไมใหเกด การสงตอแบบวนลป (Forwarding Loop) และสามารถใชส าหรบ การตดตามเสนทาง (Path Tracing) ไดดวย โดยคาของ TTL จะลดลงทละ 1 ในแตละHop และแพคเกตจะถกทงไปเมอ TTL = 0
2.1.4 การเรยงซอนลาเบล (Label Stacking) ในบางกรณจ าเปนจะตองใชลาเบลในการสงขอมลซอนกนหลายลาเบลเพอใหสามารถจดการกบแพคเกตไดอยางเหมาะสม จงตองมการเรยงซอนลาเบลกนเปนชนเรยกวา Label Stacking โดยทลาเบลสดทาย คาของ S-Bit จะถกตงคาเปน 1 เพอบอกวาเปนลาเบลสดทาย รปแบบของ Label Stacking แสดงในรปท 2.4
รปท 2.3 รปแบบของ MPLS Header
รปท 2.4 รปแบบของ Label Stacking
7
2.1.5 การด าเนนการของลาเบล (Label Operations) เมอแพคเกตทไดรบการเพมลาเบลจาก LER เขาส LSR แตละตว LSR จะท าการพจารณา คาในฟลด Top Label เทยบกบคาลาเบลในตาราง Label Forwarding Information Base (LFIB) จากนน ท าการสงตอแพคเกตใหสอดคลองกบขอมลใน LFIB การด าเนนการของ LSR และ LER เกยวกบลาเบลม 3 ลกษณะ ไดแก
(1) ใสลาเบล (Push) เปนการด าเนนการท LER ขาเขา โดยแพคเกตทเขามาเปนแพคเกตปกตทวไป แตฝ งขาออกจะท าการเพมลาเบลขาไปเพอใชในการสงแพคเกตไปตาม LSP
(2) สลบลาเบล (Swap) เปนการด าเนนการท LSP แตละตวทแพคเกตสงผาน ซงฝ งขาเขาแพคเกตmเขามาจะมการเพมลาเบลมากอนแลว LSP จะมองลาเบลนนเปน incoming label จากนนจะท าการเปลยนลาเบลใหมตามขอมลในตาราง LFIB และสงแพคเกตออกไปพรอมกบ outgoing label
(3) ถอดลาเบลออก (Pop) เปนการด าเนนการท LER ขาออก โดยแพคเกตทเขามาเปนแพคเกตทมลาเบลแตฝ งขาออกจะท าการเอาลาเบลออกไปเพอใชในการสงแพคเกตไปตามปกตตอไป
การด าเนนการเกยวกบลาเบลแสดงในรปท 2.5
LER
LSR
LER
DATAIP Header DATAIP HeaderLabel
DATAIP HeaderOuting Label
DATAIP HeaderIncoming
Label
DATAIP HeaderLabel DATAIP Header
PUSH
SWAP
POP
รปท 2.5 รปแสดงการด าเนนการเกยวกบ label
8
2.1.6 การสรางความสมพนธระหวางลาเบลกบเสนทาง การสรางความสมพนธของลาเบลหรอทเรยกวา Label Binding แบงออกเปน 2
ประเภท ไดแก Local Binding และ Remote Binding (1) Local Binding จะเกดขนเมอ LSR เลอกลาเบลเพอก าหนดวาขอมลทจะ
สงไปในเสนทางใด ใหใชลาเบลหมายเลขใดโดยการใชขอมลจาก Routing Table ของตวเองในการเลอกเสนทาง
(2) Remote Binding จะเกดขนเมอ LSR ไดรบขอมล Label Binding จาก LSR อนในเครอขาย
การท างานของการสรางความสมพนธนท าโดย เมอ LSR แตละตวท า Local Binding แลวกจะสงขอมล Local Label Binding ของตนไปใหแก LSR ตวอน จากนนเมอ LSR ตวอนไดรบขอมล Label Binding มาเปน Remote Binding จากนน LSR แตละตวจะเกบขอมลทง Local และ Remote Binding เหลานนไวในตารางขอมลลาเบล ทเรยกวา Label Information Base (LIB) ซงขอมลใน LIB นจะถกน าไปประมวลผลรวมกบขอมลเสนทางใน Routing Table และจะถกน ามาใชในการสราง ตารางการสงตอขอมลดวยลาเบล หรอ Label Forwarding Information Base (LFIB) ซงเปนตารางการสงตอขอมลทใชในการสงขอมลในเครอขาย MPLS ตอไป
2.1.7 การกระจายขอมลลาเบล (Label Distribution) การกระจายขอมลลาเบล (Label Distribution) คอการสงขอมล Label Binding
ระหวาง LSR ตางๆในเครอขาย MPLS ซงแนวทางในการท าการกระจายขอมลลาเบลม 2 วธ ไดแก
(1) สงขอมลลาเบลไปกบโปรโตคอลการจดเสนทาง (Routing Protocol) ทมอยแลว ส าหรบแนวทางน วธทใชกนอยกคอการใช Border Gateway Protocol (BGP) เพอสงขอมลลาเบลไปพรอมๆกบขอมลการจดเสนทาง (Routing) ซงมกใชกบกรณทตองการสรางเสนทาง LSP ขามขอบเขตของ Autonomous System (AS)
(2) สงผาน Label Distribution Protocol (LDP) โปรโตคอล LDP จะท าแคเพยงสงขอมลลาเบลเทานน โดยอาศยโปรโตคอลการจดเสนทาง Interior Gateway Protocol (IGP) ในการจดเสนทางดวย แนวทางการใช LDP ในการสงขอมล ลาเบลนนมกจะใชในกรณทว ไปทไมไดมการขามขอบเขตของ Autonomous System
9
2.1.8 การสรางตาราง Label Forwarding Information Base (LFIB) และ เสนทาง Label Switched Path (LSP) LSR แตละตวจะเกบขอมล Label Binding ทงหมด ซงรวมทง Local และ Remote Binding ไวในตาราง Label Information Base (LIB) จากนน LSR แตละตวจะสรางตาราง Label Forwarding Information Base (LFIB) ขน ซงจะประกอบดวยขอมล ลาเบลขาเขา และลาเบลขาออกส าหรบเสนทางตางๆ โดยขอมล ลาเบลขาเขาจะเปนขอมล Local Binding ของ LSR ตวนนๆ ในขณะทลาเบลขาออกจะเปนขอมลทเลอกมาจาก Remote Binding ทงหมดทเปนไปไดจากตาราง LIB โดยจะเลอกทเหมาะสมเพยงอนเดยวเพอมาเปน ลาเบลขาออกในตาราง LFIB ทงน หลกเกณฑทใชการเลอก ลาเบลจากRemote Binding ทเหมาะสมนนจะพจารณาจากขอมลระยะทางทส นทสด (Shortest Path) ในตาราง Routing Table เมอ LSR ทกตวสรางตาราง LFIB เสรจเรยบรอยแลว ขอมลลาเบลขาเขาและลาเบลขาออก ใน LFIB ของแตละ LSR ทอางองตอเนองกนจะเปนการก าหนดเสนทาง Label Switched Path (LSP) ขนนนเอง 2,2 Mobile IP Mobile IP เปนโปรโตคอลมาตรฐานทสนบสนนความสามารถในการเคลอนท (Mobility) ของอปกรณเคลอนท (Mobile Device) ในเครอขายไอพ ซงอปกรณเคลอนทจะสามารถรกษาการตดตอสอสารทก าลงด าเนนอยไดอยางตอเนอง ถงแมวาอปกรณเคลอนทนนท าการยายจากเครอขายหนงไปยงอกเครอขายหนง โดยไมจ าเปนตองเปลยนหมายเลขไอพทใชอย ดงนนอปกรณทตองการจะตดตอกบอปกรณเคลอนทนกจะสามารถตดตอไดโดยสงไปยงอปกรณเคลอนท โดยไมจ าเปน ตองรหมายเลขเครอขายใหมทอปกรณเคลอนทไปอยในขณะนน
2.2.1ความสามารถในการเคลอนทในเลเยอรตางๆ ความสามารถในการเคลอนท (Mobility) หมายถง ความสามารถในการ
รกษาการตดตอสอสารทก าลงด าเนนอยไดอยางตอเน อง โดยทว ไปความสามารถในการเคลอนทจะถกท าในเลเยอร 2 (Data Link Layer) และเลเยอร 3 (Network Layer)
- ความสามารถในการเคลอนทในเลเยอร 2 เปนความสามารถในการเคลอนทเปลยนต าแหนงภายในเครอขายเดยวกน แตยงอยภายในเครอขายเดมเทคนคในการสราง ความสามารถในการเคลอนทแบบน คอการใชกลไกใน link layer โดยการเปลยนความสมพนธของหมายเลขเครอง (mac address) กบชองทางทจะสง ขอดคอ การยายขามเซล (Handover) ทรวดเรว แตมขอเสยคอไมมความสามารถในการขยายขามไปยงเครอขายอน
10
- ความสามารถในการเคลอนทในเลเยอร 3 เปนความสามารถในการเคลอนทเปลยนต าแหนงขามเครอขาย Mobile IP เปนโปรโตคอลทใชในการสราง ความสามารถในการเคลอนทแบบน ขอดคอ ความสามารถในการขยายการใหบรการไปตางเครอขายได ขอเสยคอการยายขามเซลทชากวา เมอเทยบกบเลเยอร 2
ในการใชงานจรง ไดมการใชความสามารถในการเคลอนททงสองเลเยอรรวมกน เพอน าขอดของทงสองแบบมารวมกน นนคอ การยายขามเซลทรวดเรวเมอมการเคลอนทภายในเครอขายเดยวกน และ เลเยอร 3 โดยจะชวยใหมความสามารถในการขยายการใหบรการ
2.2.2 องคประกอบส าคญของ Mobile IP
การท างานของ Mobile IP ประกอบดวยมสวนประกอบตางๆดงตอไปน ดงรปท 2.6
- Correspondent Node (CN) หรอ โหนดตดตอสอสารเปนอปกรณ ใดๆทตดตอสอสารกบอปกรณเคลอนท โหนดตดตอสอสารไมจ าเปนตองรบรโปรโตคอลการท างานของ Mobile IP จงไมไดเปนสวนประกอบของ Mobile IP โดยตรง แตในการอธบายเกยวกบการท างานของ Mobile IP จะมการอางองถง Correspondent Node ดวย
- Mobile Node (MN) คออปกรณเคลอนทในเครอขาย ซงท าหนาทเปนลกขาย (Client) ของ Mobile IP ตวอยางของอปกรณทเปนโหนดโมบาย เชน โนตบค
- Home Network (HN) คอเครอขายเดมทโหนดโมบายอยกอนท าการยายเครอขาย
- หมายเลขไอพถาวร (Permanent IP Address) คอหมายเลขไอพ ทโหนดโมบายไดรบมาจากเครอขายโฮมซงหมายเลขไอพนจะอยถาวรกบโหนดโมบายแมวาโหนดโมบายจะยายไปอยเครอขายใหมแลวกตาม หมายเลขนจะเปนหมายเลขท โหนดตดตอสอสารรบรและใชในการสงขอมลมายงโหนดโมบาย
- Home Agent (HA) เปน Router หรอเครอง Server ทเชอมตออยกบเครอขายโฮม ของโหนดโมบายนนๆ โฮมเอเจนตจะเปนผเกบรกษาขอมลเกยวกบต าแหนงปจจบนของโหนดโมบายไว และเมอโหนดตดตอสอสารสงขอมลมาให โหนดโมบายในขณะทโหนดโมบายอยนอกเครอขายโฮม โฮมเอเจนตจะท าหนาทในการสงตอขอมลนนใหโหนดโมบาย โดยผานทางฟอเรนจเอเจนต
11
- Foreign Network (FN) เปนเครอขายใหมทโหนดโมบายเคลอนทเขาไปอย - Foreign Agent (FA) เปนเราเตอรหรอเครองเซฟเวอรทเชอมตออยกบ
เครอขายฟอเรนจ ของโหนดโมบายนนๆ ฟอเรนจเอเจนตจะท าหนาทในการรบขอมลมาจาก โฮมเอเจนต สงตอขอมลนนใหโหนดโมบาย
- หมายเลขไอพบรการ (Care-of Address : CoA) เปนหมายเลขไอพชวคราวทโหนดโมบายใชในการอางองถงต าแหนงทอยในเครอขายใหม เพอใหโฮมเอเจนตรบทราบถงต าแหนงทสามารถสงตอขอมลมายงโหนดโมบายไดในขณะทโหนดโมบายอยในเครอขายฟอเรนจ CoA สามารถมได 2 แบบ ไดแก
Colocated Care-of Address (CoCoA) เปนทอยช วคราวในกรณทโหนดโมบายไดรบหมายเลขไอพ เฉพาะส าหรบตนเองบนเครอขายฟอเรนจนนๆ โดยไมผานฟอเรนจเอเจนตการใช Care-of Address แบบนเปนการใชหมายเลขไอพอยางสนเปลองเนองจากโหนดโมบาย แตละตวจะตองมหมายเลขไอพเฉพาะของตนในแตละเครอขายฟอเรนจ แตขอดคอชวยใหการน าไปใชงานจรงงายขน
Foreign Agent Care-Of Address (FA-CoA) เปนทอยชวคราวในกรณทโหนดโมบายใชหมายเลขไอพของฟอเรนจเอเจนตเปน Care-of Address ของตนดงนนในกรณนจงเปนการประหยดจ านวนหมายเลขไอพ เพราะ โหนดโมบายหลายตวทอยในเครอขายฟอเรนจเดยวกนสามารถใชหมายเลขไอพของฟอเรนจเอเจนตเปน Care-of Address รวมกนได และฟอเรนจเอเจนตจะเปนตวชวยในการจดการสงตอ
12
Correspondent Node
Home Agent Foreign AgentCoA (FA-CoA)
Home Network (HN) Foreign Network (FN)
Mobile NodePermanence ip address
Mobile NodePermanence ip address
2.2.3 การท างานของโปรโตคอล Mobile IP
การท างานของโปรโตคอล Mobile IP จะเปนตามล าดบได 3 เฟส ดงแสดงในรปท2.7
(1) เฟส 1: การคนพบเอเจนต (Agent Discovery) โฮมเอเจนต และ ฟอเรนจเอเจนต จะประกาศขอมลเกยวกบตนเอง
โดยใชการสงขอความประกาศเกยวกบเอเจนต (ICMP Advertisement Message) ใหกบโหนดโมบายหรอโหนดโมบายสามารถเลอกเปนฝายทเรมสงขอความใหเอเจนตสงขอมล (ICMP Solicitation Message) เพอรองขอใหโฮมเอเจนตหรอฟอเรนจเอเจนตสง ICMP Advertisement Message ตอบกลบมากได
MN ไดรบ ICMP Advertisement Message แลวพจารณาจากขอมลดงกลาววาตนก าลงอยบน ในเครอขายใด หากโหนดโมบายตรวจพบวาตนเองก าลงอยในเครอขายโฮมกจะท างานดวย
รปท 2.6 รปแสดงองคประกอบตางๆของระบบ Mobile IP
13
โปรโตคอลตามปกต แตหากโหนดโมบายตรวจพบวาตนเองไดเคลอนทไปอยในเครอขายฟอเรนจ กจะรบเอาขอมล CoA บนเครอขายฟอเรนจนนมาใชซงอาจเปน CoCoA หรอ FA-CoA กได
(2) เฟส 2: การลงทะเบยน (Registration) ในการลงทะเบยนนจะตองใช การสงขอความ (Message) สองแบบ ไดแก
Registration Request Message และ Registration Reply Message
โหนดโมบายทอยในเครอขายฟอเรนจจะท าการลงทะเบยน CoA ทใชอย กบโฮมเอเจนต ดวยการแลกเปลยน Registration Request และRegistration Reply Message โดยผานทาง Foreign Agent
โฮมเอเจนต และ ฟอเรนจเอเจนต ท าการเกบขอมลเกยวกบโหนดโมบายและหมายเลขไอพตางๆลงในตารางเพอใชเปนขอมลอางองในการสงตอแพคเกต
โหนดโมบาย ตออายการลงทะเบยน ในกรณทการลงทะเบยนเดมหมดอาย
โหนดโมบายยกเลกการลงทะเบยน (Deregistration) เมอกลบไปยงเครอขายโฮม หรอ ยายขามไปเครอขายอน
(3) เฟส 3: การสงขอมล (Data Transfer)
ขอมลทถกสงโดยโหนดตดตอสอสารไปยงโหนดโมบายจะถกรบไวโดยโฮมเอเจนต แลวสงผานอโมงคไอพ (IP Tunnel) จากโฮมเอเจนต ไปยงเครอขายใหมของโหนดโมบายซงกคอ Care-of Address ของโหนดโมบาย นนเอง แลวจากนนขอมลดงกลาวกจะถกสงตอไปยงโหนดโมบายตอไป
ขอมลทสงโดยโหนดโมบายไปยงโหนดตดตอสอสารโดยทวไปแลวจะถกสงไปยงปลาย ทางโดยกลไกของโปรโตคอลตามปกตโดยไมจ าเปนตองผานทางโฮมเอเจนต
การสงขอมลแบบอโมงคไอพนนมข นตอนหลกในการท างานคอเมอโฮมเอเจนตไดรบแพคเกตมาจากโหนดตดตอสอสารและพบวาเลขหมายไอพปลายทางเปนของโหนดโมบายซงปจจบนไดเคลอนทออกไปอย ในเครอขายฟอเรนจแลว โฮมเอเจนตจะท าการ encapsulation แบบ IP-in-IP ซงเปนการเพมสวนหว เขาไปอก 1 ชน โดยระบหมายเลขไอพปลายทางเปนหมายเลข CoA ของโหนดโมบายทโฮมเอเจนตไดท าการเกบเอาไวและหมายเลขไอพตนทาง
14
เปนหมายเลขไอพของโฮมเอเจนตเมอถงปลายอโมงคฟอเรนจเอเจนตจะแกะขอมลนนออกมาอานและท าการสงตอไปยงโหนดโมบายจากขอมลไอพปลายทางใน ip header ทอยดานในนนเอง
Home Agent Foreign AgentCorrespondent Node Mobile Node
ICMP Solicittion
ICMP Advertise
Registration Request
Registration Request
Registration Reply
Registration Reply
Data
Data
Data
Data
Phase 1 : Agent Discovery
Phase 2 : Registration
Phase 3 : Data Transfer
Time Time Time Time
2.3 การน า MPLS และ Mobile IP มาใชงานรวมกน
มงานวจยทไดเสนอการน า MPLS และ Mobile IP มาใชงานรวมกนชอวา Integration of Mobile IP and Multi-Protocol Label Switching โดยการใช MPLS สรางอโมงคในกระบวนการสงตอขอมลของ Mobile IP แทนการสรางอโมงคไอพ (IP-in-IP Tunneling) แบบเดม ระหวางโฮมเอเจนตและฟอเรนจเอเจนตท าใหโฮมเอเจนตสามารถสงตอขอมลไดดวย MPLS โดยทไมจ าเปนตองเขาไปดใน ip header ซงชวยใหการท างานของ Mobile IP ม Scalability ดขนและสงไดรวดเรวมากยงขนนอกจากนน การทสวนหวของ MPLS มขนาดเลกกวาสวนหวของไอพท าใหชวยลดปรมาณ Traffic Overhead จากโฮมเอเจนตไปยงฟอเรนจเอเจนตอกดวย
รปท 2.7 รปแสดงขนตอนการท างานในระบบ Mobile
IP
15
บทท 3 การออกแบบระบบ
3.1 กลาวน า โครงงานนไดจดท าขนเพอทดสอบและน าแนวคดเรองการน า Mobile IP และ MPLS มาท างานรวมกนเพอใหการสอสารระหวางโฮมเอเจนต และ ฟอเรนจเอเจนต มประสทธภาพสงขนมาใชงานกบระบบเครอขายทมการท างานดวยระบบ MPLS อยแลว 3.2 ภาพรวมของการออกแบบระบบ Mobile MPLS โครงสรางของระบบ Mobile IP แตเดมจะใชการเอนแคปซเลชนแบบไอพอนไอพเพอท าการสรางอโมงคเชอมตอระหวางโฮมเอเจนตและฟอเรนจเอเจนต ประกอบไปดวยองคประกอบตางๆดงรปท3.1 ซงเปาหมายหลกของโครงงานนตองการจะเปลยนอโมงคแบบไอพอนไอพไปใชอโมงคเชอมตอทสรางขนดวย MPLS ทดแทนเพอเพมประสทธภาพการเชอมตอระหวางโฮมเอเจนตและฟอเจนจเอเจนต ดงรปท3.2 ซงในโครงงานนไดจดท าโดยการน าเทคโนโลยเรอง Mobile IP มาสรางลงไปในเครอขายทมการสงขอมลดวยเทคโนโลย MPLS อยกอนแลว โดยการอาศยทรพยากรทมอยในการออกแบบสวนประกอบอนเพมเตมท าใหไมจ าเปนตองมการเปลยนแปลงในสวนของระบบหรอซอฟแวรทมอยเดม ดงนนโครงงานชนนจงจดท าในสวนของระบบ Mobile MPLS ตางๆ ไดแก โปรแกรมในสวนของโมบายโหนด โปรแกรมในสวนของฟอเรนจเอเจนต และ โปรแกรมในสวนของโฮมเอเจนต เพอใหสามารถรองรบการออกแบบได
Correspondent Node
Home Agent Foreign AgentCoA (FA-CoA)
Home Network (HN) Foreign Network (FN)
Mobile NodePermanence ip address
Mobile NodePermanence ip address
IP-in-IP Tunnel from HN router to FN router
รปท 3.1 รปแสดงองคประกอบตางๆของระบบ Mobile IP
16
Correspondent Node
MPLS Network
Home AgentForeign AgentCoA (FA-CoA)
Home Network (HN) Foreign Network (FN)
Mobile NodePermanence IP address
Mobile NodePermanence IP address
MPLS Tunnel from CN LER to HN LER
MPLS Tunnel from HN LER to FN LER
3.3 ภาพรวมของขนตอนการท างานของสวนตางๆในระบบ Mobile MPLS
ภาพรวมของการท างานในสวนตางๆภายในระบบ Mobile MPLS คอ เรมตนจากขนตอนการคนพบเอเจนตของโหนดโมบายและโหนดโมบายไดท าการลงทะเบยนกบฟอเรนจเอเจนตเรยบรอยแลวตามขนตอนของระบบ Mobile IP ดงเดม โปรแกรมในสวนฟอเรนจเอเจนตจะท าการสรางตารางความสมพนธของหมายเลขไอพโหนดโมบาย(Binding Update List) เพอเกบขอมลไอพถาวรของโหนดโมบายพรอมกบทอยใหม(CoA) และ ระยะเวลาทจะเกบคาไว(lifetime) จากนนโฮมเอเจนตจะท าการสรางค าสงส าหรบก าหนดคาเสนทาง LSP ใหมใหกบ LER ของเครอขายโฮมเพอสรางอโมงคส าหรบสงตอแพคเกตไปยงเครอขายฟอเรนจในขณะเดยวกนเครอขายฟอเรนจกจะสรางตารางผขอใชบรการ(Visitor List) เพอเกบขอมลหมายเลขไอพถาวรของโหนดโมบาย ไอพของโฮมเอเจนต และระยะเวลาทจะเกบรกษาคาไว จากนนฟอเรนจเอเจนตจะท าการสรางค าสงส าหรบก าหนดคาเสนทาง LSP ใหมใหกบ LER ของเครอขายฟอเรนจเพอสรางอโมงคส าหรบรบแพคเกตจากเครอขายโฮมเชนเดยวกน
เมอการสรางอโมงคเกดขน เมอการสงขอมลจากโหนดตดตอสอสารมายงโหนดโมบายเกดขน ขอมลทถกสงมาจะสงมาทไอพแอดเดรสของโหนดโมบายซงอยในเครอขายของเครอขายโฮมดงนนท LER ตนทางของเครอขาย MPLS เลอกเสนทาง LSP สรางอโมงคมายง LER ของ
รปท 3.2 รปแสดงองคประกอบตางๆของระบบ Mobile MPLS
17
เครอขายโฮมจากนน แพคเกตจะถกถอดลาเบลออก เมอฟอเรนจเอเจนตตรวจสอบพบวาแพคเกตนตองการสงไปยงโหนดโมบายซงเคลอนทไปอยทเครอขายฟอเรนจแลวฟอเรนจเอเจนตกจะท าการใสลาเบลเพอสงตอแพคเกตเขาสอโมงคท LER ของเครอขายโฮมทเชอมตอไปยงเครอขายฟอเรนจทสรางขนกอนหนานแลว เมอแพคเกตถกสงมาถง LER ของเครอขายฟอเรนจจะท าการถอดลาเบลออกอกครงและฟอเรนจเอเจนตท าหนาทในการสงแพคเกตตอใหกบโหนดโมบายตอไป
ในการสงขอมลจากโหนดโมบายกลบไปยงโหนดตดตอสอสารนน เนองจากวาไดมการสรางอโมงคไวอยแลว จงสามารถสงกลบไปทางอโมงคไดเลยโดยไมจ าเปนเปนตองสงดวยไอพโพรโตคอลตามปกต ซงจะสามารถท าใหการสงขอมลมความรวดเรวเชนกน
การท างานขางตนแสดงไดในรปท3.3 แสดงขนตอนการสงขอมลระหวางสวนตางๆของระบบ
Solicitation Message
Advertise Message
Registration Request
Registration Request
Registration Reply
Registration Reply
Data
Data
Data
Data
Time Time Time Time
Home Network LER Foreign Network LERCorrespondent Node Mobile NodeHome Agent Foreign Agent
MPLS Tunnel Configuration
MPLS Tunnel Configuration
Data
Data
Time Time
รปท 3.3 รปแสดงขนตอนการท างานในระบบ Mobile MPLS
18
3.4 การออกแบบโปรแกรม ในระบบ Mobile MPLS มสวนของโปรแกรม 3 สวนคอ สวนของโหนดโมบาย สวนของโฮมเอเจนต และ สวนของฟอเรนจเอเจนต ซงการท างานของโปรกรมในแตละสวนมความสมพนธซงกนและกนดงทกลาวไวในหวขอท3.3 ซงโปรแกรมในสวนของโหนดโมบายมล าดบการท างานดงแสดงในรปท 3.4 โปรแกรมในสวนของโฮมเอเจนตและฟอเรนจเอเจนตจะถกน ามารวมไวในโปรแกรมเดยวกนเพอใหทง 2 ฝ งสามารถท างานไดทงทเปนโฮมเอเจนตและฟอเรนจเอเจนต โดยเรยกรวมเปนโปรแกรมส าหรบเอเจนต ซงมล าดบการท างานในรปท 3.5 ทงนโปรแกรมของโหนดโมบาย โฮมเอเจนต และ ฟอเรนจเอเจนตมรายละเอยดดงน
Registration Request
Registration Reply
Solicitation Message
Broadcast 255.255.255.255
Advertise Message Agent
รปท 3.4 รปแสดงล าดบการท างานของโปรแกรมในสวนของโหนดโมบาย
19
Registration Request MN
Registration Request HA
Registration Reply HA
Registration Reply MN
Configuration MPLS Tunnel FA LER
Visitor List
message Port 434
Solicitation Message MN
Advertise Message MN
Registration Request FA
Registration Reply FA
Binding Update List
Configuration MPLS Tunnel HA LER
MN
Reset lifetime
Lifetime Visitor List
MN
Lifetime MN Binding List
die
FA
Configuration MPLS Tunnel
>0
<=0
Lifetime MN Binding List die
Configuration MPLS Tunnel FA LER
3.4.1 โปรแกรมในสวนของโหนดโมบาย ส าหรบโปรแกรมในสวนของโหนดโมบายเรมตนจากการสง Solicitation Message(Type 0) ออกไปแบบบรอดแคสดวยไอพแอดเดรส 255.255.255.255 เพอคนหาวามเอเจนตใดอยในเครอขายเดยวกบตวเองบาง หลงจากนนเมอมเอเจนตใดเอเจนตหนงตอบกลบมา โหนดโมบายจะตรวจสอบหมายเลขไอพแอดเดรสของเอเจนตนนเพอพจารณาวาปจจบนโหนดโมบายนนอยในพนทใหบรการของเครอขายเดมหรอไดยายเครอขายแลว เมอท าการตรวจสอบแลวพบวายงคงอยในเครอขายเดมของตนเองโหนดโมบายจะไมท าอะไรตอนอกจากการสง Solicitation Message เปนรอบเวลาเพอตรวจสอบเครอขาย แตหากพบวาโหนดโมบายไดยายเครอขายจากเครอขายเดม โปรแกรมจะท าการสงขอความขอลงทะเบยน (Registration Request Message (Type 2)) เพอแจงขอลงทะเบยนกลบไปยงเอเจนตทตนเองตดตอไดซงถอวาเปนฟอรเรนจเอเจนตวาตนเองไดยายเครอขายมาแลวขอลงทะเบยนอยในเครอขายน เพอใหฟอรเรนจเอเจนตท าการ
รปท 3.5 รปแสดงล าดบการท างานของโปรแกรมในสวนของเอเจนต
20
สรางอโมงคMPLSส าหรบการสงขอมลมาหาโหนดโมบายน เมอท าการสงขอความขอลงทะเบยนไปแลวกจะรอรบขอความตอบรบการลงทะเบยน (Registration Reply Message (Type 5)) จากโฮมเอเจนตเปนระยะเวลาหนง เมอไดรบขอความตอบรบมาแลว นนหมายความวาทโฮมเอเจนตไดรบขอความและท าการสรางตาราง Binding Update List เรยบรอยแลว เปนอนวาเสรจสนกระบวนการและสามารถรอรบขอมลได 3.4.2 โปรแกรมในสวนของฟอเรนจเอเจนต ส าหรบโปรแกรมในสวนของฟอเรนจเอเจนตเรมตนจากการรอการสงขอความ Solicitation Message(Type 0) จากโหนดโมบาย จากนนจะท าการตอบกลบดวย Advertise Message (Type 1) เพอแจงใหกบโหนดโมบายทราบวาตวเอเจนตในเครอขายนคอตวใด
จากนนฟอรเรนจเอเจนตจะกลบไปรอรบขอความใหมเพอรอรบขอความขอลงทะเบยน Registration Message (Type 2) จากโหนดโมบาย หลงจากทไดรบขอความขอลงทะเบยนแลว ฟอเรนจเอเจนตจะน าหมายเลขไอพแอดเดรสของโหนดโมบายมาตรวจสอบวาไอพนไดรบการลงทะเบยนไปแลวหรอยง หากเคยลงทะเบยนไปแลวจะน าคา lifetime ส าหรบระยะเวลาการจดเกบขอมลมารเซตคาเปนคาเรมตนใหมอกครง เพอเปนการยนยนวาโหนดโมบายนยงคงอย แตหากเปนโหนดโมบายใหมทยงไมเคยลงทะเบยนทฟอรเรนจเอเจนตน ฟอรเรนจเอเจนตจะสงตอขอความไปหาโฮมเอเจนตของโหนดโมบายนพรอมระบไอพบรการของซงใชเปนไอพของฟอเรนจเอเจนต (FA-CoA) เพอใหโฮมเอเจนตร บทราบขอมลของโหนดโมบายทยายมาอยในเครอขายเดยวกบฟอเรนจเอเจนตเพอจะไดท าการปรบปรงขอมลในตาราง Binding Update List ตอไป นอกจากนยงสงหมายเลขไอพแอดเดรสของ LER ของเครอขายฟอรเรนจนไปดวย เพอใหโฮมเอเจนตใชสรางอโมงคMPLSมายงLERของเครอขายฟอรเรนจน ซงขอความทสงไปนคอขอความ Registration Message (Type 3)
จากนนกจะรอขอความตอบรบการลงทะเบยนจากโฮมเอเจนต Registration Reply Message (Type 4) เพอยนยนวาไดลงทะเบยนเรยบรอยแลว เมอไดรบจะตอบตอใหโหนดโมบายไดรบรวาการด าเนนการลงทะเบยนเสรจสนลงแลวดวย Registration Reply Message (Type 5) หนาทของฟอรเรนจเอเจนตทตองท าตอคอปรบปรงตารางผตดตอ Visitor List เพอเกบขอมลหมายเลขไอพถาวรของโหนดโมบาย ไอพของโฮมเอเจนต หมายเลขเซอรวสทใชสรางอโมงคMPLS และระยะเวลาทจะเกบรกษาคาไว ดงตวอยางในรปท3.6 จากนนฟอเรนจเอเจนตจะท าการสรางค าสงส าหรบก าหนดคาเสนทาง LSP ใหมใหกบ LER ของเครอขายฟอเรนจเพอสรางอโมงคส าหรบรบแพคเกตจากเครอขายโฮมและท าการ Telnet เขาไปใสค าสงนนใหกบ LER ของเครอขายฟอเรนจเพอสรางอโมงค MPLS ขนมาส าหรบการสงขอมล เมอสรางเสรจกพรอมทจะรบสงขอมลตอไป
21
3.4.3 โปรแกรมในสวนของโฮมเอเจนต
ส าหรบโปรแกรมในสวนของโฮมเอเจนตเรมตนจากการรอรบขอความ โดยพจารณาวาหากเปนขอความขอลงทะเบยน Registration Message (Type 3) เมอขอความขอลงทะเบยนมาถง โฮมเอเจนตกจะสงขอความตอบรบการลงทะเบยนกลบไปเพอใหทราบวาโฮมเอเจนตไดรบค าขอลงทะเบยนเปนทเรยบรอยแลว พรอมทงสงหมายเลขไอพแอดเดรสของ LER ฝ งโฮมไปในขอความ Registration Reply Message (Type 4) และโฮมเอเจนตกจะท าการปรบปรงตาราง Binding Update List ของตวเองเพอใชในการอางองส าหรบการสงผานขอมลตอไป ซงในตารางนเพอเกบขอมลไอพถาวรของโหนดโมบายพรอมกบทอยใหมซงเปนไอพของฟอเรนจเอเจนต (FA-CoA) หมายเลขเซอรวสทใชสรางอโมงคMPLS และ ระยะเวลาทจะเกบคาไว ดงตวอยางในรปท3.7 จากนนโฮมเอเจนตจะท าการสรางค าสงส าหรบก าหนดคาเสนทาง LSP ใหมใหกบ LER ของเครอขายโฮมเพอสรางอโมงคส าหรบสงแพคเกตไปใหเครอขายฟอเรนจและท าการ Telnet เขาไปใสค าสงนนใหกบ LER ของเครอขายโฮมเพอสรางอโมงค MPLS ขนมาส าหรบการสงขอมล เมอสรางเสรจกพรอมทจะสงขอมลตอไป
แตหากขอความทไดรบเปน Solicitation Message (Type 0) โฮมเอเจนตจะท าการตรวจสอบวาเครองโหนดโมบายไอพแอดเดรสนเปนเครองทอยในเครอขายนอยแลวหรอวาเปนเครองทกลบมาจากเครอขายฟอรเรนจหากเปนเครองทอยในเครอขายนอยแลว โฮมเอเจนตไมจ าเปนตองท าอะไรนอกจากเพยงสงขอความ Advertise Message กลบไปใหกบโหนดโมบายรบทราบถงเอเจนตตวน แตถาเปนโหนดโมบายทเคยไปอยในเครอขายอน นนคอเคยมการเปลยนเสนทาง LSP ของ MPLS ไปแลว ดงนนจงจ าเปนตองเปลยนเสนทางนนกลบมาทางเดมเพอใหโหนดโมบายสามารถตดตอสอสารได เพราะฉะนนเมอเกดเหตการณดงกลาวขน โฮมเอเจนตจะท าการสรางค าสงส าหรบเปลยนคาเสนทาง LSP กลบมายงเสนทางเดม
รปท 3.6 รปแสดงตวอยางการจดเกบขอมลในตาราง Visitor List
รปท 3.7 รปแสดงตวอยางการจดเกบขอมลในตาราง Binding Update List
22
3.4.4 โปรแกรมส าหรบเอเจนต เนองจากทงสองเครอขายควรจะสามารถเปนไดทงเครอขายโฮมและเครอขายฟอรเรนจในเวลาเดยวกน ดงนนการท างานของโปรแกรมทงสวนของโฮมเอเจนตและฟอรเรนจจงถกน ามารวมเขาดวยกนเปนโปรแกรมเอเจนตโปรแกรมเดยวทสามารถรนไดทงสวนเครอขายโฮมและเครอขายฟอรเรนจโดยอาศยการออกแบบของทงสองโปรแกรมในขอท 3.4.3 และ 3.4.4 ซงจะไดการท างานรวมของโปรแกรมเอเจนตดงในรปท 3.5 ซงโฟลดานซายสดจะเปนการท างานเมอโปรแกรมเอเจนตไดรบ Solicitation Message(Type 0) โฟลท 2 จากซาย จะเปนการท างานเมอโปรแกรมเอเจนตไดรบ Registration Message (Type 2) โฟลท 2 จากซาย จะเปนการท างานเมอโปรแกรมเอเจนตไดรบ Registration Reply Message (Type 4) และ โฟลขวาสด จะเปนการท างานเมอโปรแกรมเอเจนตไดรบ Registration Message (Type 3) 3.5 การสรางค าสงเพอก าหนดอโมงค MPLS ระหวาง LER ของเครอขายโฮมกบเครอขายฟอเรนจ ในการสรางค าสงเพอก าหนดเสนทางของอโมงค MPLS นน ทงฝ งโฮมเอเจนตและฟอเรนจเอเจนตจ าเปนทจะตองรหมายเลขไอพซสเทม (IP System) ของ LER ปลายทางอกดานหนงทจะเชอมตอดวยเพอน ามาก าหนดค าสงทใชส าหรบชไปยงปลายทางของเครอขาย MPLS นนเอง ในการสรางค าสงนนจะพจารณาจากเสนทางทเคยมอยและคา Configuration เดมรวมดวยเพอไมใหเกดการซ าซอนของเสนทาง ค าสงทถกสรางขนมาน นจะถกสงไปทอปกรณ LER แตละฝ งดวยวธการ Telnet เขาไปผานพอรต 23 และวางค าสงเหลานนลงบน LER ตวอยางของค าสงทใชในการสรางอโมงคดงรปท 3.7
รปท 3.8 รปแสดงตวอยางค าสงทใชในการสรางอโมงค MPLS
23
3.6 การออกแบบโปรโตคอล รปแบบโปรโตคอลทใชในการสอสารระหวางโฮมเอเจนต ฟอรเรนจเอเจนต และโหนดโมบาย เปนโปรโตคอลทท าการออกแบบขนเองโดยอาศยการสงขอมลแบบ UDP โดยฝ งรบขอมลจะเปดรอรบขอมลทพอรตหมายเลข 434 ซงเปนพอรตส าหรบโมบายไอพ ในระดบเลเยอร2 และเลเยอร3 อาศยหลกการปกตของการสงขอมลใน OSI Layer ขอมลภายในสวนของเพโหลดของ UDP แสดงดงในรปท 3.9
UDP Header Type 1Byte
Moble Node IP 4 Byte
Agent IP 4 Byte
LER IP 4Byte
3.6.1 ความหมายของคาในฟลดตางๆของขอมลภายใตสวนหวUDP 3.6.1.1 Type ส าหรบประเภทของขอความทใชในการสงแบงออกเปน 6 ประเภท คอ
ประเภทท 0 เพอระบวาเปนขอความ Solicitation Message ทสงออกจากโหนดโมบายส าหรบการคนหาเอเจนตทอยในเครอขายนนๆ
ประเภทท 1 เพอระบวาเปนขอความ Advertise Message ทสงจาก เอเจนตกลบไปหาโมบายโหนดทสง Solicitation Message มา
ประเภทท 2 เพอระบวาเปนขอความ Registration Request Message ทสงออกจากโหนดโมบายใหกบฟอรเรนจเอเจนตเพอขอลงทะเบยน
ประเภทท 3 เพอระบวาเปนขอความ Registration Request Message ทฟอรเรนจเอเจนตสงใหกบโฮมเอเจนตเพอขอลงทะเบยน พรอมกบสงหมายเลข LER ของเครอขายฟอรเรนจ
ประเภทท 4 เพอระบวาเปนขอความ Registration Reply Message ทโฮมเอเจนตตอบกลบไปยงฟอรเรนเอเจนตเพอตอบรบการลงทะเบยน พรอมกบสงหมายเลข LER ของเครอขายโฮม
รปท 3.9 รปแสดงตวอยางการจดเกบขอมลในตาราง Binding Update List
24
ประเภทท 5 เพอระบวาเปนขอความ Registration Reply Message ทฟอรเรนจเอเจนตสงใหกบโมบายโหนดเพอตอบรบการลงทะเบยน
3.6.1.2 Mobile Node IP เปนสวนทใชเพอระบวาขอความนเปนขอความทเกยวของกบเครองโหนดโมบายทมหมายเลขไอพถาวรหมายเลขใด 3.6.1.3 Agent IP เปนขอมลส าหรบระบวาหมายเลขไอพแอดเดรสของเครองเอเจนตอกฝ งหนง 3.6.1.4 LER IP ส าหรบระบหมายเลข LER ของผสงใหเอเจนตอกฝ งหนงรบทราบซงคาในฟลดนจะมกตอเมอเปนการสงขอความทมหมายเลขประเภทเปน 3 และ 4 เทานน 3.6.2 การรบสงขอมลของโปรโตคอล กลไกการเลอกประเภทของขอความทท าการสงออกจากแตละโหนดดงแสดงในรปท 3.10
ประเภทท 0 สงออกอตโนมตจากโหนดโมบายเปนรอบเวลา ประเภทท 1 สงออกจากเอเจนตไปหาโมบายโหนดเมอไดรบขอความ
ประเภทท 0 เขามา ประเภทท 2 สงออกจากโหนดโมบายไปหาฟอรเรนจเอเจนตเมอไดรบ
ขอความประเภทท 1เขามา ประเภทท 3 สงออกจากฟอรเรนจเอเจนตไปหาโฮมเอเจนตเมอไดรบ
ขอความประเภทท 2เขามา ประเภทท 4 สงออกจากโฮมเอเจนตไปหาฟอรเรนจเอเจนตเมอไดรบ
ขอความประเภทท 3เขามา ประเภทท 5 สงออกจากฟอรเรนจเอเจนตไปหาโหนดโมบายเมอไดรบ
ขอความประเภทท 4เขามา เมอไดรบขอความประเภทท 5 จะไมมการตอบกลบใดๆ เปนการจบรอบ
การท างาน
25
Solicitation MessageType 0
Advertise MessageType 1
Registration RequestType 2
Registration RequestType 3
Registration ReplyType 4
Registration ReplyType 5
Time
Mobile NodeForeign Network
Home Agent Foreign Agent
Time Time
Mobile NodeHome Network
Solicitation MessageType 0
Advertise MessageType 1
Time 3.7 สรปทายบท ในบทนไดอธบายถงแนวการออกแบบระบบ Mobile IP รวมกนการสรางอโมงคการเชอมตอระหวางเครอขายโฮมและเครอขายฟอเรนจดวย MPLS แทนการสรางอโมงคดวยวธการเอนแคปซเลชนแบบไอพอนไอพ โดยทเปนการท าบนเครอขายทมการสงขอมลดวย MPLS อยแลว โดยไมมการเปลยนแปลงระบบเดม แตเปนการสรางโปรแกรมเพมเตมเพอใหการท างานเปนดงทกลาวมา
รปท 3.10 รปแสดงกลไกการรบสงขอมลในโปรโตคอล
26
บทท 4
ผลการทดลองโครงงาน 4.1 กลาวน า
ในบทนเปนการน าแนวการออกแบบในบทท 3 มาทดสอบตามวตถประสงคและขอบเขต
ทไดกลาวไวในบทท 1 ซงในขนตอนการทดสอบระบบแบงการทดสอบออกเปนชวงๆเพอ
ทดสอบการท างานทละสวน
4.2 การทดสอบการสงขอมลผานสรางอโมงค MPLS เชอมระหวางเครอขายโฮมและฟอร
เรนจ
ในขนแรกเปนการทดสอบดวยการสรางอโมงคดวยค าสงจากวธ Telnet และเขาไปใส
ค าสงตามปกตดวยวธพมพค าสงตามคอมมานไลน โดยใชค าสงทใชในการสรางอโมงค MPLS ท
LER ฝ งเครอขายโฮมและฟอรเรนจแสดงดงรปท4.1 และ รปท 4.2 ตามล าดบ โดยทฝ งโฮมจะ
ท าการเปลยนเสนทางเดมของการสงทมอยแลวกอนหนานไปยงเสนทางอโมงคใหมเพอสงตอ
แพคเกตไปยงเครอขายฟอรเรนจ สวนทางฝ งเครอขายฟอรเรนจท าการสรางอโมงใหมขนมาเพอ
รบแพคเกตทมาจากเครอขายโฮม หลงจากทไดอโมงคแลวทดสอบดวยการสงขอมลจากเครอง
จ าลองทราฟฟก (Traffic Generator) โดยทก าหนดใหปลายทางสงไปยงหมายเลขไอพแอดเดรส
ของโหนดโมบายทเปนหมายเลขไอพในเครอขายโฮม โดยการเชอมตออปกรณส าหรบการ
ทดสอบนเปนดงรปท4.3 ซงก าหนดดงน ซงผลการทดสอบคอเครองโหนดโมบายสามารถรบ
ขอมลทสงมาจากเครองจ าลองทราฟฟกผานอโมงค MPLS ได และโหนดโมบายไดรบแพคเกต
ดงรปท4.4
รปท 4.1 รปแสดงค าสงส าหรบการเปลยนเสนทางอโมงคทLERของเครอขายโฮม
รปท 4.2 รปแสดงค าสงส าหรบสรางอโมงคทLERของเครอขายฟอเรนจ
27
MPLS Network
Home Network (HN)
192.168.100.0/24
Foreign Network (FN)
192.168.1.0/24
192.168.100.50/24
MPLS Tunnel from HN LER to FN LER
Traffic Generator172.100.100.1
4.3 การทดสอบเมอตดตงโปรแกรมลงบนโหนดโมบาย โฮมเอเจนต และ ฟอรเรนจเอ
เจนต
หลงจากการพฒนาโปรแกรมดวยภาษาเพรลส าหรบโหนดโมบายและเอเจนตทงฝ งโฮม
และฟอรเรนจ (ซงโปรแกรมของโฮมและเอเจนต ไดท าการรวมฟงกชนการท างานของทงคไวใน
โปรแกรมเดยวกนเพอใหเอเจนตแตละฝ งสามารถเปนไดทงโฮมและฟอรเรนจ) แลวไดสราง
topology ส าหรบทดสอบดงรปท 4.5
รปท 4.3 รปแสดงการเชอมของอปกรณตางๆส าหรบการทดสอบสงขอมล
รปท 4.4 รปแสดงแพคเกตทสรางดวยเครองจ าลองทราฟฟกและดกจบไดทโหนดโมบาย
28
MPLS Network
Home Network (HN)
(Network A) Foreign Network (FN)
(Network B)
Mobile Node
(PC3)
1.1.1.20/24
Home Agent
(PC1)
1.1.1.100/24
Foreign Agent
(PC2)
1.1.2.100/24
CN
1.1.3.20/24
โดยท าการตดตงโปรแกรมเอเจนตลงใหกบคอมพวเตอร PC1 และ PC2 เพอท าเปน
โฮมเอเจนตและฟอรเรนจเอเจนตตามล าดบ ตดตงโปรแกรมโหนดโมบายใหกบ PC3 เพอให
เปนเครองทดสอบในการยายเครอขาย ซงทง PC1 PC2 และ PC3 ทดสอบดวยการท างานบน
ระบบปฏบตการวนโดวส PC1 ท าการตอเขาทสวชตทอยในเครอขาย A และก าหนดไอพ
แอดเดรสเปน 1.1.1.100/24 ส าหรบโฮมเอเจนต PC2 ท าการตอเขาทสวชตทอยในเครอขาย B
และก าหนดไอพแอดเดรสเปน 1.1.2.100/24 ส าหรบฟอรเรนจเอเจนต PC3 ตอเขากบเครอขาย
A และก าหนดไอพแอดเดรสเปน 1.1.1.20/24 ในวงเครอขายเดยวกบ PC1 และโหนด CN
ก าหนดไอพแอดเดรสเปน 1.1.3.20/24 ทดสอบการสงขอมลมายงหมายเลขไอพแอดเดรสของ
PC3 ดวยวธการ PING เทส โดยโหนด CN ตออยในเครอขาย C
4.3.1 เรมตนการท างานและโหนดโมบายอยในเครอขายโฮม
การเรมตนการท างานตองท าการรนโปรแกรมในเครอง PC1 PC2 และ PC3
ในขณะท PC3 ตออยในเครอขาย A PC3จะมการสง solicitation message (Type 0) แบบบ
รอดแคส เพอหาเอเจนตในเครอขายนน เมอพบวาPC1เปนเอเจนต PC3จะท าการสอสารกบ
PC1 เพอตรวจสอบและวเคราะหวาขณะนนยงท างานอยในเครอขาย A (1.1.1.0/24) ซงเปน
รปท 4.5 รปแสดง topology ส าหรบการทดสอบ
29
เครอขายโฮม และ วนลปตรวจสอบไปเรอยๆซงมผลดงรปท 4.6 และแพคเกตทส อสารกนบน
เครองโหนดโมบายดกจบไดดงรปท 4.7
ขณะเดยวกน เมอ PC1 ไดรบ solicitation message จาก PC3 PC1จะท าการ
สราง advertise message (Type 1) เพอตอบกลบไปยง PC3 โดยใหขอมลเกยวกบเอเจนตของ
ตวเองดงรปท 4.8 ให PC3 น าไปวเคราะหตอไป และแพคเกตทส อสารกนบนเครองโฮมเอเจนต
ดกจบไดดงรปท 4.9
รปท 4.6 รปแสดง ขนตอนการเรมท างานของโหนดโมบายขณะอยในเครอขายโฮม
รปท 4.7 รปแสดงแพคเกตทดกจบการสอสารไดบนโหนดโมบายเมออยในเครอขายโฮม
30
4.3.2 โหนดโมบายเคลอนยายขามไปอยในเครอขายฟอรเรนจ
หลงจากนน เมอเคลอนยายโหนดโมบายไปยงเครอขายฟอรเรนจ PC3 ยงคง
สง solicitation message แบบบรอดแคสเพอคนหาเอเจนต PC2ซงเปนเครองเอเจนตทอยใน
เครอขายBจะเปนเครองทสง advertise message (Type 1) กลบไปหาPC3แทนเครองPC1ท
เปนเอเจนตเดม เมอPC3ไดรบ advertise message กลบมาแลวตรวจสอบพบวาตนเองไดยาย
เครอขายมาอยในเครอขายB (1.1.2.0/24) ซงเปนเครอขายฟอรเรนจแลว PC3จะสราง
registration message (Type 2) เพอขอลงทะเบยนกบPC2ซงเปนฟอรเรนจเอเจนตวาตนเองได
ขอยายเครอขายมาอยในเครอขายB ดงรปท 4.10
รปท 4.8 รปแสดง ขนตอนการเรมท างานของโฮมเอเจนตขณะทโหนดโมบายอยในเครอขายโฮม
รปท 4.9 รปแสดงแพคเกตทดกจบการสอสารไดบนโฮมเอเจนตเมอโหนดโมบายอยในเครอขายโฮม
31
เมอPC2ไดรบ registration message จากPC3ทไดขอลงทะเบยน PC2มหนาท
จะตองตดตอกลบไปยงPC1ดวย registration message (Type 3) เพอบอกในPC1ทราบวาPC3
ไดยายมาอยในเครอขายBของPC2แลวพรอมบอกหมายเขไอพแอดเดรสของ LER ของ
เครอขายB ใหกบPC1เพอใชในการสรางอโมงคMPLSส าหรบการสงขอมลมายงPC3 ดงรปท
4.11 และแพคเกตทส อสารกนบนเครองโฮมเอเจนตดกจบไดดงรปท 4.12
รปท 4.10 รปแสดง ขนตอนการท างานของโหนดโมบายเมอยายขามมาอยในเครอขายฟอเรนจ
รปท 4.11 รปแสดง ขนตอนการท างานของฟอเรนจเอเจนตเมอมโหนดโมบายเขามาตดตอ
รปท 4.12 รปแสดงแพคเกตทดกจบการสอสารไดบนฟอเรนจเอเจนต
เมอยายขามมาอยในเครอขายฟอเรนจ
32
เมอPC1ไดรบ registration message จากPC2แลว PC1จะตอบกลบPC2ดวย
registration reply message (Type 4)เพอตอบรบPC2วาไดรบขอความการขอลงทะเบยนแลว
พรอมส าหรบการสรางอโมงคMPLSกลบเพอชไปยงLERของเครอขายB หลงจากทไดตอบกลบ
เรยบรอย PC1 จะท าการปรบปรงตารางความสมพนธของหมายเลขไอพโหนดโมบายส าหรบ
เกบขอมลของPC3 ประกอบไปดวยหมายเลขไอพแอดเดรส หมายเลขไอพแอดเดรสของเอเจนต
ปลายทางทPC3ยายไปอย หมายเลขเซอรวสไอดส าหรบการสรางอโมงคMPLSไปหาLERของ
เครอขายB และ ระยะเวลาในการเกบคานไวซงตงคามาตรฐานไวท 300 วนาท เมอท าการเกบ
คาตางๆไวเรยบรอยแลว PC1 จะท าการสรางค าสงเพอใชในการ Telnet เขาไปยง LER ของ
เครอขายA เพอสรางท าการชอโมงคMPLSไปยง LER ของเครอขาย B ดงรปท 4.13
33
รปท 4.13 รปแสดง ขนตอนการท างานโฮมเอเจนตเมอโหนดโมบายยายไปตอกบเครอขายฟอเรนจ
34
รปท 4.13 รปแสดง ขนตอนการท างานโฮมเอเจนตเมอโหนดโมบายยายไปตอกบเครอขายฟอเรนจ (ตอ)
35
เมอPC2ไดรบ registration reply message จากPC1แลว PC2จะตอบตอไปยง
PC3 ดวย registration reply message (Type 5) เพอตอบรบวาการลงทะเบยนเสรจสมบรณ
จากนนPC2จะท าการปรบปรงตารางผตดตอส าหรบเกบขอมลPC3 ซงประกอบไปดวย
หมายเลขไอพแอดเดรสของPC3 หมายเลขไอพแอดเดรสของPC1ซงเปนโฮมเอเจนต เลข
เซอรวสไอดส าหรบสรางอโมงคMPLSกลบไปหาLERของเครอขายA และระยะเวลาในการเกบ
ขอมลนซงตงคามาตรฐานไวท 300 วนาทเชนเดยวกบตารางความสมพนธในPC1 เมอท าการ
เกบคาตางๆไวเรยบรอยแลว PC2 จะท าการสรางค าสงเพอใชในการ Telnet เขาไปยง LER
ของเครอขายB เพอสรางท าการชอโมงคMPLSไปยง LER ของเครอขาย A ดงรปท 4.14
36
รปท 4.14 รปแสดง ขนตอนการท างานฟอเรนจเอเจนตเมอท าการตดตอกบโฮมเอเจนตเพอลงทะเบยน
37
รปท 4.14 รปแสดง ขนตอนการท างานฟอเรนจเอเจนตเมอท าการตดตอกบโฮมเอเจนตเพอลงทะเบยน (ตอ)
38
เมอทงฟอรเรนจเอเจนตและโฮมเอเจนตท าการสงค าสงผานเทลเนตเขาไปเพอ
สรางอโมงคMPLSเรยบรอยแลวจะได แบบอโมงคดงแสดงในรปท 4.15 สงผลใหแพคเกตทสง
มายงไอพแอดเดรสของโหนดโมบายถกสงตอผานอโมงคทสรางขนนมายง LER ของเครอขาย
ฟอรเรนจและถกสงตอใหโหนดโมบายดวยการดหมายเลขแมคแอดเดรสในสวชตระดบเลเยอร2
และสวชตแพคเกตไปได
รปท 4.14 รปแสดง ขนตอนการท างานฟอเรนจเอเจนตเมอท าการตดตอกบโฮมเอเจนตเพอลงทะเบยน (ตอ)
39
MPLS Network
Home Network (HN)
(Network A) Foreign Network (FN)
(Network B)
Mobile Node
(PC3)
1.1.1.20/24
Home Agent
(PC1)
1.1.1.100/24
Foreign Agent
(PC2)
1.1.2.100/24
Created MPLS Tunnel
CN
1.1.3.20/24
เมอตรวจสอบการสงขอมลจาก CN ททดสอบดวยวธการ PING เทสพบวา
สามารถ PING ไดอยางตอเนองจาก CN ไปยง PC3 โดยทชวงทท าการยายขามเครอขายจาก
เครอขาย A ไปยงเครอขาย B จะมชวงทหลดการตดตอไปชวขณะหนง โดยทหลงจากท าการ
เทลเนตจากเอเจนตทง 2 ฝ งแลว เครอง CN จะสามารถ PING ไปยง PC3 ไดอกครงหนงดงรป
ท 4.16
รปท 4.15 รปแสดง ภาพจ าลองอโมงคMPLSทโฮมและฟอรเรนจเอเจนตไดสรางขน
รปท 4.16 รปแสดงการทดสอบการตดตอจาก CN ไปยง PC3 ดวยการ PING
40
บทท 5
สรปผลการด าเนนงาน 5.1 ผลการด าเนนโครงการ
จากผลการทดลองการท างานของระบบ ประโยชนทไดรบคอ สามารถทดสอบการสราง
ระบบการสงขอมลโดยทผใชงานสามารถก าหนดคาหมายเลขไอพแอดเดรสคงทไดโดยไม
จ าเปนตองเปลยนหมายเลขไอพเมอมการยายขามเครอขายท าใหอกฝายทเครองของผใชงานน
ตดตอดวยไมจ าเปนตองเปลยนหมายเลขปลายทางทตดตอดวย และระบบน พฒนาบนระบบ
เครอขายทเปน MPLS อยแลวดงนนจงสามารถสรางอโมงคMPLSไดทนทและไมจ าเปนตอง
เปลยนอปกรณทรองรบโมบายไอพ
5.2 ปญหาและอปสรรค
อปสรรคของการทดลองในครงนคอไมสามารถทดลองบนระบบจรงได เนองจากมความ
เสยงตอการท าใหระบบเครอขายลม จงสามารถทดสอบไดภายในหองแลปเทานน
ในชวงการยายขามเครอขายตองใชระยะเวลานานระยะหนงจงจะสามารถสงขอมลไดอก
ครง ซงเปนผลจากการสงขอมลขามกนของเอเจนตทง 2 ดาน ทมความลาชา และ ขนตอนการ
telnet ทตองใชเวลาในการท างาน
การทดลองยงขาดการทดสอบการเชอมตอเครองโหนดโมบายหลายเครองพรอมๆกน
ซงอาจกอใหเกดปญหาในเรองการจดการเกยวกบล าดบของการท างาน
5.3 แนวทางการพฒนาในอนาคต
เนองจากการสรางค าสงเพอสรางอโมงคMPLSในครงน ใชเครองโหนดโมบายละ 1
เซอรวส ซงในกรณทมเครองโหนดโมบายเปนจ านวนมาก จะเปนการสนเปลองเซอรวสในการ
ใหบรการ ดงนนในการพฒนาตอไปควรพฒนาใหสามารถใชหลายเครองโหนดโมบายไดดวย
เซอรวสเดยวกน
ในการท างานของการสอสารระหวางโหนดโมบายและเอเจนตยงมความลาชา อกทงการ
สงดวยการ telnet เขาไปเพอสงค าสงทอปกรณยงมความลาชาอย ดงนนในการพฒนาสามารถ
พฒนาโดยการน าโปรมแกรมตดตงลงไปบน MPLS Router เพอใหการท างานเรวขนและไมตอง
ใชค าสงTelnetในการเขาไปสงค าสงเพอสรางอโมงค
ควรพฒนาตอเนองในกรณทมการเชอมตอเครองโหนดโมบายหลายเครองโดยสามารถ
ตรวจสอบขนตอนการท างานใหสอดคลองกบกลไกทควรจะเปน
42
ภาคผนวก ก วธการสงค าสงส าหรบการสรางอโมงคในอปกรณยหอ Acatel Lucent
โครงสรางการท างานของอปกรณยหอ Acatel Lucent ท างานในลกษณะ Service Base
กลาวคอในการคอนฟกจะท าการสรางเซอรวสขนมาส าหรบการท างานตางๆ แลวน าเซอรวสนน
ไปผกเขากบพอรตของอปกรณเพอใชงานโดยเซอรวสหลกทน ามาใชงานส าหรบโครงงานนคอ
sdp epipe และ vpls โดยการสรางเซอรวสเหลานตองมการประกาศเลขเซอรวสขนมาและระบ
วาเปนเซอรวสประเภทใด
เซอรวส sdp เปนการระบหมายเลขไอพแอดเดรสปลายทางทตองการสงขอมล
ไปโดยไมตองระบวาสงไปทางพอรตใด โดยอปกรณจะท าการค านวณจาก
routing protocol อนเอง
เชอรวส epipe เปนการเชอมตอระหวาง 2 พอรตแบบ 1 ตอ 1 โดยทไมมการ
learn mac-address ของทง 2 ฝ ง
เซอรวส vpls เปนการเชอมตอแบบ 1 to many ซงมาสามารถเชอมตอหลาย
พอรตเขาดวยกนภายในเซอรวสเดยว โดยทเซอรวสนจะท าการเกบคา mac-
address ของแตละอปกรณทเชอมตอเขามาในเซอรวสเพอหาพอรตทถกตอง
ส าหรบสงขอมล
ภายในเซอรวสประกอบดวยสวนประกอบหลกคอการระบชองทางตางๆเขามาใน
เซอรวสซงรปแบบหลกทใชในโครงงานนมอย 2 ประเภทคอ sap และ spoke-sdp
Sap เปนการผกพอรตเขากบเซอรวสแบบระบหมายเลขพอรตพรอมvlanทใช
เชน sap 1/1/3:900 คอการผกพอรตหมายเลข 1/1/3 เขามาในเซอรวสพรอม
กบระบวาใหใช vlan 900 ทพอรตนนส าหรบเซอรวสน
Spoke-sdp เปนการผกชองทางเขามาโดยกระระบหมายเลขชองทางส าหรบ
ปลายทาง ซง spoke-sdp นมสวนประกอบอย 2 สวนคอ หมายเลข sdp และ
หมายเลข circuit โดยหมายเลข sdp นจะตองสรางเซอรวส sdp ขนมากอนโดย
43
ทมขอมลคอ หมายเลขไอพแอดเดรสปลายทาง สวนหมายเลข circuit
เปรยบเสมอนหมายเลขยอยในชองทางของ sdp ทประกาศไปเพอระบวาเปน
แพกเกตของขอมลชดใดและใชในการเพมลาเบลส าหรบ MPLS ซง 1 sdp
สามารถสรางไดหลาย circuit และใสลาเบลตางกนออกไปตามหมายเลข circuit
เชน spoke-sdp 12500:10000 คอผกหมายเลข sdp 12500 โดยมหมายเลข
circuit 10000 เขามาในเซอรวส
44
ภาคผนวก ข
โคดโปรแกรม
โปรแกรมส าหรบเอเจนตและโหนดโมบายนพฒนาขนจากภาษา Perl ซงมซอรสโคด
ของทง 2 โปรแกรมดงน
โปรแกรมในสวนของโหนดโมบาย use Switch;
use Net::Address::IP::Local;
use Net::IPAddress;
use IO::Socket;
my $localAddr = Net::Address::IP::Local->public;
while (1)
{
######### Send Agent Solicitaion & wait for Agent Advertise ############
my $sendMsg = genSolicitationPkt();
my $ip = '255.255.255.255';
sendUdpPkt($sendMsg , $ip);
my ($rcvMsg,$hostname) = rcvUdpPkt();
#print $rcvMsg."\n";
my $type = substr($rcvMsg, 0, 1);
my $Msg = substr $rcvMsg,1;
#print $type."\n";
#print $Msg."\n";
switch ($type)
{
case ('1') {
my $faIp = $hostname;
print "get advertise message from Agent >> ".$faIp."\n";
if (chkDiffNetwork($faIp)) {
#print "DIFFERRENCE\n";
###### send registration packet to FA ##########
my $regisPkt = genRegistrationPkt();
#print $regisPkt."\n";
sleep (1);
sendUdpPkt($regisPkt , $faIp);
45
my ($rcvMsg,$hostname) = rcvUdpPkt();
my $type = substr($rcvMsg, 0, 1);
my $Msg = substr $rcvMsg,1;
switch ($type)
{
case ('5') {
my $faIp = $hostname;
my $faIpMsg = (substr $rcvMsg,1,4);
my $haIpMsg = (substr $rcvMsg,5,4);
my $haIp = inet_ntoa ($haIpMsg);
print "get registration reply message from FA >> ".$faIp." HA >> ".$haIp."\n";
}
}
} else {
print "do nothing\n";
}
}
}
sleep (5);
# $i+=1;
}
sub genSolicitationPkt
{
###### generate Solicitation packet #######
print "generate Solicitation packet\n";
my $pktType = "0";
my $adr = inet_aton($localAddr);
my $msg = $pktType.$adr;
return $msg;
}
sub genRegistrationPkt
{
###### generate registeration packet #######
print "generate registeration packet\n";
my $pktType = "2";
my $mnAdr = inet_aton($localAddr);
46
my @octip = split (/\./,$localAddr);
$octip[3] = '100'; #change HA ip
my $haIp = $octip[0].".".$octip[1].".".$octip[2].".".$octip[3];
#print "\n>>>".$localAddr."---".$haIp."<<<\n";
my $haAdr = inet_aton($haIp);
my $msg = $pktType.$mnAdr.$haAdr;
return $msg;
}
sub chkDiffNetwork
{
print "check if discoveried agent is in the same network\n";
my ($ipFa) = @_;
# get local IP Address
#print "local ip ".$localAddr;
use Net::IPAddress;
my $subnetLocal = mask($localAddr,"255.255.255.0");
print "local ip ".$localAddr."\tlocal net ".$subnetLocal."\n";
my $subnetFa = mask($ipFa,"255.255.255.0");
print "agent ip ".$ipFa."\tagent net ".$subnetFa."\n";
if($subnetFa ne $subnetLocal)
{
print "this host and agent are in different network\n";
return 1;
}
else
{
print "this host and agent are in same network\n";
return 0;
}
}
sub sendUdpPkt
{
($msg , $destIp) = @_;
my $SOCKET = IO::Socket::INET->new(PeerPort => 434,
47
Proto => 'udp',
Broadcast => 1 ,
PeerAddr => $destIp,
LocalAddr => $localAddr) or die "socket: $@";
my $tmp = "";
my $wait = 0;
$SOCKET->send($msg);
}
sub rcvUdpPkt
{
my $SERVERSOCK = IO::Socket::INET->new(LocalPort => 434,
Proto => 'udp',
Blocking => 0 ,
LocalAddr => $localAddr ) or die "socket: $@";
my $tmp = "";
my $wait = 0;
do{
$SERVERSOCK->recv($tmp,2000);
sleep(1);
print $wait.".\n";
$wait++;
}until ($tmp ne "" || $wait>10);
if ($tmp eq "")
{
return ($tmp);
}
else
{
my $peerhost = $SERVERSOCK->peerhost();
return ($tmp , $peerhost);
}
}
48
โปรแกรมในสวนของเอเจนต ####### wait for registration packet from MN ##########
use Switch;
use Net::Address::IP::Local;
use IO::Socket;
use Timer::Simple;
use Net::Telnet;
my @bindingUpdateList = ();
printBindingUpdateList();
my @visitorList = ();
printVisitorList();
my $localAddr = Net::Address::IP::Local->public;
my $serviceId = "10000";
my $LerIp = "10.9.27.250";
my $lifeTime = 300;
$i=0;
while (1)
{
($rcvMsg , $hostname) = rcvUdpPkt();
#print "xxxxxx".$hispaddr;
$type = substr($rcvMsg, 0, 1);
$Msg = substr $rcvMsg,1;
#print $type."\n";
#print $Msg."\n";
switch ($type)
{
case ('0') {
my $mnIp = $hostname;
print "get solicitation message from MN >> ".$mnIp."\n";
my $sendMsg = genAdvertisePkt();
sleep(1);
if (isComeBack($mnIp))
{
genCommandToChangeTunnelBack();
}
sendUdpPkt($sendMsg , $mnIp );
49
}
case ('2') {
#print $rcvMsg."\n";
my $mnIp = $hostname;
my $mnIpMsg = (substr $rcvMsg,1,4);
my $haIpMsg = (substr $rcvMsg,5,4);
my $haIp = inet_ntoa($haIpMsg);
print "get registration message from MN >> ".$mnIp."\n";
my $forwardMsg = genRegistrationPktToHa($mnIpMsg);
#print "\n>>>".$forwardMsg."<<<\n";
######## forward registration packet to HA ##########
sleep (1);
sendUdpPktToHa($forwardMsg , $haIp);
#$rcvMsg = "ACK_REGIS";
########## wait for HA reply #############
}
case ('3') {
my $faIp = $hostname;
my $mnIpMsg = (substr $rcvMsg,1,4);
my $faIpMsg = (substr $rcvMsg,5,4);
my $faLerMsg = (substr $rcvMsg,9,4);
my $mnIp = inet_ntoa($mnIpMsg);
my $faLerIp = inet_ntoa($faLerMsg);
print "get registration message from \nFA >> ".$faIp." \nMN >> ".$mnIp." \nFA LER >>".$faLerIp."\n";
my $sendMsg = genRegistrationReplyToFa($mnIpMsg);
#print $sendMsg;
sleep (1);
sendUdpPkt($sendMsg,$faIp);
updateBindingUpdateList($mnIp , $faIp);
printBindingUpdateList();
print "finish registration phase\n";
genCommandToCreateTunnelHa($faLerIp);
print "HA complete and can send data now \n\n\n\n";
print "********************************\n";
50
sendUdpPkt($sendMsg,$faIp);
}
case ('4') {
my $haIp = $hostname;
my $mnIpMsg = (substr $rcvMsg,1,4);
my $haIpMsg = (substr $rcvMsg,5,4);
my $haLerIpMsg = (substr $rcvMsg,9,4);
my $mnIp = inet_ntoa($mnIpMsg);
my $haLerIp = inet_ntoa($haLerIpMsg);
print "get registration reply message from \nHA >> ".$haIp." \nMN >> ".$mnIp." \nHA LER >>".$haLerIp."\n";
my $sendMsg = genRegistrationPktReplyToMn($haIpMsg);
sleep(1);
####### update Visitor List ###############
my $newMN = updateVisitorList($mnIp , $haIp);
printVisitorList();
print "finish registration phase\n";
if($newMN)
{
genCommandToCreateTunnelFa();
} else {
print "this is old MN\n";
}
print "FA complete and can send data now \n\n\n\n";
print "********************************\n";
sendUdpPkt($sendMsg , $mnIp);
}
}
######## generate script for create MPLS tunnel ######
$i+=1;
chkAliveMn();
}
sub isComeBack()
51
{
print "check if MN is in this network or come back from FN\n";
my $mnIp = @_;
for(my $i = 0 ; $i<$#bindingUpdateList;$i++)
{
if($mnIp eq $bindingUpdateList[$i][0])
{
if($bindingUpdateList[$i][3] ne "die")
{
#genCommandToChangeTunnelBack();
$bindingUpdateList[$i][3]->stop;
$bindingUpdateList[$i][3] = "die";
return 1;
}
else
{
print "MN tunnel to FA already dead\n";
return 0;
}
}
}
}
sub genCommandToChangeTunnelBack
{
print "---->>>genCommandToChangeTunnelBack<<<<-----";
$telnet = new Net::Telnet ( Timeout=>25, Errmode=>'die');
$telnet->open('10.50.15.12');
@tmp = $telnet->waitfor('/ogin:/');
print @tmp;
$telnet->print('username');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('pass');
@tmp = $telnet->waitfor('/quit]:/');
print @tmp;
sleep(1);
my $str = $LerIp;
$telnet->print($str);
#$telnet->print('10.197.254.27');
@tmp = $telnet->waitfor('/Login:/');
52
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('admin-pass');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('environment no more');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$telnet->print('show port');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$str = "/configure service vpls 280213";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('info');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$str = "/configure service vpls 280213 spoke-sdp 12541:280213 create";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
}
53
sub genCommandToDeleteTunnelFa
{
my ($serviceIdDie ) = @_;
print "\n------>>>genCommandToDeleteTunnelFa<<<-----\n\n\n";
$telnet = new Net::Telnet ( Timeout=>25, Errmode=>'die');
$telnet->open('10.50.15.12');
@tmp = $telnet->waitfor('/ogin:/');
print @tmp;
$telnet->print('username');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('pass');
@tmp = $telnet->waitfor('/quit]:/');
print @tmp;
sleep(1);
my $str = $LerIp;
$telnet->print($str);
#$telnet->print('10.9.27.250');
@tmp = $telnet->waitfor('/Login:/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('admin-pass');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('environment no more');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$telnet->print('show port');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$str = "/configure service epipe ".$serviceIdDie;
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
54
$telnet->print('info');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$_ = $tmp[0];
m/(sap\.+)/;
my $sapInfo = $1;
$_ = $tmp[0];
m/(spoke-sdp\.+)/;
my $spokeInfo = $1;
$str = "/configure service epipe ".$serviceIdDie." ".$sapInfo." shutdown";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$str = "/configure service epipe ".$serviceIdDie." no ".$sapInfo;
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$str = "/configure service epipe ".$serviceIdDie." ".$spokeInfo." shutdown";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$str = "/configure service epipe ".$serviceIdDie." no ".$spokeInfo;
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$str = "/configure service epipe ".$serviceIdDie." shutdown";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$str = "/configure service no epipe ".$serviceIdDie;
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
55
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
}
sub genCommandToCreateTunnelFa
{
my ($haLerIp ) = @_;
print "\n------>>>genCommandToCreateTunnelFa<<<-----\n\n\n";
$telnet = new Net::Telnet ( Timeout=>25, Errmode=>'die');
$telnet->open('10.50.15.12');
@tmp = $telnet->waitfor('/ogin:/');
print @tmp;
$telnet->print('username');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('pass');
@tmp = $telnet->waitfor('/quit]:/');
print @tmp;
sleep(1);
my $str = $LerIp;
$telnet->print($str);
#$telnet->print('10.9.27.250');
@tmp = $telnet->waitfor('/Login:/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('admin-pass');
@tmp = $telnet->waitfor('/#/');
print @tmp;
56
$telnet->print('environment no more');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$telnet->print('show port');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$str ="show service sdp | match ".$haLerIp;
$telnet->print($str);
#$telnet->print('show service sdp | match 10.197.254.27');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$_ = $tmp[0];
m/^(\d+)/m;
my $sdp = $1;
#$telnet->print('show service service-using | match 10000');
$str = "show service service-using | match ".$serviceId;
$telnet->print($str);
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
#$telnet->print('/configure service epipe 10000 customer 7 create ');
$str = "/configure service epipe ".$serviceId." customer 7 create";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service epipe 10000 service-mtu 9194');
$str = "/configure service epipe ".$serviceId." service-mtu 9194";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service epipe 10000 sap 1/1/3:900 create');
$str = "/configure service epipe ".$serviceId." sap 1/1/3:900 create";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
57
#$telnet->print(/configure service epipe 10000 spoke 11270:10000 create');
$str = "/configure service epipe ".$serviceId." spoke-sdp ".$sdp.":".$serviceId." create";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service epipe 10000 no shutdown');
$str = "/configure service epipe ".$serviceId." no shutdown ";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service epipe 10000');
$str = "/configure service epipe ".$serviceId;
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('info');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
}
sub genCommandToCreateTunnelHa
{
my ($faLerIp) = @_;
print "\n------>>>genCommandToCreateTunnelHa<<<-----\n\n\n";
$telnet = new Net::Telnet ( Timeout=>25, Errmode=>'die');
$telnet->open('10.50.15.12');
58
@tmp = $telnet->waitfor('/ogin:/');
print @tmp;
$telnet->print('username');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('pass');
@tmp = $telnet->waitfor('/quit]:/');
print @tmp;
sleep(1);
my $str = $LerIp;
$telnet->print($str);
#$telnet->print('10.197.254.27');
@tmp = $telnet->waitfor('/Login:/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/Password:/');
print @tmp;
$telnet->print('admin-pass');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('environment no more');
@tmp = $telnet->waitfor('/#/');
print @tmp;
$telnet->print('admin');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$telnet->print('show port');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$str ="show service sdp | match ".$faLerIp;
$telnet->print($str);
#$telnet->print('show service sdp | match 10.9.27.250');
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
$_ = $tmp[0];
m/^(\d+)/m;
my $sdp = $1;
#$telnet->print('show service service-using | match 10000');
$str = "show service service-using | match ".$serviceId;
$telnet->print($str);
@tmp = $telnet->waitfor('/admin#/');
print @tmp;
59
#$telnet->print('/configure service vpls 280213');
$str = "/configure service vpls 280213";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('info');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service vpls 280213 spoke-sdp 12541:280213 shutdown');
$str = "/configure service vpls 280213 spoke-sdp 12541:280213 shutdown";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service vpls 280213 no spoke-sdp 12541:280213');
$str = "/configure service vpls 280213 no spoke-sdp 12541:280213";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service vpls 280213 spoke-sdp 12500:10000 create');
$str = "/configure service vpls 280213 spoke-sdp ".$sdp.":".$serviceId." create";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service vpls 280213 no shutdown');
$str = "/configure service vpls 280213 no shutdown ";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
#$telnet->print('/configure service vpls 280213');
$str = "/configure service vpls 280213 ";
$telnet->print($str);
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
60
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
$telnet->print('');
@tmp = $telnet->waitfor('/[#\$]/');
print @tmp;
}
sub genAdvertisePkt
{
###### generate Advertise packet #######
print "generate Advertise packet\n";
my $pktType = "1";
my $adr = inet_aton($localAddr);
my $msg = $pktType.$adr;
return $msg;
}
sub genRegistrationPktToHa
{
my ($mnIp) = @_;
###### generate registeration packet to HA #######
print "generate registeration packet to HA\n";
my $pktType = "3";
my $faAdr = inet_aton($localAddr);
my $lerIpMsg = inet_aton($LerIp);
my $msg = $pktType.$mnIp.$faAdr.$lerIpMsg;
#print "\nxxxxx".$msg;
return $msg;
}
sub genRegistrationPktReplyToMn
{
my ($haIpMsg) = @_;
###### generate registeration reply packet #######
61
print "generate registeration reply packet\n";
my $pktType = "5";
my $faAdr = inet_aton($localAddr);
my $msg = $pktType.$faAdr.$haIpMsg;
#print "\nxxxxx".$msg;
return $msg;
}
sub genRegistrationReplyToFa
{
($mnIp) = @_;
###### generate registeration reply packet #######
print "generate registeration reply packet\n";
$pktType = "4";
use Net::Address::IP::Local;
#my $localAddr = Net::Address::IP::Local->public;
my $haAdr = inet_aton($localAddr);
my $lerIpMsg = inet_aton($LerIp);
my $msg = $pktType.$mnIp.$haAdr.$lerIpMsg;
return $msg;
}
sub chkAliveMn()
{
for ($i = 0 ; $i<=$#visitorList ; $i++)
{
my $leftTime = $lifeTime - $visitorList[$i][3]->elapsed ;
if($leftTime < 0){
print "MN ".$visitorList[$i][0]." die because of timeout 300s\n";
$visitorList[$i][3]->stop;
$visitorList[$i][3] = "die";
print ">>>>> Telnet to delete tunnel <<<<<<\n";
printVisitorList();
genCommandToDeleteTunnelFa($visitorList[$i][2]);
62
}
}
}
sub printVisitorList()
{
print "\nVISITOR LIST\n";
print "==========================================================\n";
print "PERMANENT_IP\tHOMEAGENT_IP\tSERVICE_ID\tLIFETIME\n";
for ($i = 0 ; $i<=$#visitorList ; $i++)
{
for ($j=0 ; $j<4 ;$j++)
{
if($j==3) {
if ($visitorList[$i][3] eq "die"){
print "\tdie";
} else {
$_ = $visitorList[$i][$j];
m/ (\d+)\.\d+ sec/;
my $tmp = $lifeTime - $1;
print "\t".$tmp;
}
}
else {
print $visitorList[$i][$j]."\t";
}
}
print "\n";
}
print "----------------------------------------------------------\n\n";
}
sub updateVisitorList()
{
my ($mnIp , $haIp) = @_;
print ("Update Visitor List\n");
my $chk = "true";
my $dupMn = 99;
my $n = $#visitorList+1 ;
63
for ($i = 0 ; $i<$n ; $i++)
{
if($mnIp eq $visitorList[$i][0] )
{
$chk = "false";
if ($visitorList[$i][3] eq "die") {
$chk = "dup";
$dupMn = $i;
} else {
$visitorList[$i][3]->restart;
}
}
}
if($chk eq "true")
{
my $index = $n;
$visitorList[$index][0] = $mnIp;
$visitorList[$index][1] = $haIp;
$visitorList[$index][2] = $serviceId;
$visitorList[$index][3] = Timer::Simple->new(start => 0, string => 'human');
$serviceId++;
$visitorList[$index][3] -> start;
return 1;
} elsif($chk eq "dup") {
$visitorList[$dupMn][2] = $serviceId;
$visitorList[$dupMn][3] = Timer::Simple->new(start => 0, string => 'human');
$serviceId++;
$visitorList[$index][3] -> start;
return 1;
}
else {
return 0;
}
}
sub printBindingUpdateList()
64
{
print "\nBINDING UPDATE LIST\n";
print "=====================================================================\n";
print "PERMANENT_IP\tCOA_IP\t\tSERVICE_ID\tLIFETIME\n";
for ($i = 0 ; $i<=$#bindingUpdateList ; $i++)
{
for ($j=0 ; $j<4 ;$j++)
{
if($j==3) {
if ($bindingUpdateList[$i][3] eq "die"){
print "\tdie";
} else {
$_ = $bindingUpdateList[$i][3];
m/ (\d+)\.\d+ sec/;
my $tmp = $lifeTime - $1;
print "\t".$tmp;
}
}else {
print $bindingUpdateList[$i][$j]."\t";
}
}
print "\n";
}
print "--------------------------------------------------------------------\n\n";
}
sub updateBindingUpdateList()
{
my ($mnIp , $haIp) = @_;
print ("Update Binding Update List\n");
my $chk = "true";
my $n = $#bindingUpdateList+1 ;
for ($i = 0 ; $i<$n ; $i++)
{
if($mnIp == $bindingUpdateList[$i][0])
{
$bindingUpdateList[$i][3]->restart;
$chk = "false";
}
}
if($chk eq "true")
{
65
my $index = $n;
$bindingUpdateList[$index][0] = $mnIp;
$bindingUpdateList[$index][1] = $haIp;
$bindingUpdateList[$index][2] = $serviceId;
$bindingUpdateList[$index][3] = Timer::Simple->new(start => 0, string => 'human');
$serviceId++;
$bindingUpdateList[$index][3]->start;
}
}
sub rcvUdpPkt
{
my $SERVERSOCK = IO::Socket::INET->new(LocalPort => 434,
Proto => 'udp',
Blocking => 1 ,
LocalAddr => $localAddr ) or die "socket: $@";
my $tmp = "";
my $wait = 0;
#do{
$SERVERSOCK->recv($tmp,2000);
# sleep(1);
# print $wait.".\n";
# $wait++;
#}until ($tmp ne "" || $wait>10);
if ($tmp eq "")
{
return ($tmp);
}
else
{
my $peerhost = $SERVERSOCK->peerhost();
return ($tmp , $peerhost);
}
}
sub sendUdpPkt
66
{
my ($msg , $destIp) = @_;
my $SOCKET = IO::Socket::INET->new(PeerPort => 434,
Proto => 'udp',
Broadcast => 1 ,
PeerAddr => $destIp,
LocalAddr => $localAddr) or die "socket: $@";
my $tmp = "";
my $wait = 0;
$SOCKET->send($msg);
#close(SOCKET);
}
41
เอกสารอางอง
[1] ประวทย ชมช, เอกสารประกอบการสอนวชาเครอขายไรสายและเคลอนท, คณะ
วศวกรรมศาสตร ภาควชาโทรคมนาคม, มหาวทยาลยเทคโนโลยมหานคร 2554
[2] สวญญา พลวชย, วทยานพนธ เรอง การจดเสนทางทเหมาะสมส าหรบ Mobile MPLS, วศวกรรมเครอขาย วทยาศาสตรมหาบณฑต, มหาวทยาลยเทคโนโลยมหานคร 2553 [3] Alcatel Lucent , 7750 SR OS MPLS Guide Software Version: 7750 SR OS 7.0 Rev. 02, 03, 04, July 2009 [4] Perl Programming - http://www.tutorialspoint.com/perl/ [5] Perl first script - http://www.tizag.com/perlT/perlfirstscript.php