4. Cấu trúc nội dung của luận án
1.6.4. Chuyển mạch OpenFlow trên nền tảng NetFPGA
Với các lợi ích của OpenFlow đã trình bày ở Mục 1.6.1, mục này trình bày thiết kế một kiến trúc chuyển mạch OpenFlow tiết kiệm năng lượng dựa trên kit NetFPGA. Việc
21
xây dựng bộ chuyển mạch OpenFlow trên kit NetFPGA được dựa trên mô hình đường ống (Hình 1.13) mô tả kiến trúc đơn giản trong nf2_core.
Khối User data path như là phần quan trọng nhất trong chuyển mạch NetFPGA. Nó bao gồm ba khối chính là Input Arbiter, Output Port Lookup, Output Queus. Trong phần tổng quan này, tác giả chỉ trình bày khối chính và quan trọng nhất là khối Output Port Lookup.
Hình 1.13. Mô hình đường ống áp dụng cho việc thiết kế phần cứng mạng
Khối Output Port Lookup sẽ tiến hành so sánh tiêu đề của các gói tin tới với các bảng ghi sử dụng 10 trường trong mỗi bảng ghi. Các bảng flow trong kit NetFPGA được xây dựng dựa trên chip TCAM và SRAM ngoài để có thể chứa một số lượng lớn các bảng ghi và hỗ trợ tìm kiếm theo trường bất kỳ (match wildcard). Sơ đồ hoạt động của khối Output Port Lookup được mô tả trong Hình 1.14 [27].
- Khối A sẽ chọn các đầu vào MAC RxQ, CPU RxQ để lấy gói tin đưa vào xử lý.
- Khối B sẽ lấy ra các trường cần thiết trong tiêu đề của gói tin và ghép lại với nhau. Các trường được lấy ra là: MAC đích, MAC nguồn, loại Ethernet , IP nguồn, IP đích, giao thức IP, TCP hoặc UDP (User Datagram Protocol) cổng nguồn, TCP hoặc UDP (User Datagram Protocol) cổng đích, đầu vào cổng. Tất cả các trường này ghép lại với nhau tạo ra một tiêu đề flow. 10 trường trên ghép lại với nhau tạo thành 1 tiêu đề flow, đối với gói tin Ipv4 mỗi tiêu đề flow này có kích thước 155 bits.
Sau đó tiêu đề flow được đưa vào hai khối: khối tìm kiếm xác thực (Exact Lookup) bao gồm các khối C, D, M và khối tìm kiếm kí tự (Wildcard lookup). Khối tìm kiếm cho phép thực hiện phép tìm kiếm ký tự (wildcard) với các bảng ghi.
- Khối C sẽ tính toán hai hàm hash đối với tiêu đề flow trên (thêm 5 bit nữa thành 160 bits) và trả về hai chỉ số. Lý do sử dụng hai hàm hash: hai hàm CRC được sử dụng để tạo ra hai chỉ số cho mỗi gói tin, mỗi chỉ số được sử dụng cho một bảng hash khác nhau. Theo
22
cách này, giả sử rằng ít nhất có một chỉ số sẽ tìm được hành động tương ứng duy nhất. Nếu cả hai chỉ số cùng trả về, khối D sẽ sử dụng hai chỉ số này để thực hiện tìm kiếm trong hai bảng hash trong SRAM. Trong thiết kế, chúng ta sử dụng một SRAM cho hai bảng hash nên phải thực hiện tìm kiếm tuần tự. Bảng Flow chứa các bảng ghi, mỗi bảng ghi chứa 155 bits tiêu đề flow (để chắc chắn một lần nữa là có một bảng ghi ứng với gói tin tới đã tồn tại trong bảng flow) và 152 bits sử dụng để lưu hành động (Action). Hành động bao gồm một bit để xác định bảng ghi này có hợp lệ không, 3 bit xác định cổng đích (cổng ra vật lý trên chuyển mạch, cổng tới CPU và cổng trống hủy gói tin), 48 bits địa chỉ MAC nguồn và 48 địa chỉ MAC đích dùng để ghi tiêu đề hiện tại của gói tin, 20 bit gói tin đếm (packet counter), 32 bit đếm (counter).
- Khối M là khối điều khiển SRAM. Mỗi 16 chu kỳ xung nhịp, khối điều khiển SRAM có thể đọc 2 tiêu đề flow, cập nhật giá trị đếm cho một bảng ghi, thực hiện đọc hoặc ghi 4 bytes dữ liệu từ CPU. 307 bits bảng ghi được lưu trong hai bộ nhớ lưu trữ (SRAM bank) của bộ nhớ SRAM.
- Khối E là một khối TCAM (Ternary Content Addressable Memory). Đây là một khối được sử dụng rất nhiều trong bộ chuyển mạch và bộ định tuyến. Khối này cho phép thực hiện tìm kiếm trong toàn bộ bảng flow chỉ với một chu kỳ xung nhịp. Khối này cũng cho phép thực hiện tìm kiếm với các bảng ghi chứa kí tự (wildcard).
- Khối G sẽ chọn một trong hai kết quả từ khối tìm kiếm xác thực (Exact lookup) và khối tìm kiếm kí tự (Wildcard Lookup). Kết quả của quá trình tìm kiếm là hành động tương ứng với gói tin.
- Khối F là bộ đệm gói tin khi phần tiêu đề của gói tin được xử lý trong các khối khác. Khi các khối khác kiểm tra phần tiêu đề và tìm thấy có bảng ghi tương ứng với tiêu đề của gói tin, gói tin sẽ được chuyển tiếp đến cổng tương ứng hoặc tới CPU hoặc bị hủy. Nếu không tìm thấy, gói tin sẽ được chuyển tiếp đến CPU để xử lý.
- Khối H có nhiệm vụ cập nhật bộ đếm tương ứng với các bảng ghi và thêm thông tin hành động của gói tin vào vị trí đặt sẵn trong tiêu đề.
- Khối I: Xuất gói tin chuyển tiếp đến cổng tương ứng.
Tóm lại, chuyển mạch được điều khiển bởi máy tính thông qua các thanh ghi ánh xạ bộ nhớ (memory mapped registers). Các gói tin được truyền qua lại giữa máy tính và chuyển mạch thông qua DMA (Direct Access Memory).
23
Xử lý gói tin vào
(Input Arbiter) Ghép tiêu đề (Header Paser) Tính toán 2 hàm hash Thực hiện tìm kiếm (Flow entry lookup & Update) Điều khiển SRAM
SRAM Bank 0 SRAM Bank 1 Bộ đệm (Word Buffer) TCAM T nh toán lựa chọn (Match Arbiter) Xử lý gói tin (Packet Editor)
Xuất gói tin
(Output Queues) A B C D E F M G H I Khối xác thực
(Exact Lookup) Khối tìm
kiếm
(Wildcard Lookup)
Hình 1.14. Sơ đồ hoạt động của khối Output Port Lookup [27]
1.7. Tổng kết chƣơng
Chương này đã trình bày về tầm quan trọng, đặc điểm kiến trúc mạng trung tâm dữ liệu. Ngoài ra, chương này cũng giới thiệu về kiến trúc mạng ECODANE là một kiến trúc mới dựa trên công nghệ mạng điều khiển bằng phần mềm (SDN) cho phép tùy biến và bổ sung các chức năng mới vào mạng một cách nhanh chóng và mềm dẻo. ECODANE cho phép tạo ra một môi trường thử nghiệm tích hợp thuật toán tối ưu đồ hình mạng RA- TAH với chuyển mạch có khả năng tiết kiệm năng lượng để tối ưu năng lượng tiêu thụ trên toàn mạng. Xuất phát từ các ưu điểm của kiến trúc mạng ECODANE, các đề xuất nghiên cứu trong các chương tiếp theo của luận án tập trung nghiên cứu các giải pháp tiết kiệm năng lượng cho chuyển mạch OpenFlow trên nền tảng NetFPGA.
24
CHƢƠNG 2
CÁC GIẢI PHÁP TIẾT KIỆM NĂNG LƢỢNG CHO CHUYỂN MẠCH OPENFLOW
2.1. Giới thiệu chƣơng
Chương này xây dựng hệ thống đo đạc và đưa ra phân bổ năng lượng tiêu thụ của từng khối chức năng trong Kit NetFPGA-1G. Từ đó đánh giá và đưa ra quyết định nên cắt giảm điện năng tiêu thụ của các khối trong chuyển mạch. Dựa trên sự đánh giá này, tác giả đề xuất các giải pháp thiết kế chuyển mạch OpenFlow mới có chức năng tiết kiệm năng lượng. Mở rộng bản tin điều khiển OpenFlow kết hợp với bộ điều khiển NOX /POX để điều khiển chuyển mạch nhằm tiết kiệm năng lượng. Ngoài ra chương này cũng xây dựng chuyển mạch tự động tiết kiệm năng lượng dựa theo lưu lượng đầu vào. Kết quả thực nghiệm đã chứng minh sự tiết kiệm năng lượng của chuyển mạch mới này theo các chế độ làm việc khác nhau và hệ thống thiết kế có tính khả thi cao cho chuyển mạch nhằm tiết kiệm năng lượng.
2.2. Phân bổ năng lƣợng của chuyển mạch OpenFlow
2.2.1 Hệ thống đo đạc năng lƣợng tiêu thụ của Kit NetFPGA-1G
Để nghiên cứu được sự tiêu thụ năng lượng của Kit NetFPGA-1G, tác giả xây dựng một hệ thống kiểm tra đo đạc năng lượng cho chuyển mạch OpenFlow trên nền tảng NetFPGA. Hệ thống kiểm tra này cho phép tính toán và thu thập thông tin về lượng năng lượng tiêu thụ của các thành phần chức năng trên NetFPGA ở mức chi tiết. Dựa trên tính toán này, tác giả có thể phát triển được nhiều chiến lược tối ưu năng lượng khác nhau trên phần cứng. Hệ thống kiểm tra đo đạc năng lượng cho chuyển mạch OpenFLow trên nền
tảng NetFPGA (Hình 2.1) gồm một số thành phần sau: (1) Kit NetFPGA-1G [60] chạy như
một chuyển mạch OpenFlow, (2) bộ tạo lưu lượng [16] được sử dụng để tạo lưu lượng ở
những mức khác nhau theo yêu cầu, (3) Khối tính toán năng lượng gồm khối đo công suất PCIEXT-64UB (UltraView PCI Smart Extender) [59] và bo mạch hiển thị công suất đo được, (4) Khối cấu hình thiết bị dựa trên Xinlinx ISE 10.1 sp3 được sử dụng để thay đổi, tạo mới hoặc xóa một vài khối trong thiết kế và phát triển khối chức năng trên Kit NetFPGA, (5) khối phân tích dữ liệu bao gồm một số công cụ như Matlab để phân tích và tính toán kết quả.
25
Cấu hình thiết bị
(Xilinx ISE 10.1)
Mạch đo công suất
(PCI Extender)
Phát lưu lượng chính xác (Precise Traffic Generator)
Phân tích dữ liệu
(Matlab)
Chuyển mạch NetFPGA OpenFlow- 1G
Hình 2.1. Kiến trúc kiểm tra đặc tính năng lượng của Kit NetFPGA-1G
Hệ thống sử dụng Kit NetFPGA-1G [60] là cơ sở cho phát triển chuyển mạch có chức năng tiết kiệm năng lượng. Kit gồm 4 cổng Ethernet 1Gbps và một bộ điều khiển dựa trên Virtex II Pro 50 FPGA dòng sản phẩm của Xilinx. Thiết kế ban đầu của chuyển mạch được thiết kế dựa trên dự án chuyển mạch OpenFlow phiên bản 1.0.0.4. Hình 2.2 mô tả chi tiết kiến trúc của hệ thống đo đạc và kiểm tra.
Host PC Chu ển mạch NetFPGA PCIEXT-64UB C0 C1 C2 C3 Chuyển mạch NetFPGA C0 C1 Chuyển mạch NetFPGA C0 C1 Chuyển mạch NetFPGA C0 C1 Chuyển mạch NetFPGA C0 C1 Thiết bị Oscilloscope 3. 3V 5.0V Bo mạch hiển thị công suất C0 C1 C2 C3 Ph át lư u lư ợ ng 1 C0 C1 C2 C3 Ph át lư u l ư ợ ng 2 C2 C2 C2 C2 Chú ý: Băng thông 800Mbps 1Gbps
Hình 2.2. Hệ thống đo đạc năng lượng của chuyển mạch trên nền tảng NetFPGA
Như chỉ ra ở Hình 2.2, để sử dụng 4 cổng chuyển mạch NetFPGA vào chế độ kiểm tra với lưu lượng chuyển mạch lên tới 4Gbps, hay 1Gbps với mỗi cổng, 2 bộ phát lưu lượng chính xác (Precise Traffic Generator - version 1.2.5) [16] được xây dựng cho hệ thống kiểm tra này. Mỗi bộ phát lưu lượng chính xác được biên dịch cùng với 2 Kit NetFPGA mở rộng để tạo thành một kiến trúc xếp chồng. Trong thực tế, bộ phát lưu lượng chính xác chỉ có thể tạo ra được lưu lượng khoảng 800 Mbps cho mỗi cổng. Do đó, khi tổng hợp lưu lượng đầu vào ở mức thấp, bộ phát lưu lượng chính xác có thể tạo ra 4 cổng tốc độ cao lên đến 1Gbps.
26
Bộ phát lưu lượng chính xác có thể điều khiển lưu lượng trên từng cổng riêng biệt, từng mức lưu lượng từ 0Mbps đến 4Gbps. Hệ thống sử dụng mạch đo công suất PCIEXT- 64UB gắn kết giữa máy tính chủ và kit NetFPGA để tính toán năng lượng tiêu thụ. PCIEXT-64UB có đặc điểm cho phép lấy ra mẫu đo dùng cho việc tính toán hiện tại, hỗ trợ mức điện áp 3.3V và 5V. Tại hai điểm kiểm tra 3.3V và 5V được kết nối tới bo mạch tính toán năng lượng, để tính toán tổng năng lượng tiêu thụ và hiển thị kết quả trên Led 7 thanh của mạch hiển thị (Power measuring board) theo thời gian thực (xem phần phụ lục)
2.2.2 Đặc tính năng lƣợng chi tiết của Kit NetFPGA-1G
Phần này sẽ mô tả tính toán và phân tích sự tiêu thụ năng lượng của chuyển mạch NetFPGA-1G. Quá trình thu thập đặc tính năng lượng của chuyển mạch NetFPGA bao gồm 4 bước: (1) đường đặc tính năng lượng cơ bản, (2) đặc tính giao tiếp năng lượng mạng, (3) đặc tính năng lượng động, (4) chi tiết đặc tính năng lượng của từng khối chức năng trong chuyển mạch OpenFlow.
2.2.2.1. Đặc tính năng lượng cơ bản (năng lượng tiêu thụ tĩnh)
NetFPGA-1G mô -đun CPCI G ia o di ện Et he rn et Cá c b ộ n hớ (M em or ie s) NF2_TOP NF2_CORE Cấu hình FPGA Host PC N et w or k DCM UDP ICB
Hình 2.3. Sơ đồ khối thành phần của kit NetFPGA-1G
Để đo được năng lượng tiêu thụ cơ bản (hay lượng năng lượng tiêu thụ tĩnh) của Kit NetFPGA, năng lượng nhỏ nhất tiêu thụ bởi Kit NetFPGA trong chế độ nghỉ, chip FPGA được để trống và không cổng Ethernet nào được cắm. Trong trường hợp đó, chip FPGA và mô đun Ethernet không tiêu thụ năng lượng. Do vậy, năng lượng cơ bản là năng lượng nhỏ nhất tiêu thụ bởi các thành phần trong Kit NetFPGA như khối nguồn, bộ nhớ, chíp CPCI được minh họa ở Hình 2.3 (Lưu ý rằng khối nguồn không được chỉ ra trên Hình 2.3, nhưng phần đó được cung cấp qua đường dẫn PCI, không thể tách bỏ bởi vì đây là phần cứng được cấu hình sẵn, người dùng không thể điều khiển được. Kết quả tính toán chỉ ra rằng
27
năng lượng tiêu thụ tối thiểu của Kit NetFPGA khoảng 4496 mW.
2.2.2.2. Đặc tính năng lượng của giao diện mạng
Năng lượng tiêu thụ của giao diện Ethernet được đo lường bởi việc cắm cáp Ethernet từng cái một vào cổng mạng. Trạng thái của cổng mạng được mặc định là 1Gbps, với một cáp Ethernet 1Gbps được cắm vào chuyển mạch năng lượng đo được tăng lên 1080 mW. Do vậy, 4 cổng của Kit NetFPGA tiêu thụ 4320 mW khi chạy tối đa tốc độ liên kết 1Gbps.
2.2.2.3. Đặc tính năng lượng động
Để tính được năng lượng tiêu thụ của chuyển mạch NetFPGA khi hoạt động với dung lượng tối đa, trạng thái này gọi là năng lượng tiêu thụ động, chip FPGA được cấu hình để chạy dưới dạng một chuyển mạch OpenFlow. Như vậy năng lượng động bao gồm năng lượng tiêu thụ của khối Ethernet, năng lượng cơ bản và năng lượng tiêu thụ bởi khối điều khiển OpenFlow chạy bên trong chip FPGA. Bộ phát lưu lượng liên tục tạo ra lưu lượng lên các cổng, do vậy mỗi cổng sẽ được sử dụng đến 99% công suất. Kết quả đo lường cho thấy tổng năng lượng tiêu thụ biến đổi xung quanh giá trị 11550 mW với giá trị cao nhất là 11570 mW. Khi trừ đi năng lượng tiêu thụ của khối Ethernet và năng lượng cơ bản từ các phần đã được chỉ ra ở trên, ta có thể ước lượng được năng lượng tiêu thụ trên chip FPGA vào khoảng 2700 mW. Kết quả này được kiểm tra lại bởi việc cô lập phần Ethernet, và cấu hình chip FPGA với đầy đủ chức năng của khối điều khiển OpenFlow. Năng lượng đo được chính xác là 2694 mW.
2.2.2.4. Đặc tính năng lượng của các khối chức năng OpenFlow trên nền FPGA
Phần này sẽ phân tích sự đóng góp của các khối chức năng khác nhau được nhúng trên chip FPGA trong tổng năng lượng tiêu thụ. Có thể nhìn thấy trên Hình 2.3, kiến trúc FPGA, NF2_TOP là lớp trên cùng của kiến trúc chuyển mạch, nơi mà tất cả các phần tử được kết nối lại với nhau. Khối chức năng chính được thiết kế trong NF2_CORE. Bên ngoài khối này chỉ chứa khối quản lý tần số đồng hồ, trong khi đó bên trong chứa các khối chức năng sau: (1) User Data Path (UDP) bao gồm khối input arbiter, output packet queues, bảng chuyển tiếp OpenFlow, vv, (2) một vài khối Internal Control Blocks (ICB) như khối DMA, khối điều khiển bộ nhớ SRAM, DRAM, CPU queues cho việc kết nối driver và phần cứng.
Để tính được năng lượng tiêu thụ của khối UDP ta xóa khối UDP, cấu hình lại chuyển mạch OpenFlow trong thiết kế phần cứng và kết nối với đầu ra. Năng lượng thiếu hụt là
28
1412 mW được so sánh với trường hợp năng lượng động, đó chính xác là năng lượng tiêu thụ của khối UDP. Tương tự, với các khối điều khiển bộ nhớ khác như DMA, CPCI bus, CPU Queues, vv, chiếm khoảng 1282 mW trong tổng số năng lượng tiêu thụ của chip FPGA (2696 mW).
2.2.2.5. Kết quả đo lường
Kết quả đo lường được tóm tắt như Hình 2.4. So sánh với một vài kết quả đạt được ở các nghiên cứu của Sivaraman cùng các cộng sự [52] và Lombardo [32], năng lượng tiêu thụ đo được khá tương tự. Tuy nhiên, trong khi các tác giả Sivaraman và Lombardo chỉ ra được sự phân tích năng lượng tổng quan của toàn bộ Kit NetFPGA và một vài kết quả là sự phụ thuộc của năng lượng tiêu thụ vào kích thước gói tin, ở mục này tập trung vào phân tích chi tiết năng lượng trung bình của từng khối chức năng chính trong chuyển mạch NetFPGA-1G, bao gồm các khối được nhúng vào chip FPGA.
Hình 2.4. Đặc tính năng lượng của Kit NetFPGA khi chạy như chuyển mạch OpenFlow
Nhận xét kết quả đo được: 3 điểm đáng chú ý của đặc tính năng lượng Kit NetFPGA chạy như một chuyển mạch OpenFlow được chỉ rõ như sau: Năng lượng cơ bản tiêu thụ