Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Giao thức cây mở rộng 802.1d (stp)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Giao thức cây mở rộng 802.1d (stp)

    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:
    • 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.
    Bầu chọn switch làm gốc của cây STP (root switch – root bridge)

    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
    Việc bầu chọn Bridge gốc dựa vào hai yếu tố theo thứ tự sau:
    • 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
    Thông số độ ưu tiên khoảng từ 0 đến 65535 và giá trị mặc định là 32768. Ta cũng có thể lựa chọn switch làm gốc của cây STP trực tiếp bằng lệnh:

    Switch(config)#spanning-tree vlan vlan-id root {primary | secondary} [diameter diameter]
    Click image for larger version

Name:	stp.png
Views:	86
Size:	19.0 KB
ID:	425920

    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

  • #2
    Click image for larger version

Name:	stp2.png
Views:	56
Size:	32.7 KB
ID:	425922

    Hình 2. Quá trình bầu chọn cổng gốc
    Trong hình trên, sw1 là switch gốc và ban đầu gửi ra các gói hello có chi phí=0. switch sẽ nhận được hai gói hello. Một gói có chi phí bằng 0 và một gói có chi phí bằng 38. Tuy nhiên, SW3 sẽ tính toán chi phí của nó để đi về switch gốc. Chi phí này được tính bằng cách cộng chi phí trên cổng của nó vào các giá trị trên. Kết quả là, mặc dù sw3 có kết nối trực tiếp vê SW1, chi phí tổng cộng đi ra cổng F0/4 thấp hơn chi phí đi ra cổng F0/1. Vì vậy SW3 sẽ chọn F0/4 là đường đi về switch gốc. Cần lưu ý là giá trị chi phis STP thường được kết hợp với các giao diện (interface). Thực tế có vài khuyến cáo dùng cùng giá trị chi phí STP trên từng kết nối điểm-điểm của các phân đoạn Ethernet.
    Khi một switch nhận được nhiều BPDU có tổng chi phí bằng nhau, switch sẽ dùng tiêu chí sau để so sánh:
    • Chọn giá trị BridgeID thấp nhất của switch gửi.
    • Dùng giá trị độ ưu tiên trên cổng thấp nhất của switch kế cận. Switch kế cận đã thêm vào giá trị độ ưu tiên trên cổng của nó trước khi tiếp tục gửi BPDU đi.
    • Dùng giá trị chỉ số cổng của switch.
    Trong danh sách này, nếu điều kiện 1 không thỏa mãn, switch này phải có nhiều kết nối đến cùng switch láng giềng. Hai điều kiện sau chỉ giúp thiết bị nên chọn kết nối nào để dùng.

    Xác định cổng designated

    Một mạng STP hội tụ sẽ dẫn đến chỉ một switch đẩy traffic vào và ra trên phân đoạn mạng đó. Switch đẩy traffic vào/ra một phân đoạn mạng được gọi là designated switch. Cổng dùng để chuyển frame ra khỏi phân đoạn mạng đó được gọi là designated port (DP). Để được bầu chọn quyền làm DP, một switch phải gửi gói tin Hello với giá trị chi phí thấp nhất vào phân đoạn mạng.
    Hội tụ về sơ đồ mạng mới


    STP sẽ tiếp tục giám sát tiến trình gửi các BPDU ngay cả khi cấu trúc mạng đã ổn đinh. Khi có sự thay đổi, STP cần phải phản ứng và hội tụ về một sơ đồ mạng mới. Khi mạng đã ổn định, các tiến trình sau xảy ra:
    • Switch gốc sẽ gửi ra các BPDU định kỳ theo khoảng thời gian hello.
    • Các switch khác nhận một BPDU trên cổng gốc (root port) của nó.
    • Mỗi switch sẽ cập nhật và tiếp tục đẩy BPDU ra các cổng DP.
    • Đối với các cổng đang bị khóa, switch sẽ định kỳ nhận một bản BPDU từ DP trên phân đoạn mạng đó. Switch không gửi BPDU ra các cổng bị khóa.
    • Khi có sự khác biệt với các tiến trình nêu trên, STP biết rằng sơ đồ mạng đã thay đổi và sự hội tụ mới cần phải diễn ra. Ví dụ, switch gốc mất nguồn điện, tất cả các switch sẽ không nghe BPDU và sau khi khoảng thời gian MaxAge đã hết, các switch sẽ bầu chọn lại switch gốc mới.
    Click image for larger version

Name:	stp3.png
Views:	50
Size:	37.4 KB
ID:	425923

    Một vài bước sẽ xảy ra:
    • SW2 không còn nhận được BPDU trên các cổng gốc (RP) của nó.
    • Bởi vì SW2 không nhận được BPDU trên bất kỳ đường đi nào, nó bắt đầu quá trình bầu chọn switch gốc mới bằng cách thông báo chính nó là switch gốc và bắt đầu gửi BPDU ra tất cả các cổng.
    • SW4 nhận thấy BPDU cuối cùng có đề cập đến một switch gốc mới, nhưng SW4 sẽ giữ nguyên giá trị RP. SW4 sẽ gửi BPDU về SW3 sau khi cập nhật các trường phù hợp trong BPDU.
    SW3 nhận được BPDU từ SW4 nhưng BPDU này kém hơn (không ưu tiên) so với BPDU mà SW3 nhận được từ SW1. Vì vậy, SW3 trở thành DP trên phân đoạn mạng giữa nó và SW4 và bắt đầu gửi ra BPDU trên cổng đó. Trước đây, SW1 đã thắng quá trình bầu cử, như vậy các gói BPDU từ SW1 và SW2 sẽ tiếp tục cạnh tranh với nhau và SW1 sẽ thắng một lần nữa. Phần còn lại của tiến trình sẽ dẫn đến cổng F0/4 của SW3 là DP, cổng F0/3 của SW4 là RP, SW4 F0/2 là DP và SW f0/4 là RP.

    Các thông báo thay đổi mô hình STP (TCN) và việc cập nhật bảng CAM

    Khi STP tái hội tu, một vài hàng trong bảng CAM có thể không còn hợp lệ. Ví dụ, trong ví dụ trên, SW3 có trong bảng MAC của nó một hàng là 0200.1111.1111 là địa chỉ của Router1 MAC chỉ ra cổng F0/4 của nó. Khi kết nối giữa SW1 và SW2 bị lỗi, SW3 cần phải cập nhật bảng CAM của nó để chỉ ra 0200.1111.1111 chỉ ra cổng F0/1. Để cập nhật bảng CAM, có hai việc cần diễn ra: Tất cả các switch cần phải được lưu ý để xóa các hàng trong bảng CAM. Từng switch phải sử dụng khoảng thời gian timeout ngắn, tương đương forward delay 15 giây để xóa bảng CAM.

    Bởi vì một vài switch có thể không trực tiếp nhận thấy sự thay đổi trong sơ đồ mạng, bất kỳ switch nào khi phát hiện một sự thay đổi đều có trách nhiêm lưu ý cho các switch còn lại. Lúc này, một switch sẽ lưu ý switch gốc thông qua các TCN BPDU. TCN sẽ được gửi ngược về switch gốc. Sau đó, switch gốc sẽ lưu ý tất cả các switch còn lại. Quá trình hoạt động như sau:

    Khi một switch nhận ra một sự thay đổi trạng thái, switch sẽ gửi ra TCN BPDU ra khỏi cổng gốc. Switch sẽ lặp lại thông điệp này cho đến khi nào nó nhận được ACK. Switch kế tiếp nhận được TCN BPDU sẽ gửi ngược lại ACK thông qua hello BPDU bằng cách đánh dấu bit TCA trong hello BPDU. Switch Designated trên một phân đoạn mạng sẽ tiếp tục gửi ra các TCN BPDU trên các cổng gốc của nó và chờ hồi đáp (ACK) từ DP trên phân đoạn mạng đó.

    Bằng cách lặp lại các bước 1 và 2, cuối cùng switch gốc cũng sẽ nhận được TCN BPDU. Khi nhận được, switch gốc sẽ thiết lập bit TCA trong hello BPDU của nó và gửi ra tất cả các switch khác, lưu ý các switch khác là đã có một sự thay đổi xảy ra. Một switch nhận một hello BPDU với bit TCA được thiết lập sẽ làm ngắn khoảng thời gian xóa các dòng không còn hợp lệ trong bảng CAM.

    Chuyển đổi từ trạng thái khóa sang chuyển tiếp

    Khi STP chuyển sang một dạng hội tụ mới, một vài cổng đang trong trạng thái khóa có thể được gán vai trò là DP hoặc RP. Vì vậy, các cổng này cần phải được chuyển sang trạng thái chuyển tiếp. Tuy nhiên, việc chuyển trạng thái từ khóa sang trạng thái chuyển tiếp không thể được thực hiện mà không có nguy cơ gây ra vòng lặp. Để chuyển một cổng sang trạng thái chuyển tiếp, đầu tiên switch sẽ đặt cổng này vào trạng thái lắng nghe, sau đó sang trạng thái học địa chỉ MAC. Mỗi trạng thái sẽ tồn tại trong khoảng thời gian gọi là thời gian trì hoãn chuyển tiếp (forward delay timer) 15 giây.

    Tóm lại, khi STP nhận ra một sự thay đổi trong sơ đồ mạng, nó sẽ hội tụ có thể bằng cách chọn ra một số cổng khác làm RP, DP…Bất kỳ một switch nào thay đổi các RP hoặc DP sẽ gửi ra các TCN BPDU về switch gốc. Đối với các cổng được gán như RP hoặc DP, 802.1D sẽ dùng các trạng thái lắng nghe và học địa chỉ MAC trước khi có thể chuyển sang trạng thái chuyển tiếp. Trong khi quá trình từ trạng thái chuyển tiếp sang trạng thái khóa có thể thực hiện tức thời.

    Comment

    Working...
    X