Wednesday, April 1, 2015

BGP filter

             * Một số tool filter trong BGP:

  1. AS-Path List
  2. Distribute-list
  3. Prefix-list
  4. Distance
  5. Route-map


                   1. AS-Path List .
    + filter các route dựa trên thuộc tính AS mà mỗi route luôn mang theo khi update
    + filter route được update  hoặc update tới các peer trước khi đưa lên bảng BGP RIB

    Ưu điểm:
    + không tạo black hole.
    + giảm hiệu suất làm việc CPU.
    Nhược điểm:
    + không filter được route mong muốn. (filter cả AS path)

    • AS-Path List là một danh sách mô tả các hoạt động Permit hoặc Deny với điều kiện match là thuộc tính AS mà mỗi route mang theo được mô tả bởi các Regular Expression
    • Regular Expression  là hệ thống chuẩn các biểu diễn các kí tự “string”. Sau đây là một số biểu diễn mà chúng ta hay dùng:
      • _100_      Những Route đi qua AS 100
      • ^100&    Bắt đầu và kết thúc bằng AS 100. Có thể hiểu là AS nhận  được route này kết nối trực tiếp với AS 100. (Route chưa đi qua AS nào khác)
      • _100$     Route có nguồn gốc là AS 100
      • ^100_      Bắt đầu là AS 100
      • ^*            Route Local AS
      • .*              Match tất cả

    Ví dụ: R3 filter mạng 8.8.8.0/24 từ R1 quảng bá sang.



    Cấu hình R3:

    #ip as-path access-list 1 deny _100$
    #router bgp 300
    # neighbor 10.1.13.1 filter-list 1 in                                 // filter truoc khi dua len BGP RIB



                 ================================================================
     2. Distribute-list.
    + áp dụng:
    + trong command neighbor: neighbor a.b.c.d distribute-list {}       //chỉ filter route từ      neighbor update sang
    + trong mode router: (config-router)#distribute-list { }                 //filter tất cả các route match access-list  từ các neighbor update sang, nếu định nghĩa thêm interface trong cmd trên, thì cmd filter không có ý nghĩa. Bởi vì BGP thiết lập dựa vào TCP, nó không quan tâm đến interface
    + filter chính xác từng route mong muốn với "deny" và không "permit"
    • distribute-list +  access-list standard.
      • Hoạt động hầu như được tất cả các trường hợp
      • Nhược điểm khi áp dụng filter supernet nó lại filter các mạng có địa chỉ mạng giống nhau nhưng subnet nhỏ hơn
    Ví dụ: mạng 8.8.1.0/24-8.8.31.0/24
    8.8.0.0/19
    • Khi dùng ACL standard filter 8.8.0.0/19 thì các mạng8.8.1.0/24 – 8.8.31.0/24 đều bị filter .
    • Distribute-list + access-list extended
      • Để giải quyết vấn đề bất cập khi filter một Supernet, ta dùng ACL Extended thay thế cho ACL Standard.
      • Cấu hình ACL Extended như sau:
      • Source Add + Wildcard mask là mạng (prefix) muốn filter.
      • Des Add         - Netmask của Prefix trên.
      • Wildcardmask    - Biểu diễn số  “netmask” cần biểu diễn. ( Có thể hiểu nó là wildcard-mask của Netmask)
    + Chú ý: Distribute – list không kết hợp được với IP Prefix List trong cmd Neighbor  

    Ví dụ1: filter 8.8.8.0/24 trên R3 từ R1 advertise sang.


    Config R3:
    access-list 1 deny   8.8.8.0 0.0.0.255
    access-list 1 permit any
    !        
    router bgp 300
    distribute-list 1 in Serial0/0



    • Như đã đưa ra ở trên, khi command distribute-list định nghĩa thêm interface áp dụng, thì quá trình filter sẽ không thực hiện. 

    Config R3:
    access-list 1 deny   8.8.8.0 0.0.0.255
    access-list 1 permit any
    !        
    router bgp 300
    distribute-list 1 in


    • Khi thay đổi cmd như trên thì R3 filter mạng 8.8.8.0/24 . Tuy nhiên nó đã filter tất cả các route match với access-list. Như trên là filter 8.8.8.0/24 từ R1 và R2 gửi sang.
    • Để tránh trường hợp này, ta sử dụng distribute-list theo chiều "out" trên R1 hoặc áp dụng
    distribute-list trong command: neighbor {} {}

    Config R1:
    Cách 1.
    access-list 1 deny   8.8.8.0 0.0.0.255
    access-list 1 permit any
    !
    router bgp 100
    distribute-list 1 out      
      // tương tự với trường hợp trên, khi chỉ rõ interface thì quá trình filter không    thực hiện được

    Cách 2.
    access-list 1 deny   8.8.8.0 0.0.0.255
    access-list 1 permit any
    !
    neighbor 10.1.13.1 distribute-list 1 out    // TH distribute-list không áp dụng được với ip prefix-list
    // có thể áp dụng chiều in theo R3
    // mỗi cách có ưu nhược điểm, tuy trường hợp ta sử dụng cho hợp lý.


     Ví dụ 2: trên R1 tạo l1: 8.8.1.8/24 và 8.8.31.8/24 . Trên R3 ta tiến hành filter mạng 8.8.0.0/19.


    Config R3:
    access-list 1 deny   8.8.0.0 0.0.31.255
    access-list 1 permit any
    !
    router bgp 300
    distribute-list 1 in


    • Ta thấy 2 mạng 8.8.1.0/24 và 8.8.31.0/24 đã bị filter. Khi sử dụng access-list standard nó không filter chính xác mask mong muốn. Để tránh trường hợp này ta sử dụng access-list extended.

    Ví dụ 3. filter mạng 8.8.1.0/24 trên R3, sử dụng ip access-list extended

    Config R3:
    access-list 100 deny   ip  8.8.1.0 0.0.0.255  255.255.255.0 0.0.0.255
    access-list 100 permit ip any any
    !
    router bgp 300
     distribute-list 100 in



    Hoặc sử dụng distribute-list +  ip prefix-list để filter dễ dàng hơn ( chú ý ip prefix không thực hiện được trong cmd neighbor+distribute-list)
    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
    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
    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
    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.
    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.
    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.
    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.
    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


         ================================================================
    3. Prefix - list .
      • Là một option trong cmd Neighbor. Dùng đề filter route update từ 1 peer hoặc filter route trước khi gửi update.
      • Là danh sách các Prefix – list với các Prefix với các tiêu chuẩn permit/deny

     * nguyen ly hoat dong tuong tu nhu tool filter distribute list:

    Ví dụ: R3 filter 8.8.1.0/24

    Config R3:
    ip prefix-list an seq 5 deny 8.8.8.0/24
    !
    Router bgp 300
    Neighbor 10.1.13.1 prefix-list in

    Một số trường hợp đặc biệt cần chú ý:

    ip prefix-list A permit 0.0.0.0/0 ge 32  -               Matches all hosts routes
    ip prefix-list B permit 0.0.0.0/1 ge 8    - Any subnets in Class A address space (/1: 1st bit(0) can’t change) ip prefix-list C
     ip permit 128.0.0.0/2 ge 16  - Any subnets in Class B address space (/2: 1st 2 bits(10) can’t change)
    ip prefix-list D permit 192.0.0.0/3 ge 24  - Any subnets in Class C address space (/3: 1st 3 bits(110) can’t change)
    ip prefix-list E permit 0.0.0.0/0 le 32   - Match any/all routes
    ip prefix-list F permit 0.0.0.0/0   - Match just the default route ip prefix-list G permit 0.0.0.0/1 le 24  - Matches any iprefix in Class A address space with more than 256 addresses
     ip prefix-list H permit 10.0.0.0/8  - Matches only a 10.0.0.0/8 route (no more, no less)
     ip prefix-list I permit 10.0.0.0/8 le 32  - Matches any route in the RFC-1918 pvt 10/8 range (including 10.1.2.0/24)
      ip prefix-list J permit 172.16.0.0/12 le 32  - Matches any route in the RFC-1918 pvt 172.16/12 range
     ip prefix-list K permit 192.168.0.0/16 le 32  - Matches any route in the RFC-1918 pvt 192.168.0.0/16 range

    ============================================================
    4. DISTANCE.

    • Dùng để tăng AD của một tuyến đường.  Để filter ta tăng AD = 255.
    • Nhược điểm của nó là sẽ gây ra ‘blackhole”.
    • Để phát huy công dụng của nó, ta thường sử dụng nó để tăng AD trong tiến trình Redistribute để tránh loop đồng thòi tạo Route backup
    • Distance có thể modify AD của D.Routing. Hoặc riêng từng route bằng cách kết hợp với công cụ hỗ trợ ACL o

     ví dụ. Filter mạng 8.8.1.0/24 trên R3 sử dụng distance

    Config R3:
    Access-list 1 permit 8.8.1.0 0.0.0.255
    !
    Router bgp 300
    Distance 255 10.1.13.1 0.0.0.0 1






    Kết luận: ngoài những tool cơ bản trên chúng ta có thể sử dụng route-map, aggregate-route…




No comments:

Post a Comment