I. Giới thiệu: Spanning Tree Protocol - STP là giao thức hoạt động trên switch mà giúp tránh loops. STP là một trong những giao thức mà chúng ta phải biết và hiểu rỏ về nó nếu làm về network. Hôm nay chúng ta tìm hiểu về STP trên thiết bị switch của cisco.
II. Tìm hiểu và ví dụ:
Tại sao cần STP?
Ở sơ đồ trên có 2 switch chúng được nối với nhau bằng một sợ cáp (không có STP ở đây), nếu có vấn đề về cáp thì 2 switch sẽ không kết nối được người ta gọi là Single Point of Failure - SPOF, để dự phòng thì chúng ta đấu thêm 1 cáp nữa lúc này sẽ có loop xảy ra ở đây.
Trước khi đi vào bài này các bạn phải biết về ARP và Hoạt động của switch
Sw01
1. PC01 gửi ARP request vì nó tìm MAC address của PC02. ARP request là gói broadcast frame.
2. Sw01 sẽ forward broadcast frame này trên tất cả các cổng trừ cổng nhận vào
3. Sw02 sẽ nhận được cả hai gói broadcast frame.
Sw02
1. Sw02 sẽ forward broadcast frame nhận được trên tất cả các cổng trừ cổng nhận vào
2. Có nghĩa là frame nhận được trên e0/1 sẽ forward ra trên cổng e0/2
3. Frame nhận được trên cổng e0/2 cũng sẽ forward đến cổng e0/1
Đã có loop xảy ra vì cả 2 switch cứ forward liên tục cho đến khi:
- Tháo 1 sợ cáp ra
- Có 1 switch bị treo vì đầy bộ nhớ.
Ethernet frame thì không có TTL (Time to Live) nên gói tin sẽ bị lặp đi lặp lại và có rất nhiều gói tin ARP request frame là broadcast. Hơn nữa switch sẽ biết được đâu là MAC address nó cứ forward đi.
STP chống loop như thế nào! STP hoạt động thông qua:
- 4 bước hoạt động:
- Bầu chọn root - switch (Root-Bridge)
- Bầu chọn các root - port (NON-Root bridge)
- Bầu chọn designated - port
- Khóa các port để chống loop (chọn ra alternated - port, hay block - port)
- 3 nguyên tắc so sánh:
- Path cost
- Sender bridge ID
- Sender port ID
Xét ví dụ cụ thể
Chúng ta có 3 switch được đấu nối vòng tròn với nhau để dự phòng, và cũng có nghĩa là sẽ có loop trong ở đồ này. Để đơn giản hơn ta ví dụ các switch có MAC address tương ứng:
- Switch A: AAA
- Switch B: BBB
- Switch C: CCC
1. Bầu chọn root - switch:
Spanning-tree sẽ tính toán và chọn ra có bridge ID nhỏ nhất để làm root bridge. Bình bầu theo nguyên tắc:
- Switch nào có priority (mặt định là 32768) nhỏ nhất sẽ làm root switch.
- Nếu bằng nhau thì xét MAC address (MAC nhỏ nhất là: so sánh giá trị hexa từ trái sang phải switch nào có MAC nhỏ nhất sẽ làm root switch)
Ở đây Switch A là Root - switch, và các port của root-switch thường là designated port, nghĩa là chúng ở trạng thái forwarding. Định kỳ 2 giây switch sẽ gửi BPDU ra cổng 1 lần.
2. Bình bầu root - port:
- Root - switch không tham gia bình bầu root - port.
- Trên các non-root switch sẽ chọn ra các port cung cấp đường về root-switch mà nó đang xét có tổng giá trị path-cost tính lũy (cộng dồn) là nhỏ nhất. (Ví dụ trên: chúng ta thấy Sw B có 2 đường về Sw A đó là thông qua cổng E0/0 và E0/1, E0/0 nhỏ hơn sẽ được chọn, T.tự port E0/2 trên Sw C sẽ được chọn)
- Nếu path-cost bằng nhau và cùng sender ID: cổng nào có port sender ID (đấu nối với cổng đầu xa) nhỏ hơn sẽ là root-port.
- Mỗi non-root switch chỉ có duy nhất 1 root-port
Vậy root-port cần chọn sẽ là:
- Switch B: E0/0- Switch C: E0/2
3. Bầu chọn designated port:
- Tất cả các port của root switch là designated-port
- Trên mỗi phân đoạn đối diện root-port là designated port (theo 1 chiều, không có hướng ngược lại)
- Mỗi link chỉ có 1 designated port
- Là port cung cấp đường về root-switch mà trên phân đoạn đang xét có tổng path-cost tích lũy là nhỏ nhất. Nếu tổng path-cost bằng nhau thì xét:
- Khác switch: Sender Bridge ID = MAC address + Priority để xác định, cổng nào có bridge ID (bridge-id của switch láng riềng) nhỏ hơn làm designated port;
- Cùng switch: Port ID, cổng nào có port ID nhỏ hơn làm designated port.
Vậy designated-port sẽ là:
- Switch A: E0/0, E0/2- Switch B: E0/14. Chọn block-port / alternated port:
Là port chưa phân công vai trò (không phải là root port hay designated port)Vậy block-port là
Switch C: E0/1
Trường hợp này Switch D có cùng path-cost tích lũy, cùng Sender Bridge ID;
Xét port sender ID: ta thấy port sender ID E0/0 nhỏ hơn E0/3 nên E0/0 của Switch D sẽ là root port.
Vậy Root-port là
Switch D: E0/0
Xét port sender ID: ta thấy port sender ID E0/0 nhỏ hơn E0/3 nên E0/0 của Switch D sẽ là root port.
Vậy Root-port là
Switch D: E0/0
Tương tự có có được cổng E0/3 của switch D là block port do dựa vào port ID
III. Bộ định thời gian Timer STP:
STP sử dụng các bộ định thời gian chính là: Hello timer, forward delay timer, max age timer.
- Hello timer: Mặt định cứ 2 giây 1 lần root switch gửi BPDU ra các cổng 1 lần;
- Forward delay timer: Mặt định 15 giây là khoảng thời gian STP chuyển các trạng thái Listening, Learning trước khi sang trạng thái Forwarding.
- Max age timer: Gía trị mặt định 20 giây. Nghĩa là khi 1 cổng đang nhận BPDU bỗng nhiên nó nhận BPDU kém hơn (interior BPDU), cổng sẽ chờ hết thời gian Max-age rồi mới thực hiện các hoạt để hội tụ thích hợp.
IV. Các trạng thái cổng trong STP:
Blocking: Đang bị khóa, nhận BPDU, không gửi BPDU, không học MAC, không forward frame (20 giây);
Listening: Nhận và gửi BPDU, không học MAC, không forward frame (15 giây);
Learning: Nhận và gửi BPDU, học MAC, không forward frame (15 giây);
Forward: Nhận và gửi BPDU, học MAC, forward frame.
Nhận xét: Với ví dụ trên để cổng E0/1 của switch C chuyển từ trạng thái alternated port sang trạng thái forward thì:
- Nếu bị đức đường link từ switch C nối về switch A (trực tiếp) thì mất 30 giây = 15s listening + 15s learning (trường hợp này không cần dùng thời gian max-age)
- Nếu bị đức đường link từ switch C nối về switch A (gián tiếp) thì mất 50 giây = 20s max-age + 15s listening + 15s learning.
Đến đây chúng ta có thể giải thích tại sao khi switch đã khởi động xong mà cắm dây mạng vào phải 1 khoảng thời là 30 giây đèn trạng thái mới chuyển từ màu cam sang màu xanh.
Tóm tắt bài học:
Cấu hình:
- Bật STP trên các vlan
spanning-tree vlan vlan-id
- Hiệu chỉnh priority cho switch
spanning-tree vlan vlan-id priority priority
- Cấu hình switch trở thành root switch
spanning-tree vlan vlan-id root {primary/secondary}
- Hiệu chỉnh trí giá cost trên cổng
spanning-tree vlan vlan-id cost cost
- Hiệu chỉnh port - priority trên cổng
spanning-tree vlan vlan-id port-priority priority
- Hiệu chỉnh timer của STP
spanning-tree vlan vlan-id hello-time secondsspanning-tree vlan vlan-id forward-time secondsspanning-tree vlan vlan-id max-age seconds
- Chọn mode STP
spanning-tree mode {pvst | rapid-pvst | mst}
Mặc định được bật trên các switch cisco hoạt động ở chế độ pVST + (pvst)
- Kiểm tra thông số hoạt động của STP
show spanning-tree vlan vlan-id
Xong!
No comments:
Post a Comment