Kiểm soát tuyến đường BGP: Các công cụ khớp tuyến đường nâng cao

Kiểm soát tuyến đường BGP: Các công cụ khớp tuyến đường nâng cao

Tổng quan

Trong các mạng lớn, BGP thường được triển khai. So với IGP, BGP có khả năng kiểm soát tuyến đường linh hoạt hơn. Mỗi tuyến đường BGP có thể mang nhiều thuộc tính đường đi, và có các công cụ khớp tuyến đường riêng biệt, bao gồm: AS_Path Filter và Community Filter. Tùy theo nhu cầu triển khai mạng thực tế, có thể thực hiện các chính sách tuyến đường để kiểm soát việc nhận và phát tuyến đường.

Đồng thời, để nâng cao hiệu suất mạng, BGP cung cấp nhiều tính năng nâng cao và nhiều phương án triển khai. Bài viết này sẽ giới thiệu nguyên lý và cấu hình kiểm soát tuyến đường BGP.

Giới thiệu về kiểm soát tuyến đường BGP

Kiểm soát tuyến đường BGP bao gồm việc kiểm soát việc phát và nhận tuyến đường. Kiểm soát tuyến đường BGP thường được thực hiện thông qua chính sách tuyến đường, tức là sử dụng các công cụ khớp tuyến đường để khớp tuyến đường cụ thể, sau đó sử dụng các công cụ chính sách tuyến đường để kiểm soát việc phát và nhận tuyến đường.

Các công cụ khớp tuyến đường: ACL (Danh sách kiểm soát truy cập), IP Prefix List (Danh sách tiền tố IP), AS_Path Filter (Bộ lọc đường đi AS), Community Filter (Bộ lọc thuộc tính nhóm) v.v.

Công cụ chính sách tuyến đường: Filter-Policy và Route-Policy. BGP có thể kiểm soát tuyến đường bằng cách khớp các thuộc tính như AS_Path và Community.

Biểu thức chính quy

Biểu thức chính quy là một công thức theo một khuôn mẫu nhất định để khớp chuỗi ký tự, bao gồm các ký tự thông thường (như ký tự a đến z) và các ký tự đặc biệt.

Ký tự thông thường

Đối tượng khớp là chính ký tự thông thường đó. Bao gồm tất cả chữ hoa và chữ thường, số, dấu câu và một số ký tự đặc biệt. Ví dụ: 'a' khớp 'a' trong 'abc', '10' khớp '10' trong '10.113.25.155', '@' khớp '@' trong 'xxx@xxx.com'.

Ký tự đặc biệt

Kết hợp với ký tự thông thường để khớp các chuỗi ký tự phức tạp hoặc đặc biệt. Chúng là các ký tự điều khiển hoặc chỗ giữ vị trí độc lập đặt trước hoặc sau ký tự thông thường để giới hạn hoặc mở rộng ký tự thông thường. Chúng mô tả cách sử dụng lặp lại của ký tự đứng trước chúng và giới hạn một phạm vi hoàn chỉnh.

Ví dụ về ký tự đặc biệt

Loại 1:

  • ^a.$: Khớp một chuỗi bắt đầu bằng ký tự 'a' và kết thúc bằng bất kỳ ký tự đơn nào, như 'a0', 'a!', 'ax' v.v.
  • ^100_: Khớp chuỗi bắt đầu bằng '100', như: '100', '100 200', '100 300 400' v.v.
  • ^100$: Chỉ khớp '100'.
  • 100$|400$: Khớp chuỗi kết thúc bằng '100' hoặc '400', như: '100', '1400', '300 400' v.v.
  • ^(65000)$: Chỉ khớp '(65000)'.

Loại 2:

  • abc*d: Khớp ký tự 'c' 0 lần hoặc nhiều lần, như: 'abd', 'abcd', 'abccd', 'abcccd', 'abccccdef' v.v.
  • abc+d: Khớp ký tự 'c' 1 lần hoặc nhiều lần, như: 'abcd', 'abccd', 'abcccd', 'abccccdef' v.v.
  • abc?d: Khớp ký tự 'c' 0 lần hoặc 1 lần, như: 'abd', 'abcd', 'abcdef' v.v.
  • a(bc)?d: Khớp chuỗi 'bc' 0 lần hoặc 1 lần, như: 'ad', 'abcd', 'aaabcdef' v.v.

Loại 3:

  • [abcd]: Khớp bất kỳ ký tự nào trong 'a', 'b', 'c', 'd', như: 'ax', 'b!', 'abc', 'd0' v.v.
  • [a-c 1-2]$: Khớp chuỗi kết thúc bằng ký tự 'a', 'b', 'c', '1', '2', như: 'a', 'a1', '62', 'xb', '7ac' v.v.
  • [^act]$: Khớp chuỗi không kết thúc bằng ký tự 'a', 'c', 't', như: 'ax', 'b!', 'd' v.v.
  • [123].[7-9]: Khớp như: '1 7', '2x9', '348' v.v.

Bộ lọc đường đi AS (AS_Path Filter)

Công cụ khớp tuyến đường: AS_Path Filter

AS_Path Filter là bộ lọc sử dụng thuộc tính AS_Path trong BGP làm điều kiện khớp, tận dụng danh sách AS_Path do tuyến đường BGP mang theo để lọc tuyến đường. Khi không muốn nhận một số tuyến đường từ AS nhất định, có thể sử dụng AS_Path Filter để lọc các tuyến đường mang theo các AS này, từ đó thực hiện từ chối một số tuyến đường.

Sử dụng biểu thức chính quy để khớp AS_Path

Có thể sử dụng biểu thức chính quy để khớp AS_Path của tuyến đường. Ví dụ: khớp AS 103 trong AS_Path=103 102 101.

Câu lệnh cấu hình cơ bản cho AS_Path Filter

  1. Tạo AS_Path Filter.
  2. [Thiết bị] ip as-path-filter { số-bộ-lọc | tên-bộ-lọc } { deny | permit } biểu-thức-chính-quy
  3. AS_Path Filter sử dụng biểu thức chính quy để định nghĩa quy tắc khớp. Lưu ý: Hành vi mặc định của AS_Path Filter là deny.
  4. Áp dụng AS_Path Filter.
[Thiết bị] bgp af-ipv4
[Thiết bị-bgp-af-ipv4] peer { tên-nhóm | địa-chỉ-ipv4 | địa-chỉ-ipv6 } as-path-filter { số-bộ-lọc | tên-bộ-lọc } { import | export }

Trong chế độ xem gia đình địa chỉ BGP, khi áp dụng chính sách tuyến đường cho thông tin tuyến đường BGP, lọc các thông tin tuyến đường không đáp ứng điều kiện dựa trên AS_Path Filter.

[Thiết bị-chính-sách-tuyến-đường] if-match as-path-filter { số-bộ-lọc | tên-bộ-lọc }

Trong chế độ xem Route-Policy, tạo một quy tắc khớp dựa trên AS Path Filter.

Ví dụ cấu hình AS_Path Filter

  1. Tạo AS_Path Filter.
[R2] ip as-path-filter 1 deny _101$
[R2] ip as-path-filter 1 permit .*

Từ chối tuyến đường khởi phát từ AS 101, nhưng cho phép các tuyến đường khác đi qua.

  1. (Cách gọi trực tiếp) Áp dụng AS_Path Filter.
[R2] bgp 102
[R2-bgp] peer 10.1.23.3 as-number 103
[R2-bgp] ipv4-family unicast
[R2-bgp-af-ipv4] peer 10.1.23.3 as-path-filter 1 export
  1. (Cách sử dụng chính sách tuyến đường) Áp dụng AS_Path Filter.
[R2] route-policy AS_Path permit node 10
[R2-route-policy] if-match as-path-filter 1
[R2-route-policy] quit
[R2] bgp 102
[R2-bgp] peer 10.1.23.3 as-number 103
[R2-bgp] ipv4-family unicast
[R2-bgp-af-ipv4] peer 10.1.23.3 route-policy AS_Path export

Xem thông tin AS_Path Filter

  1. Xem AS_Path Filter.
[R2]display ip as-path-filter 1
Số bộ lọc đường đi AS: 2
deny _101$
permit .*
  1. Hiển thị tất cả tuyến đường BGP trong bảng có AS_Path khớp với biểu thức chính quy này.
[R2]display bgp routing-table regular-expression _101$
Tổng số tuyến đường: 1
ID router BGP cục bộ là 10.1.12.2
Mã trạng thái: * - hợp lệ, > - tốt nhất, d - bị dập tắt,
h - lịch sử, i - nội bộ, s - bị ức chế, S - lỗi thời
Nguồn gốc : i - IGP, e - EGP, ? - không đầy đủ
Mạng NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.1.1/32 10.1.12.1 0 0 101i

Tuyến đường 10.1.1.1/32 khởi phát từ AS 101 đã bị AS_Path Filter lọc.

Bộ lọc thuộc tính nhóm (Community Filter)

Công cụ khớp tuyến đường: Community Filter

Community Filter hoạt động cùng với thuộc tính Community, có thể giảm độ phức tạp trong quản lý tuyến đường khi không thể sử dụng IP Prefix List và AS_Path Filter. Bộ lọc thuộc tính nhóm có hai loại:

  • Community Filter cơ bản. Khớp số nhóm hoặc thuộc tính Community công khai.
  • Community Filter nâng cao. Sử dụng biểu thức chính quy để khớp số nhóm.

Thuộc tính Community

Thuộc tính Community công khai

Tên thuộc tính Community Số thuộc tính Community Giải thích
Internet 0 (0x00000000) Thiết bị sau khi nhận được tuyến đường có thuộc tính này có thể gửi tuyến đường đó đến bất kỳ thiết bị BGP ngang hàng nào. Theo mặc định, tất cả các tuyến đường đều thuộc về nhóm Internet.
No_Advertise 4294967042 (0xFFFFFF02) Thiết bị sau khi nhận được tuyến đường có thuộc tính này sẽ không gửi tuyến đường đó đến bất kỳ thiết bị BGP ngang hàng nào.
No_Export 4294967041 (0xFFFFFF01) Thiết bị sau khi nhận được tuyến đường có thuộc tính này sẽ không gửi tuyến đường đó ra ngoài AS.
No_Export_Subconfed 4294967043 (0xFFFFFF03) Thiết bị sau khi nhận được tuyến đường có thuộc tính này sẽ không gửi tuyến đường đó ra ngoài AS. Nếu sử dụng liên minh, cũng không phát hành tuyến đường này đến các con AS khác trong liên minh.

Định dạng thuộc tính Community: Giá trị của một thuộc tính Community có độ dài 32 bit, có thể được trình bày dưới hai dạng:

  • Định dạng số nguyên thập phân.
  • Định dạng AA:NN, trong đó AA biểu thị số AS, NN là số tự định nghĩa.

Câu lệnh cấu hình cơ bản để đặt Community

  1. Trong chính sách tuyến đường, đặt giá trị thuộc tính Community cho tuyến đường.
[Thiết bị-chính-sách-tuyến-đường] apply community { số-thuộc-tính | aa:nn | internet | no-advertise | no-export | no-exportsubconfed } [ additive ]
  1. Phát thuộc tính nhóm cho thiết bị ngang hàng (nhóm).
[Thiết bị-bgp-af-ipv4] peer { tên-nhóm | địa-chỉ-ipv4 | địa-chỉ-ipv6 } advertise-community

Theo mặc định, BGP không phát thuộc tính nhóm cho bất kỳ thiết bị ngang hàng (nhóm) nào.

Câu lệnh cấu hình cơ bản cho Community Filter

  1. Tạo Community Filter cơ bản.
[Thiết bị] ip community-filter { cơ bản tên-bộ-lọc | số-bộ-lọc-cơ-bản } { permit | deny } [ số-thuộc-tính | aa:nn | internet | no-export-subconfed | no-advertise | no-export ]

Phạm vi số cho Community Filter cơ bản: 1~99. Trong Community Filter cơ bản, chỉ có thể chỉ định số nhóm hoặc thuộc tính nhóm công khai.

  1. Tạo Community Filter nâng cao.
[Thiết bị] ip community-filter { nâng cao tên-bộ-lọc | số-bộ-lọc-nâng-cao } { permit | deny } biểu-thức-chính-quy

Phạm vi số cho Community Filter nâng cao: 100~199. Trong Community Filter nâng cao, có thể chỉ định biểu thức chính quy làm điều kiện khớp.

  1. Áp dụng Community Filter.
[Thiết bị-chính-sách-tuyến-đường] if-match community-filter { số-bộ-lọc-cơ-bản [ khớp-toàn-bộ ] | số-bộ-lọc-nâng-cao }
[Thiết bị-chính-sách-tuyến-đường] if-match community-filter tên-bộ-lọc [ khớp-toàn-bộ ]

Trong chế độ xem Route-Policy, tạo một quy tắc khớp dựa trên Community Filter.

Ví dụ cấu hình Community Filter

Ví dụ Community Filter cơ bản:

  • Khớp tuyến đường đồng thời mang giá trị Community [100:1,200:1,300:1]. (Nhiều giá trị Community có mối quan hệ "AND".)
ip community-filter 1 permit 100:1 200:1 300:1
  • Khớp tuyến đường mang giá trị Community [100:1] hoặc [200:1,300:1]. (Nhiều nhóm giá trị Community có mối quan hệ "OR".)
ip community-filter 1 permit 100:1
ip community-filter 1 permit 200:1 300:1

Ví dụ Community Filter nâng cao:

  • Khớp tuyến đường mang giá trị Community bắt đầu bằng '10'.
ip community-filter 100 permit ^10

Cấu hình thuộc tính Community

  1. Trên R1, triển khai chính sách tuyến đường để khi thông báo tuyến đường BGP 10.1.1.1/32, mang theo giá trị thuộc tính Community 101:1, các tuyến đường khác không mang theo.

Trên R1, triển khai chính sách tuyến đường để thêm thuộc tính Community cho tuyến đường và cho phép truyền thuộc tính Community cho thiết bị ngang hàng EBGP R2.

[R1] ip ip-prefix 1 permit 10.1.1.1 32
[R1] route-policy Community permit node 10
[R1-route-policy] if-match ip-prefix 1
[R1-route-policy] apply community 101:1
[R1-route-policy] quit
[R1] route-policy Community permit node 20
[R1-route-policy] quit
[R1] bgp 101
[R1-bgp] peer 10.1.12.2 as-number 102
[R1-bgp] peer 10.1.12.2 route-policy Community export
[R1-bgp] peer 10.1.12.2 advertise-community
[R1-bgp] network 10.1.1.1 32
[R1-bgp] network 10.1.2.2 32
  1. Trên R1, triển khai chính sách tuyến đường để khi thông báo tuyến đường BGP 10.1.1.1/32, mang theo giá trị thuộc tính Community 101:1, các tuyến đường khác không mang theo. Trên R2, triển khai chính sách tuyến đường để khi thông báo tuyến đường BGP 10.1.1.1/32, thêm thuộc tính Community no-export.

Cấu hình R2 cho phép truyền thuộc tính nhóm cho thiết bị ngang hàng EBGP R3.

[R2] ip ip-prefix 1 permit 10.1.1.1 32
[R2] route-policy Community permit node 10
[R2-route-policy] if-match ip-prefix 1
[R2-route-policy] apply community no-export additive
[R2-route-policy] quit
[R2] route-policy Community permit node 20
[R2-route-policy] quit
[R2] bgp 102
[R2-bgp] peer 10.1.12.1 as-number 101
[R2-bgp] peer 10.1.23.3 as-number 102
[R2-bgp] peer 10.1.23.3 advertise-community
[R2-bgp] peer 10.1.23.3 route-policy Community export
  1. Trên R3, xem thông tin tuyến đường BGP.
[R3] bgp 103
[R3-bgp] peer 10.1.23.2 as-number 102
[R3-bgp] quit

[R3] display bgp routing-table 10.1.1.1
ID router BGP cục bộ : 10.1.23.3
Số AS cục bộ : 103
Đường đi: 1 có sẵn, 1 tốt nhất, 1 được chọn
Thông tin mục nhập bảng định tuyến BGP của 10.1.1.1/32:
Từ: 10.1.23.2 (10.1.12.2)
Thời gian tồn tại tuyến đường: 00h00m21s
Giao diện ra trực tiếp: GigabitEthernet0/0/2
Nexthop gốc: 10.1.23.2
Thông tin Qos : 0x0
Community:<101:1>, no-export
Đường đi AS 102 101, nguồn igp, pref-val 0, hợp lệ, bên ngoài, tốt nhất,
được chọn, hoạt động, pre 255
Chưa được quảng cáo cho bất kỳ thiết bị ngang hàng nào

Trên R3, xem tuyến đường 10.1.1.1/32, phát hiện mang hai thuộc tính Community là 101:1 và no-export.

Cấu hình Community Filter

R2 truyền tuyến đường cho thiết bị ngang hàng EBGP R3. Trên R2, triển khai chính sách tuyến đường để lọc các tuyến đường mang giá trị thuộc tính Community 101:1.

  1. Cấu hình Community Filter, khớp tuyến đường có chứa Community 101:1.
[R2] ip community-filter 1 permit 101:1
  1. Gọi Community Filter.
[R2] route-policy Community deny node 10
[R2-route-policy] if-match community-filter 1
[R2-route-policy] quit
[R2] route-policy Community permit node 20
[R2-route-policy] quit
[R2] bgp 102
[R2-bgp] peer 10.1.23.3 route-policy Community export
  1. Xem thông tin Community Filter của R2.
[R2]display ip community-filter 1
Số bộ lọc Community: 1
 permit 101:1
  1. Xem thông tin tuyến đường BGP của R2.
[R2]dis bgp routing-table 10.1.1.1
ID router BGP cục bộ : 10.1.12.2
Số AS cục bộ : 102
Đường đi: 1 có sẵn, 1 tốt nhất, 1 được chọn
Thông tin mục nhập bảng định tuyến BGP của 10.1.1.1/32:
Từ: 10.1.12.1 (10.1.1.1)
Thời gian tồn tại tuyến đường: 00h13m39s
Giao diện ra trực tiếp: GigabitEthernet0/0/1
Nexthop gốc: 10.1.12.1
Thông tin Qos : 0x0
Community:<101:1>
Đường đi AS 101, nguồn igp, MED 0, pref-val 0, hợp lệ, bên ngoài, tốt nhất, được chọn, hoạt động, pre 255
Chưa được quảng cáo cho bất kỳ thiết bị ngang hàng nào

Trên R2, xem tuyến đường 10.1.1.1/32, phát hiện mang thuộc tính Community 101:1. Lọc tuyến đường này bằng Community Filter.

  1. Xem mục nhập bảng tuyến đường của R3.
[R3]display bgp routing-table
ID router BGP cục bộ là 10.1.23.3
Mã trạng thái: * - hợp lệ, > - tốt nhất, d - bị dập tắt,
 h - lịch sử, i - nội bộ, s - bị ức chế, S - lỗi thời
Nguồn gốc : i - IGP, e - EGP, ? - không đầy đủ
Tổng số tuyến đường: 1
 Mạng NextHop MED LocPrf PrefVal Path/Ogn
*> 10.1.2.2/32 10.1.23.2

R3 không nhận được thông tin tuyến đường BGP 10.1.1.1/32.

Thẻ: BGP AS_Path Filter Community Filter

Đăng vào ngày 12 tháng 6 lúc 21:21