1.4. Giao thức OpenFlow
1.4.4. Quy trình xử lý gói tin trong Openflow
Openflow quy định quá trình xử lý lưu lượng tại các bộ chuyển mạch dựa trên sự nhận dạng luồng bởi các mục luồng như đã trình bày ở mục 1.4.2. Các mục luồng được cài đặt và chỉnh sửa bởi bộ điều khiển thông qua các bản tin trao đổi nêu trong mục 1.4.3. Quy trình xử lý các gói tin đến tại bộ chuyển mạch được thực hiện như sau:
- Các mục luồng được sắp xếp thành các bảng luồng. Q trình xử lý gói tin được thực hiện qua các bảng luồng kế tiếp nhau theo cơ chế đường ống (pipeline) [20]. Trong mỗi bảng luồng, các mục luồng được sắp xếp theo thứ tự ưu tiên từ cao đến thấp. Khi nhận được một gói tin tới, bộ chuyển mạch thực hiện so khớp (matching) các trường tiêu đề của gói tin với các mục luồng trong bảng luồng đầu tiên. Gói tin khớp với mục luồng nào trước, nó sẽ thuộc về luồng tương ứng. Khi được khớp với một mục luồng, các tập lệnh xử lý tương ứng trong mục luồng sẽ được thực thi. Tùy theo lệnh tương ứng trong mục luồng được khớp, q trình so khớp có thể kết thúc hoặc tiếp tục xử lý so khớp với các bảng luồng tiếp theo. Qua mỗi bảng luồng, nếu lệnh xử lý thao tác trên gói tin, action xử lý gói tin cụ thể sẽ được tích lũy trong một tập actions. Các lệnh xử lý so khớp chính trong mục luồng bao gồm:
Hình 1.7. Q trình xử lý gói tin tại bộ chuyển mạch theo cơ chế đường ống
• Write-Actions (actions): Thêm các actions xử lý gói tin vào tập actions.
• Clear actions: Xóa tồn bộ các action có trong tập actions áp dụng cho gói tin.
• Goto-Table (N): Chuyển tới so khớp với bảng luồng thứ N.
Quá trình so khớp thực hiện từ bảng luồng đầu tiên đến các bảng luồng kế tiếp theo sự thực thi các lệnh có trong mục luồng được khớp. Thông thường các bảng luồng được sắp xếp thành các nhóm bảng luồng xử lý đầu vào (ingress) và nhóm bảng luồng xử lý đầu ra (egress) như trong Hình 1.7. Kết thúc mỗi nhóm bảng luồng, tập các actions sẽ được thực hiện và áp dụng trực tiếp trên gói tin.
Hình 1.8. u cầu xử lý gói tin khi khơng khớp với một mục luồng có sẵn trên bộ chuyển mạch
- Nếu trong quá trình so khớp trong một bảng luồng, gói tin khơng khớp với bất cứ mục luồng nào, sự kiện table-miss sẽ xảy ra và bộ chuyển mạch gửi tới bộ điều khiển một bản tin
packet-in. Các phần mềm ứng dụng trên bộ điều khiển sẽ phân tích và đưa ra một chính sách
để xử lý các nhóm gói tin tương ứng với nó bằng cách cài đặt trên bộ chuyển mạch một mục luồng mới. Trong quá trình chờ đợi mục luồng mới được cài đặt, gói tin được lưu tại vùng đệm của bộ chuyển mạch. Các gói tin tiếp theo của luồng sẽ được khớp với mục luồng này và được bộ chuyển mạch xử lý theo các actions thiết lập trong mục luồng (Hình 1.8).
- Trong các trường hợp cụ thể, bộ chuyển mạch có thể cài đặt các mục luồng để bắt giữ những gói tin có các trường thơng tin thỏa mãn một điều kiện cụ thể và chuyển tới bộ điều khiển bằng action OUTPUT với số hiệu cổng là OFPP_CONTROLLER.