STP dùng các thông điệp giữa các switch để giúp ổn định hệ thống mạng về một sơ đồ không bị vòng lặp. Để làm được như cậy, STP sẽ đưa vài cổng của switch về trạng thái bị khóa (blocking), cổng sẽ không truyền hay nhận dữ liệu. Các cổng còn lại sẽ ở trạng thái chuyển tiếp dữ liệu (forwarding). Tất cả các loại cổng này sẽ giúp hình thành một sơ đồ mạng không bị lặp vòng.
Các bước diễn tiến của hoạt động của giao thức STP:
Thông thường, bridgeID được hình thành gồm giá trị độ ưu tiên (priority - 2 byte)và địa chỉ MAC của switch. Chỉ một switch có thể là gốc của một cây STP. Để tìm ra Switch gốc, các switch phải bầu chọn. Từng switch sẽ bắt đầu hoạt động STP của nó bằng cách tạo và gửi các gói STP BPDU, trong đó thông báo chính nó là gốc của cây STP. Nếu một switch nghe một BPDU tốt hơn (tức là BPDU có bridgeID nhỏ hơn), switch đó sẽ không khai báo nó là gốc của cây STP nữa. Thay vào đó, switch sẽ bắt đầu gửi ra các BPDU nhận được từ switch ứng cử viên tốt hơn. Cuối cùng, tất cả các switch ngoại trừ switch có bridgeID tốt nhất sẽ ngừng gửi BPDU. Switch chiến thắng trong quá trình bầu cử trở thành switch gốc của cây STP.
Giá trị bridgeID nguyên thủy của 802.1D có hai trường:
Switch(config)#spanning-tree vlan vlan-id root {primary | secondary} [diameter diameter]
Định dạng của BPDU bị thay đổi là do việc phát minh ra các phiên bản PVST+ và MST. Với kiểu bridgeID cũ, một bridgeID của một switch cho mỗi phiên bản spanning tree là giống nhau nếu switch dùng một MAC. Nếu dùng nhiều spanningtree, việc mỗi switch chỉ có một bridgeID có thể gây ra nhầm lẫn. Vì vậy Cisco dùng một địa chỉ MAC khác nhau cho từng VLAN khi tạo ra bridgeID. Điều này dẫn đến các giá trị bridgeID khác nhau mỗi VLAN, nhưng cũng sẽ làm tốn nhiều địa chỉ MAC trong từng switch. Trường SystemID mở rộng cho một mạng dùng nhiều phiên bản spanningtree, mà không cần dùng các địa chỉ MAC riêng biệt cho từng switch. Trường này cho phép các VLAN-ID được đặt trong 12 bit cuối cùng của trường độ ưu tiên. Một switch có thể dùng một địa chỉ MAC để xây dựng nên bridgeID và với chỉ số VLAN trong trường SystemID, switch này vẫn có một bridgeID duy nhất trong từng VLAN. Việc sử dụng trường systemID mở rộng còn được gọi là cơ chế giảm địa chỉ MAC (MAC address reduction).
Xác định root port
Sau khi Switch gốc đã được bầu chọn, các switch còn lại cần phải xác định cổng gốc (root port). Tiến trình bầu chọn được mô tả như sau:
Switch gốc tạo ra các gói hello BPDU và gửi mỗi hai giây. Từng switch khi nhận gói hello sẽ tiếp tục chuyển các gói hello. Switch có cập nhật một số trường trong hello như chi phí (cost), bridgeID, độ ưu tiên của cổng và số thứ tự cổng của switch gửi. Switch không gửi hello BPDU ra những cổng đã trong trạng thái bị khóa. Trong tất cả các cổng của switch nhận gói tin hello, các cổng có chi phí thấp nhất về Switch gốc sẽ là cổng gốc (root port). Một switch phải kiểm tra giá trị chi phí trong mỗi BPDU, thêm vào giá trị chi phí của cổng để xác định đường đi ngắn nhất về Switch gốc. Switch sẽ cộng thêm vào giá trị chi phí được chỉ ra trong BPDU với giá trị chi phí của switchport mà nó nhận gói BPDU. Chi phí đường đi (Path cost) được xem như là chi phí của kết nối, tỉ lệ với băng thông của liên kết. Thông số này có thể được cấu hình bằng dòng lệnh.
Switch(config-if)#spanning-tree vlan vlan-id cost cost
Các bước diễn tiến của hoạt động của giao thức STP:
- Xác định switch gốc (root switch): Switch có bridgeID nhỏ nhất sẽ được bầu chọn.
- Xác định cổng gốc (root port): là cổng trên những non-root switch có kết nối ngắn nhất về root switch.
- Xác định cổng designated trên từng phân đoạn kết nối: Khi có nhiều switch kết nối vào một phân đoạn, đây là cổng của switch chịu trách nhiệm đẩy lưu lượng ra khỏi phân đoạn.
Thông thường, bridgeID được hình thành gồm giá trị độ ưu tiên (priority - 2 byte)và địa chỉ MAC của switch. Chỉ một switch có thể là gốc của một cây STP. Để tìm ra Switch gốc, các switch phải bầu chọn. Từng switch sẽ bắt đầu hoạt động STP của nó bằng cách tạo và gửi các gói STP BPDU, trong đó thông báo chính nó là gốc của cây STP. Nếu một switch nghe một BPDU tốt hơn (tức là BPDU có bridgeID nhỏ hơn), switch đó sẽ không khai báo nó là gốc của cây STP nữa. Thay vào đó, switch sẽ bắt đầu gửi ra các BPDU nhận được từ switch ứng cử viên tốt hơn. Cuối cùng, tất cả các switch ngoại trừ switch có bridgeID tốt nhất sẽ ngừng gửi BPDU. Switch chiến thắng trong quá trình bầu cử trở thành switch gốc của cây STP.
Giá trị bridgeID nguyên thủy của 802.1D có hai trường:
- Trường độ ưu tiên (priority) 2 byte: được thiết kế để cấu hình trên các switch khác nhau để ảnh hưởng đến kết quả của quá trình bầu của STP.
- Một trường có độ dài 6 byte chứa địa chỉ MAC, được dùng để so sánh trong trường hợp độ ưu tiên của các switch là bằng nhau. Chắc chắn là sẽ có một switch thắng quá trình bầu chọn
- Bridge Priority : nếu Bridge nào có độ ưu tiên thấp nhất sẽ được chọn làm gốc của cây STP. Nếu các Bridge có độ ưu tiên bằng nhau, thì tiến hành chọn lựa dựa vào địa chỉ MAC.
- Địa chỉ MAC: Bridge nào có MAC thấp hơn thì sẽ được chọn làm gốc của cây STP. Đây là trường hợp cuối cùng trong việc chọn gốc của cây STP vì không có trường hợp các Bridge có địa chỉ MAC giống nhau. Thông số độ ưu tiên có thể được thay đổi bằng lệnh sau:
Switch(config)#spanning-tree vlan vlan-id priority bridge-priority
Switch(config)#spanning-tree vlan vlan-id root {primary | secondary} [diameter diameter]
Hình 1. Định dạng của bridgeID
Định dạng của BPDU bị thay đổi là do việc phát minh ra các phiên bản PVST+ và MST. Với kiểu bridgeID cũ, một bridgeID của một switch cho mỗi phiên bản spanning tree là giống nhau nếu switch dùng một MAC. Nếu dùng nhiều spanningtree, việc mỗi switch chỉ có một bridgeID có thể gây ra nhầm lẫn. Vì vậy Cisco dùng một địa chỉ MAC khác nhau cho từng VLAN khi tạo ra bridgeID. Điều này dẫn đến các giá trị bridgeID khác nhau mỗi VLAN, nhưng cũng sẽ làm tốn nhiều địa chỉ MAC trong từng switch. Trường SystemID mở rộng cho một mạng dùng nhiều phiên bản spanningtree, mà không cần dùng các địa chỉ MAC riêng biệt cho từng switch. Trường này cho phép các VLAN-ID được đặt trong 12 bit cuối cùng của trường độ ưu tiên. Một switch có thể dùng một địa chỉ MAC để xây dựng nên bridgeID và với chỉ số VLAN trong trường SystemID, switch này vẫn có một bridgeID duy nhất trong từng VLAN. Việc sử dụng trường systemID mở rộng còn được gọi là cơ chế giảm địa chỉ MAC (MAC address reduction).
Xác định root port
Sau khi Switch gốc đã được bầu chọn, các switch còn lại cần phải xác định cổng gốc (root port). Tiến trình bầu chọn được mô tả như sau:
Switch gốc tạo ra các gói hello BPDU và gửi mỗi hai giây. Từng switch khi nhận gói hello sẽ tiếp tục chuyển các gói hello. Switch có cập nhật một số trường trong hello như chi phí (cost), bridgeID, độ ưu tiên của cổng và số thứ tự cổng của switch gửi. Switch không gửi hello BPDU ra những cổng đã trong trạng thái bị khóa. Trong tất cả các cổng của switch nhận gói tin hello, các cổng có chi phí thấp nhất về Switch gốc sẽ là cổng gốc (root port). Một switch phải kiểm tra giá trị chi phí trong mỗi BPDU, thêm vào giá trị chi phí của cổng để xác định đường đi ngắn nhất về Switch gốc. Switch sẽ cộng thêm vào giá trị chi phí được chỉ ra trong BPDU với giá trị chi phí của switchport mà nó nhận gói BPDU. Chi phí đường đi (Path cost) được xem như là chi phí của kết nối, tỉ lệ với băng thông của liên kết. Thông số này có thể được cấu hình bằng dòng lệnh.
Switch(config-if)#spanning-tree vlan vlan-id cost cost
Comment