Sổ tay kỹ thuật

RTBH và BGP FlowSpec – chặn DDoS bằng BGP

concept#bgp#ddos#iosxr#junos· cập nhật 2026-11-06

Hiểu khi nào dùng RTBH (bỏ toàn bộ traffic tới một IP) và khi nào dùng BGP FlowSpec (lọc theo port/protocol), kèm cấu hình mẫu ngắn trên IOS XR và Junos.

Sửa trang này
Mục lục

Khi một IP bị DDoS làm nghẽn link upstream, cần chặn traffic càng xa càng tốt: trên edge router của mình, hoặc nhờ upstream chặn hộ. BGP có hai cơ chế:

  • RTBH (Remotely Triggered Black Hole): quảng bá /32 (/128) của nạn nhân kèm community blackhole, router nhận đặt next-hop về discard. Đơn giản, mọi thiết bị đều hỗ trợ, nhưng chặn luôn cả traffic hợp lệ: kẻ tấn công "thắng" vì IP đã ngừng phục vụ.
  • BGP FlowSpec (RFC 8955, IPv6 ở RFC 8956): quảng bá rule lọc (đích, nguồn, protocol, port, packet length...) kèm hành động (drop, rate-limit, redirect, mark). Router cài rule vào phần cứng như ACL. Chỉ chặn đúng loại traffic tấn công.

Luồng hoạt động

flowchart LR DET["Detector (FastNetMon, sFlow/NetFlow)"] -->|"/32 + 64500:666 hoặc FlowSpec rule"| TR["Trigger router / RR"] TR -->|iBGP| PE1["Edge PE1"] TR -->|iBGP| PE2["Edge PE2"] PE1 -->|"203.0.113.10/32 + 65535:666"| UP["Upstream AS64510"] PE1 --> DROP["next-hop discard / ACL phần cứng"] PE2 --> DROP

So sánh

Tiêu chí RTBH đích RTBH nguồn (S/RTBH) FlowSpec
Chặn theo IP đích IP nguồn (kết hợp uRPF loose) Tổ hợp 12 loại match (RFC 8955)
Traffic hợp lệ tới nạn nhân Bị chặn hết Vẫn qua Vẫn qua nếu không khớp rule
Hiệu quả với tấn công nhiều nguồn Tốt Kém (quá nhiều nguồn) Tốt nếu có đặc trưng (vd UDP src port 123, 53, 11211)
Nhờ upstream chặn hộ Có, community của upstream hoặc 65535:666 Hiếm Ít upstream nhận FlowSpec từ khách
Tài nguyên router Một route Một route + uRPF trên interface TCAM/ACL, giới hạn số rule theo platform
Rủi ro Thấp Chặn nhầm nếu uRPF cấu hình sai Rule sai có thể chặn cả mạng, cần validate và giới hạn

Thành phần FlowSpec

Match (NLRI type) Ví dụ
1 Destination prefix 203.0.113.10/32
2 Source prefix 198.51.100.0/24
3 IP protocol 17 (UDP)
4/5/6 Port / dest port / source port src port 123
7/8 ICMP type / code type 8
9 TCP flags SYN
10 Packet length >= 468
11 DSCP 46
12 Fragment is-fragment

Hành động mang trong extended community: traffic-rate (rate 0 = drop), traffic-action (sample/terminal), redirect (sang VRF theo RT), traffic-marking (đặt DSCP).

Mặc định router chỉ nhận FlowSpec rule nếu đích của rule khớp best-path unicast từ cùng peer (validation theo RFC 8955). Rule do mình tự sinh hoặc từ controller nội bộ thì thường cần tắt validation có kiểm soát. Luôn giới hạn số rule nhận được và chỉ nhận từ nguồn tin cậy.

RTBH cho khách: cấu hình mẫu

Khách AS 65001 gửi /32 thuộc 203.0.113.0/24 kèm 65535:666 (hoặc 64500:666 theo bảng community của ISP). Edge chấp nhận /32 chỉ khi có community, đặt next-hop discard và gắn no-export để không lọt ra ngoài.

! IOS XR
prefix-set CUST-65001-HOST
  203.0.113.0/24 ge 32 le 32
end-set
!
community-set BLACKHOLE
  65535:666,
  64500:666
end-set
!
route-policy CUST-65001-IN
  if destination in CUST-65001-HOST and community matches-any BLACKHOLE then
    set next-hop discard
    set community (65535:65281) additive
    done
  endif
  # ... phần lọc prefix thường như trang BGP route policy
end-policy
# Junos
set policy-options community BLACKHOLE members [ 65535:666 ]
set policy-options community BLACKHOLE-ISP members [ 64500:666 ]
set policy-options community NO-EXPORT members no-export
set policy-options policy-statement CUST-65001-IN term RTBH from community [ BLACKHOLE BLACKHOLE-ISP ]
set policy-options policy-statement CUST-65001-IN term RTBH from route-filter 203.0.113.0/24 prefix-length-range /32-/32
set policy-options policy-statement CUST-65001-IN term RTBH then community add NO-EXPORT
set policy-options policy-statement CUST-65001-IN term RTBH then next-hop discard
set policy-options policy-statement CUST-65001-IN term RTBH then accept

Term RTBH phải nằm trước term lọc prefix thông thường (vốn chỉ nhận /24). Cách viết phần còn lại xem BGP route policy.

FlowSpec: cấu hình mẫu

Junos: rule tĩnh chặn NTP amplification tới một IP, quảng bá qua iBGP family inet flow:

set routing-options flow route NTP-AMP match destination 203.0.113.10/32
set routing-options flow route NTP-AMP match protocol udp
set routing-options flow route NTP-AMP match source-port 123
set routing-options flow route NTP-AMP then discard
set protocols bgp group IBGP family inet flow

IOS XR: nhận FlowSpec qua BGP và cài rule xuống mọi interface:

router bgp 64500
 address-family ipv4 flowspec
 !
 neighbor 192.0.2.10
  address-family ipv4 flowspec
  !
 !
!
flowspec
 local-install interface-all
!
Mục đích IOS XR Junos
Rule FlowSpec đã nhận show bgp ipv4 flowspec show route table inetflow.0 extensive
Rule đã cài và counter show flowspec ipv4 detail show firewall filter __flowspec_default_inet__
Route RTBH show bgp ipv4 unicast 203.0.113.10/32 show route 203.0.113.10/32 detail

Khi nào dùng

  • RTBH đích: link upstream đã nghẽn, cần hạ ngay; chấp nhận hy sinh một IP để cứu cả PoP. Phối hợp với community blackhole của upstream để chặn từ phía họ.
  • FlowSpec: tấn công có đặc trưng rõ (amplification theo source port, SYN flood tới một port), link còn chịu được, muốn giữ dịch vụ cho người dùng thật.
  • Scrubbing center: tấn công lớn hoặc tầng ứng dụng, dùng FlowSpec redirect hoặc BGP diversion sang hệ thống lọc.
  • Danh sách community well-known: BGP communities.