Test thử bắn gói vào CPU router xem có drop không (COPP)

Trên router có 2 luồng xử lý hoàn toàn tách biệt:

  • Data Plane (Forwarding): ví dụ các gói http, https từ user ra internet. Phần này do chip ASIC và CEF xử lý, nhanh khủng khiếp và không cần đẩy lên CPU tổng.

 

  • Control Plane: Gói tin gửi ĐÍCH DANH vào IP của router (Ping, SSH, SNMP, OSPF, BGP, ARP). Tất cả những gói này bắt buộc phải đưa lên CPU chính để bóc ra xử lý. Nếu quá nhiều gói rác bắn vào là CPU bị cao tải; dễ drop các gói quan trọng như routing update, SSH mgmt...

Trong bài này ta sẽ test bắn gói sau đó dùng tính năng CoPP để chặn các gói rác khi quá ngưỡng.

 Sơ đồ mạng :

Con Linux đóng vai trò máy bắn traffic độc hại

Cấu hình CoPP trên R1:

ip access-list extended ACL-COPP-ROUTING

 permit ospf any any               ## Bắt gói tin định tuyến OSPF (IP proto 89)

 permit eigrp any any              ## Bắt gói tin EIGRP (IP proto 88)

 permit tcp any eq bgp any         ## Bắt gói BGP nguồn port 179

 permit tcp any any eq bgp         ## Bắt gói BGP đích port 179

!

ip access-list extended ACL-COPP-MGMT

 permit tcp any any eq 22          ## Bắt gói quản trị SSH

 permit udp any any eq snmp        ## Bắt gói giám sát SNMP

!

ip access-list extended ACL-COPP-ICMP

 permit icmp any any               ## Bắt toàn bộ gói Ping và Traceroute

!

class-map match-all CM-COPP-ROUTING

 match access-group name ACL-COPP-ROUTING

!

class-map match-all CM-COPP-MGMT

 match access-group name ACL-COPP-MGMT

!

class-map match-all CM-COPP-ICMP

 match access-group name ACL-COPP-ICMP

!

policy-map PM-COPP

 class CM-COPP-ROUTING

  police 1000000 conform-action transmit exceed-action transmit   ## Ưu tiên 1 Mbps, vượt ngưỡng vẫn cho qua, không bao giờ drop

 class CM-COPP-MGMT

  police 256000 conform-action transmit exceed-action drop        ## Cho 256 kbps, vượt ngưỡng thì drop chống brute-force

 class CM-COPP-ICMP

  police 8000 conform-action transmit exceed-action drop          ## Chỉ cho 8 kbps (~1 gói/s), vượt ngưỡng là drop thẳng tay

!

control-plane

 service-policy input PM-COPP      ## Áp policy vào cổng vào của Control Plane CPU

Trên linux đặt IP cho eth0

ip addr add 10.1.2.2/24 dev eth0    ## Đặt IP cho Linux

ip link set eth0 up                 ## Bật card mạng

TEST BẮN GÓI:

Từ Linux, bắn thử 5 gói ping với tần suất mặc định (1 giây/gói):

Kiểm tra bộ đếm CoPP trên R1 bằng lệnh show policy-map control-plane:

=> THÀNH CÔNG: không gói nào bị drop khi dưới ngưỡng

Từ Linux, bắn thử 50 gói mỗi giây

ping -c 50 -i 0.02 10.1.2.1

Quay lại R1 kiểm tra bộ đếm chính sách CoPP bị drop:

=> BẢO VỆ THÀNH CÔNG vì đã drop các gói quá ngưỡng

Tiếp theo test thử bắn gói OSPF (được ưu tiên) xem có drop ko

localhost:~# python3 -c "

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, 89)

for _ in range(10):

    s.sendto(b'\x02\x01\x00\x18' + b'\x00'*20, ('10.1.2.1', 0))

print('Sent 10 OSPF packets')

"

Sent 10 OSPF packets

=> Toàn bộ 10 gói OSPF lọt vào Class-map CM-COPP-ROUTING, conformed 10 packets, không rớt gói nào.

Tương tự thử quét cổng 22

localhost:~# nc -zv 10.1.2.1 22

10.1.2.1 (10.1.2.1:22) open

Trên R1 cũng ngon , không drop

Vậy là các gói routing, mgmt như SSH là đã ko bị drop dù bắn ào ạt vào

 

Bài viết cùng danh mục