Professional Documents
Culture Documents
Traffic Engineering D A Trên QoS Trong SDN
Traffic Engineering D A Trên QoS Trong SDN
Như được mô tả trong Hình 3.2, một OpenFlow switch là một switch phần mềm
bao gồm một hoặc nhiều bảng luồng được sắp xếp theo pipeline, một bảng
nhóm thực hiện tìm kiếm và chuyển tiếp gói tin, và một kênh OpenFlow kết nối
đến một bộ điều khiển bên ngoài. Bảng luồng là một bảng tìm kiếm với các
trường khớp và hành động, được xử lý như một pipeline. Bảng luồng được xếp
chồng lên nhau chứa các luồng dữ liệu, được định nghĩa sau đó. Một luồng dữ
liệu sẽ khớp với bảng luồng đầu tiên, và có thể được chuyển tiếp đến một cổng
hoặc một bảng luồng khác. Đây là những gì chúng ta hiểu là "pipelined"; các
luật khớp luồng xảy ra theo thứ tự, giống như nước chảy qua ống.
Một luồng dữ liệu là một "chuỗi các gói tin được gửi từ một nguồn cụ thể đến
một đích unicast, anycast hoặc multicast mà nguồn mong muốn đánh dấu là một
luồng". Các phân loại luồng thường dựa trên 5-tuple gồm địa chỉ đích, địa chỉ
nguồn, giao thức, cổng đích, cổng nguồn. Lợi ích chính của định tuyến dựa trên
luồng dữ liệu là loại bỏ nhu cầu thực hiện tìm kiếm trong bảng định tuyến trên
cơ sở từng gói tin. Tìm kiếm tuyến đường có thể được thực hiện cho gói tin đầu
tiên trong một luồng, sau đó áp dụng chuyển đổi tương tự cho mỗi gói tin trong
chuỗi. Bảng luồng dễ dàng được triển khai trong phần cứng, và hầu hết các nhà
cung cấp hỗ trợ một số hình thức khớp luồng dữ liệu trên bộ nhớ trung gian tìm
kiếm ba chiều (ternary content-addressable memory - TCAMs) phần cứng hoặc
phần mềm.
Trong mô hình SDN, OpenFlow được sử dụng làm mặt phẳng dữ liệu xử lý các
hoạt động chuyển tiếp gói tin cho bộ điều khiển OpenFlow. Bảng dòng luồng
(flow table) được sử dụng để xử lý tìm kiếm và chuyển tiếp các gói tin. Như
được thể hiện trong Hình 3.3, một mục dòng luồng bao gồm các trường tiêu đề
(ví dụ, địa chỉ IP và cổng nguồn và đích) để xác định một luồng duy nhất, các
bộ đếm dùng để thu thập thống kê số lần sử dụng thành công của mục dòng
luồng, các cookie được sử dụng để chú thích bởi bộ điều khiển SDN, các thời
gian chờ để điều khiển thời gian duy trì của một mục dòng luồng trong bảng
dòng luồng, và độ ưu tiên giúp switch lựa chọn giữa các luồng khớp (nếu có).
Cuối cùng, các hành động xác định chính sách cho các gói tin khớp thành công.
Để làm rõ, khi một gói tin đến switch, switch bắt đầu tìm kiếm khớp và mục
dòng luồng khớp sẽ xác định hành động, ví dụ chuyển tiếp gói tin đến một cổng
cụ thể. Khi nhận được một gói tin, thiết bị chuyển tiếp quét các bảng dòng
luồng, bắt đầu từ bảng 0 (đó là bảng dòng luồng bắt buộc), để tìm kiếm các mục
dòng luồng khớp. Nếu không có match nào trong bảng luồng dòng 0, switch sẽ
bắt đầu tìm kiếm trong bảng luồng dòng 1 (nếu bảng luồng 1 tồn tại, số bảng
luồng được cấu hình bởi người dùng). Quá trình này sẽ tiếp tục cho đến khi tìm
thấy một match thành công. Trong trường hợp có nhiều match trong một bảng
luồng duy nhất, entry có độ ưu tiên cao hơn sẽ được chọn. Các thiết bị thực hiện
hành động (tức là chuyển tiếp gói tin đến một cổng cụ thể) được xác định trong
entry luồng. Cũng có một entry luồng đặc biệt được gọi là entry luồng thiếu
bảng với độ ưu tiên là 0, phù hợp với tất cả các gói tin. Entry này bắt lấy tất cả
các luồng không phù hợp. Entry này có thể điều khiển thiết bị để loại bỏ các gói
tin không xác định hoặc gửi chúng đến bộ điều khiển. Bộ điều khiển có thể cài
đặt một entry luồng mới trên các switch cho luồng hoặc có thể loại bỏ gói tin.
Hãy tưởng tượng rằng đây là một quy tắc if-then trong một bộ định tuyến L3
(lớp 3). Nếu khung khớp với bộ 5-tuple này, thì chúng ta áp dụng tập hành động
này. Một bộ định tuyến L3 là một bộ định tuyến thực hiện quyết định chuyển
tiếp dựa trên lưu lượng dữ liệu mạng L3. Gói tin L3 đến và được gửi đến bảng
dòng luồng nhập, được khớp với table-miss flow entry. Sau đó, flow entry này
sẽ chuyển tiếp gói tin đến bộ điều khiển để tìm đường đi. Bộ điều khiển tìm ra
next-hop thích hợp và giao diện mạng phù hợp, và đẩy một flow entry mới đến
OpenFlow switch cho gói tin này và chuyển tiếp nó ra khỏi giao diện mạng
thích hợp. Gói tin tiếp theo trong luồng đó sẽ khớp với flow entry mới được đẩy
xuống OpenFlow switch, sau đó áp dụng hành động đến gói tin, chuyển tiếp nó
ra khỏi cùng một giao diện mạng mà gói tin trước đó đã được gửi và áp dụng
cùng một hành động. Chỉ có gói tin đầu tiên trong một luồng mới làm cho việc
tìm đường đi, tăng tốc xử lý gói tin.
3.2.2 Bảng luồng dữ liệu OpenFlow (OpenFlow Flow Table)
Bảng luồng dữ liệu là một bảng tra cứu có các trường tương ứng và hành động
và được xử lý như pipeline. Khi khung dữ liệu vào cổng, nó được xử lý bởi
Bảng 0 bằng mục nhập luồng tương ứng có độ ưu tiên cao nhất. Mục nhập
luồng này sẽ chứa một tập hành động có thể xuất khung dữ liệu đến một cổng
cụ thể, áp dụng các hành động hoặc gửi khung dữ liệu đến một bảng khác.
Trong trường hợp bảng không tìm thấy tương ứng, khung dữ liệu sẽ bị bỏ qua
bởi switch. Bảng luồng dữ liệu bao gồm các trường sau. Hãy nhớ rằng một bộ
định tuyến luồng dữ liệu bao gồm một bảng tra cứu và một tập hành động; đây
là bảng tra cứu tìm kiếm trên các trường khác nhau trong tiêu đề gói tin.
Loại Mô tả
Match Fields Tiêu chí khớp cho các khung (frames). Bao gồm dữ
liệu header và thông tin metadata. Các trường khớp
được đặt trên bảng luồng (flow table) để xác định
gói tin mà một hành động sẽ được thực hiện. Điều
này bao gồm thông tin 5-tuple và một số tiêu chí bổ
sung khác cũng có thể được sử dụng.
Độ ưu tiên (Priority) Độ ưu tiên cho tiêu chí khớp. Các khớp xảy ra theo
thứ tự độ ưu tiên. Hữu ích cho việc định nghĩa các
mục ngoại lệ và các mục mặc định trong đường ống
bảng luồng.
Bộ đếm (Counters) Đếm số lượng khớp
Hướng dẫn Xác định những gì sẽ được thực hiện với khung sau
(Instructions) khi khớp; có một hoặc nhiều hướng dẫn này.
Thời gian chờ Xác định thời gian một luồng có thể tồn tại trong
(Timeouts) switch. Thời gian chờ mềm xác định bao lâu luồng
sống nếu không có khung khớp. Thời gian chờ
cứng xác định bao lâu luồng sống bất kể số lượng
khớp.
Cookie Trường được định nghĩa bởi controller. Không
được sử dụng trong xử lý gói tin nhưng hữu ích để
lọc thống kê luồng.
Bảng 3.1: OpenFlow Flow Table Field
3.2.3 Các loại tin nhắn OpenFlow (OpenFlow Messages Types)
Có ba loại chung của tin nhắn OpenFlow: tin nhắn điều khiển-tới-điều khiển,
bất đồng bộ và đối xứng. Bên điều khiển sử dụng các tin nhắn điều khiển-tới-
điều khiển để truy vấn thông tin từ, truyền gói tin tới hoặc cấu hình switch.
Thông thường, bên điều khiển khởi tạo tin nhắn điều khiển-tới-điều khiển với
hoặc không yêu cầu phản hồi từ switch. Ngược lại, các tin nhắn bất đồng bộ
được gửi mà không có yêu cầu từ bên điều khiển. Ví dụ về chúng là tin nhắn
packet-in, flow-removed, port-status và packet-out. Các tin nhắn đối xứng yêu
cầu phản hồi từ bên nhận. Ví dụ về chúng là tin nhắn hello, error, echo và
experimenter. OpenFlow xác định một đặc tả mà người dùng có thể sử dụng để
truyền thông với các switch OpenFlow, và công nghệ này sẽ được sử dụng trong
luận án này để cung cấp cơ chế để chèn luồng vào các switch này.
3.3 SDN Controller cho mặt phẳng điều khiển (SDN Controller for the
Control Plane)
Trong kiến trúc SDN, bộ điều khiển hoạt động như não của mạng và nó là nơi
chứa Mặt điều khiển như được miêu tả trong Hình 3.1. Bộ điều khiển là một
phần mềm đóng vai trò là trung tâm điều khiển tập trung giám sát mạng và qua
đó các ứng dụng có thể truy cập và quản lý mạng. Khi nói rằng bộ điều khiển là
trung tâm của mạng, điều này chỉ có ý nghĩa tập trung về mặt logic. Phần mềm
bộ điều khiển thường được triển khai trên một máy chủ có hiệu suất cao, nhưng
để phân phối tải hoặc đảm bảo tính khả dụng cao và sự bền vững, có thể có
nhiều máy chủ được kết nối với nhau theo các topo khác nhau.
Bộ điều khiển có trách nhiệm thực hiện các nhiệm vụ sau:
• Phát hiện thiết bị: bộ điều khiển quản lý việc phát hiện các switch và thiết bị
người dùng cuối và quản lý chúng.
• Theo dõi topologia mạng: bộ điều khiển khám phá các liên kết nối các thiết bị
trong mạng và duy trì một cái nhìn về các tài nguyên cơ bản.
• Quản lý luồng: bộ điều khiển duy trì một cơ sở dữ liệu phản ánh các mục
luồng được cấu hình trong các switch nó quản lý.
• Theo dõi thống kê: bộ điều khiển thu thập và lưu trữ các thống kê theo mức
luồng từ các switch.
Cần nhấn mạnh rằng bộ điều khiển không điều khiển mạng theo bất kỳ cách nào
và cũng không thay thế bất kỳ thiết bị mạng nào. Ngay cả chức năng chuyển
mạch hoặc định tuyến cơ bản cũng phải được cung cấp bởi các ứng dụng cụ thể
sử dụng bộ điều khiển để tiếp cận mạng. Giao tiếp với các thiết bị mạng được
thực hiện thông qua một southbound interface, trong đó Open SDN khuyến
khích sử dụng giao thức OpenFlow. Các giao diện này được sử dụng để cấu
hình và quản lý các switch và để nhận thông điệp từ chúng. Kết nối được thực
hiện thông qua một kênh an toàn và tùy thuộc vào cài đặt, có thể được mã hóa
hoặc không được mã hóa.
Ứng dụng giao tiếp với bộ điều khiển thông qua northbound interface. Qua giao
diện này, chúng lấy thông tin về mạng và gửi các yêu cầu của mình, trong khi
bộ điều khiển sử dụng nó để chia sẻ thông tin về các sự kiện xảy ra. Tùy thuộc
vào việc triển khai, giao diện có thể là cấp thấp, cung cấp truy cập thống nhất
vào từng thiết bị riêng lẻ, hoặc là cấp cao, trừu tượng hóa phần lớn lớp bên dưới
và đại diện cho mạng như một tổng thể. Hiện nay không có tiêu chuẩn cho
northbound interfacevà mỗi bộ điều khiển triển khai API riêng của mình - có thể
là Java API, Python API, REST API hoặc bất cứ cái gì khác. Thiếu tiêu chuẩn
northbound interface này hiện nay làm cho việc tạo các ứng dụng độc lập với bộ
điều khiển trở lên khó khăn.
3.4. Software Switch cho Data Plane
Bảng 3.2 tóm tắt các lệnh Software Switch mà được sử dụng để thử nghiệm
và phát triển dịch vụ mới.
Hình 3.4. Hình 3.4 Kiến trúc Open vSwitch đơn giản
3.4.2. OfSoftSwitch (CPqD)
OfSoftSwitch13 (CPqD) là một switch khác được sử dụng rộng rãi trong
cộng đồng nghiên cứu. Đây là một switch thử nghiệm được phân nhánh từ
triển khai SoftSwitch của Ericsson Traffic Lab 1.1 với những thay đổi trong
forwarding plane để hỗ trợ OF1.3. Ofsoftswitch13 đang chạy trong không
gian người dùng và nó cũng hỗ trợ nhiều phiên bản OpenFlow.
Ofsoftswitch13 hỗ trợ nhiều tính năng OpenFlow nhưng gần đây nó đã gặp
phải một số vấn đề về khả năng tương thích với các phiên bản Linux mới
nhất (Ubuntu 14.0 trở lên) và hỗ trợ nhà phát triển cũng bị đình trệ. Nó được
đi kèm với các công cụ sau để kiểm soát và quản lý mặt phẳng dữ liệu:
+ OfDatapath: Triển khai switch
+ OfLib: Một thư viện để chuyển đổi sang/từ OF1.3 wire formats.
+ DPCTL: Công cụ điều khiển để cấu hình switch
+ OfProtocol: Kênh giao tiếp an toàn với Controller
Tất cả điều này làm cho nó trở thành một sự thay thế hoàn toàn cho OVS.
Tuy nhiên, các tác giả của switch cho biết như sau: “Mặc dù thực tế là
switch vẫn phổ biến đối với những nhà phát triển đang cố gắng thực hiện
các thay đổi của riêng mình đối với OpenFlow, hỗ trợ hiện đang dựa trên
“best-effort”. Hiện tại, có rất nhiều lời phàn nàn về hiệu suất giảm sút, các
tính năng bị hỏng và các vấn đề cài đặt.”. Switch vẫn có một trong những
hỗ trợ tốt nhất cho các tính năng OF1.3 trong số các soft-switch hiện có, đặc
biệt là các tính năng tùy chọn như meter tables v.v., khiến nó trở thành một
lựa chọn hấp dẫn để bắt tay vào sử dụng. Ngoài ra, soft switch hỗ trợ tiện
ích quản lý có tên là Data Path Control (Dpctl), để điều khiển trực tiếp
Openflow switch bao gồm thêm và xóa luồng, thống kê chuyển đổi truy vấn
và sửa đổi cấu hình Flow Table.
3.5. Loại bỏ luồng và trục xuất
Có thể xóa các luồng khỏi Controller bằng 3 cách: : theo yêu cầu của
controller,hết hạn hoặc thông qua cơ chế loại bỏ switch. Cơ chế hết hạn của
Flow switch xác định thời gian chờ quá lâu và thời gian chờ không hoạt
động. Thời gian chờ không hoạt động gây ra trục xuất khi và chỉ khi không
có frames nào được nhìn thấy trong khoảng thời gian đó. Thời gian chờ quá
lâu gây ra việc trục xuất bất kể có được nhìn thấy hay chưa. Controller cũng
có thể gửi thông báo DELETE gây ra việc loại bỏ luồng. Cơ chế loại bỏ
Flow Switch cho phép switch loại bỏ các luồng để lấy lại tài nguyên. Sau
khi xóa, một thông báo FLOW REM có thể được gửi tùy chọn nếu cờ
SEND FLOW REM được đặt trong flow entry. Thông báo này được sử
dụng để thông báo cho Controller luồng đã bị loại bỏ để Controller có thể
giữ số liệu thống kê hoặc đưa ra quyết định dựa trên thông tin này.
3.6. Tóm tắt chương
Chương này đã xem xét chi tiết các công nghệ SDN. Các giao diện truyền
thông Northbound và Southbound cho phép một số giao thức chính được sử
dụng trong SDN Framework Các giao thức như OpenFlow trên Southbound
và API RESTful trên giao diện Northbound controller đã được áp dụng
đáng kể trong cả nghiên cứu học thuật và công nghiệp. Ngoài các giao thức
truyền thông, những năm gần đây cũng chứng kiến sự phát triển của một số
nền tảng controller quan trọng nhằm thúc đẩy mô hình SDN và mang lại sự
đa dạng kỹ thuật đáng kể cho các nhà nghiên cứu và nhà khai thác để thử
nghiệm và khám phá.
OF1.3 đã giới thiệu khái niệm meter tables để đạt được QoS chi tiết hơn
trong các mạng OpenFlow. Trong khi các hàng đợi kiểm soát tốc độ đầu ra
của lưu lượng, các meter tables có thể được sử dụng để theo dõi tốc độ của
lưu lượng trước khi xuất. Nói cách khác, hàng đợi kiểm soát tốc độ đi ra và
meter table có thể được sử dụng để kiểm soát tốc độ đi vào của lưu lượng
truy cập. Điều này làm cho hàng đợi và meter table bổ sung cho nhau.
OpenFlow Switches cũng có khả năng đọc và ghi các bit Type of Service
(ToS) trong IP Header . Nó là một trường có thể được sử dụng để khớp với
một Packet trong một flow entry. Tất cả các tính năng này cùng nhau cho
phép quản trị viên mạng triển khai QoS trong mạng của họ. Bảng 1 sau đây
tóm tắt các tính năng liên quan đến QoS trong các phiên bản OpenFlow.
4.5.1. Hàng đợi
Như đã đề cập trước đó, giao thức OpenFlow đã mô tả hàng đợi giới hạn tốc
độ tối thiểu trong OF1.0 và hàng đợi giới hạn tốc độ tối thiểu và tối đa trong
OF1.2. Theo đặc tả OpenFlow, OpenFlow sử dụng hàng đợi trên các
Switches nhưng không xử lý việc quản lý hàng đợi trên nó. Việc quản lý
hàng đợi trên switch diễn ra bên ngoài giao thức OF và bản thân giao thức
OF chỉ có thể truy vấn số liệu thống kê hàng đợi từ switch. Có hai giao thức
để cung cấp tác vụ quản lý hàng đợi (tạo, xóa và thay đổi) trong các
Switches hỗ trợ OpenFlow: OF-Config và OVSDB. Bên cạnh đó, có một
hàng đợi tiêu chuẩn quản lí được cung cấp bởi bất kỳ OpenFlow Controller
nào.
4.5.2. OVSDB
OF-Config và OVSDB là hai giao thức Southbound để điều khiển hoạt động
của các thiết bị chuyển tiếp ngoài các quyết định chuyển tiếp. Cụ thể,
OVSDB quản lý các hoạt động chuyển mạch như tạo đường hầm, chuyển đổi
trạng thái cổng, cấu hình hàng đợi và quản lý QoS. OVSDB sử dụng nhiều
bảng để quản lý Open vSwitch. Các bảng này bao gồm bảng luồng, bảng
cổng, bảng NetFlow và các bảng khác. Tương tự, nó duy trì các bảng cho
QoS và Hàng đợi. Trong khi hầu hết các bảng khác là bảng gốc của lược đồ
OVSDB, nghĩa là bảng và các mục nhập của nó sẽ không tự động bị xóa nếu
không thể truy cập được. Do đó, QoS và các bảng đợi tồn tại và có thể được
thay đổi độc lập, cho dù chúng có được tham chiếu bởi một cổng hay không.
Bảng cổng có liên quan đến bảng QoS và bảng giao diện. Mối quan hệ với
bảng giao diện là bắt buộc, nghĩa là mỗi cổng phải được liên kết với một
giao diện. Tuy nhiên, mối quan hệ với QoS là tùy chọn. Một cổng có thể tồn
tại mà không có cài đặt QoS kèm theo. Một cổng có thể có một bảng QoS có
thể có nhiều hàng đợi được gán cho nó.
Khi QoS và hàng đợi đã được thiết lập trên một Switch các luồng có thể
được chuyển hướng đến một hàng đợi cụ thể bằng cách sử dụng hành động
thiết lập hàng đợi của OpenFlow. Hành động này sẽ chuyển tiếp các luồng
phù hợp với tiêu chí phù hợp vào hàng đợi được đề cập. Nếu có nhiều hơn
một luồng đi qua Switch cùng một lúc, tốc độ tổng hợp của các luồng sẽ
được kiểm soát ở đầu ra theo tốc độ tối thiểu và tốc độ tối đa được xác định
bởi hàng đợi. Chúng ta hãy tìm hiểu sâu hơn một chút về cách hàng đợi được
triển khai trong giao thức OpenFlow và OVS.
Đặc tả OpenFlow nêu các thuộc tính sau về hàng đợi:
+ Tốc độ tối thiểu: Tốc độ dữ liệu tối thiểu được đảm bảo cho một hàng đợi.
Dung lượng được chia sẻ theo tỷ lệ dựa trên tỷ lệ tối thiểu của mỗi hàng đợi.
Khi tốc độ tối thiểu được đặt, Switch sẽ ưu tiên hàng đợi để đạt được tốc độ
tối thiểu đã nêu. Nếu có nhiều hơn một hàng đợi trong một cổng, với tổng
tốc độ tối thiểu cao hơn dung lượng của liên kết, tốc độ của tất cả các hàng
đợi đó sẽ bị phạt.
+ Tốc độ tối đa: Tốc độ dữ liệu tối đa có thể được phép cho một hàng đợi.
Nếu tốc độ thực tế của các luồng lớn hơn tốc độ tối đa của hàng đợi đã nêu,
thì Switch sẽ trì hoãn các Packets hoặc loại bỏ chúng để đáp ứng tốc độ tối
đa.
Mặc dù các thông số kỹ thuật của OpenFlow đề cập đến các nguyên tắc này
cho các Switch tương thích với OpenFlow, nhưng việc triển khai Switch để
nhận ra các tính năng này là tùy thuộc vào quá trình triển khai. Open
vSwitch, dựa trên Linux, sử dụng chương trình Traffic Control(TC) của
Linux để triển khai hàng đợi.
4.5.3. Kiểm soát lưu lượng Linux
Kiểm soát lưu lượng Linux (TC) là một tiện ích Linux được sử dụng để định
cấu hình kiểm soát lưu lượng trong Linux Kernel. TC có thể được sử dụng
để đạt được những điều sau trong Linux Kernel:
+ Định hình lưu lượng: Nó có thể được sử dụng để định hình tốc độ truyền
của lưu lượng đi qua máy chủ Linux hoặc bất kỳ thiết bị nào khác. Nó cũng
có thể làm dịu bất kỳ sự bùng nổ lưu lượng truy cập nào để có trạng thái
mạng tốt hơn
+ Lập lịch trình: Bằng cách lập lịch trình các Packets, có thể đạt được trạng
thái mạng tốt hơn trong quá trình truyền số lượng lớn. Sắp xếp lại và lập lịch
các Packets cũng có thể được gọi là sắp xếp thứ tự ưu tiên, đây là một hiện
tượng được chấp nhận rộng rãi trong QoS.
+ Chính sách: Một số chính sách mạng có thể được triển khai trong TC.
Chính sách này xảy ra khi xâm nhập.
+ Dropping: Lưu lượng truy cập vượt quá băng thông đã xác định cũng có
thể bị drop khi vào hoặc ra, dựa trên mức sử dụng.
TC sử dụng ba loại đối tượng để đạt được điều này: Quy luật hàng đợi
(Qdisc), các lớp và bộ lọc. Bất cứ khi nào kernel cần gửi bất kỳ lưu lượng
truy cập nào đến một giao diện, nó sẽ đưa lưu lượng vào một qdisc. Sau đó
qdisc sẽ gửi đến giao diện sau. Một qdisc đơn giản là một hàng đợi FIFO
đơn giản. Các lớp và bộ lọc được sử dụng để triển khai các nguyên tắc xếp
hàng tinh vi hơn như các nguyên tắc xếp hàng có lớp và không có lớp. Trong
OVS, có hai nguyên tắc xếp hàng phân loại, đó là Hierarchical Token Bucket
(HTB) và Hierarchical Fair Service Curve (HFSC). Cả hai nguyên tắc xếp
hàng này đều cho phép Nguyên tắc xếp hàng theo thứ bậc và mượn băng
thông. Do đó, HTB sẽ được sử dụng trong luận án này để quản lý hàng đợi.
4.5.4. Hierarchical Token Bucket (HTB)
Nói chung, Hierarchical Token Bucket (HTB) là một nguyên tắc xếp hàng
nhằm mục đích thay thế cho Class-Based Queuing (CBQ), một tiêu chuẩn
trong các triển khai TC cũ hơn. Để cho phép kiểm soát chi tiết băng thông
gửi đi trên một liên kết nhất định, HTB sử dụng các khái niệm về nhóm mã
thông báo đa cấp. Trong thuật toán HTB, mã thông báo được tạo ở tốc độ cố
định và được lưu trữ trong bộ chứa dung lượng cố định. Nếu có một mã
thông báo có sẵn trong nhóm, các Packets có thể được xếp hàng hoặc gửi
đến một cổng đầu ra. Trong một Instance HTB, có thể tồn tại nhiều lớp.
Bảng 2. Các tính năng liên quan đến QoS trong các OpenFlow Controller
khác nhau
Trong thử nghiệm, Ryu Controller được chọn, chủ yếu là do kiến trúc dựa
trên thành phần của nó, Northbound API mạnh mẽ và tài liệu tuyệt vời về
QoS.
4.7. Tóm tắt chương
Phần này đã trình bày khái niệm về QoS bao gồm nguồn gốc và tiến trình.
Người ta biết rằng có thể sử dụng nhiều loại kỹ thuật khác nhau để triển khai
các hệ thống QoS trong SDN, nhiều thách thức khác nhau mà cộng đồng
SDN phải đối mặt và các giải pháp khả thi được đề xuất cho một số vấn đề
cấp bách nhất.
Sự xuất hiện của các dịch vụ mạng khác nhau được thực hiện bởi Internet,
cạnh tranh tài nguyên mạng và hầu hết trong số đó yêu cầu đảm bảo hiệu
suất QoS. Rất khó để cung cấp các dịch vụ mạng mới nổi một cách linh hoạt
và đáp ứng lượng nhu cầu khổng lồ với hiệu suất tốt hơn trong mạng hiện
tại. Để giải quyết những vấn đề này, các sơ đồ kỹ thuật lưu lượng cần xem
xét sự kết hợp của các ứng dụng người dùng và các yêu cầu về hiệu suất mà
người dùng cuối có thể gặp phải do cải tiến dịch vụ riêng lẻ.
SDN nhằm mục đích giải quyết vấn đề về tính linh hoạt trong kiến trúc
internet ngày nay và cung cấp cách tiếp cận dựa trên phần mềm để các kỹ
thuật và giao thức mới phát triển mạnh trong hệ sinh thái của nó. Ưu điểm
lớn nhất của SDN là việc thích ứng với nó dễ dàng hơn và tránh xa thiết lập
internet “cứng nhắc” hiện có. Tuy nhiên, để SDN thay thế kiến trúc hiện tại
của mạng trong thế giới thực, nó cần cung cấp khả năng kiểm soát rất chi tiết
cho quản trị viên mạng để kiểm soát chất lượng dịch vụ cùng với một số cải
tiến khác.