Bất kì một frame nào có địa chỉ MAC destination là của một thiết bị routing , khi MLS-SE nhận được frame loại này , nó sẽ mark frame này lên như là một candidate frame cho Layer 3 switch
Trang 1Bài viết này mô tả hoạt động của MLS và cách thức mà một Layer 3 switch sử dụng MLS
MLS được thiết kế ra nhằm hỗ trợ kiến trúc phân phối layer 3 switching Điều đó có nghĩa là không nhất thiết các thành phần của MLS phải được tích hợp trong một thiết bị phần cứng cụ thể MLS bao gồm 2 thành phần chính sau :
- MLS-RP ( MLS Route Processor ) : Thành phần này chính là Control Plane như ta đã biết Nó có tác dụng duy trì Routing table và cập nhật các Update khi mạng có sự thay đổi về topology
- MLS-SE ( MLS Switching Engine ) : Thành phần này chính là Data Plane Nó có tác dụng định ra next hop , egress interface , rewrite lại các frame mà nó nhận được và forward frame đến đúng đích
Trước tiên chúng ta hãy tìm hiểu xem flow là gì ? Flows là khái niệm dùng để mô tả các thông tin routing lưu trong route cache của MLS-SE Một flow có thể được định nghĩa dựa trên destination Ip address , hoặc sự kết hợp của source và destination ip address hoặc source ip address , destination ip address và source port , destination port (
TCP/UDP port ) Ví dụ : bất kì địa chỉ source nào gửi đến địa chỉ destination là
192.168.2.1 được coi là một flow Các packet từ source 192.168.2.1 đến địa chỉ đích 192.168.2.2 cũng được coi là một flow khác
Hình ảnh dưới đây mô tả kiến trúc của MLS và cách thức hoạt động của nó
Host X có địa chỉ là :
Ip : 192.168.1.100
Gateway : 192.168.1.1
Trang 2MAC : 0010.4ae0.1e03
MLS-RP có địa chỉ là :
Ip1 : 192.168.1.1
Ip2 : 192.168.2.1
MAC : 0010.7be2.abe0
Host Y có địa chỉ là :
Ip : 192.168.2.200
Gateway : 192.168.2.1
MAC : 0006.53fe.8420
Giải thích : Ta thấy MLS-RP không nhất thiết phải tích hợp luôn ở trong Switch Trong trường hợp này MLS-RP là router xử lí việc định tuyến giữa 2 vlan Interface Ethernet của Router được phân ra làm 2 sub interface , mỗi subinterface cung cấp default-gateway cho mỗi Vlan Host X nằm trong Vlan 1 có địa chỉ là 192.168.1.100 Host Y nằm trong Vlan 2 có địa chỉ là 192.168.2.200
Bước 1 : Host X gửi một packet đến cho Host Y Vì host Y nằm khác Vlan với Host X nên Host X phải gán địa chỉ destination MAC address là MAC address của default-gateway
Bước 2 : Frame gửi đi và được nhận bởi MLS-SE ( switch ) , MLS-SE nhận thấy
destination MAC là của MLS-RP Bất kì một frame nào có địa chỉ MAC destination là của một thiết bị routing , khi MLS-SE nhận được frame loại này , nó sẽ mark frame này lên như là một candidate frame cho Layer 3 switching MLS-SE sẽ xem xét destination
ip address trong packet và kiểm tra MLS cache đối với flow này Vì đây là packet đầu tiên gửi cho Host Y nên sẽ không có một entry nào trong bảng MLS cache Do đó packet
sẽ được chuyển lên cho MLS-RP xử lí Lúc này flow về destination Host Y đã được add vào một phần , đó là địa chỉ destination ip
Bước 3 : MLS-RP nhận được packet này và thực hiện routing bình thường Nó sẽ kiểm tra thông tin về destination ip trong bảng routing table và quyết định gửi ra sub interface dành cho vlan 2 Đồng thời nó cũng phải rewrite lại thông tin về destination MAC address , lúc này là địa chỉ MAC của Host Y ( Nếu chưa có thì phải gửi ARP request trước khi rewrite lại frame )
Bước 4 : MLS-SE nhận được frame và lưu tiếp thông tin về destination MAC address vào entry còn thiếu dành cho Host Y Thông tin chứa trong Entry này sẽ được dùng cho các lần rewrite và forward tiếp theo mà không cần phải chuyển lên cho MLS-RP xử lí nữa Bước 5 : Switch tra thông tin về destination MAC trong bảng CAM và switch packet ra interface 2/3 cho Host Y
Bước 6 : Host X lại gửi tiếp một packet khác cho Host Y , lúc này MLS-SE không cần phải chuyển lên cho MLS-RP nữa ,vì thông tin này là một flow đã có sẵn trong MLS cache của nó rồi Nó chỉ thực hiện các công việc rewrite lại destination MAC address , ip checksum và frame checksum
Như vậy kiến trúc của MLS dựa trên flow , do đó phân biệt được các loại flow là rất cần thiết Flow có 3 loại sau , còn gọi là các flow mask :
- Destination ip address ( destination-only ) : một địa chỉ destination duy nhất có thể tạo thành được một flow Tất cả các packet gửi đến cùng một destination ip address đều thuộc một flow Đối với ví dụ trên , flow mask là destination-only
- Source and destination ip address ( source-destination ) : tất cả các packet được gửi bởi một source và nhận được bởi một destination cụ thể nào đó thì tạo thành một flow Điều
Trang 3đó có nghĩa là có thể có nhiều flow cho một destination ip address , mỗi flow được phân biệt với nhau bởi source address
- Full flow ( full ) : Một full-flow chỉ ra traffic thuộc về một source ip address,
destination ip address , source TCP/UDP port , destination TCP/UDP port cụ thể Ví dụ Telnet session từ địa chỉ 192.168.2.1 đến địa chỉ 192.168.2.2 là một flow khác với flow tạo ra bỏi một session FTP từ 192.168.2.1 đến 192.168.2.2
Flow rất quan trọng , vì nó được chứa trong MLS cache , và thông tin này được sử dụng cho việc rewrite based on harware của layer 3 switching Flow mask ở dạng nào là tùy thuộc vào yêu cầu của mạng Tùy vào việc ACLs được triển khai như thế nào mà sử dụng flow mask cho phù hợp Ví dụ , nếu ta đang triển khai extended ACLs thì nên xài kiểu full flow
Minh họa hoạt động của MLS khi có ACLs
Bước 1 : Host X đang thiết lập một kết nối HTTP tới Host Y Nó gửi đi một packet có các thông số source ip = 192.168.1.100 , destination ip = 192.168.2.200 , protocol
number = 6 ( TCP ) , destination port = 80 , random source TCP port = 1111 Host Y không nằm cùng một subnet với Host X nên Host X sẽ phải gửi tới địa chỉ MAC
destination là của MLS-RP MLS-SE nhận được frame này , sẽ đánh dấu nó là một candidate frame dành cho layer 3 switching Khi MLS-RP nhận được packet này nó sẽ xét trong ACLs , permit packet này và thực hiện route ra interface phù hợp MLS-SE nhận được routed packet này sẽ ghi vào cache của mình là một flow mới
Bước 2 : Host X muốn thiết lập tiếp một FTP connection tới Host Y Do thông tin về FTP không match với thông tin của HTTP chứa sẵn trong cache của SE nên
MLS-SE sẽ gửi lên cho MLS-RP MLS-RP sẽ kiểm tra thông tin này có match với ACLs hay không Lúc này , nó nhận thấy thông tin này bị deny trong ACLs nên sẽ drop packet này luôn MLS-SE sẽ không nhận được thông tin về flow này từ MLS-RP nữa , do đó nó sẽ
Trang 4không ghi thông tin của flow này vào cache
Bước 3 : Đối với phiên làm việc được thiết lập giữa Host X và Host Y như ở bước 1 thì
sẽ được MLS-SE switch mà không cần phải chuyển lên cho MLS-RP nữa Nếu có một session HTTP khác được thiết lập , tức là sẽ có 1 source port random khác được tạo ra và tương ứng sẽ có thêm 1 flow nữa cho session này được tạo ra trong cache của MLS-SE MLS cần có một sự giao tiếp giữa MLS-RP và MLS-SE nhằm đảm bảo cho việc thực hiện layer 3 switching của MLS-SE là diễn ra chính xác Các sự kiện sau đây sẽ làm cho thông tin về flow trong cache không còn chính xác nữa :
- Routing Topology thay đổi
- Cấu hình ACL thay đổi
Giữa MLS-RP và MLS-SE phải chạy một giao thức gọi là MLSP ( multilayer switching protocol ) MLSP multicast hello được gửi đi bởi MLS-RP với thời gian interval là 15s , thông báo cho MLS-SE về sự thay đổi của routing topology và ACLs
Đối với một packet đầu tiên , MLS phải xử lí bằng software Các packet kế tiếp cùng flow với packet đầu tiên mới được xử lí bằng hardware Mỗi khi có một session mới được thiết lập thì phải add thêm thông tin về flow của session đó vào cache Nếu
network của chúng ta là dạng large enterprise thì việc sử dụng MLS là không tối ưu Thông tin lưu trữ về các flow , và việc quản lí , duy trì các thông tin này trở nên quá tải đối với MLS Vì thế người ta chuyển sang sử dụng CEF