Tải bản đầy đủ (.docx) (40 trang)

Nhóm 2 các đặc trưng của openflow

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.11 MB, 40 trang )

HỌC VIÊN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA VIỄN THÔNG I

TIỂU LUẬN MÔN HỌC

“BÁO HIỆU VÀ ĐIỀU KHIỂN KẾT NỐI”

Đề tài:

“Các đặc trưng của OpenFlow”

Giảng viên: Thầy HOÀNG TRỌNG MINH
Nhóm sinh viên: HỒ PHI TUÂN – B18DCVT373
NGUYỄN TUẤN ANH - B18DCVT020
TRỊNH XUÂN HỰU - B18DCVT223
NGUYỄN QUÝ CHIẾN - B18DCVT047

Hà Nội,tháng 9/2021


MỤC LỤC


LỜI NÓI ĐẦU
Các mở Networking Foundation (ONF), một tổ chức sử dụng dẫn dành riêng cho chương
trình khuyến mãi và áp dụng các mạng phần mềm xác định (SDN), quản lý tiêu chuẩn OpenFlow.
ONF định nghĩa OpenFlow là giao diện truyền thông tiêu chuẩn đầu tiên được xác định giữa các
lớp điều khiển và chuyển tiếp của kiến trúc SDN. OpenFlow cho phép truy cập trực tiếp và thao
tác với mặt phẳng chuyển tiếp của các thiết bị mạng như bộ chuyển mạch và bộ định tuyến, cả vật
lý và ảo (dựa trên siêu giám sát). Chính sự vắng mặt của giao diện mở với mặt phẳng chuyển tiếp
đã dẫn đến đặc điểm của các thiết bị mạng ngày nay là nguyên khối, khép kín và giống như máy
tính lớn. Cần có một giao thức như OpenFlow để chuyển quyền kiểm soát mạng ra khỏi các thiết


bị chuyển mạch mạng độc quyền và sang phần mềm điều khiển nguồn mở và được quản lý cục bộ.
Một số nhà cung cấp bộ chuyển mạch và bộ định tuyến đã thông báo ý định hỗ trợ hoặc
đang vận chuyển các bộ chuyển mạch được hỗ trợ cho OpenFlow, bao gồm Alcatel-Lucent, Big
Switch Networks, Brocade Communications và Radisys trong số những người khác.
Phiên bản 1.1 của giao thức OpenFlow đã được phát hành vào ngày 28 tháng 2 năm 2011
và sự phát triển mới của tiêu chuẩn này do ONF quản lý. Vào tháng 12 năm 2011, hội đồng quản
trị ONF đã phê duyệt OpenFlow phiên bản 1.2 và xuất bản nó vào tháng 2 năm 2012. Phiên bản
hiện tại của OpenFlow là 1.5.1. Tuy nhiên, phiên bản 1.6 đã có từ tháng 9 năm 2016, nhưng chỉ
các thành viên của ONF mới có thể truy cập được.
Vào tháng 5 năm 2011, Marvell và Larch Networks đã thơng báo về sự sẵn có của giải
pháp chuyển mạch đầy đủ tính năng hỗ trợ OpenFlow dựa trên ngăn xếp điều khiển mạng của
Marvell và dịng bộ xử lý gói Prestera .
Đại học Indiana vào tháng 5 năm 2011 đã ra mắt Phịng thí nghiệm khả năng tương tác
SDN kết hợp với ONF để kiểm tra mức độ hoạt động của các sản phẩm mạng và OpenFlow do
phần mềm xác định của các nhà cung cấp khác nhau.
Vào tháng 6 năm 2012, Infoblox đã phát hành LINC, một cơng tắc phần mềm tương thích
với mã nguồn mở OpenFlow phiên bản 1.2 và 1.3.
Vào tháng 2 năm 2012, Big Switch Networks đã phát hành Project Floodlight , một phần
mềm mã nguồn mở OpenFlow Controller được Apache cấp phép , và công bố Bộ SDN dựa trên
OpenFlow vào tháng 11 năm đó, bao gồm một bộ điều khiển thương mại, chuyển đổi ảo và chạm
các ứng dụng giám sát.
Vào tháng 2 năm 2012, HP cho biết họ đang hỗ trợ tiêu chuẩn này trên 16 sản phẩm
chuyển mạch Ethernet của mình.
Vào tháng 4 năm 2012, Urs Hưlzle của Google đã mô tả cách mạng nội bộ của cơng ty đã
được thiết kế lại hồn tồn trong hai năm trước đó để chạy theo OpenFlow với cải thiện hiệu quả
đáng kể.
Vào tháng Giêng năm 2013, NEC công bố một switch ảo cho Microsoft 's Windows Server
2012 Hyper-V hypervisor , được thiết kế để mang lại OpenFlow dựa trên phần mềm xác định
mạng và mạng ảo hoá vào những môi trường Microsoft.
OpenFlow cho phép các bộ điều khiển mạng xác định đường đi của các gói mạng qua

mạng chuyển mạch. Các bộ điều khiển khác biệt với các công tắc. Việc tách kiểm soát khỏi


chuyển tiếp này cho phép quản lý lưu lượng phức tạp hơn là khả thi bằng cách sử dụng danh sách
kiểm soát truy cập (ACL) và giao thức định tuyến. Ngoài ra, OpenFlow cho phép các thiết bị
chuyển mạch từ các nhà cung cấp khác nhau - thường là mỗi nhà cung cấp có giao diện và ngơn
ngữ kịch bản độc quyền của riêng họ - được quản lý từ xa bằng một giao thức mở duy nhất. Các
nhà phát minh ra giao thức coi OpenFlow là một công cụ hỗ trợ mạng do phần mềm xác
định (SDN).
OpenFlow cho phép quản trị từ xa các bảng chuyển tiếp gói của công tắc lớp 3 , bằng cách
thêm, sửa đổi và loại bỏ các quy tắc và hành động đối sánh gói. Bằng cách này, các quyết định
định tuyến có thể được thực hiện định kỳ hoặc đột xuấtbởi bộ điều khiển và được dịch thành các
quy tắc và hành động với tuổi thọ có thể định cấu hình, sau đó được triển khai vào bảng luồng của
bộ chuyển mạch, để chuyển tiếp thực tế các gói phù hợp tới bộ chuyển mạch ở tốc độ dây trong
suốt thời gian của các quy tắc đó. Có thể chuyển tiếp các gói chưa được khớp bởi bộ chuyển mạch
tới bộ điều khiển. Sau đó, bộ điều khiển có thể quyết định sửa đổi các quy tắc bảng luồng hiện có
trên một hoặc nhiều bộ chuyển mạch hoặc triển khai các quy tắc mới, để ngăn chặn luồng lưu
lượng có cấu trúc giữa bộ chuyển mạch và bộ điều khiển. Nó thậm chí có thể quyết định chuyển
tiếp lưu lượng truy cập, miễn là nó đã yêu cầu bộ chuyển tiếp chuyển tiếp tồn bộ các gói thay vì
chỉ tiêu đề của chúng.
Giao thức OpenFlow được xếp lớp trên Giao thức điều khiển truyền (TCP) và quy định
việc sử dụng Bảo mật lớp truyền tải (TLS). Bộ điều khiển nên lắng nghe trên cổng TCP 6653 đối
với các bộ chuyển mạch muốn thiết lập kết nối. Các phiên bản trước của giao thức OpenFlow đã
sử dụng khơng chính thức cổng 6633. Một số triển khai mặt phẳng điều khiển mạng sử dụng giao
thức để quản lý các phần tử chuyển tiếp mạng. OpenFlow chủ yếu được sử dụng giữa công tắc và
bộ điều khiển trên một kênh an toàn.


I. CHAPTER-SPECIFIC TERMINOLOGY
Các hoạt động mới sau đây được giới thiệu cho chương này.

Để POP một mục là loại bỏ nó khỏi danh sách các mục như được đặt hàng cuối cùng
(LIFO).
Để đẩy một mục là để thêm nó vào danh sách các mục như được đặt hàng LIFO.
Các thuật ngữ này thường được sử dụng cùng với ngăn xếp thuật ngữ là một khoa học máy
tính. Thuật ngữ cho một danh sách đặt hàng LIFO. Nếu một hình ảnh một chồng các mục như
sách và ba cuốn sách được thêm vào để ngăn xếp đó, thứ tự mà những cuốn sách đó thường
được lấy từ đống là một trật tự LIFO. Điều đó là, cuốn sách đầu tiên kéo ra khỏi đỉnh của đống
là cái cuối cùng đã được thêm vào nó. Nếu chúng ta thay đổi một chút nhận thức về chồng sách
để tưởng tượng rằng ngăn xếp tồn tại trong một thùng chứa lò xo như vậy, rằng hầu hết các
cuốn sách trên cùng là cấp độ với đỉnh của container, việc sử dụng các thuật ngữ Pop và Push
trở thành rõ ràng. Khi chúng ta thêm một cuốn sách vào một ngăn xếp như vậy, chúng tơi đẩy
nó lên trên cùng và sau đó bật nó để lấy nó. Đặc tả OpenFlow bao gồm một số định nghĩa sử
dụng các khái niệm này. Trong bối cảnh này, đẩy liên quan đến việc thêm một phần tử tiêu đề
mới vào tiêu đề gói hiện có, chẳng hạn như nhãn MPLS. Từ Nhiều nhãn như vậy có thể được
đẩy lên trước khi bất kỳ bất kỳ đều được bật ra, và chúng được bật trong LIFO order, sự tương
tự ngăn xếp là apt.

II. OpenFlow OVERVIEW
Đặc điểm kỹ thuật OpenFlow đã được phát triển trong một số năm. Internet phi lợi nhuận
tổ chức, openflow.org được thành lập vào năm 2008 với vai trò là nơi cố gắng thúc đẩy và hỗ
trợ OpenFlow. Trong khi openflow.org tồn tại chính thức trên Internet, trong những năm đầu tổ
chức thực thực sự chỉ là một nhóm người gặp nhau khơng chính thức tại Đại học Stanford. Từ
khi thành lập OpenFlow dự định thuộc về cộng đồng nghiên cứu để phục vụ như một nền tảng
cho chuyển đổi mạng mở thử nghiệm, với mục đích sử dụng thương mại thơng qua triển khai
thương mại cho công chúng này sự chỉ rõ. Bản phát hành đầu tiên Phiên bản 1.0.0 xuất hiện
vào ngày 31 tháng 12 năm 2009, mặc dù có nhiều điểm các cơ sở tiên quyết đã tồn tại trước đó
sau đó được cung cấp cho các mục đích thử nghiệm dưới dạng đặc điểm kỹ thuật phát triển. Tại
thời điểm này và tiếp tục thông qua bản phát hành 1.1.0, phát triển và quản lý đặc điểm kỹ
thuật được thực hiện dưới sự bảo trợ của openflow.org. Vào ngày 21 tháng 3 năm 2011, giải mở
Network Foundation (ONF) được thành lập với mục đích rõ ràng là đẩy nhanh q trình phân

phối và thương mại hóa SDN. Như chúng tơi sẽ giải thích trong Chương 6, có một số người
ủng hộ SDN cung cấp các giải pháp SDN không dựa trên OpenFlow. Đối với ONF, tuy nhiên,
OpenFlow vẫn ở cốt lõi của tầm nhìn SDN của họ cho tương lai. Vì lý do này, ONF đã trở
thành đơn vị chịu trách nhiệm cho đặc điểm kỹ thuật OpenFlow đang phát triển. Bắt đầu sau
khi phát hành V.1.1, các bản sửa đổi cho OpenFlow thông số kỹ thuật được phát hành và quản
lý bởi ONF. Người ta có thể có ấn tượng từ sự phô trương xung quanh OpenFlow rằng sự ra đời
của công nghệ này đã đi kèm với sự đổi mới đồng thời trong chuyển đổi phần cứng. Thực tế là
phức tạp hơn một chút. Các nhà thiết kế OpenFlow cách đây nhiều năm đã nhận ra rằng nhiều


thiết bị chuyển mạch thực sự được xây dựng xung quanh các ASIC được điều khiển bởi các
quy tắc được mã hóa trong các bảng có thể được lập trình.Theo thời gian, ít phiên bản tự trồng
hơn của các chip chuyển mạch này được phát triển, và có sự hợp nhất lớn hơn trong ngành
công nghiệp bán dẫn. Nhiều công tắc của các nhà sản xuất hơn đã được dựa trên sự hợp nhất
kiến trúc chuyển mạch và khả năng lập trình, với việc sử dụng có thể lập trình ngày càng tăng
chuyển đổi chip từ một số lượng tương đối nhỏ các nhà cung cấp silicon thương
mại. OpenFlow là một nỗ lực để cho phép lập trình, một cách chung chung, các triển khai khác
nhau của các thiết bị chuyển mạch phù hợp với mơ hình mới này. OpenFlow cố gắng khai thác
thiết kế hướng bảng tồn tại trong nhiều giải pháp silicon hiện tại. Khi số lượng các nhà cung
cấp silicon hợp nhất, sẽ có nhiều khả năng phù hợp hơn với các phiên bản OpenFlow trong
tương lai. Cần dừng lại ở đây để nhận xét về thực tế là chúng ta đang nói rất nhiều về ASIC cho
một công nghệ được gọi là Mạng xác định phần mềm. Phần cứng phải là một phần của cuộc
thảo luận vì nó là cần thiết giải pháp silicon chun dụng này để chuyển đổi gói tin với tốc độ
đường truyền cao. Trong khi việc triển khai SDN phần mềm thuần túy tồn tại, chúng khơng thể
chuyển đổi các gói ở tốc độ đủ cao để theo kịp với các giao diện tốc độ cao. Thực sự nghĩa của
từ phần mềm trong tên SDN là gì, là các thiết bị SDN hồn tồn có thể lập trình được chứ
khơng phải mọi thứ đều được thực hiện bằng phần mềm chạy trên một CPU truyền thống.

1. THE OpenFlow SWITCH


Hình 1: Mơ tả các chức năng cơ bản của công tắc OpenFlow V.1.0 và mối quan hệ của nó
với bộ điều khiển.


Chức năng trong chuyển mạch gói là nhận các gói đến trên một cổng (đường dẫn X trên
cổng 2 trong hình) và chuyển tiếp nó qua một cổng khác (cổng N trong hình), thực hiện bất kỳ
sửa đổi gói cần thiết nào trên đường đi.
Một khía cạnh độc đáo của công tắc OpenFlow là thể hiện trong chức năng đối xứng gói
được trình bày trong Hình 1.
Mũi tên kép rộng, màu xám trong Hình 1 bắt đầu trong logic quyết định, hiển thị khớp với
một mục cụ thể trong bảng đó và điều hướng hiện-gói phù hợp với một hộp hành động ở bên
phải. Hộp hành động này có ba tùy chọn cơ bản cho bố trí của gói đến này:
• A: Chuyển tiếp gói tin ra một cổng cục bộ, có thể sửa đổi một số trường tiêu đề trước.
• B: Bỏ gói tin xuống.
• C: Chuyển gói tin đến bộ điều khiển.
Ba đường dẫn gói cơ bản này được minh họa trong Hình 1.
Trong trường hợp của đường dẫn C: gói tin được chuyển đến bộ điều khiển qua kênh an
tồn được hiển thị trong Hình 1. Nếu bộ điều khiển có thơng báo điều khiển hoặc một gói dữ
liệu để cung cấp cho bộ chuyển mạch, bộ điều khiển sử dụng cùng một kênh bảo mật này trong
hướng ngược lại.
Khi bộ điều khiển có một gói dữ liệu để chuyển tiếp ra ngoài qua bộ chuyển mạch, nó sẽ sử
dụng thơng báo OpenFlow PACKET_OUT. Chúng ta thấy trong Hình 1 rằng một gói dữ liệu
như vậy đến từ bộ điều khiển có thể đi theo hai đường dẫn khác nhau thông qua logic
OpenFlow, cả hai đều được ký hiệu là Y. Ở ngoài cùng bên phải trường hợp, bộ điều khiển chỉ
định trực tiếp cổng đầu ra và gói tin được chuyển đến cổng N đó trong thí dụ.
Trong trường hợp Y ở đường dẫn ngồi cùng bên trái, bộ điều khiển cho biết rằng nó muốn
trì hỗn chuyển tiếp quyết định đối với logic khớp gói. Chúng ta sẽ thấy trong Phần 5.3.4 rằng
bộ điều khiển ra lệnh điều này bằng cách quy định cổng ảo TABLE làm cổng đầu ra.
Việc triển khai công tắc OpenFlow nhất định là chỉ OpenFlow hoặc OpenFlow-hybrid. Một
Công tắc chỉ OpenFlow là cơng tắc chỉ chuyển tiếp các gói theo logic OpenFlow được mô tả

bên trên. Một hỗn hợp OpenFlow là một cơng tắc cũng có thể chuyển đổi các gói ở chế độ kế
thừa của nó là Ethernet Bộ định tuyến chuyển mạch hoặc IP. Có thể xảy ra rằng các công tắc
kết hợp sẽ là tiêu chuẩn trong quá trình chuyển sang triển khai OpenFlow thuần túy.

2. THE OpenFlow CONTROLLER
Xác định bảng chuyển tiếp và logic trong mặt phẳng dữ liệu: q trình này rất phức tạp và
khơng thể được thực hiện ở tốc độ dịng vì các gói đang được xử lý, mặt phẳng điều khiển tách
ra khỏi mặt phẳng dữ liệu ngay cả trong mạng kế thừa công tắc.
Mặt phẳng điều khiển OpenFlow khác với mặt phẳng điều khiển kế thừa:

• Nó có thể lập trình các phần tử mặt phẳng dữ liệu khác nhau bằng một ngơn ngữ chuẩn chung
OpenFlow.
• Nó tồn tại trên một thiết bị phần cứng riêng biệt so với mặt phẳng chuyển tiếp, không giống
như các công tắc truyền thống nơi điều khiển mặt phẳng và mặt phẳng dữ liệu được khởi tạo
trong cùng một hộp vật lý.


• bộ điều khiển có thể lập trình nhiều phần tử mặt phẳng dữ liệu từ một phiên bản mặt phẳng
điều khiển duy nhất.
Bộ điều khiển OpenFlow chịu trách nhiệm lập trình tất cả việc khớp và chuyển tiếp gói tin
quy tắc trong công tắc. Trong khi một bộ định tuyến truyền thống sẽ chạy các thuật toán định
tuyến để xác định cách lập trình bảng chuyển tiếp của nó, hàm đó hoặc một chức năng thay thế
tương đương cho nó hiện được thực hiện bởi bộ điều khiển. Bất kỳ thay đổi nào dẫn đến việc
tính tốn lại các tuyến đường sẽ được lập trình trên cơng tắc bởi bộ điều khiển.

3. THE OpenFlow PROTOCOL
Giao thức OpenFlow xác định giao tiếp giữa OpenFlow Bộ điều khiển và một công tắc
OpenFlow. Giao thức này là những gì xác định duy nhất OpenFlow Cơng nghệ. Về bản chất
của nó, giao thức bao gồm một tập hợp các tin nhắn được gửi từ bộ điều khiển đến công tắc và
một tập hợp các tin nhắn tương ứng được gửi theo hướng ngược lại. Các thông điệp, tập thể,

cho phép bộ điều khiển lập trình chuyển đổi để cho phép kiểm sốt hạt mịn đối với Chuyển đổi
lưu lượng người dùng. Lập trình cơ bản nhất định nghĩa, sửa đổi và xóa các luồng.
Vì OpenFlow bắt đầu thấy nhiều triển khai thương mại phổ biến, khả năng tương thích
ngược có trở thành một vấn đề ngày càng quan trọng. Có nhiều tính năng, tuy nhiên, đã được
giới thiệu trong các phiên bản trước của OpenFlow khơng cịn trình bày trong phiên bản hiện
tại.
Các thành phần chính của mỗi bản phát hành đã trở thành cơ sở cho những tiến bộ trong
các bản phát hành tiếp theo và làm không tập trung vào chức năng trong các bản phát hành
trước đó đã được hỗ trợ bởi các tính năng mới trong tiếp theo phát hành.

4. THE CONTROLLER-SWITCH SECURE CHANNEL
Kênh an toàn là đường dẫn được sử dụng để liên lạc giữa bộ điều khiển OpenFlow và Thiết
bị OpenFlow. Giao tiếp này được bảo mật bằng mã hóa khơng đối xứng dựa trên TLS, mặc dù
cho phép các kết nối TCP khơng được mã hóa. Các kết nối này có thể trong băng tần hoặc
ngồi băng tần.


Hình 2. Bộ điều khiển OpenFlow-Switch Kênh bảo mật.

Thí dụ: Hình 2 mơ tả hai biến thể này của kênh an tồn. Trong ví dụ ngồi dải, chúng ta
thấy trong hình rằng kết nối kênh an tồn đi vào cơng tắc qua cổng Z, không được chuyển bởi
OpenFlow mặt phẳng dữ liệu. Một số ngăn xếp mạng kế thừa sẽ gửi thơng báo OpenFlow qua
kênh bảo mật tới quy trình kênh an tồn trong cơng tắc, nơi tất cả các thơng báo OpenFlow
được phân tích cú pháp và xử lý.
Vì vậy, kênh bảo mật ngoài băng tần chỉ phù hợp trong trường hợp chuyển đổi hỗn hợp
OpenFlow.
Lưu ý: khi bộ điều khiển và tất cả các cơng tắc nó điều khiển được đặt hồn tồn trong một
mơi trường được kiểm sốt chẳng hạn như trung tâm dữ liệu, có thể là khơn ngoan khi xem xét
khơng sử dụng mã hóa dựa trên TLS để bảo mật kênh. Điều này là do có một chi phí hiệu suất
phát sinh khi sử dụng loại bảo mật và nếu không cần thiết, tốt nhất là không phải trả tiền phạt

thực hiện này. Một lập luận khác chống lại việc sử dụng mã hóa dựa trên TLS là nó có thể được
sử dụng khơng chính xác. Để đưa TLS vào thực tế, người ta phải lấy và định cấu hình các
chứng chỉ bảo mật cho từng thiết bị, việc này có thể tốn thời gian và dễ xảy ra lỗi.


III. OpenFlow 1.0 AND OpenFlow BASICS
OpenFlow 1.0 [1] được phát hành vào ngày 31 tháng 12 năm 2009. Vì mục đích của cơng
việc này, chúng tơi sẽ xử lý OpenFlow 1.0 là bản phát hành đầu tiên của OpenFlow. Thật vậy,
nhiều năm làm việc và phát hành nhiều điểm trước bản phát hành OpenFlow 1.0, nhưng chúng
tôi sẽ gộp tất cả tiến trình gia tăng, ban đầu giải phóng 1,0 như thể nó đã xảy ra nguyên
tử. Trong phần này, sẽ mô tả chi tiết những điều cơ bản các thành phần của việc triển khai
OpenFlow ban đầu này.

1. PORTS AND PORT QUEUES
Đặc tả OpenFlow xác định khái niệm về một Cổng OpenFlow. Một cổng OpenFlow V.1.0
tương ứng với một cổng vật lý. Khái niệm này được mở rộng trong các bản phát hành tiếp theo
của OpenFlow. Trong nhiều năm, các thiết bị chuyển mạch phức tạp đã hỗ trợ nhiều hàng đợi
trên mỗi cổng vật lý. Những hàng đợi này là thế hệ được phục vụ trực tiếp bằng các thuật toán
lập lịch cho phép cung cấp Chất lượng dịch vụ (QoS) khác nhau cho mức các loại gói tin khác
nhau. OpenFlow bao hàm khái niệm này và cho phép một luồng được ánh xạ đến một hàng đợi
đã được xác định tại một cổng đầu ra. Do đó, nếu chúng ta nhìn lại Hình 1, kết quả đầu ra của
một gói trên cổng N có thể bao gồm việc chỉ định hàng đợi nào trên cổng N mà gói tin sẽ được
đặt. Do đó, nếu phóng to tùy chọn A trong Hình 1, những gì chúng ta thấy trong Hình 3. Trong
hình phóng to có thể thấy rằng hộp hành động đã xếp gói cụ thể gói tin đang được xử lý vào
hàng đợi 1 trong cổng N.
Lưu ý: rằng hỗ trợ cho QoS là rất cơ bản trong V.1.0. Hỗ trợ QoS trong OpenFlow đã được
mở rộng đáng kể trong các phiên bản sau (xem Phần 5.6.3).

2. FLOW TABLE
Bảng quy trình nằm ở cốt lõi của định nghĩa về công tắc OpenFlow. Chúng tôi mô tả một

bảng quy trình chung trong Hình 4. Một bảng lưu lượng bao gồm các mục lưu lượng, một trong
số đó được thể hiện trong Hình 5. Mục nhập luồng bao gồm của các trường tiêu đề, bộ đếm và
các hành động được liên kết với mục nhập đó. Các trường tiêu đề được sử dụng làm đối sánh
tiêu chí để xác định xem một gói tin đến có khớp với mục nhập này hay không. Nếu một kết
quả phù hợp tồn tại, thì gói tin thuộc về đến dịng chảy này. Bộ đếm được sử dụng để theo dõi
thống kê liên quan đến luồng này, chẳng hạn như có bao nhiêu gói đã được chuyển tiếp hoặc bị
loại bỏ đối với luồng này. Các trường hành động quy định những gì cơng tắc sẽ làm với gói phù
hợp với mục nhập này. Chúng tơi mơ tả q trình đối sánh gói này và các hành động trong Phần
5.3.3.

3. PACKET MATCHING
Khi một gói đến cơng tắc OpenFlow từ một cổng đầu vào (hoặc, trong một số trường hợp,
từ bộ điều khiển), nó được so khớp với bảng luồng để xác định xem có mục nhập luồng phù
hợp hay khơng. Các trường hợp so khớp sau được liên kết với gói đến có thể được sử dụng để
so khớp với luồng:
• Chuyển đổi cổng đầu vào
• ID VLAN


Hình 3 Hỗ trợ OpenFlow cho nhiều hàng đợi trên mỗi cổng.

Hình 4 OpenFlow v.1.0 bảng lưu lượng.
• Ưu tiên Vlan

• Địa chỉ nguồn IP

• Địa chỉ nguồn Ethernet

• Địa chỉ điểm đến IP


• Địa chỉ đích Ethernet

• Giao thức IP

• Loại khung ethernet


• Các loại dịch vụ IP (ĐT) BITS
• Cổng nguồn TCP / UDP
• Cổng đích TCP / UDP
Hình 5 Basic flow entry.


Mười hai trường đối sánh này được gọi chung là mười hai bộ trường đối sánh cơ bản. Các
trường đối sánh của mục nhập luồng có thể được ký tự đại diện bằng cách sử dụng mặt nạ bit, có
nghĩa là bất kỳ giá trị nào khớp trên các bit được hiển thị trong các trường khớp của gói đến sẽ là
một khớp. Các mục nhập luồng được xử lý trong và sau khi tìm thấy một kết quả phù hợp, khơng
có nỗ lực so khớp nào được thực hiện đối với bảng quy trình đó. (Chúng tơi sẽ xem trong các
phiên bản tiếp theo của OpenFlow rằng có thể có các bảng luồng bổ sung dựa vào gói nào có thể
tiếp tục đối sánh.) Vì điều này, có thể có nhiều mục nhập luồng phù hợp để một gói có mặt trong
bảng luồng. Chỉ mục nhập luồng đầu tiên phù hợp là có ý nghĩa — những mục khác sẽ khơng
được tìm thấy khi q trình khớp gói dừng lại ở lần so khớp đầu tiên. Thông số kỹ thuật V.1.0
không xác định về trường hợp nào trong số mười hai trường so khớp này được yêu cầu so với
tùy chọn. ONF đã làm rõ sự nhầm lẫn này bằng cách xác định ba loại tuân thủ khác nhau trong
chương trình kiểm tra sự phù hợp V.1.0. Ba cấp độ là: tuân thủ đầy đủ, có nghĩa là tất cả mười
hai phù hợp các trường được hỗ trợ, tuân thủ lớp hai, khi chỉ phù hợp trường tiêu đề lớp hai được
hỗ trợ được chuyển và cuối cùng là tuân thủ lớp ba, khi chỉ hỗ trợ đối sánh trường tiêu đề lớp ba.
Nếu đến cuối bảng dòng mà khơng tìm thấy kết quả phù hợp, điều này được gọi là bỏ lỡ
bàn. bên trong sự kiện bỏ sót bảng trong V.1.0, gói tin được chuyển tiếp đến bộ điều khiển. (Lưu
ý rằng điều này khơng cịn hồn tồn đúng trong các phiên bản sau.) Nếu tìm thấy mục nhập

luồng phù hợp, các hành động liên quan đến luồng đó, nhập xác định cách gói tin được xử
lý. Hành động cơ bản nhất do công tắc OpenFlow quy định mục nhập là cách chuyển tiếp gói tin
này. Chúng tơi thảo luận điều này trong phần sau. Điều quan trọng cần lưu ý là chức năng so
khớp gói V.1.0 này được thiết kế như một phần trừu tượng của cách mà phần cứng chuyển mạch
ngoài đời thực hoạt động ngày nay. Các phiên bản đầu tiên của OpenFlow đã được thiết kế để chỉ
định hành vi chuyển tiếp của các thiết bị chuyển mạch thương mại hiện có thơng qua phần trừu
tượng này. Mội sư trừu tượng tốt che giấu các chi tiết của sự vật được trừu tượng hóa trong khi
vẫn cho phép đủ tốt để kiểm soát chi tiết để hoàn thành các nhiệm vụ cần thiết. Khi chức năng
phong phú hơn được thêm vào trong các phiên bản sau của giao thức OpenFlow, chúng ta sẽ thấy
rằng thông số kỹ thuật vượt xa thực tế của phần cứng ngày nay. Tại thời điểm đó, nó khơng cịn
cung cấp tóm tắt rõ ràng cho các triển khai hiện tại mà chỉ định hành vi chuyển đổi phần cứng
chưa được xây dựng.

4. CÁC HÀNH ĐỘNG VÀ GÓI TIẾN HÀNH.
Các hành động bắt buộc phải được hỗ trợ bởi một mục nhập luồng là xuất (chuyển tiếp) hoặc thả
gói phù hợp. Trường hợp phổ biến nhất là hành động đầu ra chỉ định một cổng vật lý mà gói tin sẽ
được chuyển tiếp. Tuy nhiên, có năm cổng ảo đặc biệt được xác định trong V.1.0 đó98 CHƯƠNG 5
ĐẶC ĐIỂM KỸ THUẬT OpenFlow có ý nghĩa đặc biệt đối với hành động đầu ra. Chúng là
LOCAL, ALL, CONTROLLER, IN_PORT và TABLE. Chúng tơi mơ tả việc chuyển gói do các chỉ
định cổng ảo khác nhau này trong Hình 5.6. Trong hình, các ký hiệu trong dấu ngoặc vng bên
cạnh các mũi tên bóng mờ rộng đại diện cho một trong các loại cổng ảo được thảo luận trong phần
này.
LOCAL ra lệnh rằng gói tin phải được chuyển tiếp đến phần mềm điều khiển OpenFlow cục bộ của
bộ chuyển mạch, phá vỡ quá trình xử lý đường ống OpenFlow hơn nữa. LOCAL được sử dụng khi
nhận được thông báo OpenFlow từ bộ điều khiển trên một cổng đang nhận các gói do mặt phẳng dữ
liệu OpenFlow chuyển sang. LOCAL chỉ ra rằng gói tin cần được xử lý bởi phần mềm điều khiển
OpenFlow cục bộ. ALL được sử dụng để làm tràn một gói ra tất cả các cổng trên switch ngoại trừ
cổng đầu vào. Điều này cung cấp khả năng phát sóng thơ sơ cho cơng tắc OpenFlow.
CONTROLLER chỉ ra rằng cơng tắc sẽ chuyển tiếp gói này đến bộ điều khiển OpenFlow.
IN_PORT hướng dẫn bộ chuyển mạch chuyển tiếp gói tin trở lại cổng mà nó đã đến. Về mặt hiệu

quả, IN_PORT thường tạo ra một tình huống lặp lại, điều này có thể hữu ích cho một số các tình


huống. Một trường hợp mà điều này hữu ích là trường hợp của một cổng không dây 802.11. Trong
trường hợp này, nó là khá bình thường khi nhận một gói tin từ cổng đó từ một máy chủ và chuyển
tiếp nó đến máy chủ nhận thơng qua cùng một cổng. Việc này cần phải được thực hiện rất cẩn thận
để khơng tạo ra những tình huống lặp lại ngồi ý muốn. Như vậy giao thức yêu cầu quy định rõ
ràng về ý định này thông qua cổng ảo đặc biệt này.
Một trường hợp khác khi IN_PORT được yêu cầu là Edge Virtual Bridging (EVB) [2]. Cạnh ảo Cầu
nối xác định một dịch vụ chuyển tiếp phản xạ giữa một công tắc vật lý trong trung tâm dữ liệu và
một thiết bị nhẹ công tắc ảo trong máy chủ được gọi là Bộ tổng hợp cổng cạnh ảo (VEPA). IEEE
tiêu chuẩn Cầu 802.1Q ở rìa mạng sẽ phản ánh các gói trở lại cổng mà chúng đến cho phép hai máy
ảo trên cùng một máy chủ nói chuyện với nhau. Dịch vụ chuyển tiếp phản xạ này có thể được hỗ trợ
bởi đích IN_PORT trong quy tắc OpenFlow.

Hình 6: Switch forwarding incoming packet to controller
Cuối cùng, có cổng ảo TABLE, chỉ áp dụng cho các gói mà bộ điều khiển gửi sang cơng tắc. Các
gói như vậy đến như một phần của thông báo PACKET_OUT từ bộ điều khiển, bao gồm một danh
sách hành động. Danh sách hành động này thường sẽ chứa một hành động đầu ra, sẽ chỉ định một
số cổng. Bộ điều khiển có thể muốn chỉ định trực tiếp cổng đầu ra cho gói dữ liệu này, hoặc nếu nó
mong muốn cổng đầu ra được xác định bởi đường ống xử lý gói OpenFlow thơng thường, nó có thể
làm vì vậy bằng cách quy định TABLE là cổng đầu ra. Hai tùy chọn này được mô tả trong hai
đường dẫn Y được hiển thị trong hình 6.Có hai cổng ảo bổ sung, nhưng hỗ trợ cho những cổng này
là tùy chọn trong V.1.0. Đầu tiên là Cổng ảo BÌNH THƯỜNG. Khi hành động đầu ra chuyển tiếp
một gói đến cổng ảo NORMAL, nó gửi gói tin tới logic chuyển tiếp kế thừa của switch. Chúng tôi
đối chiếu điều này với ảo LOCAL cổng, chỉ định rằng gói được chuyển đến xử lý điều khiển
OpenFlow cục bộ. Ngược lại, các gói có quy tắc phù hợp cho biết BÌNH THƯỜNG vì cổng đầu ra
sẽ vẫn ở trong ASIC để trở thành được tra cứu trong các bảng chuyển tiếp khác được điền bởi mặt
phẳng điều khiển cục bộ (nonOpenFlow). Việc sử dụng NORMAL chỉ có ý nghĩa trong trường hợp
của một công tắc lai.



Cổng ảo còn lại là FLOOD. Trong trường hợp này, bộ chuyển mạch sẽ gửi một bản sao của gói ra
tất cả các cổng ngoại trừ cổng xâm nhập. Lưu ý rằng chúng tôi đã loại trừ các đại diện TẤT CẢ và
FLOOD khỏi hình dưới là số các mũi tên sẽ làm tắc nghẽn quá mức mô tả. Người đọc nên hiểu rằng
TẤT CẢ và LỖ sẽ hiển thị các mũi tên đến tất cả các cổng trên công tắc OpenFlow ngoại trừ cổng
nhập. Người đọc cũng nên lưu ý rằng chúng tơi mơ tả trong hình các trường hợp bình thường hơn
của cổng thực được chỉ định và thả được chỉ định gạch chân mà khơng có dấu ngoặc. Khi cơng tắc
V.1.0 chuyển một gói đến bộ điều khiển dưới dạng kết quả của việc khơng tìm thấy bảng nào phù
hợp, đường dẫn trong hình dưới giống với đường dẫn được biểu thị cho BỘ ĐIỀU KHIỂN cổng.
Có hai hành động tùy chọn trong V.1.0, xếp hàng và trường sửa đổi. Hành động enqueue chọn một
hàng đợi cụ thể thuộc một cổng cụ thể. Điều này sẽ được sử dụng cùng với hành động đầu ra và
được sử dụng để đạt được mức QoS mong muốn thông qua việc sử dụng nhiều hàng đợi ưu tiên trên
một cổng. Cuối cùng, hành động trường sửa đổi thông báo cho công tắc cách sửa đổi các trường
tiêu đề nhất định. Đặc điểm kỹ thuật bao gồm một danh sách dài các trường có thể được sửa đổi
thơng qua hành động này. Đặc biệt, các tiêu đề VLAN, Ethernet địa chỉ nguồn và đích, địa chỉ
nguồn và đích IPv4 và trường TTL có thể được sửa đổi. Trường sửa đổi là cần thiết cho các chức
năng định tuyến cơ bản nhất. Để định tuyến các gói ba lớp, một bộ định tuyến phải giảm trường
TTL trước khi chuyển tiếp gói tin ra cổng đầu ra được chỉ định.
Khi có nhiều hành động được liên kết với mục nhập luồng, chúng sẽ xuất hiện trong danh sách hành
động, giống như thông báo PACKET_OUT được mô tả ở trên. Công tắc phải thực hiện các hành
động theo thứ tự chúng xuất hiện trên danh sách hành động. Chúng ta sẽ xem xét một ví dụ chi tiết
về chuyển tiếp gói V.1.0 trong Phần 7.

5. THÔNG ĐIỆP GIỮA BỘ ĐIỀU KHIỂN VÀ CÔNG TẮC
Tin nhắn giữa bộ điều khiển và bộ chuyển mạch được truyền qua một kênh an toàn. Điều này an
toàn kênh được thực hiện thông qua kết nối TLS ban đầu qua TCP. (Các phiên bản tiếp theo của
OpenFlow cho phép nhiều kết nối trong một kênh an toàn.) Nếu bộ chuyển mạch biết địa chỉ IP của
bộ điều khiển, sau đó cơng tắc sẽ bắt đầu kết nối này. Mỗi thông báo giữa bộ điều khiển và công tắc
bắt đầu với tiêu đề OpenFlow. Tiêu đề này chỉ định số phiên bản OpenFlow, loại thông báo, độ dài

của tin nhắn và ID giao dịch của tin nhắn. Các loại thông báo khác nhau trong V.1.0 là liệt kê trong
Bảng 1. Các thông báo được chia thành ba loại chung: Đối xứng, Bộ điều khiển-Chuyển đổi và
Không đồng bộ. Chúng tôi sẽ giải thích các loại thơng báo được hiển thị trong Bảng 1 trong các
đoạn sau. chúng tôi đề nghị người đọc tham khảo Hình 7 khi chúng tơi giải thích từng thơng báo
dưới đây. Hình 7 cho thấy quan trọng nhất trong số các thông báo này trong ngữ cảnh bình thường
và minh họa liệu nó có thường được sử dụng trong các giai đoạn khởi tạo, vận hành hoặc giám sát
của cuộc đối thoại giữa bộ điều khiển và bộ chuyển mạch. Hoạt động và các giai đoạn giám sát
thường chồng chéo lên nhau, nhưng để rõ ràng hơn, chúng tôi chỉ ra rằng chúng rời rạc trong nhân
vật. Vì sự ngắn gọn, chúng tơi đã cắt bớt tiền tố OFPT_ khỏi các tên thông báo được hiển thị trong
Bảng 2. Chúng tôi sẽ tuân theo quy ước này bất cứ khi nào đề cập đến các tên thông báo này trong
số dư của cuốn sách, tuy nhiên chúng xuất hiện trong chỉ mục với tên đầy đủ của chúng, bao gồm
tiền tố OFPT_ của chúng.


Bảng 1: OFPT Message Types in OpenFlow 1.0


Hình 7
Các thơng điệp đối xứng có thể được gửi bởi bộ điều khiển hoặc công tắc, mà không cần gạ gẫm
bởi người kia. Các tin nhắn HELLO được trao đổi sau khi kênh bảo mật đã được được thiết lập để
xác định số phiên bản OpenFlow cao nhất được hỗ trợ bởi các ứng dụng ngang hàng. Giao thức chỉ
định rằng phiên bản thấp hơn của hai phiên bản sẽ được sử dụng cho giao tiếp Bộ điều khiểnChuyển mạch qua phiên bản kênh an toàn này. Các tin nhắn ECHO được sử dụng bởi một trong hai
bên trong suốt vòng đời của kênh để chắc chắn rằng kết nối vẫn còn tồn tại và để đo độ trễ hoặc
băng thông hiện tại của kết nối. Các thông báo VENDOR có sẵn cho thử nghiệm của nhà cung cấp
cụ thể hoặc cải tiến.
Các xứng danh message có thể được gửi bởi điều khiển hoặc công tắc, mà không cần gạ gẫm bởi
người kia. HELLO tin nhắn đã được trao đổi sau khi bảo mật kênh đã được chuyển đổi được thiết
lập để xác định cao nhất phiên bản OpenFlow được hỗ trợ bởi hàng ngang ứng dụng. Protocol chỉ
định rằng phiên bản thấp hơn phiên bản hai sẽ được sử dụng cho mạch điều khiển-Chuyển giao tiếp
qua this toàn kênh phiên bản. ECHO tin nhắn được sử dụng bởi một trong hai bên trong suốt đời

của kênh để chắc chắn rằng kết nối vẫn tồn tại và để trễ độ đo hoặc băng thông hiện tại of
connection. VENDOR thông báo có sẵn để thử nghiệm của nhà cung cấp công cụ thể hoặc cải tiến.
Controller-Switch là danh mục rộng nhất của thông điệp OpenFlow. Trên thực tế, như trong Bảng 2,
chúng có thể được chia thành năm danh mục phụ: Cấu hình chuyển đổi, Lệnh từ bộ điều khiển,
Thống kê, Cấu hình hàng đợi và Rào cản. Thơng báo Cấu hình Cơng tắc bao gồm một bản tin cấu
hình một chiều và hai cặp bản tin trả lời yêu cầu. Thông điệp một chiều, SET_CONFIG, được bộ
điều khiển sử dụng để thiết lập các thơng số cấu hình trong cơng tắc. Trong hình 7, chúng tơi xem
thơng báo SET_CONFIG được gửi trong giai đoạn khởi tạo của hộp thoại bộ điều khiển-chuyển
mạch. Cặp thông báo FEATURES được bộ điều khiển sử dụng để thẩm vấn công tắc về các tính
năng nào nó hỗ trợ. Tương tự, cặp thơng báo GET_CONFIG được sử dụng để truy xuất cấu hình
của một công tắc cài đặt.


Có ba thơng báo bao gồm danh mục Lệnh Từ Bộ điều khiển. PACKET_OUT là tương tự của
PACKET_IN được đề cập ở trên. Nó được sử dụng bởi bộ điều khiển để gửi các gói dữ liệu đến
chuyển để chuyển tiếp ra ngồi thơng qua mặt phẳng dữ liệu. Bộ điều khiển sửa đổi các mục nhập
luồng hiện có trong chuyển qua tin nhắn FLOW_MOD. PORT_MOD được sử dụng để sửa đổi
trạng thái của cổng OpenFlow.
Số liệu thống kê được bộ điều khiển thu được từ công tắc thông qua cặp bản tin STATS. RÀO CẢN
cặp thông báo được bộ điều khiển sử dụng để đảm bảo rằng một lệnh OpenFlow cụ thể từ bộ điều
khiển đã hoàn thành việc thực hiện trên cơng tắc. Cơng tắc phải hồn thành việc thực hiện tất cả các
lệnh nhận được trước BARRIER_REQUEST trước khi thực hiện bất kỳ lệnh nào nhận được sau nó
và thơng báo cho bộ điều khiển về việc đã hồn thành các lệnh trước đó qua BARRIER_REPLY gửi
lại cho bộ điều khiển.
Cặp thơng báo Cấu hình Hàng đợi có phần nhầm lẫn trong cấu hình hàng đợi thực tế nằm ngoài
phạm vi của đặc tả OpenFlow và được mong đợi được thực hiện bởi một cơ chế ngoài băng tần
không xác định. QUEUE_GET_CONFIG_REQUEST và QUEUE_GET_CONFIG_REPLY cặp
thông báo là cơ chế mà bộ điều khiển học từ chuyển đổi cách một hàng đợi nhất định đã cấu hình.
Với thơng tin này, bộ điều khiển có thể ánh xạ một cách thông minh các luồng nhất định đến các
hàng đợi cụ thể để đạt được mức QoS mong muốn.

Lưu ý rằng bất biến trong ngữ cảnh này có nghĩa là các loại thông báo sẽ không bị thay đổi trong
tương lai bản phát hành của OpenFlow. Ghi chú của tác giả: Điều đáng chú ý là đặc tính bất biến
được trích dẫn là khác biệt trong OpenFlow. Trong nhiều giao thức truyền thơng hồn thiện hơn,
việc duy trì khả năng tương thích ngược là điều tối quan trọng. Đây khơng phải là trường hợp của
OpenFlow, nơi hỗ trợ cho một số định dạng tin nhắn trong các phiên bản trước bị loại bỏ trong các
phiên bản sau. Tình huống này được xử lý trong môi trường OpenFlow bởi thực tế là hai triển khai
OpenFlow điều phối số phiên bản của họ thơng qua giao thức HELLO và có lẽ là phiên bản cao hơn
việc triển khai hoàn nguyên về phiên bản cũ hơn của giao thức vì lợi ích của khả năng tương tác với
giao thức khác thiết bị. Trong trường hợp giao thức HELLO phát hiện mất kết nối giữa bộ điều
khiển và công tắc, thông số kỹ thuật V.1.0 quy định rằng công tắc sẽ chuyển sang chế độ khẩn cấp
và đặt lại Kết nối TCP. Tất cả các luồng sẽ bị xóa vào lúc này ngoại trừ các luồng đặc biệt được
đánh dấu là một phần của bộ đệm lưu lượng khẩn cấp. Đối sánh gói duy nhất được phép trong chế
độ này là chống lại các luồng đó trong bộ nhớ cache luồng khẩn cấp. Luồng nào nên có trong bộ
nhớ cache này khơng được quy định trong đặc điểm kỹ thuật và các phiên bản tiếp theo của
OpenFlow đã giải quyết lĩnh vực này một cách khác biệt và hơn thế nữa triệt để.

6. VÍ DỤ
6.1 BẢNG LƯU LƯỢNG LẬP TRÌNH BỘ ĐIỀU KHIỂN
Trong Hình 8, hai sửa đổi bảng luồng OpenFlow V.1.0 đơn giản được thực hiện bởi bộ điều khiển.
chúng tôi xem trong hình rằng bảng dịng chảy ban đầu có ba dịng chảy. Ở trạng thái tĩnh trước thời
gian, chúng ta thấy một phiên bản bùng nổ của mục nhập luồng không. Nó cho thấy rằng mục nhập
luồng chỉ định rằng tất cả các khung Ethernet vào công tắc trên cổng đầu vào K với địa chỉ Ethernet
đích là 0x000CF15698AD sẽ được xuất trên cổng đầu ra N. Tất cả các trường khớp khác đã được
ký tự đại diện, được biểu thị bằng dấu hoa thị trong các trường đối sánh tương ứng của chúng trong
Hình 5.8. Tại thời điểm ta, bộ điều khiển sẽ gửi một FLOW_MOD (ADD) lệnh cho công tắc thêm
luồng cho các gói đi vào cơng tắc trên bất kỳ cổng nào, với IP nguồn địa chỉ 192.168.1.1 và địa chỉ
IP đích 209.1.2.1, cổng TCP nguồn 20 và cổng đích 20. Tất cả các trường đối sánh khác đã được ký
tự đại diện. Cổng outport được chỉ định là P. Chúng ta thấy rằng sau lệnh điều khiển được nhận và
xử lý bởi công tắc, bảng luồng chứa một mục nhập luồng mới F tương ứng với tin nhắn ADD đó.
Tại thời điểm tb, bộ điều khiển gửi FLOW_MOD (MODIFY) lệnh cho mục nhập luồng số không.



Bộ điều khiển tìm cách sửa đổi mục nhập luồng tương ứng sao cho có một giờ (3600 giây) khơng
tải trên dịng chảy đó. Hình cho thấy rằng sau khi chuyển đổi có đã xử lý lệnh này, mục nhập luồng
ban đầu đã được sửa đổi để phản ánh thời gian nhàn rỗi mới đó. Ghi chú thời gian nhàn rỗi cho một
mục nhập luồng có nghĩa là sau số giây khơng hoạt động trên luồng đó, dịng chảy sẽ bị xóa bởi
cơng tắc. Nhìn lại Hình 7, chúng ta thấy một ví dụ về dịng chảy như vậy hết hạn chỉ sau thời gian
td. Thông báo FLOW_REMOVED mà chúng tơi thấy ở đó cho biết rằng luồng được lập trình tại
thời điểm tb trong các ví dụ của chúng tơi trong Hình 7 và 8 đã hết hạn. Người kiểm sốt này đã u
cầu được thơng báo về việc hết hạn như vậy khi luồng được định cấu hình và thơng báo
FLOW_REMOVED phục vụ mục đích này.

Hình 8

6.2 GĨI CƠ BẢN ĐỂ TIẾN HÀNH
Chúng tôi minh họa trường hợp cơ bản nhất của chuyển tiếp gói OpenFlow V.1.0 trong Hình 5.9.
Hình vẽ mơ tả một gói tin đến bộ chuyển mạch qua cổng 2 với địa chỉ IPv4 nguồn là 192.168.1.1 và
đích Địa chỉ IPv4 của 209.1.2.1. Chức năng đối sánh gói quét bảng luồng bắt đầu từ mục nhập


luồng 0 và tìm thấy sự phù hợp trong mục nhập luồng F. Mục nhập luồng F quy định rằng một gói
phù hợp phải được chuyển tiếp ra cổng P. Cơng tắc thực hiện việc này, hồn thành ví dụ chuyển tiếp
đơn giản này.
Một công tắc OpenFlow chuyển tiếp các gói dựa trên các trường tiêu đề mà nó phù hợp. Mạng lưới
lập trình viên chỉ định hành vi chuyển đổi lớp ba bằng cách lập trình các mục nhập luồng để cố
gắng khớp tiêu đề lớp ba chẳng hạn như IPv4. Nếu đó là cơng tắc lớp hai, các mục nhập luồng sẽ ra
lệnh khớp trên lớp hai tiêu đề. Ngữ nghĩa của các mục nhập luồng cho phép phù hợp với nhiều loại
giao thức tiêu đề nhưng một cơng tắc nhất định sẽ chỉ được lập trình cho những cơng tắc tương ứng
với vai trị của nó chuyển tiếp gói tin. Bất cứ khi nào có sự chồng chéo trong các luồng đối sánh
tiềm năng, mức độ ưu tiên được chỉ định mục nhập luồng của bộ điều khiển sẽ xác định kết quả phù

hợp nào được ưu tiên. Ví dụ: nếu một cơng tắc cả chuyển đổi lớp hai và lớp ba, đặt các mục nhập
luồng phù hợp với tiêu đề lớp ba ở mức cao hơn ưu tiên sẽ đảm bảo rằng nếu có thể, chuyển mạch
lớp ba được thực hiện trên gói tin đó.

6.3 CHUYỂN ĐỔI GĨI TRƯỚC ĐẾN BỘ ĐIỀU KHIỂN
Chúng tơi đã trình bày trong phần trước một ví dụ về cơng tắc OpenFlow chuyển tiếp một gói dữ
liệu đến đến một cổng đích được chỉ định. Một hành động cơ bản khác của cơng tắc OpenFlow
V.1.0 là chuyển tiếp gói đến bộ điều khiển để xử lý ngoại lệ. Hai lý do mà cơng tắc có thể chuyển
tiếp gói đến bộ điều khiển là OFPR_NO_MATCH và OFPR_ACTION. Rõ ràng là
OFPR_NO_MATCH được sử dụng khi khơng tìm thấy mục nhập luồng phù hợp. OpenFlow giữ lại
khả năng chỉ định rằng một mục nhập luồng phù hợp phải luôn được chuyển tiếp đến bộ điều khiển.
Trong trường hợp này OFPR_ACTION là được chỉ định như lý do. Ví dụ về điều này sẽ là một gói
điều khiển, chẳng hạn như gói giao thức định tuyến luôn cần được xử lý bởi bộ điều khiển. Trong
hình 5.10, chúng tơi cho thấy một ví dụ về một gói dữ liệu là gói định tuyến OSPF. Có một mục
nhập bảng phù hợp cho gói này chỉ định rằng gói tin phải được chuyển tiếp đến bộ điều khiển.
Chúng tơi thấy trong hình rằng PACKET_IN thơng báo được gửi qua kênh an toàn tới bộ điều
khiển, chuyển giao bản cập nhật giao thức định tuyến này cho bộ điều khiển để xử lý ngoại lệ. Quá
trình xử lý có thể sẽ diễn ra trên bộ điều khiển là rằng giao thức định tuyến OSPF sẽ được chạy, có
khả năng dẫn đến thay đổi các bảng chuyển tiếp trong cơng tắc. Bộ điều khiển sau đó có thể sửa đổi
các bảng chuyển tiếp thông qua cách tiếp cận brute force của gửi các lệnh FLOW_MOD đến công
tắc sửa đổi cổng đầu ra cho mỗi luồng trong công tắc bị ảnh hưởng bởi sự thay đổi bảng định tuyến
này. (Chúng ta sẽ thấy trong Phần 5.4.2 rằng có một cách hiệu quả hơn để bộ điều khiển để lập trình
cổng đầu ra cho các luồng trong một công tắc lớp ba nơi nhiều luồng chia sẻ cùng một địa chỉ IP
bước tiếp theo.)
Ở mức tối thiểu, bộ điều khiển cần truy cập vào các trường tiêu đề gói để xác định vị trí của nó của
gói tin. Trong nhiều trường hợp, mặc dù khơng phải tất cả, nó có thể cần quyền truy cập vào tồn bộ
gói. Cái này sẽ thực tế là đúng trong trường hợp gói định tuyến OSPF trong ví dụ này. Vì lợi ích của
hiệu quả, OpenFlow cho phép chuyển đổi bộ đệm tùy chọn của gói đầy đủ. Trong trường hợp số
lượng lớn các gói được chuyển tiếp từ bộ chuyển mạch đến bộ điều khiển mà bộ điều khiển chỉ cần
kiểm tra tiêu đề gói, đạt được hiệu quả băng thơng đáng kể bằng cách đệm đầy đủ gói trong switch

và chỉ chuyển tiếp các trường tiêu đề. Vì bộ điều khiển đơi khi sẽ cần xem số dư của gói tin, một ID
bộ đệm được giao tiếp với bản tin PACKET_IN. Đệm này Bộ điều khiển có thể sử dụng ID để truy
xuất gói đầy đủ sau đó từ bộ chuyển mạch. Cơng tắc có khả năng loại bỏ các bộ đệm cũ mà bộ điều
khiển chưa truy xuất được. Có những hành động cơ bản khác mà bộ chuyển mạch có thể thực hiện
đối với một gói tin đến: (1) để làm ngập gói tin ra khỏi tất cả các cổng ngoại trừ cổng mà nó đến
hoặc, (2) để bỏ gói tin. Chúng tôi tin tưởng rằng sự hiểu biết của người đọc về các chức năng sụt
giảm và lũ lụt sẽ tuân theo một cách tự nhiên từ hai ví dụ chỉ được cung cấp và bây giờ chúng ta sẽ


chuyển sang thảo luận về các tiện ích mở rộng cho các chức năng OpenFlow cơ bản được cung cấp
trong V.1.1.

IV. A brief overview of additional OpenFlow versions.
1. OpenFlow 1.1 Additions
OpenFlow 1.1 [3] được phát hành vào ngày 28 tháng 2 năm 2011

1.1 Các loại bảng flow( MULTIPLE FLOW TABLES)
V.1.1 tăng cường đáng kể sự phức tạp của quá trình xử lý gói tin trong OpenFlow
Trong V.1.1, giờ đây có thể trì hỗn q trình xử lý gói tiếp theo để so khớp tiếp theo trong các
bảng luồng khác.
Cải tiến này xuất phát từ thực tế là các mục nhập luồng có thể được xâu chuỗi bởi một lệnh
trong một mục nhập luồng trỏ đến một bảng luồng khác

Hình 9: Chức năng so sánh gói và chuyển tiếp gói cơ bản V.1.0.


Hình 10:Switch Chuyển tiếp gói tin đến bộ điều khiển.

Hình 11: OpenFlow V.1.1 switch với xử lý gói mở rộng.
GOTO: Khi một lệnh như vậy được thực thi, chức năng đối sánh gói được mơ tả trước đó

trong Hình 8 và 10 không được gọi, lần này bắt đầu quá trình khớp với mục nhập luồng đầu tiên của
bảng luồng mới


Đường ống mới này được phản ánh trong chức năng khớp gói mở rộng được hiển thị trong Hình
11 cho phép tất cả chức năng của một lệnh OpenFlow V.1.1 để kiểm tra và sửa đổi nội dung của một
gói được áp dụng nhiều lần, với các điều kiện khác nhau được sử dụng trong quá trình so sánh trong
mỗi bảng luồng
Xử lý gói V.1.1, với các lệnh khác nhau được xâu chuỗi thông qua logic phức tạp khi các mục
nhập luồng khác nhau được khớp trong một chuỗi bảng luồng, tạo thành một đường ống xử lý gói
mạnh mẽ.
Khi đường dẫn kết thúc, các hành động trong tập hợp hành động được thực thi theo thứ tự sau:


copy TTL inwards



pop



push



copy TTL outwards




decrement TTL



set: apply all set_field actions to the packet



qos: apply all QoS actions to the packet, such as set_queue



group: if a group action is specified, apply the actions to the relevant action buckets
(which canesult in the packet being forwarded out the ports corresponding to those
buckets)



output: if no group action was specified, forward the packet out the specified port

Apply-Actions: sử dụng để thực hiện các hành động nhất định ngay lập tức giữa các bảng lưu
lượng, trong khi đường ống vẫn đang hoạt động, thay vì đợi cho đường ống đi đến cuối, đây là
trường hợp bình thường
PACKET_OUT:
các hành động thành phần của nó trên danh sách hành động được hợp nhất vào tập hành
động đang được xây dựng cho gói đến này
Nếu mục nhập luồng hiện tại bao gồm lệnh GOTO đến bảng luồng được đánh số cao hơn,
thì danh sách hành động tiếp theo có thể được hợp nhất vào tập hành động trước khi nó được thực
thi cuối cùng.


1.2 Các nhóm (GROUPS)


Hình 12: OpenFlow V.1.1 group table.
Bảng nhóm bao gồm các mục nhập nhóm, mỗi mục nhập bao gồm một hoặc nhiều nhóm tác vụ
Các nhóm trong một nhóm có các hành động được liên kết với chúng được áp dụng trước khi
gói được chuyển tiếp đến cổng được xác định bởi nhóm đó
Đơi khi một nhóm có thể được sử dụng khi chỉ có một cổng đầu ra duy nhất
Nếu bộ điều khiển muốn thay đổi bước tiếp theo do sự thay đổi trong bảng định tuyến IP trong
bộ điều khiển, tất cả các luồng có thể được định tuyến lại bằng cách lập trình lại đơn giản mục nhập
nhóm
việc thay đổi nhóm hành động của một mục nhập nhóm nhanh hơn so với việc cập nhật số
lượng lớn các mục nhập luồng có bước tiếp theo thay đổi do một bản cập nhật định tuyến duy nhất
Lưu ý :


Bất cứ khi nào một liên kết hoặc hàng xóm bị lỗi hoặc không hoạt động, tất cả các luồng
đi ngang qua phần tử bị lỗi đó cần được định tuyến lại bởi cơng tắc phát hiện lỗi đó



nhóm của một nhóm có thể chuyển tiếp đến các nhóm khác, cung cấp khả năng liên kết
các nhóm lại với nhau

1.3 MPLS AND VLAN TAG SUPPORT
V.1.1 là phiên bản OpenFlow đầu tiên cung cấp hỗ trợ VLAN đầy đủ
Việc cung cấp hỗ trợ hoàn chỉnh cho nhiều cấp thẻ VLAN nên cần hỗ trợ mạnh mẽ cho việc bật
và đẩy nhiều cấp thẻ, hỗ trợ gắn thẻ MPLS theo tự nhiên và cũng là một phần của V.1.1
Cả hai hành động PUSH và POP mới, cũng như chuỗi các bảng dòng, đều cần thiết để cung cấp
hỗ trợ chung này cho VLAN và MPLS



PUSH : được thực thi, một tiêu đề mới của loại được chỉ định sẽ được chèn vào trước
tiêu đề ngồi cùng hiện tại



POP: để xóa thẻ ngồi cùng hiện tại

1.4 Cổng VIRTUAL (VIRTUAL PORTS)


Các cổng tiêu chuẩn bao gồm:


Cổng vật lý ( Physical Ports)



Cổng Switch-Defined Virtual ( Switch-Defined Virtual Ports): bộ điều khiển có thể
chuyển tiếp các gói đến một phần nhỏ gọi là Cổng ảo do công tắc xác định

Cổng ảo dành riêng bao gồm :


ALL: Đây là cơ chế đơn giản để làm tràn các gói ra khỏi tất cả các cổng tiêu chuẩn ngoại
trừ cổng mà gói đó đã đến. Điều này tương tự như hiệu ứng được cung cấp bởi cổng ảo
dành riêng cho FLOOD tùy chọn bên dưới.




CONTROLLER: Chuyển tiếp gói tin tới bộ điều khiển trong một tin nhắn OpenFlow.



TABLE:Xử lý gói tin thơng qua q trình xử lý đường ống OpenFlow thông thường.
Điều này chỉ áp dụng cho một gói được gửi từ bộ điều khiển (thơng qua tin nhắn
PACKET_OUT)



IN_PORT: Điều này cung cấp một chức năng lặp lại. Gói tin được gửi lại trên cổng mà
nó đã đến



LOCAL (optional): cung cấp cơ chế mà gói được chuyển tiếp tới phần mềm điều khiển
OpenFlow cục bộ của bộ chuyển mạch . Vì cổng LOCAL có thể được sử dụng làm cổng
đầu ra và cổng vào, nên cổng này có thể được sử dụng để triển khai kết nối bộ điều
khiển trong băng tần, loại bỏ nhu cầu về mạng điều khiển riêng biệt cho kết nối bộ
chuyển mạch bộ điều khiển



NORMAL (optional): Điều này khác với cổng ảo dành riêng LOCAL ở chỗ nó chỉ có thể
được sử dụng như một cổng đầu ra



FLOOD (optional): Cơng dụng chung của cổng này là gửi gói tin ra tất cả các cổng tiêu

chuẩn ngoại trừ cổng mà nó đã đến. Người đọc nên tham khảo thông số kỹ thuật
OpenFlow V.1.1 để biết các sắc thái cụ thể của cổng ảo dành riêng này.

1.5 Mất kết nối của bộ điều khiển (CONTROLLER CONNECTION FAILURE)
Việc mất kết nối giữa bộ chuyển mạch và bộ điều khiển là một khả năng nghiêm trọng và có
thực và đặc điểm kỹ thuật OpenFlow cần chỉ rõ cách xử lý nó
2. OpenFlow 1.2 Additions.

2.1 EXTENSIBLE MATCH SUPPORT
Khả năng đối sánh gói được cung cấp trong V.1.2 cung cấp đủ độ phong phú trong các bộ
mơ tả đối sánh gói mà bộ điều khiển có thể mã hóa logic mong muốn trong chính các quy tắc
loại bỏ yêu cầu của các phiên bản trước đó rằng hành vi phải được mã hóa cứng thành logic
chuyển đổi.


×