Phân loại dùng mô hình MQC
Giới thiệu cách cấu hình mô hình MQC
Mô hình MQC là cấu trúc cấu hình dùng câu lệnh nhưng được tổ chức theo dạng khối (module) cung cấp sự thuận tiện trong cấu hình hay xử lý sự cố. Mức độ thêm bớt các tính năng QoS trong khi dùng mô hình MQC rất dễ dàng cung cấp độ mở rộng tối đa cho người sử dụng khi cấu hình QoS trên Cisco router.
Có 3 câu lệnh chính được sử dụng trong mô hình MQC
Câu lệnh class-map: dùng để phân loại lưu lượng dữ liệu theo ý muốn của người sử dụng, có thể sử dụng kết hợp với nhiều công cụ phân loại như ACL hay dùng cơ chế NBAR ...
Câu lệnh policy-map: dùng để quy định cách hành xử cho từng loại lưu lượng đã được phân loại, cách hành xử có thể đơn giản là phân loại dữ liệu, có thể là đánh dấu hay sử dụng trong các cơ chế QoS khác, chú ý là luôn tồn tại 1 loại cấu hình class-map tên là class-default nhằm phân loại tất cả các lưu lượng chưa được phân loại bởi những class-map trước.
Câu lệnh service-policy: đây là câu lệnh dùng để áp dụng policy-map đã cấu hình lên một giao tiếp tương ứng, mỗi giao tiếp/ cổng chỉ áp dụng được một policy-map theo hướng vào và / hoặc hướng ra.
Sơ đồ:
Hình 76
Trong bài lab này, sẽ hướng dẫn cách phân loại dữ liệu dùng trong cách cấu hình QoS dùng mô hình MQC.
Thực hiện
Cấu hình ban đầu của hệ thống:
Cấu hình R1:
R1#sh run
Building configuration...
Current configuration : 1149 bytes
!
version 12.4
!
hostname R1
!
!
ip cef
!
ip dhcp pool 10
network 10.10.20.0 255.255.255.0
default-router 10.10.20.1
dns-server 203.162.4.1 203.162.4.190 203.162.4.191
!
!
interface FastEthernet0/0
ip address 10.10.10.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.10.20.1 255.255.255.0
duplex auto
speed auto
!
interface Serial0/1/0
ip address 192.1.1.1 255.255.255.0
clock rate 2000000
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.1.1.2
!
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
no login
!
end
Cấu hình R2
R2#sh run
Building configuration...
Current configuration : 1178 bytes
!
version 12.4
!
hostname R2
!
ip cef
!
interface FastEthernet0/0
ip address 20.20.20.1 255.255.255.0
ip nat inside
ip virtual-reassembly
duplex auto
speed auto
!
interface FastEthernet0/1
ip address dhcp
ip nat outside
ip virtual-reassembly
duplex auto
speed auto
!
interface Serial0/1/0
ip address 192.1.1.2 255.255.255.0
ip nat inside
ip virtual-reassembly
!
ip route 10.10.0.0 255.255.0.0 192.1.1.1
!
ip http server
no ip http secure-server
ip nat inside source list 1 interface FastEthernet0/1 overload
!
access-list 1 permit 10.10.0.0 0.0.255.255
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
line aux 0
line vty 0 4
privilege level 15
logging synchronous
no login
!
scheduler allocate 20000 1000
!
end
Cấu hình trên thiết bị C2600-1:
c2600_1#sh run
Building configuration...
Current configuration : 832 bytes
!
version 12.3
!
hostname c2600_1
!
ip subnet-zero
ip cef
!
interface Ethernet0/0
ip address 10.10.10.2 255.255.255.0
half-duplex
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.10.10.1
!
voice-port 1/0/0
!
voice-port 1/0/1
!
dial-peer voice 1 pots
destination-pattern 1111
port 1/0/0
!
dial-peer voice 2 voip
destination-pattern 2222
session target ipv4:20.20.20.2
!
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
no login
!
!
end
Cấu hình trên thiết bị C2600_2:
c2600_2#sh run
Building configuration...
Current configuration : 854 bytes
!
version 12.3
!
hostname c2600_2
!
ip subnet-zero
ip cef
!
interface Ethernet0/0
ip address 20.20.20.2 255.255.255.0
half-duplex
!
ip classless
ip route 0.0.0.0 0.0.0.0 20.20.20.1
!
voice-port 1/0/0
!
voice-port 1/0/1
!
dial-peer voice 1 pots
destination-pattern 2222
port 1/0/0
!
dial-peer voice 2 voip
destination-pattern 1111
session target ipv4:10.10.10.2
!
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
logging synchronous
no login
!
!
end
Bước 1: Dùng ACL để chọn lưu lượng
Chọn lưu lượng WEB
R1(config)#access-list 100 remark *** web traffic to port 80*** <-- dòng ghi chú dùng trong ACL
R1(config)#access-list 100 permit tcp any any eq 80
R1(config)#access-list 100 permit tcp any eq 80 any
Chọn lưu lượng TELNET
R1(config)#access-list 101 remark *** telnet ****
R1(config)#access-list 101 permit tcp any any eq 23
Chọn lưu lượng ICMP
R1(config)#access-list 102 remark *** icmp echo request ****
R1(config)#access-list 102 permit icmp any any echo?
echo echo-reply
R1(config)#access-list 102 permit icmp any any echo
Cấu hình class-map để chọn lưu lượng từ các công cụ ACL:
Chọn lưu lượng WEB
R1(config)#class-map web
R1(config-cmap)#match access-group 100
R1(config-cmap)#exit
Chọn lưu lượng TELNET
R1(config)#class-map telnet
R1(config-cmap)#match access-group 101
R1(config-cmap)#exit
Chọn lưu lượng ICMP
R1(config)#class-map icmp
R1(config-cmap)#match access-group 102
R1(config-cmap)#exit
R1(config)#
Dùng lệnh show class-map để kiểm tra thông tin cấu hình
R1#show class-map
!
class-map match-all telnet
match access-group 101
class-map match-all icmp
match access-group 102
class-map match-all web
match access-group 100
Kiểm tra các thông tin cấu hình về ACL
R1# show run | include access-list
!
access-list 100 remark *** web traffic to port 80***
access-list 100 permit tcp any any eq www
access-list 100 permit tcp any eq www any
access-list 101 remark *** telnet ****
access-list 101 permit tcp any any eq telnet
access-list 102 remark *** icmp echo request ****
access-list 102 permit icmp any any echo
Kiểm tra thông tin cấu hình policy-map
R1#show policy-map
!
policy-map classify_ACL
class web
class telnet
class icmp
Áp dụng lên cổng giao tiếp
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify_ACL
R1(config-if)#
Kiểm tra thông tin trạng thái khi chưa gửi lưu lượng qua hệ thống
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_ACL
Class-map: web (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 100
Class-map: telnet (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 101
Class-map: icmp (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 102
Class-map: class-default (match-any) << class class-default
2009 packets, 129196 bytes
5 minute offered rate 8000 bps, drop rate 0 bps
Match: any
Tiến hành cho lưu lượng chạy qua, duyệt web:
Thực hiện telnet qua thiết bị 20.20.20.2
Hình 77
Hình 78
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_ACL
Class-map: web (match-all)
5 packets, 681 bytes
5 minute offered rate 0 bps
Match: access-group 100
Class-map: telnet (match-all)
15 packets, 709 bytes << lưu lượng telnet tăng lên
5 minute offered rate 0 bps
Match: access-group 101
Class-map: icmp (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 102
Class-map: class-default (match-any)
4034 packets, 259712 bytes
5 minute offered rate 16000 bps, drop rate 0 bps
Match: any
Thực hiện ping từ PC đến thiết bị 20.20.20.2 với 5 gói
Hình 79
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_ACL
Class-map: web (match-all)
15 packets, 2043 bytes
5 minute offered rate 0 bps
Match: access-group 100
Class-map: telnet (match-all)
70 packets, 3162 bytes
5 minute offered rate 0 bps
Match: access-group 101
Class-map: icmp (match-all)
5 packets, 320 bytes << lưu lượng icmp tăng lên
5 minute offered rate 0 bps
Match: access-group 102
Class-map: class-default (match-any)
9832 packets, 633316 bytes
5 minute offered rate 25000 bps, drop rate 0 bps
Match: any
R1#
Bước 2: Ta cũng có thể phân loại dựa trên giá trị DSCP của gói tin
Yêu cầu:
Xóa các cấu hình service-policy trên cổng trước đó
Thực hiện phân loại gói tin dựa trên giá trị DSCP EF
R1#conf t
R1(config)#class-map ef
R1(config-cmap)#match ip dscp ef << phân loại dựa trên giá trị dscp ef
R1(config-cmap)#exit
R1(config)#policy-map classify_DSCP
R1(config-pmap)#class ef
R1(config-pmap)#exit
R1(config)#
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify_DSCP
R1(config-if)#
R1#sh policy-map
Policy-map classify_ACL
class web
class telnet
class icmp
Policy Map classify_DSCP
Class ef
Kiểm tra bằng cách ping giá trị 20.20.20.2 thiết lập dscp ef
Kiểm tra thông tin chạy qua trước khi ping gói tin
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_DSCP
Class-map: ef (match-all)
0 packets, 0 bytes << thông tin ban đầu là 0
5 minute offered rate 20000 bps
Match: ip dscp ef (46)
Class-map: class-default (match-any)
1 packets, 340 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
R1#
Tiến hành ping 4 gói tin và thiết lập giá trị DSCP = EF (10111000 = 184)
Hình 80
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_DSCP
Class-map: ef (match-all)
4 packets, 256 bytes << số lượng tăng lên tương ứng
5 minute offered rate 10000 bps
Match: ip dscp ef (46)
Class-map: class-default (match-any)
8 packets, 528 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Xóa các cấu hình service-policy trên cổng và policy-map để chuẩn bị cho phần lab tiếp theo.
Bước 3: Dùng logic match-all và match-any
Trong trường hợp sử dụng câu lệnh class-map mặc định câu lệnh này sẽ dùng luận lý AND (match-all) tức là nếu có nhiều điều kiện so trùng thì tất cả các điều kiện phải thỏa, người dùng cũng có thể chỉnh lại luận lý này bằng cách thêm vào từ khóa match-any sau câu lệnh class-map. Với trường hợp match-any, nếu có nhiều điều kiện so trùng thì class-map sẽ dùng luận lý OR để kiểm tra, tức là nếu có nhiều điều kiện so trùng thì nếu ít nhất 1 điều kiện thỏa thì sẽ lưu lượng sẽ coi như thỏa class-map.
Kiểm tra những ACL đã cấu hình
R1(config)#do sh access-list
Extended IP access list 100
10 permit tcp any any eq www (2304 matches)
20 permit tcp any eq www any
Extended IP access list 101
10 permit tcp any any eq telnet (72 matches)
Extended IP access list 102
10 permit icmp any any echo (5 matches)
Kiểm tra cách hoạt động của nguyên lý match-all bằng cách tạo một class-map PING_AND_EF thỏa cả 2 điều kiện sau: là gói tin icmp và có giá trị DSCP=EF
R1(config)#class-map PING_AND_EF << mặc định sẽ là match-all
R1(config-cmap)#match access-group 102
R1(config-cmap)#match ip dscp ef
R1(config-cmap)#exit
Tạo policy-map tương tứng
R1(config)#policy-map classify
R1(config-pmap)#class PING_AND_EF
R1(config-pmap-c)#exit
R1(config-pmap)#end
Kiểm tra cấu hình
R1#sh policy-map
Policy Map classify
Class PING_AND_EF
Áp dụng lên cổng
R1#conf t
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify
R1(config-if)#end
Kiểm tra thông tin trạng thái:
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
1 packets, 24 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Thực hiện ping từ pc đến 20.20.20.2 với 4 gói echo
Hình 81
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
0 packets, 0 bytes << không tăng giá trị
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
29 packets, 2610 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Thống kê không thấy tăng vì chỉ là gói icmp echo, giá trị dscp chưa thiết lập nên bằng 0, class-map sẽ không phân loại được lưu lượng này.
Thực hiện ping từ pc đến 20.20.20.2 với 4 gói echo và thiết lập thông tin dscp bằng ef, kiểm tra cấu hình:
Hình 82
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
4 packets, 256 bytes << tăng lên 4 gói
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
60 packets, 5669 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
4 packets, 256 bytes
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
60 packets, 5669 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Gói tin đã được đếm hay được phân loại do thỏa tất cả các điều kiện so trùng.
Bước 4: Chuyển sang logic match any
Yêu cầu:
Phân loại lưu lượng có giá trị dscp là EF HOẶC telnet sẽ được thống kê
Loại bỏ các cấu hình cũ
R1#conf t
R1(config)#int s0/1/0
R1(config-if)#no service-policy output classify
Kiểm tra ACL
R1#sh access-lists
Extended IP access list 100
10 permit tcp any any eq www (2304 matches)
20 permit tcp any eq www any
Extended IP access list 101
10 permit tcp any any eq telnet (72 matches)
Extended IP access list 102
10 permit icmp any any echo (13 matches)
R1#
R1(config)#policy-map
R1(config)#class-map match-any TELNET_OR_EF
R1(config-cmap)#match access-group 101
R1(config-cmap)#match ip dscp ef
R1(config-cmap)#end
Chỉnh lại cấu hình mới
!
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#policy-map
R1(config)#policy-map classify
R1(config-pmap)#no class PING_AND_EF
R1(config-pmap)#class TELNET_OR_EF
R1(config-pmap-c)#end
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify
R1(config-if)#
Kiểm tra cấu hình trứơc khi tiến hành gửi lưu lượng và xem thông số
Xóa các thông tin thống kê trước đó
R1#clear counters
Clear "show interface" counters on all interfaces [confirm]
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: TELNET_OR_EF (match-any)
0 packets, 0 bytes << thông tin bẳng 0
5 minute offered rate 0 bps
Match: access-group 101
0 packets, 0 bytes
5 minute rate 0 bps
Match: ip dscp ef (46)
0 packets, 0 bytes
5 minute rate 0 bps
Class-map: class-default (match-any)
1 packets, 24 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Bắt đầu gửi traffic, tiến hành ping 4 gói có giá trị dscp EF
Hình 83
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: TELNET_OR_EF (match-any)
4 packets, 256 bytes << số lượng tăng lên vì điều kiện ef thỏa
5 minute offered rate 0 bps
Match: access-group 101
0 packets, 0 bytes
5 minute rate 0 bps
Match: ip dscp ef (46)
4 packets, 256 bytes
5 minute rate 0 bps
Class-map: class-default (match-any)
11 packets, 1141 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Sau đó tiến hành telnet đến 20.20.20.2
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: TELNET_OR_EF (match-any)
17 packets, 875 bytes << số lượng tăng lên vì điều kiện telnet thỏa
5 minute offered rate 0 bps
Match: access-group 101
13 packets, 619 bytes
5 minute rate 0 bps
Match: ip dscp ef (46)
4 packets, 256 bytes
5 minute rate 0 bps
Class-map: class-default (match-any)
25 packets, 2354 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Giới thiệu cách cấu hình mô hình MQC
Mô hình MQC là cấu trúc cấu hình dùng câu lệnh nhưng được tổ chức theo dạng khối (module) cung cấp sự thuận tiện trong cấu hình hay xử lý sự cố. Mức độ thêm bớt các tính năng QoS trong khi dùng mô hình MQC rất dễ dàng cung cấp độ mở rộng tối đa cho người sử dụng khi cấu hình QoS trên Cisco router.
Có 3 câu lệnh chính được sử dụng trong mô hình MQC
Câu lệnh class-map: dùng để phân loại lưu lượng dữ liệu theo ý muốn của người sử dụng, có thể sử dụng kết hợp với nhiều công cụ phân loại như ACL hay dùng cơ chế NBAR ...
Câu lệnh policy-map: dùng để quy định cách hành xử cho từng loại lưu lượng đã được phân loại, cách hành xử có thể đơn giản là phân loại dữ liệu, có thể là đánh dấu hay sử dụng trong các cơ chế QoS khác, chú ý là luôn tồn tại 1 loại cấu hình class-map tên là class-default nhằm phân loại tất cả các lưu lượng chưa được phân loại bởi những class-map trước.
Câu lệnh service-policy: đây là câu lệnh dùng để áp dụng policy-map đã cấu hình lên một giao tiếp tương ứng, mỗi giao tiếp/ cổng chỉ áp dụng được một policy-map theo hướng vào và / hoặc hướng ra.
Sơ đồ:
Hình 76
Trong bài lab này, sẽ hướng dẫn cách phân loại dữ liệu dùng trong cách cấu hình QoS dùng mô hình MQC.
Thực hiện
Cấu hình ban đầu của hệ thống:
Cấu hình R1:
R1#sh run
Building configuration...
Current configuration : 1149 bytes
!
version 12.4
!
hostname R1
!
!
ip cef
!
ip dhcp pool 10
network 10.10.20.0 255.255.255.0
default-router 10.10.20.1
dns-server 203.162.4.1 203.162.4.190 203.162.4.191
!
!
interface FastEthernet0/0
ip address 10.10.10.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.10.20.1 255.255.255.0
duplex auto
speed auto
!
interface Serial0/1/0
ip address 192.1.1.1 255.255.255.0
clock rate 2000000
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 192.1.1.2
!
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
no login
!
end
Cấu hình R2
R2#sh run
Building configuration...
Current configuration : 1178 bytes
!
version 12.4
!
hostname R2
!
ip cef
!
interface FastEthernet0/0
ip address 20.20.20.1 255.255.255.0
ip nat inside
ip virtual-reassembly
duplex auto
speed auto
!
interface FastEthernet0/1
ip address dhcp
ip nat outside
ip virtual-reassembly
duplex auto
speed auto
!
interface Serial0/1/0
ip address 192.1.1.2 255.255.255.0
ip nat inside
ip virtual-reassembly
!
ip route 10.10.0.0 255.255.0.0 192.1.1.1
!
ip http server
no ip http secure-server
ip nat inside source list 1 interface FastEthernet0/1 overload
!
access-list 1 permit 10.10.0.0 0.0.255.255
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
line aux 0
line vty 0 4
privilege level 15
logging synchronous
no login
!
scheduler allocate 20000 1000
!
end
Cấu hình trên thiết bị C2600-1:
c2600_1#sh run
Building configuration...
Current configuration : 832 bytes
!
version 12.3
!
hostname c2600_1
!
ip subnet-zero
ip cef
!
interface Ethernet0/0
ip address 10.10.10.2 255.255.255.0
half-duplex
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.10.10.1
!
voice-port 1/0/0
!
voice-port 1/0/1
!
dial-peer voice 1 pots
destination-pattern 1111
port 1/0/0
!
dial-peer voice 2 voip
destination-pattern 2222
session target ipv4:20.20.20.2
!
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
no login
!
!
end
Cấu hình trên thiết bị C2600_2:
c2600_2#sh run
Building configuration...
Current configuration : 854 bytes
!
version 12.3
!
hostname c2600_2
!
ip subnet-zero
ip cef
!
interface Ethernet0/0
ip address 20.20.20.2 255.255.255.0
half-duplex
!
ip classless
ip route 0.0.0.0 0.0.0.0 20.20.20.1
!
voice-port 1/0/0
!
voice-port 1/0/1
!
dial-peer voice 1 pots
destination-pattern 2222
port 1/0/0
!
dial-peer voice 2 voip
destination-pattern 1111
session target ipv4:10.10.10.2
!
line con 0
exec-timeout 0 0
logging synchronous
line aux 0
line vty 0 4
privilege level 15
logging synchronous
no login
!
!
end
Bước 1: Dùng ACL để chọn lưu lượng
Chọn lưu lượng WEB
R1(config)#access-list 100 remark *** web traffic to port 80*** <-- dòng ghi chú dùng trong ACL
R1(config)#access-list 100 permit tcp any any eq 80
R1(config)#access-list 100 permit tcp any eq 80 any
Chọn lưu lượng TELNET
R1(config)#access-list 101 remark *** telnet ****
R1(config)#access-list 101 permit tcp any any eq 23
Chọn lưu lượng ICMP
R1(config)#access-list 102 remark *** icmp echo request ****
R1(config)#access-list 102 permit icmp any any echo?
echo echo-reply
R1(config)#access-list 102 permit icmp any any echo
Cấu hình class-map để chọn lưu lượng từ các công cụ ACL:
Chọn lưu lượng WEB
R1(config)#class-map web
R1(config-cmap)#match access-group 100
R1(config-cmap)#exit
Chọn lưu lượng TELNET
R1(config)#class-map telnet
R1(config-cmap)#match access-group 101
R1(config-cmap)#exit
Chọn lưu lượng ICMP
R1(config)#class-map icmp
R1(config-cmap)#match access-group 102
R1(config-cmap)#exit
R1(config)#
Dùng lệnh show class-map để kiểm tra thông tin cấu hình
R1#show class-map
!
class-map match-all telnet
match access-group 101
class-map match-all icmp
match access-group 102
class-map match-all web
match access-group 100
Kiểm tra các thông tin cấu hình về ACL
R1# show run | include access-list
!
access-list 100 remark *** web traffic to port 80***
access-list 100 permit tcp any any eq www
access-list 100 permit tcp any eq www any
access-list 101 remark *** telnet ****
access-list 101 permit tcp any any eq telnet
access-list 102 remark *** icmp echo request ****
access-list 102 permit icmp any any echo
Kiểm tra thông tin cấu hình policy-map
R1#show policy-map
!
policy-map classify_ACL
class web
class telnet
class icmp
Áp dụng lên cổng giao tiếp
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify_ACL
R1(config-if)#
Kiểm tra thông tin trạng thái khi chưa gửi lưu lượng qua hệ thống
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_ACL
Class-map: web (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 100
Class-map: telnet (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 101
Class-map: icmp (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 102
Class-map: class-default (match-any) << class class-default
2009 packets, 129196 bytes
5 minute offered rate 8000 bps, drop rate 0 bps
Match: any
Tiến hành cho lưu lượng chạy qua, duyệt web:
Thực hiện telnet qua thiết bị 20.20.20.2
Hình 77
Hình 78
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_ACL
Class-map: web (match-all)
5 packets, 681 bytes
5 minute offered rate 0 bps
Match: access-group 100
Class-map: telnet (match-all)
15 packets, 709 bytes << lưu lượng telnet tăng lên
5 minute offered rate 0 bps
Match: access-group 101
Class-map: icmp (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 102
Class-map: class-default (match-any)
4034 packets, 259712 bytes
5 minute offered rate 16000 bps, drop rate 0 bps
Match: any
Thực hiện ping từ PC đến thiết bị 20.20.20.2 với 5 gói
Hình 79
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_ACL
Class-map: web (match-all)
15 packets, 2043 bytes
5 minute offered rate 0 bps
Match: access-group 100
Class-map: telnet (match-all)
70 packets, 3162 bytes
5 minute offered rate 0 bps
Match: access-group 101
Class-map: icmp (match-all)
5 packets, 320 bytes << lưu lượng icmp tăng lên
5 minute offered rate 0 bps
Match: access-group 102
Class-map: class-default (match-any)
9832 packets, 633316 bytes
5 minute offered rate 25000 bps, drop rate 0 bps
Match: any
R1#
Bước 2: Ta cũng có thể phân loại dựa trên giá trị DSCP của gói tin
Yêu cầu:
Xóa các cấu hình service-policy trên cổng trước đó
Thực hiện phân loại gói tin dựa trên giá trị DSCP EF
R1#conf t
R1(config)#class-map ef
R1(config-cmap)#match ip dscp ef << phân loại dựa trên giá trị dscp ef
R1(config-cmap)#exit
R1(config)#policy-map classify_DSCP
R1(config-pmap)#class ef
R1(config-pmap)#exit
R1(config)#
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify_DSCP
R1(config-if)#
R1#sh policy-map
Policy-map classify_ACL
class web
class telnet
class icmp
Policy Map classify_DSCP
Class ef
Kiểm tra bằng cách ping giá trị 20.20.20.2 thiết lập dscp ef
Kiểm tra thông tin chạy qua trước khi ping gói tin
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_DSCP
Class-map: ef (match-all)
0 packets, 0 bytes << thông tin ban đầu là 0
5 minute offered rate 20000 bps
Match: ip dscp ef (46)
Class-map: class-default (match-any)
1 packets, 340 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
R1#
Tiến hành ping 4 gói tin và thiết lập giá trị DSCP = EF (10111000 = 184)
Hình 80
R1#sh policy-map interface s0/1/0
Serial0/1/0
Service-policy output: classify_DSCP
Class-map: ef (match-all)
4 packets, 256 bytes << số lượng tăng lên tương ứng
5 minute offered rate 10000 bps
Match: ip dscp ef (46)
Class-map: class-default (match-any)
8 packets, 528 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Xóa các cấu hình service-policy trên cổng và policy-map để chuẩn bị cho phần lab tiếp theo.
Bước 3: Dùng logic match-all và match-any
Trong trường hợp sử dụng câu lệnh class-map mặc định câu lệnh này sẽ dùng luận lý AND (match-all) tức là nếu có nhiều điều kiện so trùng thì tất cả các điều kiện phải thỏa, người dùng cũng có thể chỉnh lại luận lý này bằng cách thêm vào từ khóa match-any sau câu lệnh class-map. Với trường hợp match-any, nếu có nhiều điều kiện so trùng thì class-map sẽ dùng luận lý OR để kiểm tra, tức là nếu có nhiều điều kiện so trùng thì nếu ít nhất 1 điều kiện thỏa thì sẽ lưu lượng sẽ coi như thỏa class-map.
Kiểm tra những ACL đã cấu hình
R1(config)#do sh access-list
Extended IP access list 100
10 permit tcp any any eq www (2304 matches)
20 permit tcp any eq www any
Extended IP access list 101
10 permit tcp any any eq telnet (72 matches)
Extended IP access list 102
10 permit icmp any any echo (5 matches)
Kiểm tra cách hoạt động của nguyên lý match-all bằng cách tạo một class-map PING_AND_EF thỏa cả 2 điều kiện sau: là gói tin icmp và có giá trị DSCP=EF
R1(config)#class-map PING_AND_EF << mặc định sẽ là match-all
R1(config-cmap)#match access-group 102
R1(config-cmap)#match ip dscp ef
R1(config-cmap)#exit
Tạo policy-map tương tứng
R1(config)#policy-map classify
R1(config-pmap)#class PING_AND_EF
R1(config-pmap-c)#exit
R1(config-pmap)#end
Kiểm tra cấu hình
R1#sh policy-map
Policy Map classify
Class PING_AND_EF
Áp dụng lên cổng
R1#conf t
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify
R1(config-if)#end
Kiểm tra thông tin trạng thái:
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
0 packets, 0 bytes
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
1 packets, 24 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Thực hiện ping từ pc đến 20.20.20.2 với 4 gói echo
Hình 81
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
0 packets, 0 bytes << không tăng giá trị
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
29 packets, 2610 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Thống kê không thấy tăng vì chỉ là gói icmp echo, giá trị dscp chưa thiết lập nên bằng 0, class-map sẽ không phân loại được lưu lượng này.
Thực hiện ping từ pc đến 20.20.20.2 với 4 gói echo và thiết lập thông tin dscp bằng ef, kiểm tra cấu hình:
Hình 82
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
4 packets, 256 bytes << tăng lên 4 gói
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
60 packets, 5669 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: PING_AND_EF (match-all)
4 packets, 256 bytes
5 minute offered rate 0 bps
Match: access-group 102
Match: ip dscp ef (46)
Class-map: class-default (match-any)
60 packets, 5669 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Gói tin đã được đếm hay được phân loại do thỏa tất cả các điều kiện so trùng.
Bước 4: Chuyển sang logic match any
Yêu cầu:
Phân loại lưu lượng có giá trị dscp là EF HOẶC telnet sẽ được thống kê
Loại bỏ các cấu hình cũ
R1#conf t
R1(config)#int s0/1/0
R1(config-if)#no service-policy output classify
Kiểm tra ACL
R1#sh access-lists
Extended IP access list 100
10 permit tcp any any eq www (2304 matches)
20 permit tcp any eq www any
Extended IP access list 101
10 permit tcp any any eq telnet (72 matches)
Extended IP access list 102
10 permit icmp any any echo (13 matches)
R1#
R1(config)#policy-map
R1(config)#class-map match-any TELNET_OR_EF
R1(config-cmap)#match access-group 101
R1(config-cmap)#match ip dscp ef
R1(config-cmap)#end
Chỉnh lại cấu hình mới
!
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#policy-map
R1(config)#policy-map classify
R1(config-pmap)#no class PING_AND_EF
R1(config-pmap)#class TELNET_OR_EF
R1(config-pmap-c)#end
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#
R1(config)#int s0/1/0
R1(config-if)#service-policy output classify
R1(config-if)#
Kiểm tra cấu hình trứơc khi tiến hành gửi lưu lượng và xem thông số
Xóa các thông tin thống kê trước đó
R1#clear counters
Clear "show interface" counters on all interfaces [confirm]
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: TELNET_OR_EF (match-any)
0 packets, 0 bytes << thông tin bẳng 0
5 minute offered rate 0 bps
Match: access-group 101
0 packets, 0 bytes
5 minute rate 0 bps
Match: ip dscp ef (46)
0 packets, 0 bytes
5 minute rate 0 bps
Class-map: class-default (match-any)
1 packets, 24 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Bắt đầu gửi traffic, tiến hành ping 4 gói có giá trị dscp EF
Hình 83
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: TELNET_OR_EF (match-any)
4 packets, 256 bytes << số lượng tăng lên vì điều kiện ef thỏa
5 minute offered rate 0 bps
Match: access-group 101
0 packets, 0 bytes
5 minute rate 0 bps
Match: ip dscp ef (46)
4 packets, 256 bytes
5 minute rate 0 bps
Class-map: class-default (match-any)
11 packets, 1141 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any
Sau đó tiến hành telnet đến 20.20.20.2
R1#sh policy-map int s0/1/0
Serial0/1/0
Service-policy output: classify
Class-map: TELNET_OR_EF (match-any)
17 packets, 875 bytes << số lượng tăng lên vì điều kiện telnet thỏa
5 minute offered rate 0 bps
Match: access-group 101
13 packets, 619 bytes
5 minute rate 0 bps
Match: ip dscp ef (46)
4 packets, 256 bytes
5 minute rate 0 bps
Class-map: class-default (match-any)
25 packets, 2354 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: any