4 Giao Thức OpenFlow
4.2 Bảng OpenFlow Và Nguyên Lý Đường Ống Dẫn (pipeline)
Phần này sẽ miêu tả Flow Table và Group Table cùng với nguyên lý kết hợp (matching) và xử lý hành động (action handling) của chúng.
Một Flow Table gồm các Flow entry như sau:
Mỗi Flow Entry gồm nhữ trường sau:
- Match Fields: để so sánh hay kết hợp với các thơng tin trong gói tin nhận
được. Nó gồm các cổng vào (Ingress Port), mào đầu của gói tin (Header), metadata được xácđịnh bởi một bảng trước (trường này là tùy chọn)
- Counter : là biến được cập nhật khi có gói tin được khớp với Match Fields.
- Intructions: là chỉ thị thực thi hành động hoặc là xử lý đường ống dẫn
(Pipeline Processing).
Quá trình xử lý gói tin được Switch thực hiện theo nguyên lý đường đường ống dẫn.
Trong Switch OpenFlow được chia làm hai loại: Switch chỉ hỗ trợ OpenFlow
(OpenFlow-Only), Switch OpenFlow lai (OpenFlow Hybrid). Với Switch chỉ hỗ trợ OpenFlow thì sẽ chỉ xử lý gói tin theo nguyên lý đường ống dẫn (Pipeline).
OpenFlow-hybrid hỗ trợ hoạt động như một OpenFlow switch và Switch thơng thường ví dụ như tính năng chuyển mạch của các Switch truyền thống, cấu hình VLAN, định tuyến lớp 3, xử lý định tuyến lớp 3. Những Switch này cung cấp một kỹ thuật để phần loại xem lưu lượng cần đi vào đường ống dẫn của OpenFlow hay đi vào đường ống dẫn thơng thường. Ví dụ Switch có thể sử dụng Vlan id hoặc cổng nhận được gói tin để quyết định xem sẽ định tuyến gói tin vào đường ống dẫn của OpenFlow hay đường ống dẫn thông thường. Một Switch lai có thể cho phép gói tin đi từ đường ống dẫn OpenFlow sang đường ống dẫn thông thường qua các cổng ảo Normal hoặc Flooding.
36
Đường ống dẫn OpenFlow của mỗi Switch OpenFlow chứa các nhiều bảng Flow Table, mỗi bảng Flow Table lại chứa các Flow Entry. Quá trình xử lý đường ống dẫn OpenFlow xác định quan hệ tương tác giữa các bảng Flow Table này. Mỗi OpenFlow Switch nếu chỉ có một bảng Flow Table hợp lệ thì q trình xử lý đường ống dẫn sẽ vơ cùng đơn giản.
Hình 8: Hoạt động của xử lý đường ống dẫn
Các bảng Flow trong Switch được đánh số tuần tự bắt đầu từ 0. Quá trình xử lý đường ống dẫn OpenFlow ln bắt đầu từ bảng đầu tiên. Việc sử dụng các bảng tiếp theo phụ thuộc vào kết quả kết hợp của bảng trướcđó.
Nếu gói tin được kết hợp (matching) với một Flow Entry trong một bảng thì các chỉ thị tương ứng sẽ được thực hiện. Chỉ thị này có thể chuyển tiếp gói tin đến một bảng Flow Table khác (bằng cách sử dụng chỉ thị Goto) và ở đó lại lặp lại các quá trình xử lý như vậy. Một Flow Entry chỉ có thể chuyển gói tin đến các bảng Flow có chỉ số lớn hơn chỉ số của bảng Flow hiệntại (chiều thuận). Mặt khác xử lý đường ống dẫn chỉ có thể
37
thực hiện theo thuận và không thể thực hiện chuyển tiếp ngược lại bảng Flow trước đó. Do đó, những Flow Entry của bảng Flow cuối cùng khơng thể có các chỉ thị Goto được. Nếu một Flow Entry khơng chuyển gói tin tới với bảng Flow khác thì quá trình xử lý đường ống dẫn sẽ dừng lại ở đó. Khi xử lý đường ống dẫn được dừng lại thì gói tin sẽ được xử lý bởi một tập các lệnh hành động (Action Set) mà kết hợp với Flow Entry đó. Hành động thơng thường là chuyển tiếp gói tin.
Nếu trong trường hợp gói tin khơng được kết hợp với bất cứ Flow Entry nào trong bảng Flow Table đang xử lý thì bẳng Flow Table này được gọi là một bảng Flow thiếu (Table Miss). Cách xử lý khi một bảng Flow Table bị thiếu phụ thuộc vào cấu hình của bảng. Ngầm định là chuyển gói tin đến Controller qua kênh điều khiển. Một tùy chọn xử lý khác cho trường hợp này có thể là hủy bỏ gói tin. Một bảng Flow cũng có thể được cấu hình để tiếp tục xử lý gói tin khi khơng có Flow Entry nào được kết hợp. Khi đó gói tin sẽ được chuyển bảng Flow có số thứ tự tiếp theo để xử lý.