ความรู้คู่ความก้าวหน้า
 
เรื่องของ Interface Null 0 และ Longest Match ในการ forwarding ของ Router

บทความนี้มาจากการตอบคำถามใน CCNA Hunter Group จึงขอนำมาแปะไว้ เผื่อเป็นประโยชน์กับบางท่านที่สนใจ Interface null 0 นะครับ โดยหากมีเวลา จะมาปรับปรุง พร้อมภาพปลากรอบ ^^

กรณีศึกษาที่ 1 การนำ interface null 0 มาใช้กับการทำ route summarization

หลักการของ null 0 อาจจะนำใช้ร่วมกับการทำ Route Summarization บน Dynamic Routing Protocol อย่างเช่น OSPF กับ EIGRP 
หรืออาจจะไปเกี่ยวข้องกับ BGP ที่ใช้ command "network" สร้าง route ขึ้นมาแบบลอยๆ

บางท่านอาจจะเคยทำ Route Summarization บน Dynamic Routing Protocol อย่างเช่น OSPF และ EIGRP หลังจากท่านทำเสร็จแล้ว ท่านก็จะพบว่า Route ที่เป็น Summarization นั้นชี้ไปที่ Interface Null 0 เองอย่างอัตโนมัติ แน่นอนว่าท่านคงจะสงสัยว่ามันมันคืืออะไร?

ผมขอยกตัวอย่างแบบง่ายๆ นะครับ แบบขอข้ามรายละเอียดปลีกย่อยบางอย่างไป เพราะมันจะทำให้ต้องเขียนเป็นหนังสือหนึ่งเล่มใหญ่ๆ เลยก็ว่าได้ ^^

ip route 10.1.1.0 255.255.255.0 interface s0
ip route 10.2.2.0 255.255.255.0 interface s1
ip route 10.0.0.0 255.0.0.0 null 0

โดย 10.0.0.0/8 เป็น Major Network (Class A) ที่ไม่มีจริงในระบบ แต่เกิดมาจาก network admin ต้องการประกาศ route 10.0.0.0/8 ซึ่งเป็น route summarization เพียง route เดียว แทนการประกาศเป็น subnet หรือ route ย่อยๆ 10.1.1.0/24 และ 10.2.2.0/24 เพื่อเป็นการประหยัด memory ของ router ตัวอื่นๆ

สำหรับบน router ตัวที่ configure 10.0.0.0/8 null 0 นี้แล้ว

ถ้ามี IP packet เข้ามาแล้ว router จะอ่าน destination IP address แล้วทำ routing lookup ไปที่ routing table เพื่อหาว่ามี route ใดบ้างใน table ที่ match กับ destination IP address นี้ โดย router จะใช้ หลักการเปรียบเที่ยบ destination IP address กับ route ใน table แบบ longest match คือ ดูว่า bit ใน destination IP address match กับ route ใดใน routing table มากที่สุด โดยเทียบกันแบบ bit ต่อ bit เลย เช่น

- ถ้า destination IP address คือ 10.1.1.1 แล้ว จะ match กับ route 10.1.1.0/24 และ packet จะถูก forward ออกทาง s0
- ถ้า destination IP address คือ 10.2.2.2 แล้ว จะ match กับ route 10.2.2.0/24 และ packet จะถูก forward ออกทาง s1

- ถ้า destination IP address เป็น 10.x.x.x ที่นอกเหนือจาก 10.1.1.0/24 และ 10.2.2.0/24 แล้ว จะมาตกอยู่ที่ 10.0.0.0/8 ซึ่งเป็น route ที่ไม่มีใช้งานจริงอยู่ในระบบ (เป็น route ที่ network admin สร้างขึ้นมาลอยๆ บน router ตัวนี้) และ route นี้ได้ถูก configure ให้ชี้ไปยัง null 0 คือให้ drop นั่นหมายความว่า IP packet ใดๆ ที่มี destination ที่นอกเหนือไปจาก 10.1.1.0/24 และ 10.2.2.0/24 แล้ว มันก็จะมาตกอยู่ที่ 10.0.0.0/8 แล้วจะถูก drop ทิ้งไป ที่ interface null 0

เหตุใด route ที่เป็น summarization จะต้องชี้ลง null 0 ?

ตอบ ลองคิดดูว่า ถ้าในความจริง 10.0.0.0/8 ไม่มีจริงในระบบอยู่แต่แรกแล้ว และถ้าเราไม่ได้ configure มันเข้าไปใน routing table (ip route 10.0.0.0 255.0.0.0 null 0) แล้ว พฤติกรรมโดย default ของ router คือ ถ้า destination IP address ไม่ match กับ 10.1.1.0/24 และ 10.2.2.0/24 แล้ว router ก็จะต้อง drop IP packet นั้นๆ ทิ้งไปอยู่แล้ว และการที่เราสร้าง static route 10.0.0.0/8 ขึ้นมา หากเราชี้ interface แบบมั่วๆ หรือชี้โบ๊ ชีเบ๊ แล้วล่ะก็ IP packet นั้นๆ ก็อาจจะ loop กลับมาหาเราทำให้เกิดเหตุการณ์ที่เรียกว่า routing loop ได้ ดังนั้นไหนๆ ก่อนจะมี 10.0.0.0/8 มันก็ drop อยู่แล้ว จะเป็นไรไปถ้าเราสั่ง drop IP packet นั้นๆ ด้วยตัวเราเอง หาก destination IP address ของมันมาตกอยู่ที่ 10.0.0.0/8 โดยการชี้ไปที่ interface null 0 แทน

กรณีศึกษาที่ 2 การนำ interface null 0 มาใช้แก้ปัญหา routing loop

อธิบายเพิ่มเติมสำหรับการนำ interface null 0 มาใช้ในการป้องกันปัญหา routing loop ครับ โดย ภาพ slide ที่ผมนำเสนอนี้ ผมได้นำมาจาก link นี้ครับ:

//pt.slideshare.net/alHandy/cis82-discard-route


Step 1: ข้อให้ท่านพิจารณา IP และ Network Diagram ดังรูปที่ 1 โดยเน้นที่ข้อมูลเหล่านี้ครับ:
- route 172.16.3.0/24 และ 172.16.4.0/24
- Default route ที่ Router A ชี้ไปยัง ISP
- Static route 172.16.0.0/16 ที่ ISP ชี้มายัง Router A

ภาพที่ 1 แสดง IP and Network Diagram



Step 2: จากรูปที่ 2 ข้างล่าง ซึ่งเป็นการแสดง routing table ของ Router A นั้น เราจะเห็นว่า Router A ได้รับ route 172.16.3.0/24 และ 172.16.4.0/24 มาจาก Router B (172.16.2.1) ผ่านทาง routing protocol RIP ดังนั้นในตอนนี้ หาก Router A จะต้อง forward IP packet ที่มี destination 172.16.3.x กับ destination 172.16.4.x แล้ว มันก็จะ forward ไปยัง Router B ที่ 172.16.2.1

ภาพที่ 2 แสดง Routing Table ของ Router A ในสภาวะปกติ



Step 3: Link ระหว่าง Router B กับ Router C ได้ failure ลงไปตามรูปที่ 3

ภาพที่ 3 แสดง Link ระหว่าง Router B กับ Router C ได้ failure ลงไป





Step 4: อ้างอิงข้อมูลจากภาพที่ 4 เนื่องจาก Link ระหว่าง Router B กับ Router C ได้ failure ลงไป ส่งผลให้ Router A ไม่สามารถมองเห็น route 172.16.3.0/24 และ 172.16.4.0/24 ผ่านทาง Dynamic routing protocol RIP ที่จะต้องถูก update มาจาก Router B ได้

และเนื่องด้วย Router A มี Static Default route ชี้ไปยัง ISP ดังนั้น เมื่อมี IP packet ที่มี destination 172.16.3.x กับ destination 172.16.4.x เข้ามาแล้ว IP packet เหล่านี้ก็จะไปตกอยู่ที่ default route 0.0.0.0/0 แล้วถูก forward ออกไปหา ISP และเนื่องด้วย ISP เองก็มี static route 172.16.0.0/16 ชี้กลับมาที่ Router A ดังนั้น ISP ก็จะ forward IP packet ดังกล่าวย้อนกลับมาหา Router A อีกครั้ง จากนั้น Router A ก็ forward IP packet ดังกล่าวกลับไปหา ISP อีกครั้งด้วย default route ซึ่งจะวนเวียนเป็นเช่นนี้ไปตลอด ตราบเท่าที่ link ระหว่าง Router B กับ Router C ยัง down อยู่ ซึ่งจะส่งผลให้เกิด routing loop ในช่วงนี้

ภาพที่ 4 แสดง Routing Table ของ Router A ไม่เห็น route 172.16.3.0/24 และ 172.16.4.0/24 แล้ว อันเป็นผลมาจาก link ระหว่าง Router B กับ Router C ได้ failure ลงไป




Step 5: อ้างอิงข้อมูลจากภาพที่ 5 หากเราไม่ต้องการให้เกิดเหตุการณ์ routing loop เช่นนี้แล้ว เราก็ควรจะดัก IP packet ที่มี destination 172.16.3.x และ 172.16.4.x เหล่านี้เอาไว้ก่อน ด้วยการ configure static route 172.16.0.0/16 ชี้ไปที่ null 0 ด้วย command "ip route 172.16.0.0 255.255.0.0 null 0" บน Router A 
เพื่อที่ว่า Router A จะได้ทำ routing lookup ด้วยการใช้หลักการของ longest match กับ IP packet ที่มี destination 172.16.3.x กับ 172.16.4.x และหลังจากที่ Router A ได้ทำการเปรียบเทียบ destination IP address ตามหลักการ longest match แล้ว Router A จะพบว่า IP packet ที่มี destination 172.16.3.x กับ 172.16.4.x จะไปตกอยู่ที่ route 172.16.0.0/16 ที่เพิ่งได้ configure เข้าไป แทนที่จะไปตกที่ default route เหมือนในตอนแรก

และเนื่องด้วย route 172.16.0.0/16 ได้ชี้ไปที่ interface null 0 ดังนั้น IP packet ที่มี destination 172.16.3.x กับ 172.16.4.x จะถูก drop ทั้งหมดที่ route 172.16.0.0/16 นี้ 
ซึ่งการทำเช่นนี้จะเป็นการป้องกันปัญหา routing loop ได้

ภาพที่ 5 แสดงการเพิ่ม static route 172.16.0.0/16 ชี้ไปยัง interface null 0



Step ุ6: อ้างอิงข้อมูลจากภาพที่ 6หลังจากที่ link ระหว่าง Router B กับ Router C ได้ up กลับมาเป็นปกติแล้ว Router A ก็จะได้รับ route 172.16.3.0/24 และ 172.16.4.0/24 จาก Router B (172.16.2.1) ผ่านทาง routing protocol RIP ดังเดิม ดังนั้น ในตอนนี้แล้ว เมื่อ Router A ได้รับ IP packet ที่มี destination 172.16.3.x กับ 172.16.4.x เข้ามาแล้ว มันก็จะพบว่า มันจะต้อง forward packet ไปยัง Router B ตามหลักการ longest match เช่นเดิมตามปกติที่เคยเป็น

ภาพที่ 6 แสดง Routing Table ของ Router A หลังจากที่ Link ระหว่าง Router B กับ Router C มีสถานะ up เหมือนเดิม


สำหรับเรื่อง routing เบื้องต้นนั้น ใครสนใจลองไปดู VDO ที่ผมสอนเอาไว้ได้ตาม link นี้นะครับ


หลักการคิดง่ายๆ สำหรับ technology คือ อย่าคิดแบบคน ให้คิดแบบอุปกรณ์ ถ้าเราเป็นมันแล้ว เราจะมีวิธีคิด และจัดการกับ data packet ที่อยู่ในมือเราอย่างไร


ขอขอบคุณอาจารย์ Weerachai Yaemvachi ที่ช่วยแนะนำ link ของ Slide ที่ผมได้ใช้ในการเขียนบทความมา ณ. ที่นี้ด้วยครับ

Link อ้างอิงสำหรับ Slide ที่ผมไปนำมาใช้ประกอบการเขียนบทความนี้ครับ:
//pt.slideshare.net/alHandy/cis82-discard-route

โก้-ชัยวัฒน์ (KoChaiwat)



Create Date : 07 กรกฎาคม 2558
Last Update : 9 กรกฎาคม 2558 7:44:16 น. 0 comments
Counter : 5430 Pageviews.  
 
Name
Opinion
*ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก

kochaiwat
 
Location :
กรุงเทพฯ Thailand

[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 692 คน [?]




เริ่มงานครั้งแรกที่บริษัท UIH (United Information Highway) ซึ่งเป็นบริษัทผู้ให้บริการทางด้านการสื่อสารข้อมูล อาทิเช่น Lease Line, Frame Relay และ MPLS และได้ย้ายไปร่วมงานกับบริษัท dtac โดยได้ทำงานเกี่ยวกับ IP Network (Switch/Router/Firewall/F5-Loadbalancer) รวมถึง MPLS Network และ IPRAN (IP Radio Access Network) ซึ่งเป็น IP Network ที่รองรับ Access ของ Mobile System นอกจากนั้นยังสนใจศึกษาเรื่อง IPv6 Address ที่จะมาใช้แทน IPv4 ที่เราใช้งานอยู่ในปัจจุบัน
แต่ด้วยความชอบในการแบ่งปันความรู้ จึงได้มีโอกาสสอน CCNA อยู่ที่สถาบันแห่งหนึ่งในอาคารฟอร์จูนทาวน์ในวันเสาร์-อาทิตย์ ตั้งแต่ปี พ.ศ. 2549 จนถึง พ.ศ. 2553 รวมเป็นเวลา 4 ปี, หลังจากนั้นในระหว่างที่ทำงานที่ dtac ก็ได้สอนเสาร์-อาทิตย์เรื่อยมา

เคยเป็น Trainer หรือ Instructor อย่างเต็มตัว สอนวิชาต่างๆ ของ Cisco อย่างเป็นทางการ (Authorize Training) ที่บริษัท Training Partner Thailand จนถึง มีนาคม 2014 และได้ตัดสินใจออกมาสอนเอง เพราะด้วยความรักในอาชีพการสอน และต้องการที่จะแบ่งปันความรู้ให้กับบุคคลในระดับกลางและล่างเพื่อส่งเสริมให้ได้มีโอกาสได้เรียน และได้มีโอกาสสมัครงาน แต่ด้วยใจรักในบริษัท Cisco ดังนั้น เมื่อมีโอกาสเข้ามา จึงได้ตัดสินใจหยุดการสอน และได้เข้าไปเป็นพนักงาน หรือทำงานที่บริษัท Cisco Thailand ตั้งแต่วันที่ 15 กุมภาพันธ์ 2559 (2016) จนถึงปัจจุบัน

ลูกค้าที่เคยมารับการอบรม เช่น
- Lao Telecom Company Ltd
- CAT Telecom
- TOT
- True
- dtac
- CDG Group
- SITA air transport communications and information technology (www.sita.aero/)
- Infonet Thailand
- MultiLink Co., Ltd
- โรงพยาบาลไทยนครินทร์
- และเคยไปเป็นวิทยากรพิเศษที่ มหาวิทยลัยกรุงเทพสุวรรณภูมิ

ปัจจุบัน โก้-ชัยวัฒน์ ได้ผ่านการสอบ:
- Cisco Certified Internetwork Expert (CCIE) No. 51353 และ
- Cisco Certified Systems Instructor (CCSI) ซึ่งเป็น Certificate ที่ออกให้โดย Cisco สำหรับผู้ที่จะเป็นผู้สอน Cisco Certificate อย่างเป็นทางการ และได้รับ CCSI ID: 34784

วิชาที่สามารถได้สอนได้สำหรับ Cisco Certificate ในขณะนี้คือ
- CCNA Routing & Switching
- CCNA Security (IINS)
- CCNP Route & Switch: ROUTE
- CCNP Route & Switch: SWITCH
- CCNP Route & Switch: TSHOOT
- MPLS (IOS)
- MPLS Traffic Engineering (IOS)
- CCNP Service Provider: SPROUTE (OSPF, IS-IS, BGP, Prefix-List, Route-Map and RPL (Routing Policy Language))
- CCNP Service Provider: SPADVROUTE (Advance BGP, Multicast, and IPv6)
- CCNP Service Provider: SPCORE (MPLS, MPLS-TE, QoS)
- CCNP Service Provider: SPEDGE (MPLS-L3VPN, MPLS-L2VPN (AToM and VPLS)
- IPv6

Certification ที่มีอยู่ในปัจจุบัน CCIE# 51353, CCSI# 34784, CCNA Routing & Switching, CCNA Security (IINS), CCNA Design, CCNP Routing & Switching, CCIP, CCNP Service Provider ซึ่งเป็น Certification ของ Cisco product รวมถึง Certification ของสถาบัน EC-Council (www.eccouncil.org) นั่นคือ Certified Ethical Hacker (CEH)

"เป้าหมายมีไว้ให้ไล่ล่า บ้างเหนื่อยล้าบ้างหยุดพัก
ชีวิตแม้ยากนัก แต่เรารักเราไม่ถอย
ชีวิตแม้ต้องคอย จะไม่ปล่อยไปวันๆ
ชิวิตไม่วายพลัน แม้นสักวันต้องได้ชัย"

"แม้ระยะทางจะไกลแค่ไหน แม้ต้องใช้เวลามากเพียงใด
ขอเพียงแค่มีความตั้งใจ เราต้องได้ไปให้ถึงมัน"

ผมจะไม่ยอมทิ้งฝัน แต่จะไล่ล่ามันให้ถึงที่สุด สักวันฝันอาจจะเป็นจริง ถึงจะไปไม่ถึง แต่ผมก็ภูมิใจที่ได้ทำ
==============================
ความรู้ = เมล็ดพืช
ความพยายามในการเรียนรู้ = ปุ๋ย, น้ำ และความใส่ใจที่จะปลูก
สรุปคือ
ยิ่งพยายามเรียนรู้ ยิ่งพยายามศึกษาในเรื่องใดๆ ผลที่ได้คือ จะได้ความรู้ในเรื่องนั้นๆ อย่างลึกซึ้ง เปรียบเสมือนปลูกต้นไม้ด้วยความใส่ใจ ให้น้ำ ให้ปุ๋ย ผลที่ได้ก็คือ ต้นไม้ที่เติบโตอย่างแข็งแรง และผลิดอกและผลที่งดงามให้เราได้ชื่นชม
ความพยายามอยู่ที่ไหน ความสำเร็จจะอยู่ที่นั่น หรือที่ไหนก็ช่าง แต่เชื่อเถอะ เราจะได้ผลลัพธ์ที่ดีจากความพยายามนั้นๆ ไม่มากก็น้อย
อยากได้อะไรให้พยายาม แล้วความสำเร็จมันจะเข้ามาหาเอง
ผมเชื่อ และมั่นใจอย่างนั้น
===============================
ตอนนี้ผมได้ไปถึงฝัน (CCIE) แล้ว และสิ่งที่ไม่คาดฝัน คือได้ทำงานที่บริษัท Cisco ซึ่งถือได้ว่าไกลเกินฝัน

กว่าผมจะมาถึงจุดนี้ได้ เกิดจากความตั้งใจ มุ่งมั่น และพยายามอย่างไม่ย่อท้อ ศึกษาหาความรู้ และฝึกฝนตนเองอยู่เสมอ จนกระทั่งประสบความสำเร็จ และผมก็ได้พิสูจน์แล้วว่า ความพยายามอยู่ที่ไหน ความสำเร็จอยู่ที่นั่น ขอเพียงแค่อย่าท้อ อย่าถอย และอย่าหยุด

ผมขอเป็นกำลังใจให้กับทุกคน และขอให้ประสบความสำเร็จดังที่มุ่งหวัง ไม่ว่าท่านจะหวังสิ่งใดก็ตามครับ

ท้ายที่สุด ผมขอฝากข้อคิดในเรื่อง Certificate ไว้สักนิดนะครับ:
*** "CCIE และ Certificate อื่นๆ มีไว้เพื่อทำมาหากิน และมีไว้เพื่อข่มตนไม่ให้เกรียน เพราะความเกรียนจะนำมาซึ่งการเป็นเป้าให้คนที่เค้าหมั่นไส้ยิงเอานะครับ" ***

Facebook: ชัยวัฒน์ อมรหิรัญวงศ์
New Comments
[Add kochaiwat's blog to your web]

MY VIP Friends


 
 
pantip.com pantipmarket.com pantown.com