Overview

prefix list ก็เหมือนกับ access list ที่ใช้สำหรับเลือกประกาศ route (prefixes) หรือคัดกรอง route
จุดเด่นของ prefix list เหนือกว่า access list คือมีความยืดหยุ่นในการกำหนด ip และ network ต่างๆ รวมถึงเขียนคำสั่งได้สั้นกว่า
แต่ข้อด้วยก็คือ ต้องทำความเข้าใจเรื่อง syntax และ options ต่างๆ เพิ่มเติมขึ้นมา

การเอา prefix list และ access list ไปใช้งานที่พอนึกออก ได้แก่

  • redistribute route ระหว่าง routing protocol ต่าง ๆ
  • route advertisements : ใช้ route-map เพื่อประกาศ route และ filter route ไปยัง bgp neighbors ต่าง ๆ

ขั้นตอนเบื้องต้นสำหรับการทำ match route ประมาณนี้

  1. สร้างรายการ ip prefix-list
  2. สร้างเงื่อนไข route-map โดยอ้างอิงจากชื่อ prefix list ที่สร้างขึ้นในข้อ 1
  3. นำ route-map ที่สร้างขึ้นไป apply ใช้งานเพื่อ control routing หรือ filter route ตามต้องการ

คำสั่งรายละเอียด syntax ของ prefix list

เขียนที่โหมด Global Configuration

ip prefix-list name [ seq number ] { permit | deny } prefix [ eq length | [ ge length ] [ le length ]]

name – ชื่อของ IP prefix list เป็น alphanumeric string ได้สูงสุด 63 characters.

seq number – (Optional) ลำดับ order ของรายการนี้ในชื่อ prefix list name ข้างบน เป็นค่าตัวเลขระหว่าง 1 ถึง 4294967294.

permit – อนุญาต routes หรือ ip packets ที่ตรงกับ prefix ด้านล่าง
deny – ไม่อนุญาต routes หรือ ip packets ที่ตรงกับ prefix ด้านล่าง

prefix – IP prefix รูปแบบของ A.B.C.D/length

eq length – (Optional) ระบุจำนวนของ prefix length ที่ต้องการ match เป็นค่าตัวเลขระหว่าง 1 ถึง 32
ge length – (Optional) ระบุจำนวนของ prefix length ที่ต้องการ match เป็นค่าตัวเลขระหว่าง 1 ถึง 32
le length – (Optional) ระบุจำนวนของ prefix length ที่ต้องการ match เป็นค่าตัวเลขระหว่าง 1 ถึง 32

กรณีที่ไม่มีรายการใดๆ ใน prefix-list match เลยจะเป็น implicit deny คือ พูดง่ายๆ คือจะ deny หมดนั้นเอง

Related Commands เกี่ยวกับ prefix list

  • clear ip prefix-list สำหรับ Clears counters ของ prefix list
  • prefix-list ไว้สำหรับ applies a prefix list ใน BGP peer.
  • show ip prefix-list ดูข้อมูลเกี่ยวกับ ip prefix list  ที่ประกาศเอาไว้ที่ Global Configuration

เปรียบเทียบการทำ access list และ prefix list ไปใช้งาน

จากคำสั่ง extended access-list ด้านบน พบว่า

  • deny ip host 10.0.0.0 host 255.255.255.0 เขียนในรูปแบบ prefix-list เป็น deny 10.0.0.0/24
  • permit ip any any เขียนในรูปแบบ prefix-list เป็น permit 0.0.0.0/0 le 32

ตัวอย่างการใช้ Extended ACLs สำหรับ BGP Filtering

The source portion of the extended ACL is used to match the network portion of the BGP route
and the destination portion of the ACL is used to match the subnet mask of the BGP route.

ไปดูคำอธิบายตัวอย่างการใช้งานของ extended ACL ด้านล่าง

access-list 100 permit ip 10.0.0.0  0.0.0.0  255.255.0.0  0.0.0.0
Matches 10.0.0.0/16 – Only

access-list 100 permit ip 10.0.0.0  0.0.0.0  255.255.255.0  0.0.0.0
Matches 10.0.0.0/24 – Only

access-list 100 permit ip 10.1.1.0  0.0.0.0  255.255.255.0  0.0.0.0
Matches 10.1.1.0/24 – Only

access-list 100 permit ip 10.0.0.0  0.0.255.0  255.255.255.0  0.0.0.0
Matches 10.0.X.0/24 – Any number in the 3rd octet of the network with a /24 subnet mask.

access-list 100 permit ip 10.0.0.0  0.255.255.0  255.255.255.0  0.0.0.0
Matches 10.X.X.0/24 – Any number in the 2nd & 3rd octet of the network with a /24 subnet mask.

access-list 100 permit ip 10.0.0.0  0.255.255.255  255.255.255.240  0.0.0.0
Matches 10.X.X.X/28 – Any number in the 2nd, 3rd & 4th octet of the network with a /28 subnet mask.

access-list 100 permit ip 10.0.0.0  0.255.255.255 255.255.255.0  0.0.0.255
Matches 10.X.X.X/24 to 10.X.X.X/32 – Any number in the 2nd, 3rd & 4th octet of the network with a /24 to /32 subnet mask.

access-list 100 permit ip 10.0.0.0  0.255.255.255  255.255.255.128  0.0.0.127
Matches 10.X.X.X/25 to 10.X.X.X/32 – Any number in the 2nd, 3rd & 4th octet of the network with a /25 to /32 subnet mask

เรามาดู Class A, B, C ว่าสามารถเขียนในรูปแบบ prefix list ได้อย่างไร ?

มาไล่ดูระดับ Octet ของ ipv4 32 bit โดยแบ่งเป็น 4 ชุด ชุดละ 8 bit แล้วคั่นด้วยจุด ได้ดังนี้

Class       Octet#1          Octet#2     Octet#3      Octet#4        Subnet Mask
Class A    0xxxxxxxx     Host              Host               Host              255.0.0.0
Class B    10xxxxxxx     Network       Host               Host              255.255.0.0
Class C    110xxxxx       Network        Network        Host             255.255.255.0

มีค่าเป็นเลขฐานสิบระหว่างหากมองเป็นเลขฐานสิบ จะได้ IP address ที่มี octet แรก

Class A – 1 ถึง 126 (ฐานสอง 00000001 – 01111111)
Class B – 128 ถึง 191 (ฐานสอง 10000001 – 10111111)
Class C – 192 ถึง 223 (ฐานสอง 11000001 – 11011111)

เขียนเป็น classful subnet ได้ดังนี้

ip prefix-list CLASS_A permit 0.0.0.0/1 ge 8 le 8

ip prefix-list CLASS_B permit 128.0.0.0/2 ge 16 le 16

ip prefix-list CLASS_C permit 192.0.0.0/3 ge 24 le 24

default route เขียนได้เป็น 0.0.0.0/0

any routes ( ทุกๆ route) เขียนได้เป็น 0.0.0.0/0 le 32
คือ เช็ค 0 bits  ซึ่งหมายถึงไม่เช็คอะไรเลย subnet mark เป็นได้ตั้งแต่ 32 bits หรือน้อยกว่าไล่เรียง /31 /30 /29 …

 มาดูคำอธิบายการใช้งาน le และ ge ของ prefix-list เพิ่มเติม

A.B.C.D/LEN ge GE le LE – เมื่อใช้งาน le หรือ ge ก็มีเงื่อนไขที่ว่า LEN < GE <= LE

ตัวอย่าง

1) ip prefix-list example-1 seq 10 permit 172.16.0.0/16 ge 24 le 26 

– จากคำสั่งด้านบนเช็ค bit ของ network /16 ว่า match หรือไม่ ?
– จากนั้นไปดู subnet mask ว่าอยู่ระหว่าง 24 ถึง 26 หรือไม่ ?

คำอธิบาย
– เป็น class B network 172.16.0.0 (172.16.0.0/16) ที่ permit เฉพาะ subnets with a /24, /25 หรือ /26 mask (ge 24 le 26)
– ส่วน network 172.16.0.0/16 ไม่ match เพราะว่าไม่ได้มี mask เป็น /24, /25 หรือ /26.

2) ip prefix-list example-1 seq 10 permit 10.10.10.0/24 ge 28

– หากคำสั่งมีระบุเฉพาะ ge (ไม่มีการระบุ le) หมายถึงมากกว่าหรือเท่ากับ จนถึง /32
– ในกรณีคือ ทุก subnet within the 10.10.10.0/24 ที่มี subnet mask (/28 ถึง /32) ระหว่าง 255.255.255.240 ถึง  255.255.255.255
– ส่วน 10.10.10.0/24 ไม่ match เพราะไม่ได้มี mask เป็น /28

3) ip prefix-list example-1 seq 10 permit 10.10.10.0/24 le 28

– หากคำสั่งมีระบุเฉพาะ le (ไม่มีการระบุ ge) หมายถึง น้อยกว่าหรือเท่ากับ จนถึง /len นั้นคือ /24 ในกรณีคำสั่งด้านบน
– ในกรณีคือ ทุก subnet within the 10.10.10.0/24 ที่มี subnet mask (/24 ถึง /28) ระหว่าง 255.255.255.0 ถึง 255.255.255.240
– ส่วน 10.10.10.0/24 match ด้วย

4) กรณีต้องการรวม network 172.16.8.x/28 5 networks ควรเขียน prefix list เป็นอย่างไร ?

172.16.8.0/28
172.16.8.16/28
172.16.8.32/28
172.16.8.48/28
172.16.8.64/28

ย่อย octet ที่ 4 มาดู

00 0 0 0 0 0 0 0
160 0 0 1 0 0 0 0
320 0 1 0 0 0 0 0
480 0 1 1 0 0 0 0
640 1 0 0 0 0 0 0

จะได้ 172.16.8.0/25 ge 28 le 28
ที่เป็น /25 เพราะ บิตที่ 25 ยังเหมือนกัน (172.16.8 อันนี้คือ 24 บิตที่เหมือนกัน)

แหล่งอ้างอิงและข้อมูลประกอบ

เข้าใจการ match route ของ ip prefix list แบบมีเงื่อนไข eq, ge และ le