STP UplinkFast là gì? Hướng dẫn cấu hình UplinkFast trên Switch Cisco
Trong bài viết này, chúng ta sẽ cùng tìm hiểu về Spanning Tree UplinkFast, ứng dụng trong thực tế, cũng như cách cấu hình UplinkFast trên các switch Cisco nhé.
Spanning Tree UplinkFast là gì?
Spanning-Tree UplinkFast là 1 tính năng độc quyền của Cisco, giúp cải thiện thời gian hội tụ của giao thức STP truyền thống trong trường hợp đường uplink bị lỗi. Cisco khuyến nghị chúng ta chỉ nên bật UplinkFast cho các switch có cổng bị Block, thường là các switch ở lớp Access.
Tính năng UplinkFast được định nghĩa dựa trên 1 nhóm các đường Uplink, gọi là Uplink group. Với mỗi 1 switch, uplink group bao gồm Root Port và tất cả các cổng cung cấp kết nối thay thế đến Root Bridge. Nếu Root Port bị lỗi, cổng có chi phí thấp nhất tiếp theo trong uplink group sẽ được chọn để thay thế ngay lập tức, mà không cần phải chuyển sang các trạng thái Listening hay Learning giống như hoạt động của STP truyền thống, qua đó giảm thời gian hội tụ của STP xuống còn khoảng 1 giây.
Các bạn lưu ý UplinkFast là giao thức hỗ trợ cho STP truyền thống, với các giao thức mới như RSTP đã được tích hợp sẵn UplinkFast và 1 số giao thức tương tự, do vậy chúng ta không cần phải cấu hình UplinkFast khi sử dụng RSTP.
Hoạt động của UplinkFast
Để hiểu rõ hơn về cách hoạt động của UplinkFast, chúng ta sẽ cùng xem hành vi của Spanning Tree khi enable và disable UplinkFast nhé.
Uplink Failure khi không kích hoạt UplinkFast
Trước tiên chúng ta sẽ xem quá trình hội tụ của Spanning Tree truyền thống khi chưa cấu hình UplinkFast. Mình đang có 3 switch được kết nối với nhau, SW-01 là Root Bridge, cổng g1/0/2 của SW-03 là cổng bị block, cổng g1/0/1 là Root Port để kết nối tới Root Bridge.
Trong trường hợp uplink kết nối giữa SW-01 và SW-03 bị lỗi, cổng g1/0/2 của SW-03 lần lượt được chuyển sang trạng thái Listening, Learning và cuối cùng là Forwarding để chuyển tiếp dữ liệu, do nó được xác định là cổng Alternate (vẫn nhận BPDU từ Root thông qua SW-02). Mỗi giai đoạn sẽ mất khoảng 15 giây, nên tổng cộng chúng ta sẽ phải mất khoảng 30 giây để spanning tree hội tụ xong, đồng nghĩa với việc kết nối mạng sẽ bị gián đoạn trong vòng 30 giây.
Spanning Tree cho phép chúng ta cấu hình giảm Forward_delay xuống con 7 giây, khi đó tổng thời gian hội tụ của Spanning Tree sẽ là 14 giây, đây vẫn là độ trễ đang kể đối với người dùng.
Uplink Failure khi kích hoạt UplinkFast
Để hiểu về hoạt động của UplinkFast, trước tiên chúng ta sẽ cùng xem mô hình Spanning-Tree cơ bản sau:
Như mô hình phía trên, mũi tên màu xanh biểu thị các BPDU được gửi bởi Root Bridge và hướng BPDU được gửi đi. Khi 1 cổng nhận được BPDU, nó sẽ có đường dẫn đến Root Bridge, điều này là do BDPU được tạo và gửi đi từ Root Bridge. Trong sơ đồ này, chúng ta cùng xem xét SW-03:
- Hai cổng g1/0/1 và g1/0/2 của SW-03 đang nhận BPDU, nên nó xác định 2 cổng này có đường dẫn đến Root Bridge. Khi đó switch sẽ block các cổng không phải Root Port, trong trường hợp này là g1/0/2.
- Cổng g1/0/3 chỉ chuyển tiếp BPDU đi nên cổng này không có đường tới Root.
Theo như định nghĩa của UplinkFast, khi được enable, switch sẽ tạo 1 uplink group cho tất cả các cổng có đường dẫn tới Root Bridge, bao gồm cả Root Port và các cổng bị Block, trong trường hợp này cổng g1/0/1 và g1/0/2. Cổng g1/0/3 không có đường dẫn đến Root Bridge nên nó sẽ không có trong Uplink Group.
Khi đường Uplink giữa SW-01 và SW-03 bị lỗi, SW-03 sẽ ngay lập tức nhận ra rằng đường dẫn duy nhất của nó đến Root Bridge bị mất, do đó nó sẽ ngay lập tức chuyển 1 cổng Alternate trong cùng Uplink Group, có Cost thấp nhất sang trạng thái Forwarding, trong trường hợp này là cổng g1/0/2, mà không cần phải chuyển qua các trạng thái Listening hay Learning. Quá trình này chỉ mất khoảng 1 giây, do đó sẽ giảm downtime trong mạng.
Lưu ý: UplinkFast chỉ hoạt động khi switch đã chặn các cổng, tính năng này thường được enable cho các switch access, có các đường Uplink dự phòng bị block. Khi enable UplinkFast, nó sẽ được bật trên toàn bộ switch chứ không thể bật cho từng VLAN riêng lẻ.
Update bảng CAM
UplinkFast rất hữu ích nhưng nó sẽ gây ra vấn đề với bảng CAM. Chúng ta sẽ cùng xem mô hình bên dưới trong trường hợp UplinkFast được enable.
Trong mô hình này, sau khi STP hội tụ xong thì chúng ta sẽ có cổng g1/0/2 của SW-03 là non-Designated Port và bị block. Khi đó SW-02 sẽ học được địa chỉ MAC của PC2 thông qua SW-01. Lúc này traffic gửi từ PC1 tới PC2 sẽ tới SW-02 => SW-01 => SW-03, và tới PC2.
Trong trường hợp đường Uplink giữa SW-01 và SW-03 bị lỗi, và UplinkFast được Enable, cổng g1/0/2 của SW-03 sẽ ngay lập tức được chuyển sang trạng thái Forwarding và chuyển tiếp dữ liệu, chúng ta sẽ có mô hình như bên dưới.
Tuy nhiên lúc này bảng CAM của các switch vẫn chưa được Update. Nếu trong thời gian này, PC1 gửi gói tin đến PC2, thì khi SW-02 tra cứu bảng MAC của nó, nó vẫn forward gói tin qua cổng g1/0/1 của nó tới SW-01, và lúc này gói tin sẽ bị drop trên SW-01, dẫn tới gián đoạn kết nối giữa PC1 và PC2.
Để giải quyết vấn đề này thì SW-03 sẽ bắt đầu gửi các gói tin multicast giả (dummy multicast) với nguồn là các địa chỉ MAC mà nó có trong bảng CAM (trong trường hợp này MAC nguồn sẽ là MAC của PC1), đích là 1 địa chỉ multicast độc quyền của Cisco, để đảm bảo rằng gói tin này sẽ được gửi tới tất cả các thiết bị trong mạng. Khi các thiết bị nhận được gói tin giả này, chúng sẽ cập nhật lại bảng CAM theo đúng mô hình hiện tại.
Tốc độ gửi gói multicast này chúng ta có thể cấu hình được, càng nhanh thì gián đoạn trong mạng sẽ càng ngắn. Tuy nhiên chúng ta cần quy hoạch hợp lý để tránh các gói multicast chiếm hết băng thông.
Khôi phục lại đường Uplink chính
Một câu hỏi đặt ra là, điều gì sẽ xảy ra nếu như đường Uplink chính hoạt động trở lại. Liệu SW-03 có ngay lập tức chuyển cổng g1/0/1 sang trạng thái Forwarding và block cổng g1/0/2 như mô hình ban đầu hay không. Câu trả lời là không. Chúng ta sẽ cùng xem mô hình bên dưới để giải thích cho trường hợp này.
Khi đường Uplink giữa SW-01 và SW-03 hoạt động trở lại, SW-03 sẽ không chuyển cổng g1/0/1 sang trạng thái forwarding ngay lập tức vì 2 lý do:
- Tính ổn định: mạng đang hoạt động bình thường, và các cổng có chức năng như nhau nên chúng ta không cần thiết phải thay đổi về cổng cũ. Nếu đường Uplink này bị chập chờn, Up/Down liên tục thì mạng sẽ bị thay đổi liên tục.
- Hai là ngay cả khi cổng g1/0/1 của SW-03 được chuyển sang Forwarding (block cổng g1/0/2), thì cổng g1/0/2 của SW-01 vẫn phải tuân thủ theo các quy tắc của STP, và chỉ được chuyển sang Forwarding sau 30 giây, nên nó sẽ gây gián đoạn mạng trong trường hợp này.
Do vậy giải pháp tốt nhất là vẫn giữ cổng g1/0/2 của SW-03 hoạt động cho đến khi cổng g1/0/2 của SW-01 chuyển sang trạng thái Forwarding. Việc chuyển đổi trạng thái 2 cổng của SW-03 sẽ bị trì hoãn sau 2*forward_delay + 5 giây = 35 giây (mặc định). Trong đó 30 giây là để STP hội tụ trên các switch khác, còn 5 giây dành cho thời gian đàm phán của các giao thức khác, như DTP. Điều này giúp mạng ổn định và tránh được các trường hợp đường Uplink UP/DOWN liên tục.
Cấu hình UplinkFast trên switch Cisco
Việc cấu hình UplinkFast thì rất đơn giản, chúng ta chỉ cần 1 câu lệnh spanning-tree uplinkfast cho mỗi switch.
switch(config)#spanning-tree uplinkfast |
Sau khi cấu hình xong thì Priority của switch sẽ được tăng lên thành 49152, Cost của cổng sẽ được cộng thêm 3000 để đảm bảo rằng các switch này sẽ không trở thành Root và ưu tiên trong quá trình bầu chọn, do UplinkFast được thiết kế cho các switch ở lớp Access có cổng bị Block.
switch#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 8193
Address 0016.4748.dc80
Cost 3019
Port 130 (FastEthernet3/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 49152
Address 0009.b6df.c401
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Uplinkfast enabled
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
G1/0/1 Altn BLK 3019 128.129 P2p
G1/0/2 Root FWD 3019 128.130 P2p
Để kiểm tra chi tiết về UplinkFast, các bạn sử dụng lệnh show spanning-tree uplinkfast.
SW-03#show spanning-tree uplinkfast
UplinkFast is enabled
Station update rate set to 150 packets/sec.
UplinkFast statistics
-----------------------
Number of transitions via uplinkFast (all VLANs) : 0
Number of proxy multicast addresses transmitted (all VLANs) : 0
Name Interface List
-------------------- ------------------------------------
VLAN0001 G1/0/1(fwd), G1/0/2
SW-03#
Các bạn có thể thấy 2 cổng g1/0/1 và g1/0/2 đang có trong Uplink Group, và mặc định số lượng dummy multicast sẽ là 150 packets/sec. Các bạn có thể thay đổi bằng lệnh spanning-tree uplinkfast max-update-rate, sau đó là số lượng gói tin gửi trên 1 giây, càng nhiều thì bảng MAC sẽ update càng nhanh.
SW-03(config)#spanning-tree uplinkfast max-update-rate 200 |
Tuy nhiên các bạn lưu ý rằng switch sẽ sử dụng tất cả các địa chỉ MAC để làm địa chỉ nguồn cho dummy Multicast, do vậy nếu trong hệ thống lớn, số lượng thiết bị nhiều thì điều này có thể chiếm hết băng thông trong mạng, do vậy các bạn cũng cần tính toán để cấu hình hợp lý, số lượng packet gửi đi trên 1 giây càng lớn, thì bảng MAC update càng nhanh, nhưng cũng chiếm nhiều băng thông hơn.
Kết luận
UplinkFast là 1 tính năng hữu ích, được Cisco phát triển để giảm thời gian hội tụ cho các giao thức Spanning Tree truyền thống STP 802.1d, trên các switch Cisco là PVST. Nếu vẫn đang sử dụng các giao thức này thì có thể enable UplinkFast để giảm downtime khi có chuyển đổi dự phòng. Còn nếu sử dụng các giao thức khác như RSPT, thì các bạn không cần quan tâm đến tính năng này, vì nó đã được tích hợp vào RSTP và được enable theo mặc định.
UplinkFast hữu ích đối với các cổng được kết nối trực tiếp, nghĩa là chỉ khi các cổng trên switch bị lỗi thì UplinkFast mới hoạt động. Đối với các link bị lỗi gián tiếp, Cisco sử dụng tính năng BackboneFast để xử lý, chúng ta sẽ cùng tìm hiểu trong 1 bài viết khác.
OK Như vậy là chúng ta đã cùng nhau tìm hiểu về tính năng Spanning Tree UplinkFast. Nếu các bạn có thắc mắc hay góp ý nào thì hãy để lại comment để mọi người cùng trao đổi nhé.
Chúc các bạn thành công!
Bình luận bài viết!