ก่อนที่จะกล่าวถึงรายละเอียดของการ redistribute route ระหว่าง routing protocol ที่แตกต่างกันนั้น ผมขออ้างถึงบทความเก่า บทความหนึ่ง นั่นก็คือ
ดังนั้นในบทความนี้จะกล่าวถึงเรื่องการ redistribute route ข้ามกันไป ข้ามกันมา ระหว่าง 2 routing protocol (หรือ การประกาศ subnet ข้ามกันระหว่าง routing protocol สอง protocol ที่ต่างกัน) โดย routing protocol ทั้งสองถูกดูแลอยู่ภายใน AS เดียวกัน หรืออยู่ภายใต้การดูแลของ Administrator กลุ่มเดียวกัน
โดยตัวอย่างที่จะทำให้ท่านเข้าใจในเรื่องของ OSPF process นั้น หากท่านสนใจ ท่านสามารถเข้าไปอ่านได้ที่
สำหรับเรื่องการ Redistribute Route ผมจะขอยกตัวอย่างโดยมี Router ต่อกันอยู่ 3 ตัว ดังรูปที่ 1 ข้างล่างครับ
รูปที่ 1: แสดงตัวอย่างการ redistribute route ระหว่าง routing protocol 2 protocol (2 IGP domain)
โดยปกติแล้ว R2 จะเห็น routing entries (network) ทั้งหมด (เห็นทั้ง 10.0.0.0/8 และ 172.16.0.0/16) เพราะ ทั้ง R1 และ R3 จะ update routing ไปให้กับ R2
- แต่ R1 จะไม่เห็น subnet 172.16.0.0/16 ที่อยู่ข้างหลัง R3
- และ R3 เอง ก็จะไม่เห็น subnet 10.0.0.0/8 ที่อยู่ข้างหลัง R1 ด้วยเช่นกัน
-
เพราะอะไรน่ะหรือ???? เพราะโดย default แล้ว R2 จะไม่ประกาศ network ที่เรียนรู้มาจาก Routing Protocol (Routing Process) นึง (เช่น ospf) ให้กับอีก Routing Protocol (Routing Process) นึง (เช่น rip)
แต่ถ้าต้องการให้ R1 เห็น 172.16.0.0/16 และให้ R3 เห็น 10.0.0.0/8 แล้วนั้น เราสามารถทำได้ครับ โดยการ configure ที่ R2 เพิ่มเติมด้วยคำสั่ง redistribute ดังนี้ครับ
บน R2# show run
!
router ospf 100
redistribute rip subnets
!
router rip
redistribute ospf 100 metric 5
router ospf 100 redistribute rip subnetsคือ ดูด route ของ rip เข้ามาไว้ใน ospf 100 และที่ต้องใส่คำว่า
subnets เพราะถ้าไม่ใส่คำสั่งนี้แล้ว R2
จะไม่โยน route ใดๆ ที่เป็นแบบ subnet เข้าไปใน ospf 100
แต่จะทำการเลือกโยนเฉพาะ route ที่เป็นแบบ major network ตาม class เท่านั้นเข้าไปเข้าไปใน ospf 100 และเมื่อเราใช้คำสั่ง show ip route บน R3 แล้วเราจะพบแต่เฉพาะ route ที่เป็นแบบ major network เท่านั้น ดังนั้น เราจึงควรเพิ่มคำสั่ง หรือ option command
"subnets" นี้ด้วยทุกครั้งเวลาที่มีการ redistribute routes จาก routing protocol ใดๆ เข้าไปสู่ ospf
ตัวอย่าง กรณีที่เราไม่ได้ใส่ option command "subnets" จะมี message เตือนว่า "% Only classful networks will be redistributed"
R2(config-router)# redistribute rip
% Only classful networks will be redistributed
router rip redistribute ospf 100 metric 5คือ ดูด route ของ ospf 100 เข้ามาไว้ใน rip และที่ต้องใส่คำว่า metric 5 เพื่อเป็นการ set ค่า metric = 5 ให้กับ route ที่ R2 จะโยนเข้าไปใน rip เพราะถ้าไม่ใส่ คำสั่ง "metric 5" นี้แล้ว R2 จะโยน route ที่ถูกดูดมาจาก ospf 100 เข้าไปสู่ rip network ด้วยค่า metric = infinity (โดย default) ซึ่งท้ายสุดแล้วที่ R1 เมื่อทำการ show ip route command เราจะไม่พบ route ใดๆ (172.16.0.0/16) ที่ถูกโยนมาจาก ospf 100 เลย เนื่องจากกฏของ maximum hop count ของ rip ที่มีค่า metric ได้ไม่เกิน 15 นั่นเอง ดังนั้นจึงควรใช้คำสั่ง "metric 5" หรือ "metric X" เมื่อ X มีค่าน้อยกว่า 15 นี้ด้วยทุกครั้งเวลามีการ redistribute route จาก ospf เข้าไปสู่ rip
สำหรับ Option ของการ Redistribute Route เข้าสู่ OSPF Domain นั้น ท่านสามารถติดตามได้จากบทความตาม URL ข้างล่างนี้ครับ
//www.bloggang.com/mainblog.php?id=likecisco&month=23-10-2011&group=3&gblog=9โดยปกติแล้วการใช้คำสั่ง redistribute ดังตัวอย่างข้างบน จะเป็นการ redistribute route ทั้งหมดข้ามหากันและกันระหว่างสอง routing protocol ซึ่งในบางครั้ง เราไม่ต้องการ redistribute route ทั้งหมดข้ามหากัน แต่เราต้องการเพียง redistribute บาง route เท่านั้นข้ามไป
ซึ่งในการ redistribute route ก็ยังมี option เพิ่มเติมอีก นั่นก็คือ เราสามารถ filter ได้ว่า route ไหนที่ต้องการจะโยนข้ามไป และ route ไหนที่เราไม่ต้องการจะโยนข้ามไป ซึ่ง option ดังกล่าวมีให้เลือกใช้หลายตัว เช่น route-map และ distribute-list รวมไปถึงเรื่องของการคัดกรอง route ด้วยการใช้ prefix-list หรือใช้ access-list เพื่อที่จะใช้ในการคัดกรองว่า route ไหนบ้างที่เราจะให้ redistribute และ route ไหนบ้างที่เราจะไม่ให้ redistribute ซึ่งเรื่องของการ filter route คงต้องกล่าวกันในบทอื่นครับ
สิ่งที่ต้องพึงระวังในการใช้ command "redistribute"!!!
ด้วยเหตุผลของ High Availability หรือการทำ Redundancy แล้ว การที่มี router เพียงตัวเดียวที่รับผิดชอบในการ redistribute route ระหว่าง routing protocol 2 domain (2 routing protocol หรือ 2 IGP domain) อาจจะมีความเสี่ยงในเรื่องของ Single Point of Failure ซึ่งจากรูปตัวอย่างข้างบน (รูปที่ 1) แล้ว จะเห็นได้ว่า หาก router R2 ได้ failure ลงไปแล้ว จะทำให้การสื่อสารข้ามกันระหว่าง 2 IGP domain (ระหว่าง RIP กับ OSPF) มีความล้มเหลว
ดังนั้นหลายๆ ท่านก็จะทำ redundancy โดยการเอา router 2 ตัวมาทำหน้าที่ในการ redistribute route ดังภาพตัวอย่างที่ 2 (R2 และ R4 ทำหน้าที่ redistribute route) ซึ่งผลที่ตามมาคือ หากท่านไม่ทำ policy หรือการกรอง route ให้ดี ท่านก็จะพบปัญหาเรื่อง routing loop ตามมาทันที (สังเกต step ที่เป็นวงกลมสี่เขียวขี้ม้า ตั้งแต่ step ที่ 1 ถึง step ที่ 5 แล้วจะวนไปเรื่อยๆ)
รูปที่ 2: แสดงตัวอย่างของ routing loop ที่เกิดจากการใช้ router สองตัวมาทำการ redistribute route
จากภาพตัวอย่างที่ 2 ที่แสดงปัญหา routing loop แล้ว หากท่าต้องการแก้ปัญหาในเรื่อง routing loop แล้ว ในวิชาที่เกี่ยวกับ routing ในระดับ CCNP จะมีตัวอย่างการทำ policy เพื่อ filter หรือกรอง route ไม่ให้เกิดปัญหา routing loop
ซึ่งมีวิธีหนึ่งที่วิชานี้ได้สอนเอาไว้ คือการทำ route tag โดยผมจะไม่ขอกล่าวในรายละเอียดของวิธีการป้องกันปัญหา routing loop ในบทความนี้ แต่อาจจะไปเขียนเป็นบทความใหม่ให้นะครับ คงต้องขอเวลาหน่อย ช่วงนี้งานยุ่งจริงๆ ^^"
ขอบคุณครับ
โก้-ชัยวัฒน์ (kochaiwat)
ขอบคุณมากครับ