Thursday, May 28, 2015

BGP filter with Regulare expression



  1. GIỚI THIỆU REGULARE EXPRESSION
  • Regular Expression  là h thng chun các biu din các kí t “string” , là một công cụ rất mạnh trong BGP khi sử dụng filter route theo các AS.
  • Cấu hình topology như hình vẽ
    • R1 thiết lập eBGP với R2, R2 eBGP R3, R3 eBGP R4
    • R1 adver 8.8.8.0/24 vào BGP
  • Kiểm tra bảng BGP trên R4:
R4#show ip bgp
BGP table version is 2, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 8.8.8.0/24       10.1.34.3                              0 300 200 100 i

  • Các AS quảng bá mạng 8.8.8.0/24 đến AS 400 được viết theo thứ tự từ phải qua trái
    • AS_PATH:         300 200 100 I
  • Chuyển đổi sang Regular Expression ta thêm vào các ký tự đặc biệt vào AS_PATH
    • AS_PATH:        ^300_200_100$
      • ^ bắt đầu AS_PATH
      • $ kết thúc AS_PATH
      • _ giữa các AS
    • Regular expression :
      • ^300_  peer AS ( thằng AS hàng xóm )
      • _200_  transit AS ( AS mà route đi qua)
      • _100$   origin AS ( route được sinh ra từ AS)
      • ^300_200_100$ transit path
      • ^*     Route Local AS
      • .*       Match tất cả
  1. FILTER BẰNG REGULAR EXPRESSION
    • Filter dựa trên một số reguler expression căn bản trên
    • Command:
ip as-path access-list x deny/permit {regular expression}
!
router bgp {AS}
neighbor a.b.c.d filter-list x in/out

  1. TEST FEATURE:
    • Trên R2 tạo mạng  2.2.2.0/24 và adver vào BGP
R4#show ip bgp
BGP table version is 5, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24       10.1.34.3                              0 300 200 i
*> 8.8.8.0/24       10.1.34.3                              0 300 200 100 i

  • Tiến hành filter mạng 8.8.8.0/24 bằng 3 cách sử dụng regular expression như ở trên
  • Cách 1: filter dựa vào peer AS 300:
ip as-path access-list 1 deny ^300_ 
ip as-path access-list 1 permit .*
!
router bgp 400
 neighbor 10.1.34.3 filter-list 1 in

 BGP(0): 10.1.34.3 rcvd UPDATE w/ attr: nexthop 10.1.34.3, origin i, path 300 200 100
 BGP(0): 10.1.34.3 rcvd 8.8.8.0/24 -- DENIED due to: filter-list;
 BGP(0): no valid path for 8.8.8.0/24
 BGP(0): 10.1.34.3 rcvd UPDATE w/ attr: nexthop 10.1.34.3, origin i, path 300 200
 BGP(0): 10.1.34.3 rcvd 2.2.2.0/24 -- DENIED due to: filter-list;

 Nhận xét: R4 cùng học mạng 2.2.2.0/24 và mạng 8.8.8.0/24 qua peer AS 300. nên khi filter dựa vào peer AS thì cả 2 mạng trên đều bị filter

*Cách 2: filter dựa vào transit AS 200 :
ip as-path access-list 1 deny _200_
ip as-path access-list 1 permit .*
!
router bgp 400
 neighbor 10.1.34.3 filter-list 1 in

 BGP(0): 10.1.34.3 rcvd UPDATE w/ attr: nexthop 10.1.34.3, origin i, path 300 200 100
 BGP(0): 10.1.34.3 rcvd 8.8.8.0/24 -- DENIED due to: filter-list;
 BGP(0): no valid path for 8.8.8.0/24
 BGP(0): 10.1.34.3 rcvd UPDATE w/ attr: nexthop 10.1.34.3, origin i, path 300 200
 BGP(0): 10.1.34.3 rcvd 2.2.2.0/24 -- DENIED due to: filter-list;
 BGP(0): no valid path for 2.2.2.0/24
 BGP(0): nettable_walker 2.2.2.0/24 no best path
 BGP(0): nettable_walker 8.8.8.0/24 no best path

Nhận xét: giống trường hợp trên cả 2 mạng đều bị filter. Mạng 2.2.2.0/24 có nguồn gốc là AS 200 nó cũng được xem như là transit AS = 200 nên bị filter

* Cách 3: filter dựa vào origin AS cac route có nguồn gốc AS 100:
ip as-path access-list 1 deny _100$
ip as-path access-list 1 permit .*
!
router bgp 400
 neighbor 10.1.34.3 filter-list 1 in

 10.1.34.3 rcvd UPDATE w/ attr: nexthop 10.1.34.3, origin i, path 300 200 100
 BGP(0): 10.1.34.3 rcvd 8.8.8.0/24 -- DENIED due to: filter-list;
 BGP(0): no valid path for 8.8.8.0/24
 BGP(0): 10.1.34.3 rcvd UPDATE w/ attr: nexthop 10.1.34.3, origin i, path 300 200
 BGP(0): 10.1.34.3 rcvd 2.2.2.0/24...duplicate ignored
 BGP(0): nettable_walker 8.8.8.0/24 no best path.

R4(config)#do show ip bgp
BGP table version is 16, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.0/24       10.1.34.3                              0 300 200 i

Nhận xét: route 8.8.8.0/24 có nguồn gốc từ AS 100 đã bị filter . Trên BGP table R4 còn route 2.2.2.0/24


Kết luận: Regular là một công cụ rất mạnh, trên đây chỉ mới là những trường hợp đơn giản. Bằng cách kết hợp filter AS Path bằng regular chúng ta có thể filter tất cả các route từ những AS_PATH  bằng cách cấu hình đơn giản ở trên.

No comments:

Post a Comment