Mở rộng bản tin OpenFlow điều khiển cổng Ethernet

Một phần của tài liệu Nghiên cứu giải pháp tiết kiệm năng lượng trong thiết kế chuyển mạch sử dụng ở trung tâm dữ liệu (Trang 49)

4. Cấu trúc nội dung của luận án

2.4.2. Mở rộng bản tin OpenFlow điều khiển cổng Ethernet

Để thay đổi tốc độ liên kết các cổng Ethernet cho chuyển mạch nhằm tiết kiệm năng, tác giả mở rộng bản tin điều khiển OpenFlow [44] được định nghĩa như sau:

Bản tin OFPT_PORT_MOD:

Chiều bản tin: Bộ điều khiển xuống chuyển mạch Độ dài: 32 Bytes

Chức năng: Cấu hình trạng thái cổng mạng Cấu trúc :

struct ofp_port_mod {

struct ofp_header header; uint16_t port_no; uint8_t hw_addr[OFP_ETH_ALEN]; uint32_t config; uint32_t mask; uint8_t link_state; uint32_t advertise; uint8_t pad[3]; };

Trường link_state chứa thông tin điều khiển cổng như trên Hình 2.10. Giá trị „1‟ tại ô cờ (Flag) sẽ quyết định có hay không đổi trạng thái của chuyển mạch. Cặp bit {P1, P0} xác định số hiệu cổng, cặp bit {B1, B0} xác định băng thông trên cổng đã chọn: “11” tức là 1Gbps, “10” nghĩa là 100Mbps, “01” sẽ giới hạn băng thông về 10Mbps, và “00” biểu thị cho việc tắt cổng đó.

Bảng 2.4. Bản tin OFPT_PORT_MOD

OpenFlow

header Port no

MAC

address Config Mask

Link

state Advertise Pad

8bytes 2bytes 6bytes 4bytes 4bytes 1bytes 4bytes 3bytes

F - - - B1 B0 P1 P0

7 0

Link Rate Port No.

Flag Reserved

Hình 2.10. Trường Link state mô tả tốc độ liên kết của cổng Ethernet

Thuật toán thể hiện trên sơ đồ trong Hình 2.11 dưới đây minh họa quá trình tiếp nhận và xử lý bản tin điều khiển trên chuyển mạch OpenFlow. Sau khi hoàn thành giao thức “bắt tay” với bộ điều khiển (NOX), chuyển mạch sẽ chạy trong chế độ lắng nghe theo dõi

36

tất cả các bản tin điều khiển và chỉ dẫn lệnh gửi đến nó. Ngay sau khi nhận được bản tin về chế độ hoạt động mới của các cổng, chuyển mạch sẽ giới hạn băng thông trên mỗi cổng và thiết lập các giá trị tương ứng nhất định. Cần chú ý là trước khi chuyển sang chế độ ngủ (tắt link) trên mỗi cổng phải chắc chắn rằng không có gói tin nào còn lại trong hàng đợi. Do vậy, một số khối theo dõi hàng đợi được sử dụng để kiểm tra hàng đợi rỗng hay không.

Bắt đầu Bắt ta với NOX Nhận bản tin 1Gbps? Tha đổi: Link_ rate 1Gbps Link rate 1Gbps? Y N Y 100Mbps Tha đổi: Link_ rate 100Mbps Link rate 100Mbps? Y Y N 10Mbps? Tha đổi: Link_ rate 10Mbps Link rate 10Mbps? Y Y N N N N OK? Kết thúc Y N Hàng đợi trống? Tắt Link? Tắt Link N Y Y

Hình 2.11. Lưu đồ thuật toán điều khiển thay đổi tốc độ Link-rate

2.5. Giải pháp thiết kế chuyển mạch OpenFlow tiết kiệm năng lƣợng dƣới sự điều khiển của NOX /POX

Sau khi đã đề xuất các giải pháp tiết kiệm năng lượng cho chuyển mạch NetFPGA đã trình bày trong Mục 2.3 và Mục 2.4 như thay đổi tần số hoạt động, bật /tắt hoặc thay đổi tốc độ link-rate của cổng chuyển mạch, tác giả thực tiến hành thiết kế tổng thể một kiến trúc chuyển mạch OpenFlow trên nền NetFPGA với tất cả các chức năng nói trên. Chuyển mạch còn có thể liên hệ với bộ điều khiển NOX /POX thông qua giao thức OpenFlow mở rộng để nhận các bản tin điều khiển thay đổi trạng thái hoạt động của chuyển mạch dựa trên tình trạng lưu lượng của mạng.

2.5.1. Thiết kế phần cứng chuyển mạch

Dựa trên giải pháp giảm tần được đưa ra, khối điều khiển tần số có tên là CC (Clock Controller được xây dựng thêm như một khối chức năng của chuyển mạch. Chức

37

năng của khối CC lấy thông tin từ phần mềm thông qua PCI bus để điều khiển việc chia tần số hoạt động của chuyển mạch. Phần này mô tả thiết kế của khối CC có chức năng nhận một bản tin điều khiển từ trung tâm điều khiển và thực hiện mệnh lệnh được đưa ra trong bản tin đó. Để thực hiện được điều này, cần phải biết được chiều đến và đi của các bản tin điều khiển được gửi xuống từ NOX /POX, và cần biết các bản tin này được xử lý ra sao bên trong khối xử lý trung tâm của chuyển mạch.

Các thông tin đưa vào khối User Data Path có hai loại và đi theo hai đường khác nhau:

 Bản tin điều khiển từ NOX /POX: được cập nhật vào thanh ghi Register Master,

sau đó tại mỗi nhịp đồng hồ, giá trị của thanh ghi này được dịch đi sang các thanh ghi sau nó theo mô hình pipeline. Bản tin điều khiển khi đi qua các khối nhỏ sẽ được đọc /ghi tùy theo chức năng mỗi khối và được quay vòng trở về Register Master để chuyển tiếp về NOX /POX giúp NOX /POX phân tích được các phản hồi của hệ thống.

 Các gói dữ liệu đi đến từ các cổng Ethernet: chúng được vận chuyển qua một đường riêng trên một chuỗi các hàng đợi thuộc các khối khác nhau trong User Data Path. Các gói dữ liệu sau khi được xử lý sẽ được chuyển tiếp đến các cổng Ethernet khác.

Hình 2.12. Vị trí của khối Clock Controller trong khối User Data Path

Như Hình 2.12 các bản tin điều khiển được gửi từ NOX /POX đến chuyển mạch sẽ được truyền đi trên Register Bus qua các khối xử lý gói tin khác nhau. Như vậy, ta hoàn toàn có thể thêm một khối điều khiển tự định nghĩa để có thể bắt được gói tin này và xử lý lệnh điều khiển phù hợp.

Khối CC bao gồm các tín hiệu đầu vào và đầu ra như sau (Hình 2.13):

 Master Clock: tín hiệu clock chủ từ NF2_CORE, cấp clock cho toàn khối hoạt động.

38

 Register Bus In: đầu vào register bus để nhận bản tin điều khiển.

 Register Bus Out: là đầu ra chuyển tiếp dữ liệu từ đầu vào register bus, đầu ra này có nhiệm vụ khép kín vòng dịch chuyển dữ liệu đã mô tả trên Hình 2.12.

 Control Signals Out: là đầu ra tín hiệu điều khiển, các tín hiệu này sẽ điều khiển

khối chia tần. Clock Controller (CC) Register bus in Master clock

Register bus out Control signals out

Hình 2.13. Mô tả tín hiệu vào và ra ở khối CC

Khối CC có một thanh ghi bên trong nhằm giữ lại lệnh điều khiển tại mỗi chu kỳ. Dựa và thanh ghi này, khối CC sẽ đưa ra các tín hiệu điều khiển chia tần thích hợp.

2.5.2. Thiết kế phần mềm chuyển mạch

Việc nhận và xử lý gói tin điều khiển hoàn toàn phụ thuộc vào cổng Ethernet và phần mềm trên máy tính chứa NetFPGA như mô tả trên Hình 2.15. Do vậy, việc thiết kế phần mềm điều khiển bao gồm các công việc sau:

 Xây dựng phần mềm điều khiển tốc độ link_rate cho cổng Ethernet

 Mở rộng bản tin điều khiển OpenFlow cho chuyển mạch

2.5.2.1. Truyền, nhận và xử lý bản tin từ bộ điều khiển

Các gói tin điều khiển từ bộ điều khiển NOX /POX sẽ được gửi xuống cổng Ethernet

(cổng eth0) của máy tính chứa kit NetFPGA như Hình 2.14.

39

Các cổng trên NetFPGA được dùng để gửi, nhận, chuyển tiếp,… các gói tin trong mạng OpenFlow theo các bảng ghi flow và các hành động được định nghĩa trong bảng flow chứ không giao tiếp với bộ điều khiển. Việc nhận và xử lý gói tin điều khiển hoàn toàn phụ thuộc vào cổng Ethernet và phần mềm trên máy tính chứa NetFPGA.

Hình 2.15. Sơ đồ hệ thống bộ điều khiển và bộ chuyển mạch OpenFlow [38]

Các khối chức năng trong việc gửi, nhận và xử lý gói tin, điều khiển phần cứng NetFPGA được mô tả trên Hình 2.15. Gói tin từ bộ điều khiển gửi xuống sẽ được xử lý trong phần OpenFlow software. Sau đó, OpenFlow software sẽ thực hiện việc bóc tách bản tin và gửi lệnh xuống NetFPGA thông qua khối DRIVER.

2.5.2.2. Xây dựng phần mềm điều khiển

Phần này sẽ xây dựng phần mềm điều khiển tốc độ các cổng Ethernet của chuyển mạch Openlow dựa vào lưu lượng đầu vào nhằm tiết kiệm năng lượng. Đầu tiên mô hình điều khiển phần mềm được mô tả như Hình 2.16 được đề xuất, sau đó là cách thức để điều khiển cổng Ethernet chạy ở các mức băng thông khác nhau. Những kết quả này là một giải pháp hữu hiệu trong nghiên cứu tiết kiệm năng lượng trên các chuyển mạch.

ETHERNET FPGA MII Control Register USER DATA PATH MDIO PORT [0:3] PC SOFTWARE

DRIVER SOFTWARECONTROL

N F2 _R EG _G R P

40

Trên Hình 2.16, một mô hình điều khiển bằng phần mềm được thiết kế dựa trên các phương thức sau:

 Bật, tắt các trạng thái của cổng Ethernet để tiết kiệm năng lượng dựa vào một thuật toán tối ưu đồ hình mạng. Trong trường hợp này, hai đầu liên kết của cổng Ethernet sẽ được đưa về trạng thái nghỉ.

 Thay đổi tốc độ liên kết đến một trong ba trạng thái: 10Mbps, 100Mbps, 1Gbps.

Mặc định NetFPGA được kích hoạt ở chế độ băng thông 1Gbps trên mỗi cổng. Trong trường hợp tải gói tin trên cổng thấp hơn, ví dụ, 90Mbps, chúng ta có thể làm giảm băng thông xử lý của các liên kết về 100Mbps. Bởi vì điều chế được sử dụng trong chế độ 1Gbps và chế độ 100Mbps là khác nhau, nên năng lượng tiêu thụ cho hai chế độ cũng có một khoảng cách lớn.

Từ những đề cập trên, phần mềm điều khiển dựa trên sự thay đổi trạng thái của thanh ghi điều khiển MII được xây dựng. MII_CONTROL_REGISTERs được định nghĩa trong tiêu chuẩn IEEE 802.3, được tích hợp trên BCM5464 IC và cũng được khai báo trong file reg_defines_open-flow_switch.h với cấu trúc thể hiện trên Hình 2.9. Mỗi cổng có một thanh ghi riêng biệt để cập nhật tín hiệu điều khiển riêng. Tuy nhiên, không có cách nào để trực tiếp thay đổi các thanh ghi này do hạn chế của giao thức MDIO thực hiện trên phần cứng, do đó điều khiển qua phần mềm để gửi tin nhắn kiểm soát tình trạng các cổng là một phương pháp tốt hơn, dễ dàng tiếp cận mục tiêu mong muốn.

Khi nhận được bản tin điều khiển từ bộ điều khiển NOX /POX, chuyển mạch sẽ chuyển sang kiểm tra các giá trị hiện tại trong thanh ghi MDIO_PHY_CONTROL_REG để biết được trạng thái của chuyển mạch, sau đó ghi các giá trị mới vào thanh ghi tương ứng nhằm kiểm soát chế độ trên mỗi cổng. Sơ đồ trên Hình 2.17 và Hình 2.18 cho thấy cách làm để thay đổi trạng thái và kiểm soát mỗi cổng: bật /tắt hoặc đặt tốc độ liên kết đến 10Mbps, 100Mbps, và 1Gbps.

Hình 2.17. Thay đổi tốc độ liên kết cổng dùng bit 6 và bit 13

41

2.5.2.3. Định nghĩa chế độ làm việc cho chuyển mạch OpenFLow

Trên cơ sở ta có thể điều khiển thay đổi tần số của chip FPGA hoạt động với 6 tần số khác nhau (từ 125 MHz xuống 3.90625 MHz) đã trình bày ở Mục 2.3 cũng như điều khiển thay đổi tốc độ liên kết cho 4 cổng Ethernet với 4 chế độ hoạt động độc lập trên mỗi cổng (idle, 10 Mbps, 100 Mbps và 1 Gbps) ở Mục 2.4. Theo lý thuyết có thể có 96 chế độ hoạt động của chuyển mạch khi kết hợp các thay đổi tần số và tốc độ liên kết của chuyển mạch, tuy nhiên trong thực tế, không phải tất cả các thiết lập có đều hoạt động một cách chính xác. Trong thực tế, quy tắc thay đổi tần số và tốc độ liên kết cần phải được định nghĩa một cách cẩn thận để đảm bảo chất lượng của dịch vụ. Vì vậy dựa trên thực nghiệm, tác giả đề xuất ba chế độ hoạt động mới nhằm tiết kiệm nhiều năng lượng hơn cho chuyển mạch. Đó là chế độ High Power (chế độ công suất cao), chế độ Low power (chế độ công suất thấp), và chế độ Sleep (chế độ ngủ). Các chế độ hoạt động khác nhau dựa vào phân chia tần số hoạt động của chuyển mạch kết hợp với sự điều khiển tốc độ liên kết của mỗi cổng Ethernet như trong Bảng 2.5. Các chế độ hoạt động mới của chuyển mạch được định nghĩa như sau:

 Chế độ công suất cao: Chuyển mạch hoạt động ở tần số tối đa (f = 125 MHz).

Trong chế độ này, chuyển mạch có hiệu năng hoạt động cao nhất, nhưng tiêu thụ nhiều năng lượng nhất. Chế độ được thiết lập khi có ít nhất 1 cổng Ethernet hoạt động ở 1Gbps.

 Chế độ công suất thấp: Khi lưu lượng trên tất cả các cổng Ethernet xuống dưới 100Mbps, giảm tần số của chuyển mạch về 62.5 MHz, và thiết lập các cổng Ethernet hoạt động ở tốc độ tối đa 100Mbps hoặc thấp hơn. Hoạt động ở chế độ này thì lượng điện năng tiêu thụ giảm đáng kể so với chế độ công suất cao.

 Chế độ ngủ: Chế độ này được kích hoạt chỉ khi không có tải chạy quả bất kỳ

cổng Ethernet. Chuyển mạch không cần phải xử lý luồng dữ liệu nào. Trong chế độ này, tần số hoạt động được đặt ở mức 3.90625 MHz và tất cả các cổng đều tắt. Để đảm bảo rằng các gói tin đến không bị chặn lại trong chuyển mạch, chế độ này chỉ được kích hoạt khi tất cả các hàng đợi UDP đều trống rỗng. Trong chế độ này, chuyển mạch vẫn duy trì kết nối với bộ điều khiển (OpenFlow controller) và có thể đánh thức (wake-up) ngay lập tức chuyển mạch hoạt động chế độ bình thường. Chế độ này tiết kiệm năng lượng nhất.

42

Bảng 2.5. Các chế độ hoạt động mới của chuyển mạch

Chế độ Tần số Băng thông trên mỗi cổng

Công suất cao 125 MHz Idle/10Mbps/100Mbps/1Gbps

Công suất thấp 62.5 MHz Idle/10Mbps/100Mbps

Ngủ 3.90625 MHz Idle

Ba chế độ hoạt động mới của chuyển mạch NetFPGA có thể giải quyết hai mặt hạn chế được chỉ ra bởi Hanay cùng cộng sự [18] khi giảm công suất tiêu thụ. Thứ nhất là, trong một số chuyển mạch thông thường, chế độ ngủ có thể bị tác động quá mạnh mẽ dẫn tới ảnh hưởng đến đường truyền hoặc có thể gây ra các vấn đề về phần mềm trong hệ điều hành. Tuy nhiên, trong hệ thống OpenFlow, bộ điều khiển OpenFlow NOX /POX nằm riêng rẽ với thiết bị vật lý, nơi các thuật toán tối ưu được thực hiện để đảm bảo năng lượng sử dụng tối ưu nhất [42][41]. Hai là, ngay cả trong chế độ ngủ, chuyển mạch vẫn tương tác với bộ điều khiển, bởi vậy tín hiệu điều khiển luôn luôn được trao đổi để đảm bảo chuyển mạch có thể thay đổi chế độ đánh thức trong một vài chu kỳ xung nhịp.

2.5.2.4. Mở rộng bản tin OpenFlow cho các chế độ làm việc

Để thực hiện các chế độ hoạt động mới cho chuyển mạch nhằm tiết kiệm năng, tác giả mở rộng bản tin điều khiển OpenFlow [44] được định nghĩa như sau:

Bản tin OFPT_ SWITCH _MOD:

Chiều bản tin: Bộ điều khiển xuống chuyển mạch Độ dài: 32 Bytes

Chức năng: Thay đổi hoạt động của chuyển mạch Cấu trúc:

struct ofp_switch_mod {

struct ofp_header header; uint8_t switch_mode;

uint8_t pad[3]; };

Trường Switch_mode lưu trữ các thông tin cấu hình chuyển mạch như trong Bảng 2.6. Giá trị „1‟ ở vị trí cờ (F) cho phép chuyển mạch thay đổi trạng thái. Trường Switch_ mode chỉ ra chế độ làm việc của chuyển mạch như sau: chế độ công suất cao (M1M0=00), chế độ công suất thấp (M1M0=01) và chế độ ngủ (M1M0=10). M1M0=11 dự phòng (Hình 2.19).

43

Bảng 2.6. Bản tin OFPT_Switch_mode cho 3 chế độ hoạt động

OpenFlow Header Switch Mode Pad

8 Bytes 1 Bytes 3 Bytes

F - - - - - M1 M0

7 0

Reserved Mode

Flag

Hình 2.19. Trường Switch Mode định nghĩa các chế độ hoạt động

Bắt đầu Bắt ta với NOX Nhận bản tin Chế độ: Công suất cao? Thiết lập cổng băng thông 1Gbps Y Chế độ: Công suất thấp? Thiết lập cổng băng thông 100Mbps Y N Chế độ: ngủ? Thiết lập cổng idle Y N N OK? Kết thúc Y N F = 125 Mhz F = 62.5Mhz F = 3.9065Mhz Hàng đợi trống? N Y

Hình 2.20. Lưu đồ thuật toán điều khiển các chế độ hoạt động

Thuật toán thể hiện trên sơ đồ trong Hình 2.20 dưới đây minh họa quá trình tiếp nhận và xử lý bản tin điều khiển trên chuyển mạch OpenFlow. Sau khi hoàn thành giao thức “bắt tay” với bộ điều khiển, chuyển mạch sẽ chạy trong chế độ nghe theo dõi tất cả các bản tin điều khiển và chỉ dẫn lệnh gửi đến nó. Ngay sau khi nhận được bản tin về chế độ hoạt động mới (Bản tin OFPT_SWITCH_MOD cho 3 chế độ hoạt động), chuyển mạch sẽ giới hạn băng thông trên mỗi cổng và thiết lập các giá trị tần số tương ứng nhờ vào các bản tin điều khiển: OFPT_PORT_MOD (Mục 2.4.2) và OFPT_SWITCH_MOD giảm tần (Mục 2.3.3). Cần chú ý là trước khi chuyển sang chế độ ngủ trên mỗi cổng phải chắc chắn rằng

44

không có gói tin nào còn lại trong hàng đợi của nó. Do vậy, một số khối theo dõi hàng đợi

Một phần của tài liệu Nghiên cứu giải pháp tiết kiệm năng lượng trong thiết kế chuyển mạch sử dụng ở trung tâm dữ liệu (Trang 49)

Tải bản đầy đủ (PDF)

(116 trang)