BGP Regular Expressions Examples – Ví dụ về Regex trong BGP
Biểu thức chính quy (Regular Expressions / Regex) thường được dùng để chỉnh sửa tuyến (route) hoặc lọc (filter) trong BGP. Ở bài học này, chúng ta sẽ xem một số regex rất hữu ích.
Để dễ theo dõi, tài liệu chia thành 2 phần:
Trong phần này, tài liệu liệt kê ý nghĩa của từng ký tự/chuỗi regex hay dùng trong ngữ cảnh BGP:
Ghi chú ngữ nghĩa: Regex trong BGP thường khớp dựa trên chuỗi AS_PATH (dãy AS) sau khi nó được biểu diễn thành văn bản. 2) Examples (Các ví dụ)
Phần này là các mẫu regex tương ứng với các kiểu tình huống thường gặp khi lọc/chỉnh sửa tuyến.
Tài liệu có một danh sách ví dụ; mình dịch theo đúng ý từng dòng: Ví dụ A: Khớp với AS PATH rỗng
Tài liệu kết lại bằng gợi ý:
Biểu thức chính quy (Regular Expressions / Regex) thường được dùng để chỉnh sửa tuyến (route) hoặc lọc (filter) trong BGP. Ở bài học này, chúng ta sẽ xem một số regex rất hữu ích.
Để dễ theo dõi, tài liệu chia thành 2 phần:
- Các ký tự (Characters)
- Các ví dụ cụ thể (Examples)
Trong phần này, tài liệu liệt kê ý nghĩa của từng ký tự/chuỗi regex hay dùng trong ngữ cảnh BGP:
- ?
Lặp lại ký tự/trước đó 0 lần.
- *
Lặp lại ký tự/trước đó 0 lần hoặc nhiều lần.
- +
Lặp lại ký tự/trước đó 1 lần hoặc nhiều lần.
- ^
Khớp với đầu của chuỗi (beginning of a string).
- $
Khớp với cuối của chuỗi (end of a string).
- [] (ngoặc vuông)
Chỉ định một dải/range ký tự hoặc giá trị để khớp.
- -
Thường dùng để mô tả khoảng (range) ở trong ngoặc.
(Trong ngữ cảnh chuỗi AS-path được trình bày theo dạng số, dấu - có nghĩa là “từ … đến …”.)
- " (dấu ngoặc kép)
Là ký tự escape trong một số cú pháp BGP confederations (tài liệu nói là: You’ll need this for BGP confederations).
Ghi chú ngữ nghĩa: Regex trong BGP thường khớp dựa trên chuỗi AS_PATH (dãy AS) sau khi nó được biểu diễn thành văn bản. 2) Examples (Các ví dụ)
Phần này là các mẫu regex tương ứng với các kiểu tình huống thường gặp khi lọc/chỉnh sửa tuyến.
Tài liệu có một danh sách ví dụ; mình dịch theo đúng ý từng dòng: Ví dụ A: Khớp với AS PATH rỗng
- ^$ (trong ảnh hiển thị dạng khớp rỗng)
Khớp với AS_PATH rỗng để tìm tất cả tiền tố (prefixes) từ local AS.
- ^AS1_ (tài liệu ghi kiểu “connected directly to our AS”)
Khớp các prefix mà AS đó (ví dụ AS 51 trong ảnh) nằm ngay đầu và tuyến đó được kết nối trực tiếp.
- _AS51_ (tài liệu diễn giải theo hướng “transit AS 51”)
Khớp các prefix mà AS 51 nằm trong tuyến dưới dạng transit, tức tuyến đi qua AS51 nhưng không phải điểm kết nối trực tiếp đầu cuối.
- Có dòng mẫu dạng ^_51 / _51$ (trong ảnh thể hiện rõ “beginning of the AS PATH” hoặc “ends of the AS PATH”).
Ý chính:
- Khớp khi AS 51 ở đầu chuỗi
- hoặc khớp khi AS 51 ở cuối chuỗi
- Các mẫu dạng:
- _AS51(-|_)? / (…)+
- hoặc các mẫu cho thấy có AS đứng “ngay phía trước” trong đường đi.
- ^A(65020)$ (trong ảnh ghi dạng “matches prefixed from confederation per 65200”)
Ý nghĩa: khớp tuyến bắt nguồn từ một confederation AS (tài liệu dùng để nói thêm rằng confederation có thể cần cú pháp/escape đặc thù).
Tài liệu kết lại bằng gợi ý:
- Nếu muốn thực hành các ví dụ này, bạn có thể dùng một BGP looking glass / glass server để test regex khi áp policy.
- Sau đó, có lời mời người đọc: nếu bạn có thêm regex “hữu dụng”, hãy chia sẻ.
- Previous Lesson: BGP Remove Private AS
- Next Lesson: BGP Route Reflector