189
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG ====o0o==== Đ N TỐT NGHIỆP ĐI HC ĐỀ TÀI: NGHIÊN CỨU GIẢI PHP PHẦN CỨNG TIẾT KIỆM NĂNG LƯỢNG TRONG TRUNG TÂM DỮ LIỆU Sinh viên thực hiện : LÊ THÁI HƯNG NGUYỄN DUY LINH LÊ ANH VĂN Lớp KSTN- ĐTVT- K52 Giảng viên hướng dẫn : TS TRẦN NGỌC LAN TS. TRẦN MINH TRUNG TS. NGUYỄN XUÂN DŨNG H Ni, 06-2012

Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Embed Size (px)

DESCRIPTION

Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Citation preview

Page 1: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG

====o0o====

ĐÔ AN

TỐT NGHIỆP ĐAI HOCĐỀ TÀI:

NGHIÊN CỨU GIẢI PHAP PHẦN CỨNG TIẾT KIỆM NĂNG LƯỢNG TRONG TRUNG TÂM

DỮ LIỆU

Sinh viên thực hiện : LÊ THÁI HƯNG

NGUYỄN DUY LINH

LÊ ANH VĂN

Lớp KSTN- ĐTVT- K52

Giảng viên hướng dẫn : TS TRẦN NGỌC LAN

TS. TRẦN MINH TRUNG

TS. NGUYỄN XUÂN DŨNG

Ha Nôi, 06-2012

Page 2: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG

====o0o====

ĐÔ AN

TỐT NGHIỆP ĐAI HOCĐỀ TÀI:

NGHIÊN CỨU GIẢI PHAP PHẦN CỨNG TIẾT KIỆM NĂNG LƯỢNG TRONG TRUNG TÂM

DỮ LIỆU

Sinh viên thực hiện : LÊ THÁI HƯNG

NGUYỄN DUY LINH

LÊ ANH VĂN

Lớp KSTN- ĐTVT- K52

Giảng viên hướng dẫn : TS TRẦN NGỌC LAN

TS. TRẦN MINH TRUNG

TS. NGUYỄN XUÂN DŨNG

Can bô phản biện :

Ha Nôi, 06-2012

Page 3: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAMTRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

--------------------------------------------------Độc lập - Tự do - Hạnh phúc

---------------------------------

NHIỆM VỤ ĐÔ AN TỐT NGHIỆP

Họ và tên sinh viên: Lê Thái Hưng Số hiệu sinh viên: 20072451

Nguyễn Duy Linh Số hiệu sinh viên: 20071721

Lê Anh Văn Số hiệu sinh viên: 20073425

Khoa: K52 Viện: Điện tử - Viễn thông Ngành: Điện tử-Viễn thông

1. Đầu đề đồ án:

………………………………………………..………………………………………………………………………

……………………………………………………………………………………………………………..………...

2. Các số liệu và dữ liệu ban đầu:

……………………………………..……………………………………………..……..……………………………

……………………………………………………………………………………………………………………………….

…..………………………..…………………………………………………………………………………….

3. Nội dung các phần thuyết minh và tính toán:

………………………………………………………………………………………………………………..….

………………………………………………………………………………………………………………………………

……..….

………………………………………………………………………………………………………………………………

………..….……………………………………………………………………………………………

4. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ):

………………………………………………………………………………………………………………………..….

…………………………………………………………………………………………………………………………..

……….………………………………………………………………………………………………………….

5. Họ tên giảng viên hướng dẫn: TS. Trần Ngọc Lan

TS. Trần Minh Trung

TS. Nguyễn Xuân Dũng

6. Ngày giao nhiệm vụ đồ án: ………………………………………………….……………

7. Ngày hoàn thành đồ án: ………………………………………………………………………..………

Ngày tháng năm

Chủ nhiệm Bô môn Giảng viên hướng dẫn

Sinh viên đã hoàn thành và nôp đồ an tốt nghiệp ngày thang năm

Cán bô phản biện

Page 4: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

---------------------------------------------------

BẢN NHẬN XÉT ĐÔ AN TỐT NGHIỆP

Họ và tên sinh viên: .....................................................................Số hiệu sinh viên: ...........................

Ngành: ..........................................................................................Khoa: ...........................................

Giảng viên hướng dẫn: .....................................................................................................................

Can bô phản biện: .................................................................................................................................

1. Nôi dung thiết kế tốt nghiệp:

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

................

2. Nhận xét của cán bô phản biện:

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

...............................................................................................................................................................

....................................

Ngày thang năm

Cán bô phản biện

( Ký, ghi rõ họ và tên )

Page 5: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

LỜI NÓI ĐẦU

Ngày nay, cac trung tâm dữ liệu đóng vai trò quan trọng

trong cac hoạt đông thường ngày của cac tổ chức như trường

học, doanh nghiệp, viện nghiên cứu. Những trung tâm dữ liệu

này cùng với sự phat triển không ngừng của xã hôi đang tăng

lên nhanh chóng về cả quy mô và số lượng. Số lượng may chủ

trong mỗi trung tâm dữ liệu đang tăng lên rất nhanh chóng để

đap ứng nhu cầu trao đổi thông tin mọi người trong xã hôi. Do

đó môt điều tất yếu là số lượng cac thiết bị chuyển mạch để kết

nối cac may chủ lại với nhau cũng phải tăng lên. Điều này làm

cho nhu cầu về điện năng tiêu thụ bởi cac trung tâm dữ liệu

ngày càng tăng lên tỉ lệ với kích thước của cac trung tâm này.

Và bài toan được đặt ra cho cac nhà nghiên cứu và cac nhà phat

triển là làm sao có thể giảm tối đa lượng điện năng tiêu thụ của

cac trung tâm dữ liệu này mà khả năng xử lý thông tin vẫn được

đảm bảo. Từ yêu cầu thực tế trên, nhóm tac giả đã nghiên cứu

và chế tạo thành công thiết bị điểu khiển giúp tiết kiệm năng

lượng cho cac bô chuyển mạch trong trung tâm dữ liệu và cũng

đã chế tạo thành công cac bô chuyển mạch có khả năng tự tiết

kiệm năng lượng. Những kết quả đạt được đã và đang mở ra

môt hướng đi mới rất khả thi cho việc phat triển, sản xuất đại

trà cac thiết bị mạng tiết kiệm năng lượng cũng như giúp cac

nhà quản lý trung tâm dữ liệu theo dõi công suất tiêu thụ của

toàn trung tâm dữ liệu, mức tiết kiệm năng lượng.

Sau môt thời gian lao đông miệt mài, nhóm tac giả đã

hoàn thành đồ an với đề tài:“Nghiên cứu giải pháp phần cứng

tiết kiệm năng lượng cho các trung tâm dữ liệu”

Nhờ những cố gắng không ngừng, tac giả đã gặt hai được môt số kết quả

nhất định. Mặc dù vậy, do thời gian có hạn nên môt số ý tưởng vẫn chưa được thực

NETFPGA GROUP-KSTN-ĐTVT-K52 i

Page 6: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

hiện và kết quả nghiên cứu không tranh khỏi môt vài sai sót nhỏ. Vì vậy, tac giả rất

mong nhận được ý kiến đóng góp của cac thầy cô giao và bạn bè.

Tac giả xin được gửi lời cảm ơn chân thành, sâu sắc tới:

Cô giao TS. Trần Ngọc Lan

Thầy giao TS. Trần Minh Trung

Thầy giao TS. Nguyễn Xuân Dũng

Thầy giao TS. Phạm Ngọc Nam

Thầy giao PGS.TS. Nguyễn Hữu Thanh

Cô giao TS. Trương Thu Hương

Cac bạn K51, K52, K53 trong nhóm OpenFlow

Tập thể lớp KSTN-ĐTVT-K52

Viện Điện Tử - Viễn Thông, trường ĐH Bach Khoa Hà Nôi

Cùng toàn thể gia đình và bạn bè

đã giúp đỡ và tạo mọi điều kiện thuận lợi cho tac giả trong qua trình nghiên cứu.

Đồ án được thực hiện trong khuôn khổ của dự án

“Giảm điện năng tiêu thụ của mạng cơ sở dữ liệu dựa trên

kĩ thuật lưu lượng (ECODANE)“ do PGS.TS. Nguyễn Hữu

Thanh chủ trì.

Sinh viên thực hiện: LÊ THAI HƯNG

NGUYỄN DUY LINH

LÊ ANH VĂN

NETFPGA GROUP-KSTN-ĐTVT-K52 ii

Page 7: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

TÓM TẮT ĐÔ AN

“Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng cho các trung tâm dữ

liệu”

Trung tâm dữ liệu đóng môt vai trò quan trọng trong cac hoạt đông thường

ngày của mọi người. Sự mở rông không ngừng cả về phạm vi và quy mô của cac

trung tâm dữ liệu dẫn đến thực trạng mức tiêu thụ năng lượng qua lớn. Cac ảnh

hưởng của điều này không chỉ về gia cả mà còn về môi trường khi lượng khí đôc

hại thải ra từ cac trung tâm dữ liệu là môt vấn đề rất đang quan tâm. Môt trong

những giải phap được đưa ra đó là điều khiển môt cach thông minh việc tiêu thụ

năng lượng của cac bô chuyển mạch được sử dụng trong cac trung tâm dữ liệu.

Nhóm tac giả thực hiện đồ an đã đưa ra cac cải tiến cho cac bô chuyển mạch

OpenFlow nhằm mục đích hỗ trợ cac chế đô tiết kiệm năng lượng khac nhau. Sự cải

tiến này bao gồm định nghĩa cac bản tin mới theo chuẩn giao thức OpenFlow, thiết

kế bô điều khiển cac chuyển mạch OpenFlow (OSC) có khả năng bật tắt cac bô

chuyển mạch và cac port. Hơn nữa, nhóm tac giả đã tích hợp cac cải tiến này lên

chính cac bô chuyển mạch OpenFlow trên nền tảng phần cứng khả trình NetFPGA

trong khuôn khổ dự an ECODANE[1]. Cac kết quả được trình bày trong đồ an này

có thể được sử dụng bởi cac nhà sản xuất chuyển mạch OpenFlow hoặc những nhà

nghiên cứu về năng lượng tiêu thụ của cac thiết bị mạng.

NETFPGA GROUP-KSTN-ĐTVT-K52 iii

Page 8: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

ABSTRACT

“Reseaching hardware solution for energy saving in Data centers”

Data centers play an important role in our daily

activities. The increasing demand for data centers in both scale

and size has led to huge energy consumption. The cost and

environmental impact of data centers increases due to large

amounts of carbon emissions. One solution to this problem is to

intelligently control the power consumption of switches used in

data centers. This thesis proposes an extension to OpenFlow

switches to support different power saving modes. The

extension includes defining new messages in OpenFlow

standard and designing an OpenFlow Switch Controller (OSC)

that is able to turn on/off switches and disable/enable ports.

Furthermore, the extension is integrated into the NetFPGA

based OpenFlow switches in the ECODANE[1] framework.

That brings an opportunity of producing self-power aware

OpenFlow switches. The results presented in this thesis can aslo

be used by the OpenFlow compliant switches manufacturer or

by power aware research community.

NETFPGA GROUP-KSTN-ĐTVT-K52 iv

Page 9: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

MỤC LỤC

LỜI NÓI ĐẦU............................................................................................................i

TÓM TẮT ĐÔ AN...................................................................................................iii

ABSTRACT..............................................................................................................iv

MỤC LỤC.................................................................................................................v

DANH MỤC HÌNH VẼ...........................................................................................ix

DANH MỤC BẢNG BIỂU......................................................................................xi

CAC THUẬT NGỮ VIẾT TẮT............................................................................xii

PHẦN MỞ ĐẦU........................................................................................................1

Chương 1. Vấn đề tiết kiệm năng lượng trong trung tâm dữ liệu va giải pháp

sử dụng mạng OpenFlow.........................................................................................2

1.1 Vấn đề tiết kiệm năng lượng cho trung tâm dữ liệu.............................2

1.2 Giải phap sử dụng mạng OpenFlow.....................................................6

1.2.1 Sự cần thiết cho môt kiến trúc mạng mới.......................................6

1.2.2 Mục tiêu của mạng OpenFlow........................................................7

1.2.3 Giao thức OpenFlow......................................................................9

1.2.4 Lợi ích của mạng SDN dựa trên giao thức OpenFlow.................11

1.3 Kết luận chương..................................................................................13

Chương 2. Ứng dụng mạng OpenFlow trong trung tâm dữ liệu trên nền tảng

NetFPGA..................................................................................................................15

2.1 Giới thiệu công nghệ mạch tổ hợp FPGA..........................................15

2.1.1 Cac công nghệ mạch tổ hợp..........................................................15

2.1.2 Ứng dụng của FPGA....................................................................16

2.1.3 Kiến trúc của FPGA.....................................................................17

2.1.4 Cac bước thiết kế với FPGA của Xilinx.......................................21

2.1.5 Phần mềm ISE..............................................................................23

2.2 Chuyển mạch OpenFlow trên nền tảng kit NetFPGA........................24

NETFPGA GROUP-KSTN-ĐTVT-K52 v

Page 10: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

2.2.1 Kiến trúc bô chuyển mạch OpenFlow..........................................24

2.2.2 Giới thiệu về NetFPGA................................................................26

2.2.3 Làm việc với môt dự an NetFPGA...............................................30

2.2.4 Xây dựng bô chuyển mạch OpenFlow trên nền tảng NetFPGA. .34

2.3 Kết luận chương..................................................................................38

Chương 3. Triển khai hệ thống mạng OpenFlow trên nền tảng kit NetFPGA

trong thực tế............................................................................................................39

3.1 Giới thiệu mô hình thử nghiệm...........................................................39

3.2 NOX controller...................................................................................40

3.3 Xây dựng chuyển mạch OpenFlow....................................................44

3.3.1 Cài đặt cac gói phần mềm cơ bản.................................................44

3.3.2 Biên dịch và tải Driver xuống NetFPGA......................................49

3.3.3 Cài đặt NetFPGA OpenFlow switch............................................50

3.3.4 Xây dựng mạng chuyển mạch OpenFlow....................................52

3.4 Kết luận chương..................................................................................55

Chương 4. Thiết kế bô điều khiển chuyển mạch..................................................56

4.1 Giải phap tiết kiệm năng lượng..........................................................56

4.2 Yêu cầu chức năng và phi chức năng.................................................57

4.3 Thiết kế phần cứng.............................................................................58

4.3.1 Sơ đồ khối thiết kế........................................................................58

4.3.2 Khối điều khiển (Main controller):...............................................59

4.3.3 Khối đóng ngắt port (ON/OFF Port Circuit)................................61

4.3.4 Khối đóng ngắt chuyển mạch (ON/OFF Switch Circuit):............62

4.3.5 Kết quả đạt được...........................................................................62

4.4 Thiết kế phần mềm.............................................................................64

4.4.1 Giao thức OpenFlow....................................................................64

4.4.2 Trao đổi gói tin với bô điều khiển................................................67

4.4.3 Mã nguồn mở LwIP......................................................................68

NETFPGA GROUP-KSTN-ĐTVT-K52 vi

Page 11: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

4.4.4 Thiết kế bản tin OpenFlow và kết quả đạt được...........................70

4.5 Kết luận chương..................................................................................78

Chương 5. Thiết kế khối tiết kiệm năng lượng cho chuyển mạch OpenFlow...79

5.1 Giải phap tiết kiệm năng lượng..........................................................79

5.2 Thiết kế phần cứng.............................................................................81

5.2.1 Làm việc với phần cứng của chuyển mạch OpenFlow.................81

5.2.2 Vị trí của khối Clock controller....................................................83

5.2.3 Ghép nối với cac khối khac trong User data path.........................86

5.2.4 Thiết kế khối clock controller.......................................................88

5.3 Thiết kế phần mềm.............................................................................91

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

5.3.2 Làm việc với phần mềm của chuyển mạch OpenFlow.................92

5.3.3 Xây dựng và triển khai cac chức năng mới..................................94

5.4 Kết luận chương..................................................................................96

Chương 6. Thực hiện đo đạc va kết quả...............................................................97

6.1 Cơ sở hạ tầng thiết lập testbed............................................................97

6.2 Bô điều khiển chuyển mạch................................................................99

6.2.1 Thiết lập hệ thống.........................................................................99

6.2.2 Test hệ thống..............................................................................100

6.2.3 Kết quả........................................................................................101

6.3 Chuyển mạch OpenFlow có chức năng tiết kiệm năng lượng..........104

6.3.1 Thiết lập hệ thống.......................................................................104

6.3.2 Test hệ thống..............................................................................106

6.3.3 Kết quả........................................................................................106

6.4 Kết luận chương................................................................................106

Kết luận va hướng phát triển của đề tai.............................................................107

TÀI LIỆU THAM KHẢO....................................................................................108

PHỤ LỤC...............................................................................................................110

NETFPGA GROUP-KSTN-ĐTVT-K52 vii

Page 12: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

Phụ lục 1: Code OpenFlow.c.....................................................................110

Phụ lục 2: Code clock_controller.v...........................................................114

NETFPGA GROUP-KSTN-ĐTVT-K52 viii

Page 13: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

DANH MỤC HÌNH VẼ

Hình 1.1 Kiến trúc mạng điều khiển bằng phần mềm................................................8

Hình 1.2 Ví dụ về tập lệnh của OpenFlow...............................................................10

Hình 2.1 Cấu trúc của FPGA....................................................................................17

Hình 2.2 Cấu trúc của Slice......................................................................................18

Hình 2.3 Minh họa bảng LUT..................................................................................19

Hình 2.4 Minh họa cac Flip-Flop..............................................................................19

Hình 2.5 Design flow................................................................................................21

Hình 2.6 Giao diện phần mềm ISE...........................................................................23

Hình 2.7 Cấu trúc của môt OpenFlow Switch..........................................................24

Hình 2.8 Cấu tạo của môt flow-entry.......................................................................25

Hình 2.9 Cac bước khi môt flow mới tới bô chuyển mạch OpenFlow.....................26

Hình 2.10 Nền tảng NetFPGA..................................................................................27

Hình 2.11 Sơ đồ khối chi tiết cac thành phần trong kit NetFPGA...........................28

Hình 2.12 Cấu trúc đơn giản môt dự an với NetFPGA............................................29

Hình 2.13 Cấu trúc pipeline của cac modules..........................................................29

Hình 2.14 Sơ đồ tổng quat của hệ thống NetFPGA..................................................30

Hình 2.15 Mô hình Pipeline ap dụng cho việc thiết kế phần cứng mạng.................35

Hình 2.16 Sơ đồ hoạt đông của khối Output Port Lookup.......................................36

Hình 3.1 Sơ đồ khối mô hình Elastic Tree................................................................39

Hình 3.2 Mạng OpenFlow switch với bô điều khiển mạng NOX............................41

Hình 4.1 Sơ đồ mô tả vị trí của OSC trong mạng chuyển mạch...............................57

Hình 4.2 Mạng OSC đơn giản..................................................................................57

Hình 4.3 Sơ đồ của chuyển mạch trước và sau khi có OSC.....................................58

Hình 4.4 Sơ đồ khối cơ bản của OSC.......................................................................59

Hình 4.5 Sơ đồ khối chi tiết của OSC.......................................................................59

Hình 4.6 Sơ đồ nguyên lý mạch OSC.......................................................................63

Hình 4.7 Phần cứng của OpenFlow switch controller..............................................63

Hình 4.8 Quy trình bắt tay giữa bô điều khiển và bô chuyển mạch OpenFlow........68

Hình 4.9 Cac giao thức được sử dụng trong lwIP.....................................................70

NETFPGA GROUP-KSTN-ĐTVT-K52 ix

Page 14: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

Hình 4.10 Trường link state......................................................................................73

Hình 4.11 Trường Switch state.................................................................................74

Hình 4.12 Trường Line Card state............................................................................76

Hình 4.13 Sơ đồ thuật toan của OSC........................................................................77

Hình 5.1 Sơ đồ hệ thống clock của chuyển mạch OpenFlow...................................83

Hình 5.2 Sơ đồ vị trí lý tưởng của CC trong nf2_top...............................................85

Hình 5.3 Sơ đồ khối CC trong user data path...........................................................86

Hình 5.4 Sơ đồ ghép nối CC với cac khối khac trong user data path.......................87

Hình 5.5 Sơ đồ khối thiết kế của CC........................................................................88

Hình 5.6 Sơ đồ mạng OpenFlow đơn giản...............................................................91

Hình 5.7 Sơ đồ hệ thống bô điều khiển và bô chuyển mạch OpenFlow...................92

Hình 6.1 Sơ đồ hệ thống Testbed cho OSC............................................................100

Hình 6.2 Hệ thống Testbed thực tế cho OSC..........................................................100

Hình 6.3 Sơ đồ hệ thống testbed cho chuyển mạch OpenFlow mới.......................105

Hình 6.4 Hệ thống testbed chuyển mạch OpenFlow trong thực tế.........................105

Hình 6.5 Sơ đồ kết nối chuyển mạch - NIC cho hệ thống testbed..........................105

NETFPGA GROUP-KSTN-ĐTVT-K52 x

Page 15: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

DANH MỤC BẢNG BIỂU

Bảng 1.1: Công suất tiêu thụ của switch ở cac cấu hình khac nhau...........................5

Bảng 4.1 Bảng tổng hợp công suất của cac thành phần............................................62

Bảng 4.2 So sanh ưu, nhược điểm của môt số mã nguồn mở TCP/IP stack.............69

Bảng 4.3 Bản tin OFPT_PORT_MOD.....................................................................72

Bảng 4.4 Ý nghĩa cac trường trong bản tin OFPT_PORT_MOD............................72

Bảng 4.5 Ý nghĩa cac trường trong bản tin OFPT_SWITCH_MOD.......................74

Bảng 4.6 Bản tin OFPT_SWITCH_MOD................................................................74

Bảng 4.7 Bản tin OFPT_LINECARD_MOD...........................................................75

Bảng 4.8 Ý nghĩa cac trường trong bản tin OFPT_LINECARD_MOD..................75

Bảng 5.1 Cac hàm xử lý gói tin................................................................................94

Bảng 5.2 Cac hàm điều khiển phần cứng NetFPGA................................................95

Bảng 6.1 Bảng năng lượng tiêu thụ của OSC khi không có kết nối nào bị ngắt....103

Bảng 6.2 Bảng năng lượng tiêu thụ của OSC theo số lượng kết nối bị ngắt..........105

NETFPGA GROUP-KSTN-ĐTVT-K52 xi

Page 16: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

CAC THUẬT NGỮ VIẾT TẮT

Từ viết tắt Thuật ngữ tiếng anh Thuật ngữ tiếng việt

CC Clock Controller Bộ điều khiển tín hiệu Clock

CLB Configurable Logic Block Khối logic có thể lập trình được

DCM Digital Clock Manager Khối quản lý xung đồng hồ

DRAM Dynamic Random Access Memory Bộ nhớ truy cập ngẫu nhiên động

FPGA Field Programmable Gate Array Mảng cổng khả trình

IOB Input Output Block Khối vào ra

MAC Media Access Control Điều khiển truy nhập thiết bị

NCD Native Circuit Description Phần mở rộng của file thiết kế

OF SW OpenFlow Switch Bộ chuyển mạch OpenFlow

OSC OpenFlow Switch Controller Mạch điều khiển các bộ chuyển mạch OpenFlow

PCF Physical Constraint File Phần mở rộng của file ràng buộc vật lý

PCI Peripheral Component Inter-connect

Kết nối thành phần ngoại vi

PLD Programmable Logic Device Thiết bị logic có thể lập trình

SDN Software-Defined Network Mạng điều khiển bằng phần mềm

SRAM Static Random Access Memory Bộ nhớ truy cập ngẫu nhiên tĩnh

VCD Value Change Dump Phần mở rộng của file mô phỏng

NETFPGA GROUP-KSTN-ĐTVT-K52 xii

Page 17: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

ĐỒ ÁN TỐT NGHIỆP 2012

PHẦN MỞ ĐẦU

Trong đồ an này, tac giả sẽ tập trung giải quyết cac vấn đề chính sau: Mô tả

cấu trúc của chuyển mạch OpenFlow; xây dựng mạng OpenFlow trên nền tảng

NetFPGA; cac giải phap tiết kiệm năng lượng cho cac bô chuyển mạch OpenFlow;

đo đạc trên thực tế và đanh gia từng phương phap.

Nội dung của đồ án được chia thành sáu chương, gồm ba phần chính:

Phần “Tìm hiểu thực trạng và giải pháp mạng OpenFlow” gồm hai chương:

Chương 1: Nêu thực trạng về vấn đề năng lượng trong cac trung tâm dữ liệu

và giải phap sử dụng mạng OpenFlow do Lê Anh Văn thực hiện.

Chương 2: Tìm hiểu môt cach tổng quat công nghệ mạch tổ hợp FPGA, về

bô chuyển mạch OpenFlow trên nền tảng phần cứng NetFPGA. Chương này

do Nguyễn Duy Linh và Lê Thai Hưng thực hiện.

Phần “Nghiên cứu giải pháp tiết kiệm năng lượng trên thực tế” gồm ba chương:

Chương 3: Triển khai hệ thống mạng OpenFlow trên nền tảng NetFPGA

trong thực tế phòng thí nghiệm do Lê Thai Hưng và Nguyễn Duy Linh thực

hiện.

Chương 4: Thiết kế bô điều khiển chuyển mạch OpenFlow dựa trên thực tế

hệ thống đã triển khai. Chương này do Lê Thai Hưng và Lê Anh Văn thực

hiện.

Chương 5: Thiết kế chuyển mạch OpenFlow tiết kiệm năng lượng và thực

hiện trên cac bô chuyển mạch thực tế đã triển khai.

Phần “Đo đạc, kiểm thử và đánh giá kết quả đạt đươc” gồm một chương:

Chương 6: Triển khai hệ thống mới với cac thiết bị đã được tạo ra, đo đạc và

đanh gia cac kết quả trên thực tế phòng thí nghiệm.

NETFPGA GROUP-KSTN-ĐTVT-K52 1

Page 18: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

Chương 1. Vấn đề tiết kiệm năng lượng trong trung tâm dữ liệu va giải pháp sử dụng mạng OpenFlow

Sinh viên: Lê Anh Văn

Chương này sẽ giải thích nhu cầu tiết kiệm năng lượng cho cac trung tâm dữ

liệu. Đồng thời, môt giải phap hoàn toàn mới cho khó khăn đó sẽ được đưa ra dựa

vào công nghệ mạng mới đang được phat triển rất nhanh chóng trong thời gian gần

đây: Đó là mạng điều khiển bằng phần mềm dựa trên giao thức OpenFlow.

Cac khai niệm, định nghĩa và mô hình chung nhất về mạng này cùng giao

thức OpenFlow sẽ giúp người đọc có môt cai nhìn tổng quan về mục tiêu mà đồ an

hướng tới; cùng với đó là môt xu hướng phat triển của mạng trong tương lai.

1.1 Vấn đề tiết kiệm năng lượng cho trung tâm dữ liệu

Có thể nói rằng hiện nay cac trung tâm dữ liệu đang tiêu tốn môt năng lượng

khổng lồ để duy trì hoạt đông của nó.Theo môt nghiên cứu cho thấy rằng chi phí

năng lượng chiếm tới 44% chi phí hoạt đông của trung tâm dữ liệu. Năng lượng tiêu

thụ ở đây bao gồm có năng lượng cho cac server, cac thiệt bị mạng, cho hệ thống

làm lạnh, line-cards, switching fabric, cac hệ thống theo dõi và cac hệ thống phụ trợ

khac. Những tìm hiểu về năng lượng trong mạng trung tâm dưới đây được tham khảo

trong bài bao “Energy Aware Network Operations” [2], chỉ đề cập đến mô hình năng

lượng tiêu thụ của switch và môt chủ đề đang được nhiều nhà phat triển quan tâm đó

là cac giải phap tiết kiệm năng lượng tiêu thụ trong mạng trung tâm dữ liệu.

Cac switch và router hiện tại không cho ta biết đầy đủ cac thông số năng

lượng tiêu thụ của chúng. Datasheet của cac thiết bị này chỉ cho biết gia trị công suất

hoạt đông tối đa. Gia trị này không đủ để hiểu chính xac năng lượng tiêu thụ thật của

cac thiết bị mạng. Năng lượng tiêu thụ thật sự của cac switch/router phụ thuôc vào

rất nhiều yếu tố như cấu hình của thiết bị và lượng tải mà thiết bị cần xử lý, do đó chỉ

dựa vào công suất tiêu thụ tối đa sẽ không thể tính toan chính xac được năng lượng

tiêu thụ thật. Cấu hình thiết bị và lưu lượng thông tin đi qua sẽ ảnh hưởng đến công

suất tiêu thụ của cac thiết bị mạng.

NETFPGA GROUP-KSTN-ĐTVT-K52 2

Page 19: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

Mỗi môt switch/router đều chứa nhiều thành phần cấu tạo khac nhau như:

chassis, linecard, TCAM (Ternary Content Addressable Memory), RAM, processor,

quạt… Môt switch/router đặc trưng gồm môt chassis (có thể hiểu là bô khung của

switch) chứa cac slot cắm cac linecard, mỗi linecard chứa nhiều port (cổng mạng)

chính là cac cổng giao tiếp của switch/router với cac switch/router khac hoặc với cac

may tính khac. Việc đo thông số năng lượng tiêu thụ của tất cả cac thành phần trong

switch môt cach toàn diện rất khó để thực hiện. Dưới đây là cac yếu tố quan trọng

ảnh hưởng đến công suất tiêu thụ của switch/router:

Công suất tiêu thụ của chassis: Cac switch hiệu năng cao chứa môt chassis

và môt số lượng cố định cac khe cắm (slot) dùng để cắm cac linecard. Đối

với cac switch hiệu năng thấp hơn (cac switch phổ thông với 24 cổng trở

xuống), cac slot và linecard được gắn cố định, không thể thay đổi. Trong cả

hai trường hợp, công suất tiêu thụ cơ bản của chassis là tổng công suất tiêu

thụ của môt số thành phần khac nhau của switch như processor, quạt,

memory…

Số lượng linecard: số lượng cổng của môt linecard và tổng lưu lượng thông

tin mà nó có thể xử lý là có hạn. Cơ chế cắm và rút cac linecard trên cac khe

slot của switch cho phép cac nhà quản lý mạng linh đông cắm số lượng

linecard cần thiết linh đông đap ứng nhu cầu về tải. Hơn nữa, cơ chế đó cũng

đưa ra nhiều lựa chọn cho việc cắm loại linecard phù hợp, ví dụ như cắm môt

linecard 24 cổng 1Gbps để có khả năng xử lý lưu lượng 24Gbps, hay cắm

môt linecard 4 cổng 10Gbps để có khả năng xử lý lưu lượng 40 Gbps.

Số lượng active cổng: thuật ngữ này đề cập tới tổng số cổng trên switch (của

tất cả cac linecard) ở trạng thai hoạt đông (active). Cac cổng còn lại trên

switch được tắt đi thông qua giao diện câu lệnh hỗ trợ tắt bật đưa ra từ nhà

sản xuất.

Công suất xử lý tối đa của môt cổng (port capacity) hay tốc đô hoạt đông tối

đa của môt cổng: ta có thể thay đổi thông số công suất xử lý tối đa của mỗi

cổng để giới hạn tốc đô xử lý thông tin của cổng đó. Ví dụ, công suất xử lý

tối đa của môt cổng full-duplex 1Gbps có thể được cấu hình xuống 100Mbps

NETFPGA GROUP-KSTN-ĐTVT-K52 3

Page 20: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

hay 10Mbps. Việc thay đổi công suất xử lý tối đa này sẽ ảnh hưởng đến năng

lượng tiêu thụ nói chung của switch. Khi giảm công suất xử lý tối đa, năng

lượng tiêu thụ của cổng sẽ giảm, dẫn đến năng lượng tiêu thụ của cả switch

nói chung giảm theo.

Hiệu suất sử dụng của cổng (port utilization): thuật ngữ này mô tả thông

lượng thật chảy qua môt cổng so với công suất xử lý tối đa của cổng đó. Ví

dụ trong trường hợp công suất xử lý tối đa của môt cổng là 100Mbps, thông

lượng dữ liệu đi qua cổng đó là 10Mbps, khi đó hiệu suất sử dụng của cổng

đó (hay port utilization) là 10%. Phụ thuôc vào hiệu suất sử dụng của cổng

mà ta có thể thiết lập cac gia trị công suất xử lý tối đa của cổng đó môt cach

phù hợp. Ví dụ, nếu môt cổng phải xử lý 60 Mbps lưu lượng, khi đó ta sẽ

thiết lập công suất xử lý tối đa của switch là 100 Mbps để có hiệu quả sử

dụng năng lượng môt cach tốt nhất.

TCAM: hầu hết cac switch thực hiện việc phân loại packet trên phần cứng và

hầu hết cac nhà sản xuất sử dụng TCAM để thực hiện chức năng này do thời

gian xử lý tìm kiếm của TCAM là rất nhanh. Tuy nhiên, TCAM tiêu thụ môt

lượng công suất lớn. Ngoài ra, kích thước TCAM trong cac switch cũng khac

nhau.

Firmware: cac nhà sản xuất cập nhật firmware cho switch/router theo định

kỳ. Cac phiên bản firmware khac nhau cũng có thể ảnh hưởng tới công suất

tiêu thụ của switch/router.

Ngoài ra, đặc tính lưu lượng thông tin đi qua mỗi cổng cũng có thể ảnh hưởng

tới công suất tiêu thụ của cổng đó. Hai đặc tính quan trọng nhất của lưu lượng của

môt flow là kích thước mỗi gói tin và khoảng thời gian giữa hai gói tin liên tiếp.

NETFPGA GROUP-KSTN-ĐTVT-K52 4

Page 21: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

Bảng 1.1: Công suất tiêu thụ của switch ở các cấu hình khác nhau

Cofiguration Rack switch (in Watts ) Tier-2 switch (in Watts )

Power chassis 146 54

Power linecard 0(include in chassis power)

39

Power10 Mbps( perport ) 0.12 0.42

Power100Mbps ( perport ) 0.18 0.48

Power1Gbps ( perport) 0.87 0.9

Power chassis là công suất tiêu thụ của switch ở trạng thai không có lưu lượng đi qua,

tuy nhiên switch vẫn đang ở trạng thai bật (idle).

Power linecard là công suất tiêu thụ của môt linecard khi không có lưu lượng qua nó.

Nói cach khac, cac cổng của line card không phải xử lý bất cứ lượng lưu lượng nào.

numl inecards là số linecard của switch

Power configs i là công suất tiêu thụ của môt cổng chạy ở tốc đô i.

numport configsi là số cổng chạy ở tốc đô i.

i: có thể có cac gia trị 10Mbps, 100 Mbps hay 1Gbps.

Qua Bảng 1.1 [2] ta thấy đối với Rack switch (cac switch thường công suất xử

lý thấp, ít hơn 24 cổng), do cac linecard được gắn cố định, không thay đổi được nên

công suất tiêu thụ của chassis chính là công suất tiêu thụ cơ bản và cố định của

switch khi switch được bật mà không xử lý bất cứ môt lượng lưu lượng nào, công

suất tiêu thụ của linecard khi đó được bao gồm trong công suất tiêu thụ của chassis.

Mặt khac đối với cac chuyển mạch tầng hai có công suất xử lý cao hơn, số lượng cac

linecard có thể thay đổi bằng cach cắm/rút cac linecard vào/ra cac slot, nên không

thể tính gôp vào công suất tiêu thụ của chassis. Trong trường hợp này, mỗi linecard

được cắm thêm vào, công suất tiêu thụ của switch sẽ tăng thêm 39W. Tuy nhiên,

trong cả hai trường hợp ta có thể thấy công suất tiêu thụ của cac cổng trên switch

NETFPGA GROUP-KSTN-ĐTVT-K52 5

Page 22: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

phụ thuôc vào cấu hình tốc đô hoạt đông của cac cổng đó. Tốc đô hoạt đông tăng,

công suất tiêu thụ của cổng cũng tăng lên.

Ngoài ra, ta có thể quan sat thấy công suất tiêu thụ của chassis chiếm phần lớn

công suất tiêu thụ của switch, nên việc tắt cac switch không sử dụng (không có lưu

lượng đi qua) sẽ mang lại lợi ích lớn nhất. Lấy ví dụ môt switch thường 24 cổng, khi

không có lưu lượng đi qua sẽ tiêu thụ 146W, trong khi công suất tiêu thụ tối đa khi

lượng lưu lượng tối đa qua (mỗi cổng đặt ở tốc đô hoạt đông 1Gbps), công suất tiêu

thụ của switch sẽ là: 146+0.87*24=167W. Nếu ta không tắt switch khi không có lưu

lượng đi qua, switch sẽ luôn tiêu thụ môt lượng công suất nền rất lớn: 146W.

Dựa vào đặc tính tiêu thụ năng lượng của cac switch, phần tiếp theo sẽ trình

bày môt số kỹ thuật được dùng trong tiết kiệm năng lượng tiêu thụ của cac thiết bị

mạng trong trung tâm dữ liệu.

1.2 Giải pháp sử dụng mạng OpenFlow

1.2.1 Sự cần thiết cho môt kiến trúc mạng mới

Sự bùng nổ của cac thiết bị và nôi dung di đông, ảo hóa may chủ, và sự ra đời

của dịch vụ điện toan đam mây là môt trong những xu hướng thúc đẩy cac ngành

công nghiệp mạng xem xét lại kiến trúc mạng truyền thống. Hầu hết cac mạng thông

thường đều theo kiến trúc phân cấp, được xây dựng với cac tầng của thiết bị chuyển

mạch Ethernet được sắp xếp theo cấu trúc cây. Thiết kế này thực sự hiệu quả khi mô

hình tính toan client-server chiếm ưu thế, nhưng kiến trúc cố định như vậy không

thích hợp với yêu cầu tính toan đa dạng, năng đông và nhu cầu lưu trữ dữ liệu ngày

nay tại cac trung tâm dữ liệu của doanh nghiệp, trường học, và trong môi trường của

cac nhà cung cấp dịch vụ. Môt trong số những xu hướng tính toan quan trọng dẫn tới

yêu cầu ngày càng tăng cho môt mô hình mạng mới bao gồm:

Sự thay đổi mô hình lưu lượng.

Hướng người dùng CNTT (Công nghệ thông tin).

Sự phat triển của cac dịch vụ điện toan đam mây.

“Dữ liệu lớn” yêu cầu nhiều băng thông hơn.

NETFPGA GROUP-KSTN-ĐTVT-K52 6

Page 23: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

1.2.2 Mục tiêu của mạng OpenFlow

Đap ứng yêu cầu thị trường hiện nay là hầu như không thể với kiến trúc mạng

truyền thống. Đối mặt với ngân sach không đổi hoặc giảm, cac doanh nghiệp ngành

CNTT đang cố gắng để tận dụng tối đa khả năng mà mạng của họ co thể đap ứng

bằng cach sử dụng cac công cụ quản lý ờ mức thiết bị và cac quy trình thủ công. Cac

hãng cung cấp dịch vụ cũng phải đối mặt với những thach thức tương tự như yêu cầu

về tính di đông cũng như sự bùng nổ băng thông, lợi nhuận đang bị xói mòn bởi chi

phí vốn cho thiết bị leo thang và doanh thu không tang hoặc suy giảm. Kiến trúc

mạng hiện tại không được thiết kế để đap ứng cac yêu cầu ngày nay của người sử

dụng, doanh nghiệp, và nhà cung cấp dịch vụ, những hạn chế của mạng hiện tại bao

gồm:

Đô phức tạp cao gây tắc nghẽn

Chính sach không đồng nhất

Khả năng quy mô kém

Phụ thuôc vào nhà cung cấp thiết bị

Chính vì lý do trên, cac nhà nghiên cứu đã đưa ra giải phap: Mạng điều khiển

bằng phần mềm (Software-Defined Networking)

Mạng điều khiển bằng phần mềm (SDN) là môt kiến trúc mạng mới phat triển

trong thời gian gần đây, trong đó việc điều khiển mạng được tach rời khỏi việc

chuyển tiếp và có thể được lập trình. Khac với trước đây khi còn bị ràng buôc chặt

chẽ trong từng thiết bị mạng đơn lẻ, điều khiển mạng sử dụng cac thiết bị tính toan

có thể truy cập (accessible computing device) cho phép cơ sở hạ tầng cơ bản được

trừu tượng hóa cho cac ứng dụng và dịch vụ mạng, hay là cac ứng dụng và dịch vụ

sẽ coi mạng như môt thực thể hợp thống nhất.

Hình 1.1 mô tả kiến trúc luận lý của SDN[3]. Thông tin về mạng được tập

trung trong phần mềm điều khiển SDN có chức năng kiểm soat toàn bô mạng. Kết

quả là, hình ảnh của mạng đối với cac ứng dụng và cac công cụ quản lý giống như là

môt chuyển mạch luận lý đơn nhất. Với SDN, doanh nghiệp và ngưởi sử dụng có thể

điều hành toàn bô mạng từ môt điểm luận lý duy nhất, không phụ thuôc vào nhà

NETFPGA GROUP-KSTN-ĐTVT-K52 7

Page 24: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

cung cấp thiết bị, điều này giúp đơn giản hóa thiết kế và hoạt đông của mạng rất

nhiều. SDN cũng góp phần tối ưu hóa cac thiết bị mạng, bởi vì cac thiết bị mạng

không còn cần phải hiểu và xử lý hàng ngàn cac chuẩn giao thức khac nhau mà chỉ

còn xử lý cac lệnh từ bô điều khiển SDN.

Hình 1.1 Kiến trúc mạng điều khiển bằng phần mềm

Nhưng quan trọng nhất, nhà khai thac mạng và quản trị viên có thể trình cấu

hình mạng được trừu tượng hóa đơn giản hơn so với việc phải lập trình hàng chục

ngàn dòng cấu hình phân tan trong số hàng ngàn cac thiết bị mạng đơn lẻ. Ngoài ra,

tận dụng cac thông tin được tập trung trong tại bô điều khiển SDN, người quản trị có

thể thay đổi hoạt đông mạng theo thời gian thực, triển khai cac ứng dụng và dịch vụ

mới mạng trong vài giờ hoặc vài ngày, chứ không còn là vài tuần hoặc vài thang như

hiện nay. Bằng cach thu thập tình trạng của mạng trong cac lớp điều khiển (control

layer), SDN cung cấp cho nhà quản lý mạng cac phương phap linh hoạt để cấu hình,

quản lý, bảo mật, và tối ưu hóa tài nguyên mạng thông qua cac phần mềm tự đông

SDN.

Hơn nữa, cac nhà quản lý có thể tự viết cac chương trình này mà không phải

chờ đợi cac nhà cung cấp sẽ nhúng cac tính năng này vào cac sản phẩm của họ kèm

NETFPGA GROUP-KSTN-ĐTVT-K52 8

Page 25: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

theo cac công cụ phần mềm đôc quyền .Ngoài việc trừu tượng hóa mạng, kiến trúc

SDN hỗ trợ môt tập hợp cac hàm API cho phép thực hiện cac dịch vụ mạng thông

thường, bao gồm định tuyến, multicast, an ninh, kiểm soat truy cập, quản lý băng

thông, quản lý traffic, chất lượng, dịch vụ, tối ưu hóa cac bô vi xử lý và lưu trữ, sử

dụng năng lượng, và cac hình thức quản lý chính sach, tùy chỉnh cho phù hợp để đap

ứng cac mục tiêu kinh doanh. Ví dụ, kiến trúc SDN cho phép định nghĩa và thực thi

chính sach nhất quan môt cach dễ dàng cho cả kết nối có dây và không dây trong

khuôn viên trường.

Tương tự như vậy, SDN cho phép quản lý toàn bô mạng thông qua hệ thốn dự

phòng và đồng bô thông minh. Open Networking Foundation đang nghiên cứu cac

API mở để thúc đẩy việc quản lý đa nhà cung cấp, mở ra canh cửa cho cac tính năng

phân bổ tài nguyên theo yêu cầu, self-service provisioning, mạng ảo hóa thực sự, và

cac dịch vụ đam mây an toàn.

Như vậy, với cac hàm API mở nằm giữa bô điều khiển SDN và cac lớp ứng

dụng, cac ứng dụng thực tế có thể hoạt đông trên lớp trừu tượng của mạng,tận dụng

cac dịch vụ và khả năng của mạng mà không bị ràng buôc vào cac chi tiết khi thực

hiện. SDN làm cho mạng không còn phải "application-aware" như là "application-

customized" và cac ứng dụng cũng không cần thiết "network-aware" đến mức

"network-capability-aware". Kết quả là, từ việc tính toan, lưu trữ, tài nguyên mạng

có thể được tối ưu hóa.

1.2.3 Giao thức OpenFlow

Giao thức OpenFlow là giao diện truyền thông đầu tiên được sử dụng giữa

lớp kiểm soat và cac lớp chuyển tiếp trong kiến trúc SDN. OpenFlow cho phép trực

tiếp truy cập và thao tac trên phần chuyển mạch của cac thiết bị mạng chẳng hạn như

chuyển mạchvà router, trong cả hai trường hợp luận lý và ảo. Chính sự thiếu hụt của

môt giao diện mở cho phần chuyển mạch đã dẫn tới cac đặc tính của cac thiết bị

mạng bây giờ như: chia thành nhiều khối riêng biệt, đóng và giống như cac may

mainframe. Thực tế hiện nay vẫn chưa xuất hiện môt giao thức tiêu chuẩn nào có

cùng chức năng như giao thức OpenFlow,và sự ra đời môt giao thức giống như

NETFPGA GROUP-KSTN-ĐTVT-K52 9

Page 26: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

OpenFlow là cần thiết để chuyển công việc điều khiển mạng chuyển mạch lên cac

phần mềm điều khiển tập trung hợp lý.

OpenFlow có thể được so sanh với tập lệnh của CPU. Như thể hiện trên Hình

1.2 [3], giao thức này xac định cac thành phần cơ bản có thể được sử dụng bởi môt

ứng dụng phần mềm bên ngoài để lập trình cho phần chuyển mạch của cac thiết bị

mạng, điều này giống như tập lệnh của CPU với môt hệ thống may tính.

Hình 1.2 Ví dụ về tập lệnh của OpenFlow

Cac giao thức OpenFlow được thực hiện trên cả hai mặt của giao diện giữa

cac thiết bị cơ sở hạ tầng mạng và phần mềm điều khiển SDN. OpenFlow sử dụng

khai niệm về cac luồng (Flow) để xac định lưu lượng truy cập mạng dựa trên quy tắc

được xac định trước - có thể được lập trình cố định hay thay đổi trong phần mềm

điều khiển SDN. Giao thức này cũng cho phép người sử dụng xac định cach lưu

lượng mạng được phân theo luồng thông qua cac thiết bị mạng dựa trên cac thông số

như mô hình sử dụng, ứng dụng, và tài nguyên điện toan đam mây. Vì OpenFlow

hướng tới mạng được lập trình trên cơ sở hướng tới từng luồng, do đó môt kiến trúc

mạng SDN dựa trên OpenFlow hỗ trợ kiểm soat rất chi tiết tới tất cả cac khía cạnh,

cho phép mạng có thể đap ứng theo thời gian thực với sự thay đổi ở cac cấp đô ứng

dụng, người sử dụng, và phiên. Định tuyến dựa trên IP hiện tại không cung cấp mức

đô kiểm soat chặt chẽ đến như vậy, bởi vì tất cả cac luồng giữa hai thiết bị đầu cuối

NETFPGA GROUP-KSTN-ĐTVT-K52 10

Page 27: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

luôn phải theo cùng môt con đường thông qua mạng, bất kể chúng có yêu cầu khac

nhau hay không.

Giao thức OpenFlow là môt nhân tố quan trọng trong Mạng điều khiển bằng

phần mềm và là giao thức SDN tiêu chuẩn hóa duy nhất hiện nay, cho phép trực tiếp

thao tac trên phần chuyển mạch của cac thiết bị mạng. Ban đầu khi ap dụng cho cac

mạng Ethernet-based, việc chuyển đổi sang OpenFlow có thể mở rông đến tập hợp

rông lớn hơn nhiều cac trường hợp. Mạng SDN dựa trên OpenFlow có thể được triển

khai trên cac mạng hiện có, cả vật lý và ảo. Thiết bị mạng có thể hỗ trợ việc chuyển

tiếp cac gói tin OpenFlow cũng như chuyển tiếp gói tin truyền thống, điều này khiến

cho cac doanh nghiệp và người sử dụng dễ dàng tiếp cận đến mạng SDN dựa trên

OpenFlow, ngay cả trong môi trường mạng thiết lập bởi nhiều nhà cung cấp.

Tổ chức Open Networking Foundation chịu trach nhiệm tiêu chuẩn hóa

OpenFlow thông qua cac nhóm kỹ thuật làm việc trên nhiều mảng như giao thức, cấu

hình, khả năng tương tac, và cac hoạt đông khac, giúp đảm bảo khả năng tương tac

giữa cac thiết bị mạng và phần mềm kiểm soat từ cac nhà cung cấp khac nhau.

OpenFlow được chấp nhận rông rãi bởi cac nhà cung cấp cơ sở hạ tầng mạng, thông

qua cac bản nâng cấp phần mềm hoặc firmware đơn giản. Kiến trúc mạng SDN dựa

trên OpenFlow có thể được tích hợp liền mạch với cơ sở hạ tầng hiện có của môt

doanh nghiệp hoặc người sủ dụng, tạo ra môt hướng chuyển đổi đơn giản trên những

thành phần mạng mà tại đó cần cac chức năng của mạng SDN nhất.

1.2.4 Lợi ích của mạng SDN dựa trên giao thức OpenFlow

Đối với doanh nghiệp và nhà cung cấp, công nghệ của mạng SDN dựa trên

OpenFlow cho phép cac kĩ sư công nghệ thông tin giải quyết cac vấn đề liên quan tới

băng thông cao, tính chất thay đổi của cac ứng dụng ngày nay, chuyển đổi mạng cho

phù hợp với cac yêu cầu làm việc luôn thay đổi, và làm giảm đang kể đô phức tạp

của hoạt đông điều hành và quản lý mạng. Cac lợi ích mà doanh nghiệp và cac hãng

có thể đạt được thông qua kiến trúc mạng SDN dựa trên OpenFlow bao gồm:

Tập trung hóa việc điều khiển trong môi trường mạng của nhiều nha

cung cấp: Phần mềm điều khiển có SDN thể kiểm soat bất kỳ thiết bị mạng

hỗ trợ OpenFlow từ bất kỳ nhà cung cấp nào, bao gồm thiết bị chuyển mạch,

NETFPGA GROUP-KSTN-ĐTVT-K52 11

Page 28: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

định tuyến và chuyển mạch ảo. Thay vì phải quản lý từng nhóm thiết bị từ

cac nhà cung cấp riêng lẻ, nhà quản lý có thể sử dụng đồng bô cac thiết bị và

cac công cụ quản lý dựa trên SDN để nhanh chóng triển khai, cấu hình và

cập nhật cac thiết bị trong toàn bô mạng.

Giảm đô phức tạp thông qua tự đông hóa: Mạng SDN dựa trên giao thức

OpenFlow cung cấp cac công cụ (framework) giúp tự đông hóa và quản lý

mạng môt cach linh hoạt, điều này hỗ trợ nhà quản lý có thể phat triển cac

công cụ giúp thực hiện cac tac vụ quản lý môt cach tự đông hóa thay vì tự

mình thực hiện như hiện tại. Những công cụ tự đông hóa này sẽ làm giảm chi

phí hoạt đông, tối thiểu sự bất ổn định trong mạng gây ra bởi lỗi trong việc

điều hành, và hỗ trợ cac mô hình triển khai tự phục vụ (self-service

provisioning models). Ngoài ra, với mạng SDN, cac ứng dụng dựa trên điện

toan đam mây có thể được quản lý thông qua hệ thống triển khai và đồng bô

thông minh, giúp giảm thiểu hơn nữa chi phí vận hành đồng thời tăng tính

linh hoạt trong công việc.

Tốc đô đổi mới cao hơn: Sử dụng mạng SDN làm tăng khả năng đổi mới

trong công việc bằng cach cho phép nhà vận hành mạng có thể thực sự lập

trình và lập trình lại mạng theo thời gian thực để đap ứng nhu những yêu cầu

công việc đặc biệt và nhu cầu phat sinh của người sử dụng. Bằng cach ảo hóa

và trừu tượng hóa cơ sở hạ tầng mạng từ cac dịch vụ mạng đơn lẻ, ví dụ,

SDN và OpenFlow cung cấp cho nhà quản lý và có thể ngay cả người dùng

khả năng để điều chỉnh hoạt đông của mạng và ứng dụng cac dịch vụ mới

cũng như cac tính năng mới của mạng trong vòng vài giờ.

Tăng cường đô tin cậy va an ninh mạng: SDN cho phép cac nhà quản lý tự

định nghĩa cac cấu hình cấp cao (high-level configuration) và chính sach

trong mạng, điều này được chuyển xuống cơ sở hạ tầng thông qua

OpenFlow. Kiến trúc mạng SDN dựa trên OpenFlow loại bỏ nhu cầu phải

cấu hình cho từng thiết bị mạng đơn mỗi thời gian mỗi khi môt đầu cuối (end

point), dịch vụ, hoặc ứng dụng được thêm vào loại bỏ, hay khi thay đổi chính

sach, điều này làm giảm thiểu khả năng phat sinh lỗi trong mạng do xung đôt

cấu hình hoặc chính sach.

NETFPGA GROUP-KSTN-ĐTVT-K52 12

Page 29: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

Bởi vì bô điều khiển mạng SDN cung cấp khả năng hiển thị đầy đủ và kiểm

soat qua mạng, đo đó đảm bảo rằng việc kiểm soat truy cập, lưu lượng, chất

lượng dịch vụ, an ninh, và cac chính sach khac được thực thi nhất quan trên

cơ sở hạ tầng mạng có dây và không dây, bao gồm cả cac chi nhanh văn

phòng, trường học, và trung tâm dữ liệu. Doanh nghiệp và cac nhà khai thac

có thể được hưởng lợi ích từ giảm chi phí hoạt đông, khả năng cấu hình linh

hoạt hơn, ít lỗi, thực thi chính sach và cấu hình thống nhất.

Trải nghiệm người dùng tốt hơn: Bằng cach tập trung hóa điều khiển mạng

và đảm bảo thông tin trạng thai sẵn sàng cho cac ứng dụng cấp cao hơn, cơ

sở hạ tầng mạng SDN có thể thích ứng với nhu cầu đa dạng của người sử

dụng môt cach tốt hơn. Ví dụ, môt nhà cung cấp dịch vụ có thể giới thiệu

môt dịch vụ video mà nó cung cấp cho cac thuê bao cao cấp xem hình với đô

phân giải lớn nhất có thể môt cach tự đông và thông suốt. Thực tế, người sử

dụng hoàn toàn có thế chọn môt cấu hình đô phân giải mà điều kiện mạng có

thể hoặc không thể đap ứng, dẫn đến trễ và gian đoạn làm giảm trải nghiệm

người dùng. Với mạng SDN dựa trên OpenFlow, cac ứng dụng video có thể

tự nhận diện băng thông cho phép trong mạng theo thời gian thực và tự đông

điều chỉnh đô phân giải video cho phù hợp.

1.3 Kết luận chương

Tóm lại, cac xu hướng mới như người sử dụng ngày càng ưa chuông tính di

đông, ảo hóa may chủ, và yêu cầu đap ứng môt cach nhanh chóng với điều kiện kinh

doanh luôn thay đổi đặt ra ngày nhiều yêu cầu lên hệ thống mạng, và rất nhiều trong

số đó kiến trúc mạng thông thường hiện nay không thể đảm đương được. Mạng điều

khiển bằng phần mềm cung cấp môt kiến trúc mạng mới, năng đông, có khả năng

thay đổi mạng xương sống truyền thống sang môt nền tảng hứa hẹn cung cấp dịch vụ

phong phú hơn rất nhiều.

Tương lai của mạng sẽ dựa nhiều hơn và nhiều hơn nữa trên phần mềm, việc

này sẽ giúp đẩy nhanh tốc đô đổi mới cho hệ thống mạng như nó đã từng xảy ra

trong lĩnh vực may tính và lưu trữ. SDN hứa hẹn sẽ biến đổi mạng cố định ngày hôm

nay thành nền tảng khả trình với khả năng phân bổ nguồn lực môt cach năng

NETFPGA GROUP-KSTN-ĐTVT-K52 13

Page 30: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 1ƯƠ

đông, trở nên linh hoạt hơn, đủ quy mô để hỗ trợ cac trung tâm dữ liệu khổng lồ với

sự ảo hóa cần thiết cho môt môi trường điện toan đam mây tự đông hóa cao, năng

đông, và an toàn. Sở hữu nhiều lợi thế và tiềm năng công nghiệp hấp dẫn,

mạng SDN đang trên đường để trở thành môt chuẩn mực mới cho mạng trong tương

lai.

NETFPGA GROUP-KSTN-ĐTVT-K52 14

Page 31: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Chương 2. Ứng dụng mạng OpenFlow trong trung tâm dữ liệu trên nền tảng NetFPGA

Sinh viên: Nguyễn Duy LinhLê Thái Hưng

Bô chuyển mạch OpenFlow được chia làm hai loại là bô chuyển mạch

OpenFlow chuyên dụng và bô chuyển mạch thương mại có chức năng OpenFlow[4].

Chuyển mạch OpenFlow chuyên dụng (Dedicated OpenFlow Switch): loại

này không hỗ trợ việc xử lý gói tin ở lớp 2, 3. Loại này forward gói tin chỉ

dựa vào flow-table bên trong bô chuyển mạch. Chúng được xây dựng trên

nền tảng công nghệ mạch tổ hợp FPGA.

Chuyển mạch thương mại có chức năng OpenFlow (OpenFlow enabled

commercial Switch): loại này chính là môt bô chuyển mạch Ethernet thông

thường nhưng được bổ xung thêm chức năng OpenFlow cho phép xử lý hai

loại lưu lượng khac nhau: lưu lượng thí nghiệm (xử lý bởi flow-table) và lưu

lượng thực tế(xử lý bởi cac giao thức lớp 2 và 3).

Do điều kiện nghiên cứu của tac giả là trong phòng thí nghiệm, nên tac giả chỉ

tập trung nghiên cứu loại chuyển mạch OpenFlow chuyên dụng. Và trong đồ an này,

khi đề cập đến chuyển mạch OpenFlow là tac giả đang nói đến loại chuyển mạch

OpenFlow chuyên dụng. Chương này sẽ trình bày về công nghệ mạch tổ hợp FPGA

và ứng dụng mạng OpenFlow trên nền tảng NetFPGA.

2.1 Giới thiệu công nghệ mạch tổ hợp FPGA

2.1.1 Các công nghệ mạch tổ hợp

Hiện nay, trên thế giới có rất nhiều cac công nghệ thiết kế mạch tổ hợp khac

nhau: thiết kế Full-Custom, thiết kế Semi-Custom, PLD (Programmable Logic

Device).

Thiết kế Full-Custom: Phương phap thiết kế này chỉ ra Layout của từng

transistor riêng biệt và kết nối giữa chúng. Thiết kế Full-Custom sẽ tối ưu

hóa được hiệu năng cũng như kích thước của mạch tổ hợp. Tuy vậy, gia

NETFPGA GROUP-KSTN-ĐTVT-K52 15

Page 32: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

thành sản xuất của cac chip thiết kế theo Full-Custom rất đắt. Cach thiết

kế này chỉ ap dụng cho việc sản xuất chip hàng loạt với môt số lượng lớn.

Thiết kế Semi-Custom: Cach thiết kế này sử dụng môt thư viện cac cell

chuẩn có sẵn( cac cell này được chế tạo từ cac Transistor theo kiểu Full-

Custom).

Programmable Logic Device (PLD): Điển hình là công nghệ

FPGA(Field Programmable Gate Array). Với công nghệ này, người sử

dụng có thể hoàn toàn tạo ra môt mạch phần cứng tùy ý theo ý muốn

không phụ thuôc vào dây chuyền sản xuất phức tạp của cac nhà may ban

dẫn.

Công nghệ FPGA nếu đem so sanh với cac công nghệ chế tạo chip như Full-

Custom hay Semi-Custom thì không đạt được đô tối ưu về mặt tốc đô như những

loại này và hạn chế trong khả năng thực hiện những tac vụ đặc biệt phức tạp, tuy vậy

FPGA ưu việt hơn ở chỗ có thể tai cấu trúc lại khi đang sử dụng, công đoạn thiết kế

đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.

Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng cac ngôn ngữ

mô tả phần cứng HDL như VHDL, Verilog, AHDL, cac hãng sản xuất FPGA lớn

như Xilinx, Altera thường cung cấp cac gói phần mềm và thiết bị phụ trợ cho qua

trình thiết kế, cũng có môt số cac hãng thứ ba cung cấp cac gói phần mềm kiểu này

như Synopsys, Synplify... Cac gói phần mềm này có khả năng thực hiện tất cả cac

bước của toàn bô quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL

(còn gọi là mã RTL).

2.1.2 Ứng dụng của FPGA

Ứng dụng của FPGA bao gồm: xử lý tín hiệu số DSP, cac hệ thống hàng

không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), cac hệ thống

điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô

hình phần cứng may tính...

Do tính linh đông cao trong qua trình thiết kế cho phép FPGA giải quyết lớp

những bài toan phức tạp mà trước kia chỉ thực hiện nhờ phần mềm may tính, ngoài

NETFPGA GROUP-KSTN-ĐTVT-K52 16

Page 33: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

ra nhờ mật đô cổng logic lớn FPGA được ứng dụng cho những bài toan đòi hỏi khối

lượng tính toan lớn và dùng trong cac hệ thống làm việc theo thời gian thực.

FPGA cũng được ứng dụng để chế tạo ra cac thiết bị mạng may tính như bô

định tuyến, bô chuyển mạch. Trong đồ an này là bô chuyển mạch OpenFlow.

2.1.3 Kiến trúc của FPGA

Trong đồ an này, dòng chip FPGA được sử dụng là VirtexTM-II pro. Đây là

môt dòng chip FPGA hiệu năng cao của hãng Xilinx[5].

Như trên Hình 2.3 thành phần của môt chip FPGA của Xilinx bao gồm:

CLB(Configurable Logic Block): khối này bao gồm cac tài nguyên để tạo ra

mạch tổ hợp và cac thanh ghi.

IOB(Input Output Block): khối này đóng vai trò là interface giữa FPGA và thế

giới bên ngoài.

Các kết nối có thể lập trình được(Programmable Interconnect)

Các tài nguyên khác như: Memory, Multiplier, Global Clock Buffer…

Hình 2.3 Cấu trúc của FPGA

2.1.3.1 Cấu tạo của CLB

Mỗi môt CLB bao gồm bốn slices. Mỗi slice bao gồm cac thành phần chính sau:

NETFPGA GROUP-KSTN-ĐTVT-K52 17

Page 34: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Hai bảng Look-up Tables.

Hai phần tử tuần tự (2 flip-flops).

Khối Carry Logic

Cấu trúc của slice trong FPGA của Xilinx được mô tả trên Hình 2.4 [5]. Ở

đây, mỗi slice có bốn đầu ra: hai đầu được đệm bởi thanh ghi, hai đầu còn lại thì

không được đệm bởi thanh ghi.

Hình 2.4 Cấu trúc của Slice

Mạch tổ hợp được lưu trữ trong bảng LUT (minh họa trên Hình 2.5). Trong

CLB có hai bảng LUT4-1, cac bảng LUT4-1 này thực chất là cac SRAM với bốn

đầu vào là bốn bit địa chỉ, đầu ra là bit gia trị của ô nhớ trong SRAM. Bảng LUT này

có thể thực hiện cac hàm với đô phức tạp tùy ý, và chỉ bị giới hạn bởi số lượng đầu

vào. Trễ qua bảng LUT này là không đổi.

NETFPGA GROUP-KSTN-ĐTVT-K52 18

Page 35: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Hình 2.5 Minh họa bảng LUT

Ngoài ra, mỗi Slice bao gồm hai Flip-Flops (minh họa trên Hình 2.6). Mỗi

CLB có tổng công tam Flip-Flops. Đầu vào của cac Flip-Flops này lấy từ đầu ra của

cac bảng LUT hoặc đầu vào của cac CLB. Dòng chip VirtexTM-II pro tach riêng tín

hiệu Set và Reset cho từng Flip-Flop.

Hình 2.6 Minh họa các Flip-Flop

NETFPGA GROUP-KSTN-ĐTVT-K52 19

Page 36: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

2.1.3.2 IOB

Môt chíp FPGA có thể có hơn 1000 chân và được sắp xếp thành cac dãy

xung quanh chip. Cac chân vào ra này có thể cấu hình để hoạt đông ở cac chuẩn

khac nhau: LVTTL, LVDS... Mỗi chuẩn sẽ quy định mức điện ap biểu diễn 0 hoặc

1 . Việc có thể cấu hình cac chuẩn IO giúp việc thiết kế hệ thống trở nên đơn giản.

Mỗi dãy IO có thể được cấu hình với môt chuẩn vào ra riêng. Do đó, chíp

FPGA có thể được sử dụng trong cac hệ thống yêu cầu nhiều chuẩn tín hiệu vào ra

khac nhau.

2.1.3.3 Block RAM

Do có nhiều ứng dụng yêu cầu sử dụng bô nhớ, do đó chip FPGA đã được

nhúng rất nhiều khối RAM có kích thước lớn được gọi là Block RAM. Tùy theo

từng kiến trúc, cac khối RAM này có thể được sắp xếp ở vùng biên của chip, sắp

xếp rải rac trên bề mặt của chip hoặc trong những vùng khac nhau hoặc được xếp

thành từng côt.

2.1.3.4 Khối quản lý đồng hồ DCM

Tất cả cac thành phần đồng bô trong chip FPGA đều phải được điều khiển bởi

cac tín hiệu đồng hồ. Cac tín hiệu đồng hồ này được đưa từ bên ngoài vào chip

FPGA thông qua môt chân riêng biệt là chân clock và sau đó được đưa vào cac kết

nối để đến cac thành phần tương ứng. Trong cac chip FPGA có môt hệ thống cac kết

nối riêng để đưa tín hiệu clock nối đến cac thành phần tương ứng. Kiến trúc này đảm

bảo cac thành phần khac ở cac vị trí khac nhau sẽ nhận được tín hiệu có đặc tính

giống nhau tranh trường hợp bị trượt clock do qua trình truyền tín hiệu với cac

khoảng cach nhau. Thông thường môt chip FPGA có nhiều chân clock và nhiều hệ

thống kết nối khac nhau đảm bảo chip FPGA có thể hoạt đông ở nhiều tần số khac

nhau.

NETFPGA GROUP-KSTN-ĐTVT-K52 20

Page 37: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

2.1.4 Các bước thiết kế với FPGA của Xilinx

Hình 2.7 dưới đây mô tả cac bước thiết kế với FPGA của Xilinx [6]

Hình 2.7 Design flow

Bước 1: Design Entry

Người sử dụng sẽ thiết kế phần cứng trong bước này. Có rất nhiều cach mà

người sử dụng có thể dùng để thiết kế mạch phần cứng như dùng sơ đồ nguyên lý

ghép cac linh kiện với nhau hoặc dùng môt ngôn ngữ mô tả phần cứng như VHDL,

Verilog để mô tả mạch. Hay môt cach khac là sử dụng công cụ Core Generator của

Xilinx để sinh ra cac khối phần cứng có sẵn. Phần mềm được sử dụng ở bước này là

ISE của Xilinx.

Bước 2: Synthesis (Tổng hợp)

Đây là môt bước quan trọng trong cac bước thiết kế FPGA của hãng Xilinx.

Ở bước này người sử dụng sẽ dùng công cụ XST trong gói phần mềm ISE để tổng

NETFPGA GROUP-KSTN-ĐTVT-K52 21

Page 38: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

hợp thiết kế. Đầu ra của pha này là cac file netlist mô tả mạch phần cứng (bao nhiêu

gate, flip-flop, kết nối giữa chúng). Cac file netlist có đuôi là .ngc, .ngd.

Trong qua trình tổng hợp, người sử dụng có cac lựa chọn cho trình tổng hợp

nhằm tạo ra thiết kế mong muốn như tối ưu hóa về tài nguyên trên FPGA hoặc tốc

đô. Đây chính là cac Synthesis Constraints (ràng buôc tổng hợp).

Sau khi tổng hợp xong thiết kế, người sử dụng cần tiến hành mô phỏng chức

năng (Functional Simulation) để kiểm tra xem thiết kế có đúng như yêu cầu ban đầu.

Bước 3: Translating

Bước này sẽ ghép tất cả cac file netlist rời rạc thành môt file netlist duy nhất.

Bước 4: Mapping

Bước này sẽ anh xạ cac thành phần trong thiết kế của người sử dụng xuống

cac thành phần vật lý trên chip FPGA (slice, IOB, Ram khối…). Nếu thiết kế qua lớn

vượt qua tài nguyên cho phép của chip FPGA, trình dịch sẽ bao lỗi.

Bước 5: Placing & Routing

Bước này sẽ đặt cac thành phần của thiết kế xuống chip đồng thời sẽ kết nối

chúng và đưa ra bao cao về mặt thời gian như đô trễ, tần số xung nhịp lớn nhất mạch

có thể chạy được. Ba bước 3, 4, 5 được là Implementation.

Trong qua trình Implementation, người sử dụng cần đưa ra cac ràng buôc đối

với hệ thống như gan chân cho thiết kế với chân chip thật (Pin Assignment) và tần số

xung nhịp mong muốn (Timing Constraints). Những thông tin ràng buôc này được

lưu trong file có dạng .ucf.

Sau bước này, người sử dụng cần mô phỏng thời gian (Timing Simulation) để

kiểm tra xem thiết kế có đúng hay không về mặt thời gian. Khi người sử dụng mô

phỏng thành công ở bước này, thì khả năng chạy được trên chip FPGA thật lả rất

cao.

Bước 6: Bitstream Generation

NETFPGA GROUP-KSTN-ĐTVT-K52 22

Page 39: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Khi thực hiện đến bước 5, người sử dụng thấy rằng thiết kế chạy mô phỏng

đúng với yêu cầu. Người sử dụng sẽ tiến hành tạo ra file .bit dùng để nạp xuống chip

FPGA thật. Cuối cùng là việc test thử trên chip FPGA thật.

2.1.5 Phần mềm ISE

Đây là môt phần mềm thiết kế của hãng Xilinx được dùng cho cac dòng chip

FPGA của hãng. Phần mềm này chứa cac công cụ cho phép người sử dụng tạo ra cac

design entry (có thể bằng Schematic Editor, viết code Verilog, VHDL hay công cụ

Core Generator). Đồng thời phần mềm này có tất cả cac công cụ cần thiết để thực

hiện design flow trên. Như công cụ tổng hợp XST, công cụ để thực hiện Translating,

Mapping, Placing & Routing, công cụ để download thiết kế của người sử dụng

xuống chip FPGA. Gói phần mềm này cũng hỗ trợ việc xuất ra cac bao cao cần thiết

như Timing Report. Phần mềm ISE cũng hỗ trợ việc mô phỏng thiết kế của người sử

dụng (công cụ ISim).

Hình 2.8 Giao diện phần mềm ISE

Qua phần này, chúng ta đã hình dung được về chip FPGA và cac bước để

làm việc với FPGA.

NETFPGA GROUP-KSTN-ĐTVT-K52 23

Page 40: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

2.2 Chuyển mạch OpenFlow trên nền tảng kit NetFPGA

2.2.1 Kiến trúc bô chuyển mạch OpenFlow

Bô chuyển mạch OpenFlow bao gồm ba thành phần chính: Flow-table, Secure

Channel, giao thức OpenFlow [4], như Hình 2.9 dưới đây:

Hình 2.9 Cấu trúc của môt OpenFlow Switch

Chức năng cụ thể của từng thành phần trong chuyển mạch OpenFlow:

Flow-table: Bảng này bao gồm cac flow-entry và mỗi flow-entry có môt

Action đi kèm dùng để xử lý cac flow. Phần này được xây dựng trên nền

tảng NetFPGA.

Secure Channel: Là phần mềm dùng để kết nối bô chuyển mạch với bô điều

khiển. Nó cho phép lệnh và gói tin được truyền qua lại giữa bô điều khiển và

bô chuyển mạch sử dụng giao thức OpenFlow. Phần này được xây dựng trên

hệ điều hành Linux.

NETFPGA GROUP-KSTN-ĐTVT-K52 24

Page 41: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Giao thức OpenFlow: Giao thức cho phép chỉnh sửa flow-table từ môt bô

điều khiển từ xa, và cac nhà nghiên cứu tranh được việc phải lập trình cho bô

chuyển mạch.

Để hiểu thêm về kiến trúc bô chuyển mạch, chúng ta sẽ đi sâu vào cac khai niệm như flow, flow-entry.

Môt flow được định nghĩa là cac gói tin trùng (matching) với môt header cụ

thể bên trong flow-table. Việc so sanh giữa header của gói tin và header của môt

flow-entry để quyết định gói tin thuôc flow nào và Action đi kèm với nó có thể xảy

ra hai trường hợp: môt là so sanh trùng môt cach chính xac tất cả cac trường (match

exactly); hai là chỉ trùng môt trường nào đó (wildcard match).

Hình 2.10 Cấu tạo của môt flow-entry

Hình 2.10 miêu tả cấu tạo của môt flow-entry [4]. Mỗi môt flow-entry sẽ có

môt Action đi kèm với nó. Đối với chuyển mạch OpenFlow chuyên dụng, có 3 loại

cơ bản sau:

Forward những gói tin của luồng này tới môt port cho trước. Action này cho

phép những gói tin được định tuyến trong mạng.

Đóng gói và forward những gói tin của luồng này tới môt bô điều khiển. Gói

tin được chuyển tới Secure Channel nơi mà nó được đóng gói và gửi tới bô

điều khiển. Action này được sử dụng đối với gói tin đầu tiên của môt luồng

mới và bô điều khiển sẽ quyết định có đưa nó vào trong flow-table hay

không. Hoặc Action này được sử dụng trong cac thí nghiệm nhằm mục đích

forward tất cả cac gói tin tới bô điều khiển để xử lý.

NETFPGA GROUP-KSTN-ĐTVT-K52 25

Page 42: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Hủy bỏ (Drop) cac gói tin của luồng này. Action này được sử dụng cho mục

đích an ninh mạng nhằm chống lại tình trạng tấn công DoS (Denial of

Service) hoặc làm giảm cac lưu lượng giả được phat tan trên mạng.

Thành phần cuối cùng của môt flow-entry là Counters. Counters dùng để theo

dõi số lượng gói tin hoặc byte và thời gian kể từ khi gói cuối cùng trùng với môt

flow-entry trong flow-table (dùng để xóa đi những luồng không còn hoạt đông).

Hình 2.11 Các bước khi môt flow mới tới bô chuyển mạch OpenFlow

Hình 2.11 là cac bước để định tuyến môt flow từ môt may tính nguồn sang

môt may tính đích thông qua hai bô chuyển mạch OpenFlow [4]. Trong sơ đồ bên

trai, flow-table của hai bô chuyển mạch đều không chứa gì. Khi môt gói tin đến

trong bước 1, nó được forward tới bô điều khiển trong bước 2. Bô điều khiển kiểm

tra gói tin đến và thêm môt flow-entry (flow A) vào trong flow-table của cac bô

chuyển mạch trong bước 3. Sau đó gói tin được gửi tới may tính đích trong bước 4

và 5. Trong cac bước 6, 7, 8 bất kì gói tin mới nào thuôc về cùng môt flow (flow A

của gói tin thứ 1) sẽ được định tuyến trực tiếp tới may tính đích.

2.2.2 Giới thiệu về NetFPGA

NetFPGA là môt nền tảng phần cứng gia rẻ, được thiết kế chủ yếu nhằm mục

đích là làm công cụ cho việc giảng dạy và nghiên cứu cac thiết kế phần cứng mạng

như bô định tuyến, bô chuyển mạch, card mạng... NetFPGA đang được phổ biến môt

NETFPGA GROUP-KSTN-ĐTVT-K52 26

Page 43: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

cach rông rãi tới cac sinh viên, giảng viên và cac nhà nghiên cứu và những người

quan tâm tới việc thử nghiệm cac ý tưởng mới liên quan đến phần cứng mạng tốc đô

cao.

Trong đồ an này, bô chuyển mạch OpenFlow được xây dựng trên nền tảng

NetFPGA (Hình 2.12).

Hình 2.12 Nền tảng NetFPGA

Nền tảng NetFPGA bao gồm ba thành phần chính: phần cứng, phần mềm,

gateware.

2.2.2.1 Phần cứng

Phần cứng (kit NetFPGA) là môt chiếc PCI Card bao gồm cac thành phần

chính sau:

- Xilinx VirtexTM-II pro 50

- 4x1 Gbps Ethernet ports sử dụng lõi MAC mềm

- 4.5 Mb SRAM và 64 Mb DDR2

NETFPGA GROUP-KSTN-ĐTVT-K52 27

Page 44: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

- Môt chip FPGA Spartan II dùng để làm khối Control Logic cho PCI

interface

- Kit NetFPGA giao tiếp với may tính thông qua đường bus PCI.

Sơ đồ khối chi tiết cac thành phần phần cứng cũng như cach sắp xếp của

chúng trong kit NetFPGA được minh họa trên Hình 2.13[4].

Hình 2.13 Sơ đồ khối chi tiết các thanh phần trong kit NetFPGA

2.2.2.2 Gateware

Gateware là mã nguồn Verilog để tạo ra khối phần cứng trên chip FPGA

VirtexTM-II pro. Cac thiết kế trên nền tảng NetFPGA được thiết kế theo từng mức

với chức năng nhiệm vụ khac nhau như trên Hình 2.14. Trong đó:

- nf2_top là mức cao nhất: Chứa cac tín hiệu (signal) đầu vào, đầu ra nối

cac thiết bị ngoại vi bên ngoài như thạch anh, cổng mạng, …

- nf2_core chứa cac thành phần quan trọng cần có với mọi dự an làm việc

với NetFPGA như cac hàng đợi, bô điều khiển thanh ghi cpci, …

NETFPGA GROUP-KSTN-ĐTVT-K52 28

Page 45: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

- user data path là môt thành phần trong nf2_core. Mối dự an khac nhau sẽ

bao gồm môt cấu trúc khac nhau. Sự khac biệt giữa dự an bô chuyển

mạch OpenFlow với cac dự an khac như bô định tuyến OpenFlow là ở

đây.

Hình 2.14 Cấu trúc đơn giản môt dự án với NetFPGA

Mỗi mức trong môt dự an đều được thiết kế thành cac modules nhằm mục

đích dễ dàng mở rông và cac modules này được kết nối với nhau tạo thành môt

pipeline. Cấu trúc của pipeline được mô tả ở Hình 2.15 [4].

Hình 2.15 Cấu trúc pipeline của các modules

NETFPGA GROUP-KSTN-ĐTVT-K52 29

Page 46: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Có hai loại bus chính là: packet bus và register bus. Packet bus sử dụng để

xử lý gói tin và register bus mang thông tin trạng thai và điều khiển giữa cac

modules phần cứng và phần mềm.

2.2.2.3 Phần mềm

Phần mềm ở đây là phần mềm điều khiển NetFPGA, chúng bao gồm hệ điều

hành Linux cho PC, driver cho kit NetFPGA, cac phần mềm tạo ra giao diện giữa

người dùng và thiết bị mạng, cac công cụ thiết kế của Xilinx như ISE, XPS.

Hình 2.16 Sơ đồ tổng quát của hệ thống NetFPGA

2.2.3 Lam việc với môt dự án NetFPGA

2.2.3.1 Cấu trúc thư mục của một dự án NetFPGA

Cac dự an sử dụng nền tảng NetFPGA đều có môt cùng môt cấu trúc thư mục

lưu trữ dữ liệu cũng như cac file thiết kế, phần mềm như dưới đây:

netfpga {Base directory}

NETFPGA GROUP-KSTN-ĐTVT-K52 30

Page 47: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

bin {Scripts for simulation/synthesis/register gen}

bitfiles {Compiled hardware bitfiles}

lib {Libraries and software tools}

C {C libraries/programs}

java {Java libraries}

Makefiles {Makefile templates used for sim/synth}

Perl5 {Perl libraries}

python {Python libraries}

release {XML files for packaging}

scripts {Utility scripts}

verilog

contributed {Contributed Verilog modules}

core {Official Verilog modules}

xml {XML schemas}

projects {project directory}

OpenFlow_switch {contributed project}

doc {documentation}

include {project.xml, project specific module

XML}

lib {Perl and C headers}

regress {Regression tests}

src {non-library verilog}

sw {Project-specific software}

synth {Synthesis directory (contains all .xco

files)}

verif {Simulation tests}

Trong đó, netfpga là thư mục gốc (base directory) nằm ở đường dẫn

/root/netfpga

Thư mục bin chứa cac script để mô phỏng (nf_run_test.pl), sinh ra cac

thanh ghi (nf_register_gen.pl), chạy cac regress test

(nf_regress_test.pl)…

Thư mục bitfiles chứa những file bit dùng để nạp xuống chip FPGA

Virtex 2 Pro như OpenFlow_switch.bit.

NETFPGA GROUP-KSTN-ĐTVT-K52 31

Page 48: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Thư mục lib/C chứa cac chương trình C như nf_download để nạp file bit

xuống chip, cac thư viện cho phép phần mềm viết trên may tính có thể đọc ghi cac

thanh ghi trên kit NetFPGA.

Thư mục lib/Makefiles chứa cac Makefile phục vụ mục đích tổng hợp và

biên dịch source code Verilog để mô phỏng hoặc tạo ra file bit.

Thư mục lib/Perl5 chứa cac thư viện Perl để tạo ra cac file dữ liệu gói tin

đầu vào, cac file dữ liệu gói tin mong muốn nhằm mục đích mô phỏng hoặc test trên

phần cứng thật.

Thư mục lib/scripts chứa cac file script để nạp khối PCI controller

xuống chip Spartan 2 (cpci_reprogram.pl), để chạy mô phỏng (run.pl)…

Thư mục lib/verilog/contributed chứa cac module phần cứng (dưới

dạng source code Verilog) do người dùng đóng góp cho dự an NetFPGA.

Thư mục lib/verilog/core chứa cac module phần cứng được sử dụng lại

trong nhiều cac dự an netFPGA như module sram_arbiter, input_arbiter,

output_queues, output_port_lookup… Đặc biệt tac giả quan tâm ở đây là

module testbench, module này chứa cac khối phần cứng nhằm mục đích mô

phỏng môt thiết kế bất kì trên kit NetFPGA.

Thư mục projects chứa cac dự an NetFPGA. Trong thư mục này, tac giả

quan tâm đến thư mục OpenFlow_switch.

2.2.3.2 Tạo một Project mới

Môt Project mới sẽ được tạo ra theo cac bước sau:

Tạo môt thư mục chưa project mới trong đường dẫn

netfpga/projects.

Cập nhật biến môi trường NF_DESIGN_DIR để chỉ tới thư mục chứa

project cần tạo. Ví dụ:

export

NF_DESIGN_DIR=$(HOME)/netfpga/projects/my_first_project

NETFPGA GROUP-KSTN-ĐTVT-K52 32

Page 49: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Tạo cac thư con sau bên trong thư mục project: include, src,

synth, và test. Cac thư mục con khac như doc, lib, và sw có

thể không cần thiết (Chú ý: thư mục lib sẽ được tạo ra 1 cach tự đông

khi chạy công cụ register generation).

Tạo môt file project.xml file inside the include directory.

Thêm cac module trong thư viện có sẵn vào trong file project.xml.

Thêm cac khối riêng của project (không có trong thư viện có sẵn) viết

bằng ngôn ngữ Verilog vào thư mục src.

Viết file mô tả chi tiết bằng ngôn ngữ XML cho từng module mới vừa

viết, đặt chúng trong thư mục include.

Trong cơ sở hạ tầng thử nghiệm bằng ngôn ngữ python mới, kiểm tra mô

phỏng và phần cứng (trước đó là kiểm tra hồi quy) đã được thống nhất,

do đó, môt bài kiểm tra có thể được viết môt lần và chạy cho cả kiểm tra

mô phỏng hoặc phần cứng, trừ khi cần đanh gia môt chức năng cụ thể

của phần cứng. Cac bài test nên được đặt trong thư mục test của

project. Thư mục test nên được đặt tên theo kiểu

both_<major>_<minor> nếu nó có thể được chạy cho cả mô phỏng

và phần cứng, hw_<major>_<minor> nếu chỉ có thể được chạy như là

môt bài kiểm tra phần cứng, và sim_<major>_<minor>, nếu chỉ có thể

được chạy như là môt thử nghiệm mô phỏng. Cả phần major và minor

đều phải được đặt tên sao cho không có dấu gạch dưới hoặc dấu cach

trong đó.

Copy file Makefile từ thư mục synth của reference router vào thư mục

synth của project vừa tạo.

Synthesize thiết kế cho project bằng cach chạy lệnh make trong thư mục

synth.

Viết cac bài test cho phần cứng và đặt nó trong thư mục test. Chạy với

nf_test.py

Viết cac phần mềm cần thiết và đăt trong thư mục sw.

Cac tài liệu cần thiết để làm việc với project nên đặt trong thư mục doc.

NETFPGA GROUP-KSTN-ĐTVT-K52 33

Page 50: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

2.2.4 Xây dựng bô chuyển mạch OpenFlow trên nền tảng NetFPGA

2.2.4.1 Phần mềm

Phần mềm quản lý chuyển mạch OpenFlow được mở rông từ môt phần mềm

OpenFlow tham khảo (OpenFlow reference software). Đây là môt gói phần mềm mã

mở của Linux, xây dựng môt chuyển mạch OpenFlow bằng phần mềm và có thể

download từ website OpenFlow[9]. Phần mềm OpenFlow tham khảo được chia làm

hai phần: phần không gian người dùng (user-space) và phần không gian kernel

(kernel-space).

Cac process trong user-space giao tiếp với bô điều khiển OpenFlow sử dụng

SSL (Secure Socket Layer) để mã hóa thông tin. Giao thức OpenFlow chỉ ra định

dạng của gói tin giữa chuyển mạch OpenFlow và bô điều khiển. Thông tin từ bô

chuyển mạch tới bô điều khiển có thể là thông bao môt flow mới đến hoặc thông

bao update trạng thai cac đường link. Và thông tin từ bô điều khiển tới bô chuyển

mạch như yêu cầu thêm bớt cac flow-entry được trao đổi giữa cac process của

không gian người dùng và kernel module thông qua cac lời gọi hệ thống IOCTL.

Kernel module chịu trach nhiệm bảo trì cac flow-tables, xử lý gói tin và

update cac số liệu thống kê. Mặc định, kernel module của bô chuyển mạch tham

khảo sẽ tạo ra cac flow-table bằng phần mềm và forward cac gói tin qua card mạng

của may tính.

Kernel module có khả năng mở rông bằng cach cho phép cac module phần

cứng đăng kí cac flow-table thêm vào. Cac flow-table của phần cứng sẽ có quyền

ưu tiên cao hơn cac flow-table của phần mềm. Cac nhà phat triển có thể mở rông hệ

thống tham khảo bằng cach thêm môt NetFPGA OpenFlow Kernel Module. Kernel

module này sẽ sử dụng cac interface của kernel module tham khảo để kết nối cac

flow-table của cả phần cứng và phần mềm lại với nhau.

Khi môt gói tin đến kit NetFPGA, nếu gói tin này được so sanh trùng với môt

flow-entry đã tồn tại trong flow-table của phần cứng sẽ được forward trong phần

cứng với tốc đô cao. Nếu gói tin không trùng với môt flow-entry nào trong flow-

NETFPGA GROUP-KSTN-ĐTVT-K52 34

Page 51: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

table, ví dụ flow mới, sau đó sẽ gửi tới kernel module và kernel module sẽ forward

gói tin tới bô điều khiển.

Nếu flow-table của phần cứng đầy, flow-entry mới sẽ được chèn vào flow-

table của phần mềm. Những gói tin tiếp theo thuôc những flow như thế sẽ không

được xử lý ở phần cứng mà sẽ được forward lên phần mềm để xử lý.

2.2.4.2 Phần cứng

Việc xây dựng bô chuyển mạch OpenFlow trên kit NetFPGA được dựa trên

mô hình Pipeline. Hình 2.17 mô tả kiến trúc đơn giản trong nf2_core.

Hình 2.17 Mô hình Pipeline áp dụng cho việc thiết kế phần cứng mạng

Khối user data path như đã nói ở mục 2.2.2.2 là phần quan trọng trong dự an

này. Nó bao gồm ba khối chính là Imput Arbiter, Output Port Lookup, Output

Queus. Trong phần tổng quan này, tac giả chỉ trình bày khối chính và quan trọng

nhất là khối Output Port Lookup.

Khối Output Port Lookup sẽ tiến hành so sanh header của cac gói tin tới với

cac flow-entry sử dụng 10 trường trong mỗi flow-entry. Cac flow-table 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 cac flow-entry và hỗ trợ match wildcard. Sơ đồ hoạt đông của khối

Putput Port Lookup được mô tả trong Hình 2.18 dưới đây:

NETFPGA GROUP-KSTN-ĐTVT-K52 35

Page 52: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Hình 2.18 Sơ đồ hoạt đông của khối Output Port Lookup

Các module trong datapath[4]:

Khối A sẽ chọn môt trong số cac đầu vào MAC RxQ, CPU RxQ để lấy gói tin

đưa vào xử lý.

Khối B sẽ lấy ra cac trường cần thiết trong header của gói tin và ghép lại với

nhau. Cac trường được lấy ra là: MAC đích, MAC nguồn, Ethernet Type, IP nguồn,

IP đích, IP protocol, TCP hoặc UDP port nguồn, TCP hoặc UDP port đích, input

port. Tất cả cac trường này ghép lại với nhau tạo ra môt flow header. 10 trường trên

ghép lại với nhau tạo thành 1 flow-header, đối với gói tin Ipv4 mỗi flow-header này

có kích thước 155 bits.

NETFPGA GROUP-KSTN-ĐTVT-K52 36

Page 53: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Sau đó flow header được đưa vào hai khối Exact Lookup (bao gồm các khối

C, D, M) và Wildcard Lookup. Wildcard lookup cho phép thực hiện phép tìm kiếm

wildcard với cac flow entry.

Khối C sẽ tính toan hai hàm hash đối với flow-header trên (thêm 5 bit nữa

thành 160 bits) và trả về hai chỉ số (index). 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 khac nhau. Theo cach này, giả sử rằng ít nhất có môt chỉ số sẽ tìm

được entry 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 (lookup) 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 lookup

tuần tự. Flow-table chứa cac flow-entry. Mỗi flow-entry chứa 155 bits flow-header

(để chắc chắn môt lần nữa là có môt flow-entry ứng với gói tin tới đã tồn tại trong

flow-table) và 152 bits sử dụng để lưu Action. Action bao gồm môt bit để xac định

flow-entry này có hợp lệ không, 3 bits xac định port đích (port ra vật lý trên chuyển

mạch, port tới CPU và null port- hủy gói tin), 48 bits địa chỉ MAC nguồn và 48 địa

chỉ MAC đích dùng để overwrite header hiện tại của gói tin, 20 bit packet counter,

32 bit byte counter.

Khối M là khối điểu khiển SRAM. Mỗi 16 chu kì xung nhịp, SRAM

controller có thể đọc 2 flow-header, cập nhật gia trị counter cho môt flow-entry, thực

hiện đọc hoặc ghi 4 bytes dữ liệu từ CPU.

307 bits flow-entry được lưu trong hai bank của bô nhớ SRAM. NetFPGA kit

có 4 Mb SRAM nên có khả năng chứa được 109297 flow-entry.

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 lookup trong toàn bô flow-table chỉ với môt chu kì xung nhịp.

Khối này cũng cho phép thực hiện lookup với cac flow-entry chứa wildcard (tìm

kiếm với chỉ môt vài kí tự ).

NETFPGA GROUP-KSTN-ĐTVT-K52 37

Page 54: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 2ƯƠ

Khối G sẽ chọn môt trong hai kết quả từ Exact lookup và Wildcard Lookup.

Kết quả của qua trình lookup là Action tương ứng với gói tin.

Khối H là bô đệm gói tin khi phần header của gói tin được xử lý trong cac

khối khac. Khi cac khối khac kiểm tra phần header và tìm thấy có flow-entry tương

ứng với header của gói tin, gói tin sẽ được forward đến port 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 forward đến CPU để xử lý.

Khối I : có nhiệm vụ cập nhật bô đếm tương ứng với cac flow entry và thêm

thông tin Action của gói tin vào vị trí đặt sắn trong Header.

Tóm lại, phần cứng được điều khiển bởi may tính thông qua cac thanh ghi

anh xạ bô nhớ (memory mapped registers). Và gói tin được truyền qua lại giữa may

tính và phần cứng thông qua DMA (Direct Access Memory).

2.3 Kết luận chương

Qua chương này, cac hiểu biết chung về công nghệ FPGA và chuyển mạch

OpenFlow trên cơ sở NetFPGA đã được trình bày. Nhóm tac giả hy vọng người đọc

sẽ có môt cai nhìn tổng quan và nắm bắt được những kiến thức về chuyển mạch

OpenFlow trên nền tảng NetFPGA. Trong chương kế tiếp, nhóm tac giả sẽ giới thiệu

cach thiết lập hệ thống mạng sử dụng công nghệ OpenFlow trong thực tế trên quy

mô phòng thí nghiệm.

NETFPGA GROUP-KSTN-ĐTVT-K52 38

Page 55: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Chương 3. Triển khai hệ thống mạng OpenFlow trên nền tảng kit NetFPGA trong thực tế

Sinh viên: Nguyễn Duy LinhLê Thái Hưng

Để thực hiện yêu cầu của đồ an cũng như phục vụ cho qua trình nghiên cứu,

cac thành viên trong nhóm đã xây dựng môt mạng nôi bô sử dụng chuyển mạch

OpenFlow trên nền tảng NetFPGA trong thực tế dựa trên mô hình Elastic Tree [19].

3.1 Giới thiệu mô hình thử nghiệm

Môi trường thử nghiệm được triển khai dựa trên mô hình tham khảo Elastic

Tree, Hình 3.19 mô tả môt hệ thống đap ứng linh hoạt năng lượng tiêu thụ bởi mạng

trung tâm dữ liệu.

Hình 3.19 Sơ đồ khối mô hình Elastic Tree

Hệ thống bao gồm có ba khối chức năng chính: tối ưu, định tuyến và điều

khiển công suất. Chức năng chính của bô tối ưu là tính toan ra được đồ hình mạng

tối ưu, tiêu thụ ít năng lượng mà vẫn đap ứng được nhu cầu lưu lượng trong mạng.

NETFPGA GROUP-KSTN-ĐTVT-K52 39

Page 56: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Cac yêu cầu đầu vào của khối này gồm có đồ hình mạng, ma trận lưu lượng, mô hình

công suất của chuyển mạch, khả năng chống lỗi muốn đạt được. Đầu ra là đồ hình

tối ưu với cac thành phần mạng cần phải hoạt đông sẽ được đưa đến bô định tuyến

và điều khiển công suất. Bô điều khiển công suất sẽ thay đổi trạng thai tắt bật của

cac thiết bị mạng trong mạng trong khi bô định tuyến tiến hành định tuyến cho cac

luồng theo đồ hình mới.

3.2 NOX controller

Hiện nay, trên thế giới đã phat triển môt số bô điều khiển (controller) giúp

cho người sử dụng phat triển cac ứng dụng bằng cac ngôn ngữ lập trình khac nhau

dựa trên nền tảng OpenFlow:

- Beacon: viết bằng Java do đại học Stanford phat triển

- Floodlight: viết bằng Java do Apache phat triển

- Maestro: viết bằng Java do đại học Rice phat triển

- NodeFlow: viết bằng Javascript.

- NOX: viết vằng C++ hoặc là Python do đại học Stanford phat triển [17].

- Trema: viết bằng C hoặc Ruby do NEC phat triển.

Trong số cac bô điều khiển trên, NOX là bô điều khiển được sử dụng kha là

phổ biến. NOX là môt phần mềm mã nguồn mở dùng điều khiển mạng cac

OpenFlow switch. Mục đích của NOX nhằm cung cấp môt platform cho viết cac

phần mềm quản lý mạng (như cac ứng dụng định tuyến, tường lửa…) sử dụng C++

hoặc Python. Tuy vẫn còn trong qua trình phat triển, nhưng NOX hiện nay đã được

sử dung trong môt số cac mạng lớn. NOX hỗ trợ cả cac mạng doanh nghiệp lớn gồm

hàng trăm switch (hàng ngàn server).

Mục đích chính của NOX gồm có:

- Cung cấp môt platform cho phép người lập trình, phat triển mạng triển khai

cac ý tưởng mới trong lĩnh vực mạng, sử dụng phần cứng thật.Cac nhà phat

triển có thể điều khiển tất cả cackết nối trong mạng gồm có: forwarding,

routing…Ngoài ra NOX còn điều khiển cả flow-table trong switch.

NETFPGA GROUP-KSTN-ĐTVT-K52 40

Page 57: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

- Cung cấp phần mềm quản lý mạng hữu ích cho cac tổng đài (operator), gồm

có việc quản lý tập trung cho tất cả cac switch trong mạng, điều khiển truy

nhập của người dùng.

Phương thức hoạt đông của NOX:

- NOX chạy riêng rẽ trên môt may và quản lý việc chuyển tiếp cac bản tin

giữa nhiều switch khac nhau.

- NOX cung cấp cac giao diện lập trình giúp cho nhà phat triển sử dụng dễ

dàng lấy được thông tin về sự kiện trong mạng, can thiệp vào lưu lượng,

điều khiển cac quyết định chuyển mạch của switch và tạo được lưu lượng.

- Khi có flow mới xuất hiện trọng mạng, cac gói đầu tiên sẽ được gửi đến bô

điều khiển mạng NOX, tại đây có thể thực hiện được: quyết định xem lúc

nào khi nào sẽ chuyển tiếp cac gói đi trong mạng, thu thập cac thông tin

thống kê, chỉnh sửa được gói trong flow đó hoặc có thể xem thêm được về

cac gói khac trong cùng flow để thu thập được thêm nhiều thông tin.

Hình 3.20 Mạng OpenFlow switch với bô điều khiển mạng NOX

Hình 3.20 mô tả đồ hình mạng với cac switch OpenFlow và bô điểu khiển

mạng NOX (NOX Controller), ở đây cac phần mềm điều khiển mạng NOX chạy trên

NETFPGA GROUP-KSTN-ĐTVT-K52 41

Page 58: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

môt may tính và điều khiển bảng định tuyến của nhiều switch. Mạng gồm nhiều

OpenFlow switch và nhiều server kết nối với nhau. NOX đơn thuần chỉ là môt

platform, việc điều khiển mạng được thực hiện bởi cac phần tử chức năng trong

NOX gọi là NOX component, mỗi component thực thi môt chức năng riêng biệt như

định tuyến, chuyển mạch, xac thực... Có thể chạy môt lúc nhiều NOX component

với cac chức năng điều khiển khac nhau làm cho việc điều khiển và quản lý mạng trở

nên toàn diện hơn. Cac ứng dụng trong bô điều khiển mạng NOX có thể kết hợp với

nhận biết cac sự kiện trong mạng (network event), can thiệp vào lưu lượng trong

mạng, điều khiển định tuyến của cac switch và tạo ra lưu lượng.

Các thanh phần của NOX:

Core apps: cung cấp chức năng cho cac ứng dụng mạng và cac dịch vụ

web.Thành phần Core apps được đặt tại thư mục: src/nox/coreapps/

Network apps: cac ứng dụng để quản lý mạng

- Discovery: theo dõi cac liên kết giữa cac thiết bị chuyển mạchđiều khiển.

- Topology: cung cấp môt bản ghi trong bô nhớ của tất cả cac liên kết hiện lên

trong mạng.

- Authenticator: theo dõi vị trí của may chủ và thiết bị chuyển mạch trên

mạng.

- Routing:là thành phần chịu trach nhiệm tính toan đường đi..

Thành phần Network apps được đặt tại thư mục: src/nox/netapps/

Web apps: Cac ứng dụng web trong NOX được sử dụng để quản lý NOX thông

qua dịch vụ web.

- Webservice: cung cấp giao diện web dịch vụ cho cac ứng dụng NOX.

- Webserver: là ứng dụng lưu trữ cac giao diện điều khiển.

- Webserviceclient

Thành phần web được đặt tại thư mục: src/nox/webapps/

Ngoài ra chúng ta có thể tự phat triển thêm cac chức năng khac để phục vụ

mục đích riêng hoặc chia sẻ cùng công đồng. Cac nhà phat triển khuyến khích mọi

NETFPGA GROUP-KSTN-ĐTVT-K52 42

Page 59: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

người cùng phat triển, chia sẻ và đóng góp giúp cho cac phiên bản NOX tiếp theo

được hoàn thiện hơn.

Cài đặt NOX Destiny trên nền tảng hệ điều hành ubuntu 10.04:

Trước hết ta cài đặt phần mềm điều khiển NOX-dependence

wget http://OpenFlowswitch.org/downloads/debian/binary/nox-

dependencies.deb

dpkg --info nox-dependencies.deb

cd /etc/apt/sources.list.d

sudo wget http://OpenFlowswitch.org/downloads/debian/nox.list

sudo apt-get update

sudo apt-get install nox-dependencies

Sau đó, cài đặt bô NOX

git clone git://noxrepo.org/nox

cd nox

./boot.sh

mkdir build/

cd build/

./configure

make –j 5

Chạy thử NOX ở thư mục nox/build/src ở cấu hình spanning_tree. Ở

cấu hình này NOX sẽ gửi bản tin PORT_MOD yêu cầu cac thiết bị kết nối

tới tắt đi môt số port xac định.

./nox_core –v I ptcp:6633 spanning_tree

Ngoài cấu hình spanning_tree còn kha nhiều cấu hình khac như pyswitch,

router, … tuy nhiên trong khuôn khổ đồ an tốt nghiệp, chúng ta chỉ đề cập

đên cấu hình spanning_tree do nó có gửi bản tin PORT_MOD.

NETFPGA GROUP-KSTN-ĐTVT-K52 43

Page 60: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

3.3 Xây dựng chuyển mạch OpenFlow

Cac chuyển mạch OpenFlow được xây dựng trên cac may tính sử dụng hệ

điều hành CentOS 5.8 với cấu hình phần cứng: CPU Intel Pentium D Dual Core

3.2GHz, 2 GB RAM, ổ cứng dung lượng 250 GB, có sẵn card mạng tích hợp tốc đô

1Gbps và có thêm kit NetFPGA cắm vào khe PCI.

Sau khi có phần cứng phù hợp chúng ta tiến hành cài đặt phần mềm cho may tính

chứa card NetFPGA.

3.3.1 Cai đặt các gói phần mềm cơ bản

Việc cài đặt cac phần mềm cần thiết cho môt chuyển mạch OpenFlow được thực hiện theo cac bước sau:

Đăng kí để tải gói NetFPGA (NFP)

Để tải gói NFP: Đăng kí tài khoản trên FosWiki theo đường dẫn:

http://netfpga.org/foswiki/bin/view/NetFPGA/UserRegistration

Sau khi tài khoản được tạo ta có thể tự đông nhận cac email từ trang

NetFPGAWiki.

Tải gói NetFPGA (NFP)

Gói NFP bao gồm hai gói file định dạng .tar:

o Netfpga_full_x_x.tar.gz. Gói này bao gồm cac script để test và project

mẫu dưới dạng nhị phân. Thay thế kí tự ‘x’ bằng phiên bản mới nhất

(hiện tại là 3.0.1).

o Netfpga_lib.tar.gz, gói này bao gồm tất cả code Java cần thiết cho

giao diện của router.

Tải cac gói trên theo đường dẫn sau:

http://netfpga.org/foswiki/bin/view/NetFPGA/OneGig/Releases

Sau đó giải nén cac gói vào chung môt thư mục.

Gói NetFPGA Base chứa thư viện NetFPGA, driver cần thiết để chạy kit

NetFPGA và cac project mẫu tham khảo. Gói OpenFlow Switch chứa project

đầy đủ của chuyển mạch OpenFlow cũng như cac công cụ và thư viện để vận

hành nó.

NETFPGA GROUP-KSTN-ĐTVT-K52 44

Page 61: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Cài đặt hệ điều hành cho may tính

May tính Host sử dụng hệ điều hành Linux Fedora hoặc CentOS (tuy nhiên hệ

điều hành CenOS chỉ sử dụng cho cac phiên bản NetFPGA Packet từ 3.0.0

trở về trước). Ở đây, do đồng bô với dự an chuyển mạch OpenFlow chúng ta

làm việc với phiên bản 1.0.0 trên hệ điều hành CentOS.

Cài đặt phần mềm:

Cai đặt sử dụng YUM: để đơn giản hóa việc cài đặt, ta sử dụng YUM và gói RPM;

tất cả cac thành phần riêng lẻ sẽ được cài đặt 1 cach tự đông.

o Đầu tiên, đăng nhập tài khoản root hoặc dùng câu lệnh ‘su-‘

o Cài đặt RPMforge Yum như hướng dẫn theo link:

http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-

20e1f65f19ccf2f5fbf5adb30dbaf5ea963a64ae.

o Cài đặt gói NetFPGA Base

Trong của sổ terminal gõ dòng lệnh sau để cài YUM và GPG Key:

rpm -Uhv http://netfpga.org/yum/el5/RPMS/noarch/netfpga-repo-1-

1_CentOS5.noarch.rpm

Nhập tiếp dòng lệnh sau để cài gói NetFPGA Base:

yum install netfpga-base

Chú ý từ phiên bản 2.0.0 trở lên phần Java GUI đã được tach riêng để cài đặt

gói này làm theo hướng dẫn tại

http://netfpga.org/foswiki/bin/view/NetFPGA/OneGig/InstallJavaGUI20

o Tạo thư mục netfpga trong tài khoản hiện thời

Chạy script sau để copy toàn bô thư mục netfpga vào trong tài khoản của bạn

(thông thường tại: /root/netfpga).

NETFPGA GROUP-KSTN-ĐTVT-K52 45

Page 62: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Chú ý: khi chạy dòng lệnh này thư mục netfpga hiện thời sẽ bị ghi đè lên. Nếu

bạn muốn giữ lại thư mục hiện thời hãy dùng lệnh ‘mv’ thư mục netfpga hiện

tại sang vị trí khac ví dụ netfpga_backup.

Dòng lệnh sau sẽ copy thư mục NetFPGA và đặt cac biến môi trường:

/usr/local/netfpga/lib/scripts/user_account_setup/

user_account_setup.pl

Câu lệnh này còn thêm cac biến môi trường sau vào file .bashrc

- NF_ROOT

- NF_DESIGN_DIR

- NF_WORK_DIR

- PYTHONPATH

- PERL5LIB

o Khởi đông lại may tính để kết thúc qua trình cài đặt.

Cai đặt không sử dụng YUM

Để thực hiện cài đặt tối thiểu môt NetFPGA card trên môt may tính mới không sử

dụng YUM:

o Cài đặt phần mềm NetFPGA ( tối thiểu cần cài và build nf_download và

cac kernel driver cho may tính).

Cả: gói tgz (giải nén gói tgz vào thư mục gốc từ địa chỉ:

http://netfpga.org/foswiki/NetFPGA/OneGig/Releases)

Và git repository

o Cài đặt git từ gói bzip (./configure; make; sudo make install).

o Tại thư mục gốc:

git clone git://netfpga.org/netfpga.git

o Copy toàn bô bitfiles từ thư mục bitfile từ tgz vào thư mục

~/netfpga/bitfiles.

NETFPGA GROUP-KSTN-ĐTVT-K52 46

Page 63: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

o Cắm card NetFPGA vào và khởi đông. Nếu khởi đông thất bại ở lần đầu

tiên thì ta phải khởi đông lại lân nữa.

o Thêm cac trường uppermem và vmalloc vào /boot/grub/grub.conf và

khởi đông lại.

o Thực hiện cac câu lệnh sau:

sudo ln -s ~/netfpga /usr/local/netfpga

sudo ln -s

~/netfpga/lib/scripts/cpci_config_reg_access/loadregs.sh

/usr/local/sbin/loadregs.sh

sudo ln -s

~/netfpga/lib/scripts/cpci_config_reg_access/dumpregs.sh

/usr/local/sbin/dumpregs.sh

o Kiểm tra xem qua trình khởi tạo có thành công hay không:

~/netfpga/lib/scripts/cpci_config_reg_access/dumpregs.sh -f

~/defaultregs # for problem recovery later

~/netfpga/lib/scripts/cpci_config_reg_access/loadregs.sh -f

~/defaultregs # do if cpci_reprogram fails half way (usually

permissions or path problems)

sudo ~/netfpga/lib/scripts/cpci_reprogram/cpci_reprogram.pl

sudo /usr/local/bin/nf_download

/usr/local/netfpga/bitfiles/reference_nic.bit

o Thêm cac file sau vào thư mục /etc/rc.local theo hướng dẫn:

usr/local/netfpga/lib/scripts/cpci_reprogram/

cpci_reprogram.pl

/usr/local/bin/nf_download

/usr/local/netfpga/bitfiles/reference_nic.bit

ifconfig nf2c[0-3] 10.0.1[0-3].1/24 for the 4 ports

NETFPGA GROUP-KSTN-ĐTVT-K52 47

Page 64: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

o Lưu ý: nếu không chạy cpci_reprogram với tài khoản root card sẽ bị

treo và chúng ta phải khởi đông lại hoặc chạy loadregs.sh như hướng

dẫn ở trên.

o Đến bước này chúng ta có thể tải và chạy cac project phần cứng (file .bit)

khac.

Cai đặt các công cụ CAD

Cac source code của cac module đều được cung cấp trong cac file Verilog, do

đó người dùng có thể biên dich, mô phỏng và tổng hợp thành cac thiết bị cho

NetFPGA. Cac mô phỏng và tổng hợp đều được sử dụng trên môt phiên bản xac

định của cac công cụ Xilinx. Sử dụng cac phiên bản khac (cũ hơn hoặc mới hơn) đều

không đc hỗ trợ.

Cai đặt phần mềm Xinlinx ISE phiên bản 10.1 SP3:

Sau khi cài đặt phần mềm thành công, chúng ta tiến hành cập nhật phiên bản

phần mềm lên Service pack 3; đồng thời cài đặt thêm gói Update 3

Tiếp theo, chúng ta lấy bản quyền sử dụng cho gói V2Pro TEMAC

o Part Number: DO-DI-TEMAC, Ver 3.3

o Phiên bản giới hạn miễn phí: yêu cầu “Full System hardware

Evaluation”, cho phép sử dụng TEMAC trong 30 ngày , mỗi lần chạy

giói hạn 8 giờ.

o Sử dụng cho mục đích giao dục có thể nhận hỗ trợ theo đường dẫn:

http://www.xilinx.com/univ/don_program.htm

Cai đặt ModelSim

Đây là phần mềm giúp sử dụng để mô phỏng cac mạch phần cứng và xem

dạng tín hiệu trong mạch đồng thời hỗ trợ cac phần mềm testbench; chúng ta sẽ cài

đặt phiên bản sau: Version SE 6.2G.

Cai đặt ChipScope

NETFPGA GROUP-KSTN-ĐTVT-K52 48

Page 65: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Công cụ ChipScope hỗ trợ kiểm tra lỗi tín hiệu trên FPGA sử dụng bô phân

tích tín hiệu logic ngay trên chip. Chúng ta sẽ cài đặt phiên bản sau: Xilinx

ChipScope Pro Version 9.1.02i hoặc 10.1 SP3

Cai đặt các module bô nhớ

Chúng ta có thể sử dụng Script tự đông cài đặt cac module bô nhớ được cung

cấp sắn trong thư mục:

netfpga/lib/scripts/fetch_mem_models

Chúng ta cũng có thể tải và cài đặt cac module bô nhớ môt cach riêng rẽ.

3.3.2 Biên dịch va tải Driver xuống NetFPGA

Sau khi tải hoàn chỉnh cac gói phần mềm cần thiết, chúng ta phải thực hiện

biên dịch diver và cac công cụ.

Biên dịch

cd ~/netfpga/ make

Chúng ta sẽ được đầu ra đúng tại cửa sổ Terminal như sau:

Tiếp theo, chúng ta thực hiện nạp cac driver và công cụ

Cài đặt driver và khởi đông lại. Cac driver sẽ được lưu tại thư mục

/lib/modules/`uname -r`/kernel/drivers/nf2.ko, để cài đặt dùng câu lệnh:

make install

Khởi đông lại may tính. Sau khi khởi đông lại, đăng nhập bằng tài khoản

root và kiểm tra xem driver đã được tải thành công hay không:

lsmod | grep nf2

Đầu ra đúng:

NETFPGA GROUP-KSTN-ĐTVT-K52 49

Page 66: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

nf2 28428 0

Thực hiện việc kiểm tra giao diện NetFPGA bằng câu lệnh:

ifconfig -a | grep nf2

Nếu việc cài đặt thành công chúng ta sẽ được kết quả như sau trên màn hình

Terminal:

nf2c0 Link encap:Ethernet HWaddr 00:4E:46:32:43:00

nf2c1 Link encap:Ethernet HWaddr 00:4E:46:32:43:01

nf2c2 Link encap:Ethernet HWaddr 00:4E:46:32:43:02

nf2c3 Link encap:Ethernet HWaddr 00:4E:46:32:43:03

Lập trình cho CPCI

Chạy Script sau để lập trình cho CPCI:

/usr/local/sbin/cpci_reprogram.pl --all

(to reprogram all NetFPGAs in a system)

Đẩu ra đúng:

Loading the CPCI Reprogrammer on NetFPGA 0

Loading the CPCI on NetFPGA 0

CPCI on NetFPGA 0 has been successfully reprogrammed

Mỗi lần khởi đông may tính, ta phải tải lại CPCI!

3.3.3 Cai đặt NetFPGA OpenFlow switch

Chúng ta thực hiện cài đặt từ Stanford Git:

sudo yum -y install git automake pkgconfig libtool gcc

NETFPGA GROUP-KSTN-ĐTVT-K52 50

Page 67: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Nếu may tính chưa được cập nhật, chúng ta cần phải cài thêm gói Autoconf 2.60 hoặc mới hơn theo câu lệnh sau:

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.63.tar.gz

tar xvzf autoconf-2.63.tar.gz

cd autoconf-2.63

./configure --prefix=/usr

make

sudo make install

cd

Tải mã nguồn OpenFlow :

git clone git://OpenFlow.org/OpenFlow.git

cd OpenFlow

git checkout -b 1.0.0-netfpga origin/devel/tyabe/1.0.0-

netfpga

./boot.sh

Tải file .bit dành cho NetFPGA và giải nén theo đường dẫn:

cd (thư mục chứa OpenFlow)/hw-lib/nf2

wget

http://OpenFlow.org/downloads/netfpga/OpenFlow_switch.bit.100

_3.tar.gz

tar xfvz OpenFlow_switch.bit.100_3.tar.gz

Tiếp theo, ta tiến hành build mã nguồn chuyển mạch OpenFlow:

cd (your OpenFlow directory)

./configure --enable-hw-lib=nf2

make

sudo make install

Cập nhật biến môi trường OF_ROOT và PERL5LIB:

NETFPGA GROUP-KSTN-ĐTVT-K52 51

Page 68: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

cd ~/

cp OpenFlow/regress/scripts/env_vars .

vim env_vars

Tìm dòng lệnh như sau:

export PERL5LIB=${OFT_ROOT}/lib/Perl5:${PERL5LIB}

Bỏ :${PERL5LIB} như dòng dưới đây bởi vì PERL5LIB trong thư mục NetFPGA sẽ làm cac test thất bại:

export PERL5LIB=${OFT_ROOT}/lib/Perl5

Lưu file env_vars lại.

3.3.4 Xây dựng mạng chuyển mạch OpenFlow

Sau khi hoàn tất qua trình cài đặt cac phần mềm cần thiết, để có mạng

OpenFlow hoàn chỉnh, cần có thêm môt may tính cài phần mềm điều khiển (ví dụ

như NOX controller). Tiếp theo, khởi đông bô điều khiển NOX, nối dây mạng từ

may tính này vào cac may làm chuyển mạch OpenFlow qua cổng Gigabit Ethernet

có sẵn.

Khởi đông chuyển mạch OpenFlow bằng cac câu lệnh sau:

sudo su

cd /home/OpenFlow/OpenFlow

nf2_download hw-lib/nf2/OpenFlow_switch.bit

ofdatapath punix:/var/run/test -i nf2c0,nf2c1,nf2c2,nf2c3 &

ofprotocol unix:/var/run/test tcp:<host name or IP address of

your controller> &

Lệnh ofdatapath khởi đông chuyển mạch trong khi lệnh ofprotocol kết

nối chuyển mạch tới bô điều khiển.

NETFPGA GROUP-KSTN-ĐTVT-K52 52

Page 69: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

Trong đó thay cac trường hostname và Ip address bằng địa chỉ Ip của may cài

bô điều khiển NOX và gia trị cổng TCP dùng để kết nối tới chuyển mạch (mặc định

là 6633). Ví dụ: địa chỉ IP của may điều khiển là 5.5.5.5 thì câu lệnh sẽ là:

ofprotocol unix:/var/run/test tcp:5.5.5.5:6633 &

Lưu ý, trong cac câu lệnh trên punix: /var/run/test chính là file mô tả

UNIX socket dùng để đại diện và giao tiếp với chuyển mạch.

Nối cac may tính vào cac cổng trên NetFPGA của switch, chạy thử lệnh ping

giữa cac may bất kì và xem kết quả. Khi chưa cắm bô điều khiển vào, kết quả là cac

may tính không thể ping được cho nhau, hay chuyển mạch không chuyển tiếp cac

gói tin đến cac may tính tương ứng. Nguyên nhân là do lúc này flow table trong

chuyển mạch còn trống nên no sẽ không biết phải xử lý thế nào với cac gói tin đến.

Để chuyển mạch có thể chuyển tiếp gói tin, cac flow entry cần được thêm vào

trong flow table của chuyển mạch. Thực hiện thêm flow bằng câu lệnh dpctl add-

flow, ví dụ:

dpctl add-flow unix:/var/run/test in_port=1, actions=output:2

Theo lệnh này, khi gói tin vào từ port có số thứ tự là 1 sẽ được chuyển tiếp tới

port 2, có thể thêm tham số khac như thời gian tồn tại của flow entry này vào (đề

phòng entry bị xóa trước khi thử nghiệm):

dpctl add-flow unix:/var/run/test in_port=1,

idle_timeout=120, actions=output:2 //thời gian tồn tại

của entry là 120 giây.

Ngoài ra, muốn xem flow table trong chuyển mạch dùng câu lệnh dptcl dump-

table.

NETFPGA GROUP-KSTN-ĐTVT-K52 53

Page 70: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

dpctl dump-tables unix:/var/run/test

Màn hình Terminal sẽ hiển thị thông tin về cac Flow Table như sau:

[root@dhcppc21 ~]# dpctl dump-tables unix:/var/run/teststats_reply (xid=0xc530a0bb): flags=none type=3(table) 3 tables 0: nf2 : wild=0x00018, max= 32792, active=0 lookup=2058812348, matched=3176889822 1: hash2 : wild=0x00000, max=131072, active=0 lookup=0, matched=0 2: linear : wild=0x3fffff, max= 100, active=0 lookup=0, matched=0

Khi muốn xem cac flow được chứa trong chuyển mạch, chúng ta sử dụng câu lệnh:

dpctl dump-flows unix:/var/run/test

Kết quả, màn hình sẽ hiển thị cac flow được lưu trong may như sau (ví dụ dưới đây

có ba flow):

root@dhcppc21 ~]# dpctl dump-flows unix:/var/run/teststats_reply (xid=0x93585628): flags=none type=1(flow)cookie=0, duration_sec=2s, duration_nsec=762000000s,

table_id=0, priority=32768, n_packets=0, n_bytes=0, idle_timeout=1000,hard_timeout=0,in_port=4,actions=output:3 cookie=0, duration_sec=10s, duration_nsec=402000000s, table_id=0, priority=32768, n_packets=0, n_bytes=0, idle_timeout=1000,hard_timeout=0,in_port=3,actions=output:4 cookie=0, duration_sec=36s, duration_nsec=952000000s, table_id=0, priority=32768, n_packets=0, n_bytes=0, idle_timeout=1000,hard_timeout=0,in_port=2,actions=output:4

Người dùng sử dụng câu lệnh dưới đây nếu muốn xóa môt flow khỏi bảng định

tuyến trong chuyển mạch:

NETFPGA GROUP-KSTN-ĐTVT-K52 54

Page 71: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 3ƯƠ

dpctl del-flows unix:/var/run/test

Cac cach dùng khac của công cụ dpctl có thể xem thêm bằng cach chạy lệnh sau:

man dptcl

3.4 Kết luận chương

Trong chương này, nhóm tac giả đã thực hiện việc xây dựng mạng nôi bô sử

dụng cac chuyển mạch OpenFlow dựa trên nền tảng NetFPGA trong môi trường

thực tiễn. Việc xây dựng hệ thống mạng là cơ sở cho cac nhóm nghiên cứu khac đặc

biệt là nhóm nghiên cứu về giải thuật tiết kiệm năng lượng cho mạng OpenFlow

trong dự an ECODANE.

NETFPGA GROUP-KSTN-ĐTVT-K52 55

Page 72: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Chương 4. Thiết kế bô điều khiển chuyển mạch

Trong chương này và chương tiếp theo, tac giả sẽ trình bày về cac giải phap

về phần cứng nhóm tac giả đưa ra nhằm tiết kiệm năng lượng cho trung tâm dữ liệu.

Giải phap phần cứng ở đây bao gồm cac giải phap không liên quan đến phần định

tuyến đường đi của gói tin. Hai giải phap được đưa ra ở đây là:

- Thiết kế bộ điều khiển chuyển mạch (tạo phần cứng đôc lập có khả năng đưa

chuyển mạch sang trạng thai năng lượng thấp) trình bày ở Chương 4.

- Thiết kế chuyển mạch với chức năng tiết kiệm năng lượng (tạo ra chuyển

mạch có khả năng chuyển sang trạng thai năng lượng thấp) trình bày ở

Chương 5.

Cac giải phap này xuất phap từ việc chuyển trạng thai của chuyển mạch về

trạng thai tiết kiệm năng lượng (trạng thai không dùng hết cac port, trạng thai ngủ

đông hay sleep mode). Với mỗi port của OpenFlow switch được ngắt sẽ tiết kiệm

được xấp xỉ 1W [11] và với mỗi chuyển mạch 4 port được tắt đi sẽ tiết kiệm được

xấp xỉ 10W (4W cho 4 port và 6W cho phần lõi) [9].

Giải phap Thiết kế bộ điều khiển chuyển mạch chủ yếu để thử nghiệm giao

thức OpenFlow, giao tiếp giữa bô điều khiển chuyển mạch với môt phần cứng cụ

thể. Từ đó, tac giả sẽ ap dụng phần giao tiếp này lên chuyển mạch OpenFlow để tạo

ra môt chuyển mạch mới có chức năng tiết kiệm năng lượng ở chương sau.

4.1 Giải pháp tiết kiệm năng lượng

Xuất phat từ mục tiêu đã nêu, tac giả thiết kế môt bô điều khiển chuyển mạch

đôc lập, nhận lệnh trực tiếp từ bô điều khiển và tắt nguồn hoặc ngắt cac link giữa

cac chuyển mạch.

Bô điều khiển chuyển mạch (OpenFlow Switch controller) – viết tắt là OSC

nhằm phân biện với bô điều khiển controller có sẵng trong mô hình mạng

OpenFlow.

NETFPGA GROUP-KSTN-ĐTVT-K52 56

Page 73: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Hình 4.21 Sơ đồ mô tả vị trí của OSC trong mạng chuyển mạch

Trên Hình 4.21, OSC nhận bản tin điều khiển từ bô điều khiển (Controller)

và tiến hành điều khiển môt chuyển mạch (S1) và cac đường kết nối của chuyển

mạch này với cac chuyển mạch khac.

Ngoài ra, OSC

có khả năng điều khiển

nhiều chuyển mạch

khac nhau và liên kết

với nhau tạo thành

mạng cac OSC. Hình

4.22 mô tả môt mạng

OSC đơn giản gồm 1

Switch/Hub.

Hình 4.22 Mạng OSC đơn giản

4.2 Yêu cầu chức năng va phi chức năng

Mạch thiết kế cần có đủ cac yêu cầu chức năng sau:

- Giao tiếp được với bô điều khiển bằng giao thức OpenFlow.

NETFPGA GROUP-KSTN-ĐTVT-K52 57

Page 74: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

- Định kì gửi bản tin thông bao trạng thai của mình tới bô điều khiển.

- Khi nhận được yêu cầu từ bô điều khiển, có khả năng chuyển trạng thai cac

chuyển mạch từ trạng thai năng lương cao xuống thấp, đóng ngắt cac link kết

nối giữa chúng.

Yêu cầu phi chức năng:

- Tiết kiệm năng lượng tối đa nhằm giảm điện năng tiêu thụ trong toàn bô

mạng.

- Khả năng đap ứng của hệ thống không cần qua nhanh.

- Gia thành phải rẻ để sản xuất số lượng lớn trong trung tâm dữ liệu.

- Có khẳ năng chạy liên tục trong thời gian dài.

- Có khả năng điều khiển nhiều port và chuyển mạch.

4.3 Thiết kế phần cứng

Dựa trên cac yêu cầu chức năng và phi chức năng, tac giả đi vào thiết kế

phần cứng của OSC.

Hình 4.23 Sơ đồ của chuyển mạch trước va sau khi có OSC

4.3.1 Sơ đồ khối thiết kế

Bô OSC sẽ gồm ba khối chính như Hình 4.24 và sơ đồ chi tiết trên Hình 4.25:

Khối đóng ngắt port (ON/OFF Port Circuit):

Khối đóng ngắt chuyển mạch (ON/OFF Switch Circuit):

NETFPGA GROUP-KSTN-ĐTVT-K52 58

Page 75: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Khối điều khiển (Main controller):

Hình 4.24 Sơ đồ khối cơ bản của OSC

Hình 4.25 Sơ đồ khối chi tiết của OSC

4.3.2 Khối điều khiển (Main controller):

Khối này có nhiệu vụ đọc bản tin điều khiển từ bô điều khiển gửi xuống, bóc

tach bản tin, điều khiển cac khối đóng mở, đồng thời cũng gửi tình trạng cac link

lên cho bô điều khiển thông qua OSC Network bằng giao thức OpenFlow. Tốc đô

trao đổi với bô điều khiển không cần nhanh.

NETFPGA GROUP-KSTN-ĐTVT-K52 59

Page 76: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

4.3.2.1 Vi điều khiển ARM

Có nhiều vi điều khiển có thể đap ứng những yêu cầu này như dòng PIC của

Microchip, AVR của Atmel, ARM của Texas… Tuy nhiên, yêu cầu tiết kiệm năng

lượng cho toàn bô hệ thống là môt yêu cầu quan trọng,vì vậy, sau môt thời gian tìm

hiểu, mô phỏng và đo đạc, tac giả đã lựa chọn chip Arm để thiết kế.

Cấu trúc ARM (viết tắt từ tên gốc là Acorn RISC Machine) là môt loại cấu

trúc vi xử lý 32-bit kiểu RISC được sử dụng rông rãi trong cac thiết kế nhúng. Do

có đặc điểm tiết kiệm năng lượng, cac bô CPU ARM chiếm ưu thế trong cac sản

phẩm điện tử di đông, mà với cac sản phẩm này việc tiêu tan công suất thấp là môt

mục tiêu thiết kế quan trọng hàng đầu.

Ngày nay, hơn 75% CPU nhúng 32-bit là thuôc họ ARM, điều này khiến

ARM trở thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới[11]. CPU

ARM được tìm thấy khắp nơi trong cac sản phẩm thương mại điện tử, từ thiết bị

cầm tay (PDA, điện thoại di đông, may đa phương tiện, may trò chơi cầm tay,

và may tính bảng) cho đến cac thiết bị ngoại vi may tính (VD: ổ đĩa cứng, để

bàn…).

4.3.2.2 Bộ vi xử lý ARM Cortex – M3

Bô vi xử lý ARM Cortex-M3 là thế hệ mới nhất của bô xử lý ARM cho cac

hệ thống nhúng. Nó được phat triển để cung cấp môt nền tảng chi phí thấp, đap ứng

yêu cầu thực thi của vi điều khiển với việc giảm số bóng ban dẫn trong lõi ARM

Cortex dẫn tới tiêu thụ năng lượng thấp và giảm gia thành vi xử lí, đồng thời cung

cấp hiệu năng tính toan cao và môt hệ thống tiên tiến để đap ứng ngắt. Bô vi xử lý

ARM Cortex-M3 32-bit RISC đạt hiệu suất cao hơn và tiết kiệm năng lượng hơn so

với ARM7TDMI-S[13].

Trong cac dòng chip Arm phổ biến hiện nay được tìm thấy trên thị trường

Việt Nam, dòng chip Arm Cortex-M3 cụ thể là IC thông dụng Lm3s6965 của hãng

Texas có cac tính năng của nó phù hợp với yêu cầu.

NETFPGA GROUP-KSTN-ĐTVT-K52 60

Page 77: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

4.3.3 Khối đóng ngắt port (ON/OFF Port Circuit)

Trước hết, chúng ta biết được kết nối với nhau theo chuẩn kết nối RJ45. Cac

dây 1, 2, 3, 6 của chuẩn này dùng để truyền tín hiệu, trong đó có hai dây truyền và

hai dây nhận. Thực nghiệm thực tế cho thấy cac cổng mạng chỉ cần ngắt môt trong

bốn dây, coi như ngắt đường link giữa hai chuyển mạch.

Có nhiều phương phương phap để đóng ngắt mạch điện như dùng transistor,

Flip-flop, relay, IC. Chúng được coi như là môt khóa điện tử khi có tín hiệu điều

khiển sẽ đóng mở kết nối.

Do đặc thù dây tín hiệu được truyền trên đường Ethernet cần được ổn định,

cac thiết bị tham gia vào khối này không được làm ảnh hưởng đến điện ap vi sai

truyền trên kết nối khi có tín hiệu (điện ap trên dây vào khoảng 2.5V tùy vào tốc đô

đường truyền là 10, 100 hay 1000Mbps [14]). Xét từng phương an cụ thể đã đưa ra:

- Phương an sử dụng transitor giảm điện ap khoảng 0.7V

- Phương an sử dụng flip-flop và IC khac làm trễ tín hiệu truyền.

- Phương an Relay là tỏ ra ưu việt khi không làm giảm điện ap và không gây

trễ tín hiệu và được chọn là phương an sử dụng.

Khi muốn ngắt kết nối giữa hai chuyển mạch, relay sẽ không được cung cấp

điện. Relay bây giờ đóng vai trò như môt dây dẫn và không gây ảnh hưởng đến dữ

liệu được truyền đi trên dây ethernet. Ngược lại khi muốn ngắt đường dây truyền

dẫn, ta tiến hành cấp nguồn cho relay.

Việc chọn lựa relay phần lớn tùy thuôc vào công suất và tốc đô đap ứng của

chúng. Loại relay công suất nhỏ dùng trên mạch in (PCB) là hợp lý cho môt dự an

tiết kiệm năng lượng. Trong môt số catalog của môt số hãng trên thế giới, thiết bị

này chỉ chiếm khoảng 1/4W điện ap 5V. Tuy nhiên, ở thị trường Việt Nam chỉ có

relay công suất vừa phải nên trong phiên bản mẫu này chỉ sử dụng relay loại 5V-

60mA. Tuy không có thể đap ứng được yêu cầu tiết kiệm năng lượng song chúng có

thể đap ứng được cac yêu cầu chức năng chính.

NETFPGA GROUP-KSTN-ĐTVT-K52 61

Page 78: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

4.3.4 Khối đóng ngắt chuyển mạch (ON/OFF Switch Circuit):

Khối đóng ngắt chuyển mạch có khẳ năng đóng ngắt port của chuyển mạch.

Khac với dây tín hiệu, chuyển mạch sử dụng nguồn 220V, công suất có thể lên tới

hàng trăm Watt [14], chúng rất dễ gây nhiễu tín hiệu cho vi điều khiển.

Relay được tac giả sử dụng ở đây phải là relay lớn, loại chịu được dòng cao

và có cach ly với mạch điều khiển chính bằng IC2803 nhằm tranh việc gây nhiễu và

hư hỏng cho mạch điều khiển.

4.3.5 Kết quả đạt được

Tac giả đã thành công trong việc tạo ra môt phiên bản mẫu cho OSC.Năng

lượng tiêu thụ của toàn bô mạch OSC bước đầu được ước tính theo datasheet của

cac thiết bị như trong Bảng 4.2 sau [13]:

Bảng 4.2 Bảng tổng hợp công suất của các thanh phần

Linh kiện chính Số lượngNăng lượng tiêu thụ

trung bình (mW/đơn vị)

Lm3s6965 1 ~700

RJ45 1 0

Relay 5 ~300

Mạch OSC có thể thử nghiệm việc trao đổi bản tin với bô điều khiển bằng

giao thức OpenFlow cũng như có thể xử lý được cac bản tin OpenFlow mới. Hình

4.26 và Hình 4.27 dưới đây minh họa sơ đồ nguyên lý mạch và mạch OSC sau khi

hoàn thành.

NETFPGA GROUP-KSTN-ĐTVT-K52 62

Page 79: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Hình 4.26 Sơ đồ nguyên lý mạch OSC

Hình 4.27 Phần cứng của OpenFlow switch controller

NETFPGA GROUP-KSTN-ĐTVT-K52 63

Page 80: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

4.4 Thiết kế phần mềm

Phần này sẽ trình bày về cac loại bản tin trong giao thức OpenFlow, cac

bước trong qua trình bắt tay dùng giao thức OpenFlow, thư viện lwIp (Light-Weight

Internet Protocol) dùng cho vi điều khiển Arm, và cac bản tin mới sử dụng cho mục

đích của đề tài.

4.4.1 Giao thức OpenFlow

Hệ thống mạng OpenFlow dùng trong cac trung tâm dựa trên nền tảng giao

thức OpenFlow – môt giao thức mới được triển khai giúp cac nhà phat triển có thể

thí nghiệm, phat triển cac giao thức mới mà không ảnh hưởng đến toàn mạng. Giao

thức OpenFlow gồm có phần header và cac bản tin như sau:

OpenFlow Header:

Tất cả cac loại bản tin trong OpenFlow Protocol đều được đóng gói với

Header của OpenFlow[16]:

struct ofp_header {

uint8_t version;

uint8_t type;

uint16_t length;

uint32_t xid;

};

Trong OpenFlow Header có bốn trường chính là Version,Type, Length,Xid.

Version hiện tại của OpenFlow là 0x02, Length cho biết tổng đô dài của cả

gói tin. Trường Type sẽ cho biết gói tin sẽ là mốt ố trong số những loại sau

đây:

/* Immutable messages. */

OFPT_HELLO, /* Symmetric message */

OFPT_ERROR, /* Symmetric message */

OFPT_ECHO_REQUEST, /* Symmetric message */

OFPT_ECHO_REPLY, /* Symmetric message */

NETFPGA GROUP-KSTN-ĐTVT-K52 64

Page 81: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

OFPT_VENDOR, /* Symmetric message */

/* Switch configuration messages. */

OFPT_FEATURES_REQUEST, /* Controller/switch message */

OFPT_FEATURES_REPLY, /* Controller/switch message */

OFPT_GET_CONFIG_REQUEST, /* Controller/switch message */

OFPT_GET_CONFIG_REPLY, /* Controller/switch message */

OFPT_SET_CONFIG, /* Controller/switch message */

/* Asynchronous messages. */

OFPT_PACKET_IN, /* Async message */

OFPT_FLOW_REMOVED, /* Async message */

OFPT_PORT_STATUS, /* Async message */

/* Controller command messages. */

OFPT_PACKET_OUT, /* Controller/switch message */

OFPT_FLOW_MOD, /* Controller/switch message */

OFPT_PORT_MOD, /* Controller/switch message */

/* Statistics messages. */

OFPT_STATS_REQUEST, /* Controller/switch message */

OFPT_STATS_REPLY, /* Controller/switch message */

/* Barrier messages. */

OFPT_BARRIER_REQUEST, /* Controller/switch message */

OFPT_BARRIER_REPLY, /* Controller/switch message */

/* Queue Configuration messages. */

OFPT_QUEUE_GET_CONFIG_REQUEST,/* Controller/switch message */

OFPT_QUEUE_GET_CONFIG_REPLY, /* Controller/switch message */

Từ trên, ta có thể phân chia cac bản tin của OpenFlow Protocol là ba loại

chính:

- Bản tin đối xứng (Symmetric message).

- Bản tin bất đối xứng ( Asynchronous message).

NETFPGA GROUP-KSTN-ĐTVT-K52 65

Page 82: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

- Bản tin giữa Controller và Switch (Controller to Switch Message) .

Bản tin đối xứng:

Bản tin đối xứng là cac bản tin được gửi môt cach đôc lập. Bản tin đối xứng

được chia làm ba loại:

- Hello: bản tin Hello là môt bản tin dạng đơn giản trao đổi thông tin giữa

Controller và switch khi bắt đầu kết nối.

- Echo: bản tin Echo Request có thể được gửi từ cả phí switch lẫn

Controller, và phải trả về bản tin Echo Reply. Bản tin này được dùng để

kiểm tra, đảm bảo kết nối giữa bô điều khiển với bô chuyển mạch.

- Experimenter: Cac bản tin Experimenter cho phép cac bô chuyển mạch

OpenFlow có thể trao đổi lẫn nhau để hoạt đông với môt số chức năng

khac.

Bản tin bất đối xứng:

Bản tin bất đối xứng là bản tin được bô chuyển mạch chủ đông gửi về cho bô

điều khiển. Cac thông tin được gửi trong bản tin bất đối xứng này thường là trạng

thai của bô chuyển mạch, cac gói tin không gửi được hoặc là lỗi. Có bốn loại gói tin

chính của Asynchronous message:

- Packet-in : Với cac gói tin từ host tới switch mà switch không thể tìm ra

được đường cho gói tin thì gói tin này sẽ được switch đóng gói thêm

OpenFlow Header và chuyển về cho bô chuyển mạch xử lý.

- Flow remove: Sau môt thời gian Timeout nào đó, môt flow sẽ bị bô

chuyển mạch xóa đi, lúc này bô chuyển mạch sẽ gửi môt bản tin thông

bao về cho bô điểu khiển.

- Port Status: Bản tin gửi thông bao về trạng thai hiện tại của cac cổng

trên bô chuyển mạch (đang bật hay tắt) về cho bô điều khiển.

- Error: Switch gửi bản tin thông bao lỗi bề cho bô điều khiển.

Bản tin gửi từ Controller tới Switch :

Đây là cac bản tin được bô điều khiển chủ đông gửi đến bô chuyển mạch, có

thể yêu cầu hoặc không yêu cầu phản hồi trả lời. Có sau gói tin chủ yếu:

- Feautures: Bản tin này được bô điều khiển gửi tới bô chuyển mạch yêu

cầu phản hồi của swicth về năng lực hoạt đông của bô chuyển mạch. Cac

NETFPGA GROUP-KSTN-ĐTVT-K52 66

Page 83: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

bản tin Feautures này có thể hoạt đông ở cac tầng cao hơn OpenFlow

Channel.

- Configuration: Bản tin nhằm hỏi và cài đặt, cấu hình cac thông số hoạt

đông của bô chuyển mạch.

- Modify-State: Bản tin nhằm quản lý cac trạng thai của bô chuyển mạch.

Mục đích chính của sử dụng bản tin này là nhằm thay đổi (thêm/xóa)

flow hay là môt nhóm nào đó trong OpenFlow table và cài đặt thông số

cho cổng của bô chuyển mạch.

- Read-State: Bản tin nhằm giúp cho bô điều khiển thu thập cac thông tin

được thống kê trên bô chuyển mạch.

- Packet-Out: Bô chuyển mạch sẽ gửi cac gói tin mà nó không thể forward

được sang cho bô điều khiển. Trong trường hợp bô điều khiển xử lý và

tìm ra đường đi cho gói tin đó, thì nó sẽ được đóng gói thêm OpenFlow

Header và được gọi là Packet-Out và sẽ được chuyển về bô chuyển

mạch.

- Barrier: Loại bản tin đặc biệt được gửi bởi bô điều khiển nhằm đảm bảo

qua trình gửi gói tin của bô chuyển mạch.

4.4.2 Trao đổi gói tin với bô điều khiển

Bô điều khiển và bô chuyển mạch OpenFlow giao tiếp với nhau qua giao

thức Ethernet, sử dụng giao thức OpenFlow thông qua sơ đồ như Hình 4.28. Khi

được kết nối tới mạng, trước tiên, bô chuyển mạch OpenFlow sẽ kết nối với bô điều

khiển theo quy trình bắt tay ba bước của TCP/IP. Sau đó, bô chuyển mạch sẽ gửi

bản tin Hello theo giao thức OpenFlow như đã trình bày ở trên. Bô điều khiển gửi

trả lại bản tin Hello đến bô chuyển mạch để hoàn tất qua trình bắt tay và sử dụng

giao thức OpenFlow để trao đổi với bô chuyển mạch.

NETFPGA GROUP-KSTN-ĐTVT-K52 67

Page 84: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Hình 4.28 Quy trình bắt tay giữa bô điều khiển va bô chuyển mạch OpenFlow

4.4.3 Mã nguồn mở LwIP

Do hoạt đông của giao thức OpenFlow vẫn dựa trên nền tảng của TCP/IP, vi

điều khiển cần phải chứa sẵn bô giao thức TCP/IP stack trong nó. Cac vi điều khiển

hiện nay thường có bô nhớ trong ROM và RAM giới hạn vào khoảng vài chục đến

vài trăm KB. Thực hiện kết nối TCP/IP môt cach thông thường mà không sử dụng

thêm cac chip nhớ ngoài với cac vi điều khiển này là điều không thể. Tuy nhiên,

thông qua việc sử dụng cac module TCP/IP stack nhỏ dành riêng cho hệ thống

NETFPGA GROUP-KSTN-ĐTVT-K52 68

Page 85: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

nhúng có thể giải quyết vấn đề này môt cach triệt để. Module lwIP là môt mã nguồn

mở thực hiện trên giao thức TCP/IP được phat triển theo định hướng giảm tài

nguyên sử dụng trong khi vẫn giữ nguyên cac tính năng của giao thức TCP/IP. Đối

với hệ thống nhúng, lwIP giúp cho hệ thống kết nối tới mạng nôi bô (local intranet)

hoặc mạng Internet. Hơn nữa lwIP đã được port tới nhiều sản phẩm MCU của

Stellaris ®[16]. Dưới đây là bảng so sanh ưu, nhược điểm cac phần mềm mã nguồn

mở dành cho TCP/IP stack trên hệ thống nhúng tac giả đã tìm hiểu và thử nghiệm

trong thời gian thực hiện đề tài:

Bảng 4.3 So sánh ưu, nhược điểm của môt số mã nguồn mở TCP/IP stack

Tên phần mềm Ưu điểm Nhược điểm

uIPMiễn phí, kích thước rất nhỏ Hỗ trợ kém, khó viết ứng

dụng

lwIPMiễn phí, đầy đủ, thường được

sử dụng

uC/IPMiễn phí Kích thước lớn, ít được

sử dụng

BSD 4.4 Miễn phí, ổn định Kích thước qua lớn

Tinytcp, wattcp and others

Miễn phí Khó dùng, không tiện lợi

Module lwIP được phat triển bởi Adam Dunkels tại nhóm Hệ thống nhúng

trong mạng tại khoa Khoa Học May Tính thuôc Viện Thuỵ Sỹ[16]. Hiện tại chương

trình này đang được phat triển bởi Leon Woestenberg và đã được sử dụng trong

nhiều sản phẩm thương mại. Được viết bằng ngôn ngữ C, lwIP là môt modue

TCP/IP mã nguồn mở phat triển cho hệ thống nhúng với tập trung vào giảm thiều

tài nguyên sử dụng. lwIP có thể chạy dưới1 hệ điều hành hoặc đôc lập. Kích cỡ

code vào khoảng 25 tới 40 KB trong khi yêu cầu cho RAM khoảng 15 KB.

NETFPGA GROUP-KSTN-ĐTVT-K52 69

Page 86: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Đặc điểm:

Giao thức Internet (IP) bao cầm cac gói gửi đi trên toàn giao diện

mạng.

Giao thức ICMP được dùng để bảo trì mạng hoặc debugging.

Giao thức UDP bao gồm cac mở rông thí nghiệm UDP-lite.

Giao thức TCP với điều khiển sự qua tải, ước lượng RTT và phục

hồi/truyền nhanh chóng.

Giao thức PPP.

Giao thức ARP cho Ethernet.

AutoIP tự đông cấu hình IP kết nối.

Cac hàm API đặc biệt để tăng hiệu năng.

Cac hàm API tuỳ chọn như Berkeley socket.

Hỗ trợ nhiều kết nối và giao diện mạng.

Hình 4.29 Các giao thức được sử dụng trong lwIP

NETFPGA GROUP-KSTN-ĐTVT-K52 70

Page 87: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

4.4.4 Thiết kế bản tin OpenFlow va kết quả đạt được

Cac bản tin OpenFlow được gửi giữa bô điều khiển và cac bô chuyển mạch

OpenFlow để quản lý và điều khiển cac bô chuyển mạch thông qua kênh

OpenFlow. Mỗi bản tin OpenFlow được bắt đầu bằng header OpenFlow như dưới

đây:

struct ofp_header {

uint_8 version;

uint_8 type;

uint_16 length;

uint_32 xid;

};

Như đã trình bày từ cac phần trên, OSC nhận cac lệnh điều khiển từ bô điều

khiển OpenFlow để điều khiển cac chế đô làm việc của bô chuyển mạch và cac

cổng. Cac lệnh điều khiển bao gồm:

Lệnh tắt bật cac bô chuyển mạch và cac line card.

Lệnh tắt bật cac đường link liên kết và cac cổng mạng hoặc điều chỉnh tốc đô

cho phù hợp với tốc đô link tại mỗi thời điểm.

Lệnh thay đổi mức năng lượng tiêu thụ bằng việc thay đổi tần số làm việc

của clock hoặc chuyển sang chế đô sleep.

Cac lệnh trên cần được thêm vào trong cac bản tin trao đổi giữa bô điều khiển

OpenFlow và OSC. Để phục vụ cho mục đích này, tac giả đã thiết kế thêm ba loại

bản tin mới như sau: OFPT_PORT_MOD, OFPT_LINECARD_MOD và

OFPT_SWITCH_MOD.

Bản tin OFPT_PORT_MOD :

Loại bản tin: Controller to Switch

Chiều dài: 32 bytes

Chức năng: Thay đổi trạng thai cac cổng mạng bao gồm bật, tắt và thay

đổi tốc đô phù hợp với tốc đô link.

Cấu trúc:

NETFPGA GROUP-KSTN-ĐTVT-K52 71

Page 88: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

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];

};

Bảng 4.4 và Bảng 4.5 dưới đây là cac trường và ý nghĩa của chúng trong bản tin OFPT_PORT_MOD :

Bảng 4.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

Bảng 4.5 Ý nghĩa các trường trong bản tin OFPT_PORT_MOD

TRƯỜNG Ý NGHĨA

headerChứa thông tin về phiên bản của giao thức, loại của bản tin, chiều dài bản tin và số hiệu giao dịch của

bản tin

port_no Chứa gia trị của port trên cac bô chuyển mạch

hw_addr[OFP_ETH_ALEN] Địa chỉ MAC của port

config Cac trạng thai của port tại thời điểm hiện tại

mask Thông tin về sự thay đổi trạng thai của port

NETFPGA GROUP-KSTN-ĐTVT-K52 72

Page 89: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

link_state Thông tin về cac chế đô của port như bật, tắt…

advertise Thông tin về cac chức năng và Action của Port

pad Trường còn trống có thể sử dụng trong tương lai

Trường link_state chứa thông tin để điều khiển cac cổng mạng như trên Hình

4.30. Nếu bit cờ có gia trị là 1, OSC sẽ thay đổi trạng thai cổng mạng. Trường

MOD biểu thị cac chế đô làm việc của cổng mạng ví dụ bật, tắt, tốc đô link… Khi

MOD có gia trị là LINK_RATE, tốc đô link sẽ được điều chỉnh dựa theo trường

Link Rate. Hiện tại, chỉ có cac gia trị tốc đô link 10Mbps, 100Mbps và 1Gbps được

thêm vào và sử dụng để điều chỉnh tốc đô link.

Hình 4.30 Trường link state

Bản tin OFPT_SWITCH_MOD :

Loại bản tin: Controller to Switch

Chiều dài: 24 Bytes

Chức năng: Thay đổi trạng thai cac bô chuyển mạch OpenFlow

Cấu trúc bản tin:

struct ofp_switch_mod {

struct ofp_header header;

uint64_t datapath_id;

uint8_t state;

uint32_t option;

uint8_t pad[3];

};

NETFPGA GROUP-KSTN-ĐTVT-K52 73

Page 90: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Bảng 4.6 và Bảng 4.7 dưới đây là cac trường và ý nghĩa của chúng trong bản tin OFPT_SWITCH_MOD :

Bảng 4.6 Ý nghĩa các trường trong bản tin OFPT_SWITCH_MOD

Trường Ý nghĩa

header Chứa thông tin về phiên bản của giao thức, loại của bản tin, chiều

dài bản tin và số hiệu giao dịch của bản tin

datapath_id Tên của bô chuyển mạch được lưu trong Controller

state Cac trạng thai của bô chuyển mạch được sử dụng cho việc điều

khiển

option Tùy chọn

pad Trường còn trống có thể sử dụng trong tương lai

Bảng 4.7 Bản tin OFPT_SWITCH_MOD

Opflow

headerDatapath ID Switch State Option Pad

8bytes 8 bytes 1bytes 4bytes 3bytes

Trường Switch state chứa thông tin để thay đổi trạng thai cac bô chuyển

mạch như Hình 4.31. Trường MOD biểu thị cac chế đô làm việc của bô chuyển

mạch như là tắt, bật, IDLE, SLEEP…

Hình 4.31 Trường Switch state

NETFPGA GROUP-KSTN-ĐTVT-K52 74

Page 91: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Bản tin OFPT_LINECARD_MOD:

Loại bản tin: Controller to Switch.

Chiều dài: 20 Bytes.

Chức năng: Thay đổi trạng thai Line Card.

Cấu trúc bản tin:

struct ofp_linecard_mod {

struct ofp_header header;

uint64_t datapath_id;

uint16_t line_card_no;

uint8_t line_card_state;

uint32_t option ;

};

Bảng 4.8 và dưới đây là cac trường và ý nghĩa của chúng trong bản tin OFPT_LINECARD_MOD :

Bảng 4.8 Bản tin OFPT_LINECARD_MOD

Opflow header Datapath ID Line Card no Line Card State Option

8bytes 8 bytes 1bytes 1bytes 2bytes

Bảng 4.9 Ý nghĩa các trường trong bản tin OFPT_LINECARD_MOD

Trường Ý nghĩa

headerChứa thông tin về phiên bản của giao thức, loại của bản tin,

chiều dài bản tin và số hiệu giao dịch của bản tin

datapath_id Tên của bô chuyển mạch được lưu trong Controller

line_card_no Số hiệu của line card trong bô chuyển mạch

line_card_state Cac trạng thai của line card được sử dụng cho việc điều

NETFPGA GROUP-KSTN-ĐTVT-K52 75

Page 92: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

khiển

option Tùy chọn

Trường Line card chứa thông tin để thay đổi trạng thai cac bôn chuyển mạch

như Hình 4.32. Trường MOD biểu thị cac chế đô làm việc của line card như bật, tắt,

IDLE, SLEEP…

Hình 4.32 Trường Line Card state

Hình 4.33 mô tả qua trình giao tiếp giữa bô điều khiển và OSC. Trước khi

thiết lập kết nối, bô điều khiển và OSC phải thông qua môt qua trình bắt tay giống

như qua trình bắt tay giữa bô điều khiển và bô chuyển mạch OpenFlow như đã trình

bày ở trên. Cac loại bản tin ví dụ PORT_MOD, LINECARD_MOD hoặc

SWITCH_MOD được định nghĩa trong trường type của header trong bản tin

OpenFlow. Sau khi thiết lập kết nối thành công, chương trình sẽ hoạt đông ở trạng

thai chờ gói tin từ bô điều khiển gửi xuống. Khi gói tin nhận được là môt trong ba

loại bản tin được định nghĩa như ở trên, chương trình sẽ tiếp tục kiểm tra bit bao

hiệu việc thay đổi trạng thai. Nếu bit bao hiệu là “1”, chương trình sẽ thực hiện việc

thay đổi trạng thai theo trường MOD, sau đó quay lại trạng thai chờ bản tin. Nếu bit

bao hiệu là “0”, chương trình sẽ không thực hiện bước tiếp theo mà quay trở về

trạng thai chờ ngay lập tức.

NETFPGA GROUP-KSTN-ĐTVT-K52 76

Page 93: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

Hình 4.33 Sơ đồ thuật toán của OSC

NETFPGA GROUP-KSTN-ĐTVT-K52 77

Page 94: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 4ƯƠ

4.5 Kết luận chương

Chương này đã đưa ra giải phap xây dựng bô OSC có khả năng đưa cac

chuyển mạch OpenFlow sang trạng thai năng lượng thấp; đồng thời quan trọng hơn

cac tac giả đã tạo ra cac bản tin mới theo chuẩn giao thức OpenFlow mang thông tin

về cac chế đô tiết kiệm năng lượng được gửi từ bô điều khiển. Cac bản tin này để

thiết lập cac trạng thai hoạt đông của cac bô chuyển mạch OpenFlow tại từng thời

điểm dựa theo cac thuật toan tìm đường được cac nhà phat triển thử nghiệm và triển

khai trong cac trung tâm dữ liệu.

Trong chương tiếp theo, nhóm tac giả sẽ sử dụng bản tin và cach sử dụng bản

tin đã được nghiên cứu trong chương này như môt phần nền tảng nhằm tạo ra môt

chuyển mạch thông minh (chuyển mạch có khẳ năng tự đông chuyển về trạng thai

năng lượng thấp khi nhận được yêu cầu từ bô điều khiển).

NETFPGA GROUP-KSTN-ĐTVT-K52 78

Page 95: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Chương 5. Thiết kế khối tiết kiệm năng lượng cho chuyển mạch OpenFlow

Như đã trình bày ở phần kết thúc chương trước, chương này sẽ tập trung vào

việc thiết kế chuyển mạch OpenFlow có chức năng tiết kiệm năng lượng. Để thực

hiện được điều này, nhóm tac giả sẽ xây dựng theo cac bước sau:

- Nghiên cứu giải phap tiết kiệm năng lượng cho chuyển mạch OpenFlow.

- Xây dựng thêm khối có chức năng tiết kiệm năng lượng trong phần cứng của

chuyển mạch OpenFlow.

- Xây dựng và triển khai chức năng giao tiếp với bô điều khiển và tiết kiệm

năng lượng trong phần mềm của chuyển mạch OpenFlow.

Trước hết, chúng ta đi vào tìm hiểu giải phap tiết kiệm năng lượng cho

chuyển mạch OpenFlow.

5.1 Giải pháp tiết kiệm năng lượng

Công thức tính năng lượng tiêu thụ của linh kiện CMOS khi hoạt đông là:

P = A.C.V2.F

Trong đó, P là công suất tiêu thụ theo đơn vị Watt (W). A là hệ số hoạt đông

tức là tỷ lệ linh kiện trong mạch thực sự hoạt đông, còn C là điện dung chuyển trạng

thai, V là điện thế hoạt đông, và F là tần số hoạt đông.

Dựa vào phương trình trên, để tiết kiệm năng lượng cho môt thiết bị bất kì có

thể thực hiện cac giải phap sau:

Giảm hệ số hoạt đông, tức là giảm bớt cac thành phần tiêu thụ năng lượng

trong thiết bị, tắt bớt cac thành phần này khi không hoạt đông.

Giảm điện dung chuyển trạng thai. Vấn đề này phụ thuôc nhiều về mặt công

nghệ chế tạo và sử dụng cac vật liệu mới.

Giảm điện ap hoạt đông của thiết bị. Tương tự như giảm điện dung chuyển

trạng thai, phương phap này cũng phụ thuôc hoàn toàn vào vật liệu chế tạo

và công nghệ sản xuất.

NETFPGA GROUP-KSTN-ĐTVT-K52 79

Page 96: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Giảm tần số làm việc của mạch hay cac linh kiện.

Với môt sản phẩm thương mại bất kì, việc giảm điện năng tiêu thụ bằng hai

phương phap giảm điện dung chuyển trạng thai và điện ap hoạt đông là không khả

thi vì cac tham số này đã được cố định bởi nhà sản xuất. Khi cố thay đổi cac tham số

đó, ví dụ giảm điện ap sử dụng, sẽ khiến cho cac thiết bị không hoạt đông, hoạt đông

sai chức năng.

Giải phap giảm hệ số hoạt đông và giảm tần số làm việc yêu cầu người sử

dụng có khả năng thay đổi cấu trúc bên trong của thiết bị nhưng vẫn đảm bảo thiết bị

vận hành đúng chức năng. Vấn đề này bình thường không có khả năng thực hiện do

cac thiết bị sử dụng cac con chip đã được đóng gói sẵn, người dụng không thể can

thiệp vào cấu trúc bên trong được. Tuy nhiên, với nển tảng FPGA, hai giải phap trên

hoàn toàn có thể trở thành hiện thực. Mọi thành phần bên trong thiết bị trên nền tảng

FPGA đều có thể được thay đổi, tuỳ chỉnh theo yêu cầu của người thiết kế, điều đó

có nghĩa là có thể thay đổi cấu trúc, chức năng của từng bô phận trong thiết bị. Hệ

quả là, cac thành phần có thể được tắt bớt khi không cần thiết, và tần số làm việc của

thiết bị có thể được thay đổi.

Áp dụng vào chuyển mạch OpenFlow trên nền tảng NetFPGA, để thực hiện

tiết kiệm năng lượng cho chuyển mạch, tac giả đề xuất thêm môt số chức năng mới

vào thiết bị này:

- Thứ nhất, môt số thành phần tiêu thụ năng lượng chủ yếu của chuyển

mạch như cac cổng giao tiếp Ethernet cần phải được tắt di khi không hoạt

đông. Thực tế sử dụng cho thấy, không phải lúc nào tất cả cac cỏng của

chuyển mạch cũng hoạt đông toàn bô 24/24 (ví dụ: trong khoảng thời

gian từ 23h đêm đến 5h sang, có thể môt số cổng hoạt đông nhưng không

hề có lưu lượng đi qua).

- Thứ hai, chuyển mạch có thể làm việc với cac tần số khac nhau tương

ứng với cac lưu lượng vào khac nhau như 10Mbps, 100Mbps, 1Gbps. Khi

lưu lượng qua chuyển mạch giảm đến môt mức nào đó, chuyển mạch có

thể được cung cấp tín hiệu clock với tần số thấp hơn. Việc này vừa đảm

NETFPGA GROUP-KSTN-ĐTVT-K52 80

Page 97: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

bảo hoạt đông bình thường cho hệ thống vừa góp phần làm giảm điện

năng tiêu thụ. Trong thực tế, chuyển mạch OpenFlow có thể làm việc

được với tần số là 125MHz với lưu lượng 1Gbps và có thể giảm xuống

khi lưu lượng vào ít hơn. Thêm nữa, cac port của chuyển mạch có thể đưa

về làm việc với cac giao tiếp tốc đô thấp hơn như 10Mbps hay 100Mbps

thay vì chỉ 1Gbps như hiện tại để giảm năng lượng tiêu thụ.

5.2 Thiết kế phần cứng

Dựa trên giải phap được đưa ra, tac giả xây dựng môt khối điều khiển có tên

là Clock Controller (CC) có cac chức năng sau:

- Sử dụng môt clock riêng đôc lập, chạy liên tục ngay cả khi chuyển mạch ở

trạng thai năng lượng thấp hay sleep mode.

- Có nhiệm vụ lấy thông tin từ phần mềm thông qua PCI bus để điều khiển

việc đóng ngắt cac dây tín hiệu clock của cac khối.

Do chuyển mạch OpenFlow được thiết kế làm việc với tốc đô đường truyền

cố định là 1Gbps nên giải phap thay đổi tốc đô kết nối theo lưu lượng thực xuống

mức 10, 100 Mbps sẽ được triển khai trong tương lai.

5.2.1 Lam việc với phần cứng của chuyển mạch OpenFlow

Phần cứng của chuyển mạch OpenFlow được xây dựng từ cac modules bằng

ngôn ngữ Verilog và quản lý bằng cac file xml. Chúng cùng cac thành phần liên quan

được tổ chức thành cac thư mục tại địa chỉ OpenFlow_switch/ trong thư mục chứa

project của NetFPGA. Cụ thể như sau:

Thư mục OpenFlow_switch/include chứa cac file xml, cac file xml này chứa

thông tin về cac module phần cứng (trong lib/verilog) được sử dụng trong bô

chuyển mạch OpenFlow và cac thanh ghi được sử dụng bởi cac module phần

cứng đó.

Thư mục OpenFlow_switch/lib chứa cac thư viện Perl và C.

Thư mục OpenFlow_switch/src chứa cac source code verilog của bô chuyển

mạch OpenFlow.

NETFPGA GROUP-KSTN-ĐTVT-K52 81

Page 98: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Thư mục OpenFlow_switch/synth chứa makefile và cac file .xco (file sinh ra

bởi Coregen) để thực hiện tổng hợp code verilog của bô chuyển mạch

OpenFlow thành file OpenFlow_switch.bit.

Thư mục OpenFlow_switch/verif chứa cac file để thực hiện mô phỏng từng

chức năng của bô chuyển mạch OpenFlow.

Để thiết kế khối tiết kiệm năng lượng CC chúng ta đi sâu vào tìm hiểu và thay

đổi cac khối modules phần cứng được mô tả trong cac file verilog gồm có:

- nf2_top.v

- nf2_core.v

- user_data_path.v

- generic_regs.v

- udp_reg_master.v

- tạo mới file clock_controller.v

và cac file quản lý lý project (xml) sau:

- project.xml

- user_data_path.xml

- tạo mới file clock_controller.xml

NETFPGA GROUP-KSTN-ĐTVT-K52 82

Page 99: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

5.2.2 Vị trí của khối Clock controller

Dựa vào file mổ tả phần cứng mức top design nf2_top.v, sơ đồ khối và cac tin

hiệu liên quan của chuyển mạch OpenFlow được thể hiện như trên Hình 5.34.

Hình 5.34 Sơ đồ hệ thống clock của chuyển mạch OpenFlow

Theo Hình 5.34, chuyển mạch OpenFlow sử dụng bảy tín hiệu clock chính

như sau:

Bốn tín hiệu clock riêng biệt điều khiển việc nhận dữ liệu trên bốn cổng

Ethernet.

Tín hiệu clock gtx_clk điều khiển việc truyền dữ liệu cho cả bốn cổng này.

Tín hiệu core_clk đảm bảo hoạt đông cho khối nf2_core bên trong.

Tín hiệu cpci_clk được cung cấp cho khối giao tiếp CPCI bên trong

nf2_core.

NETFPGA GROUP-KSTN-ĐTVT-K52 83

Page 100: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Theo cac phương phap tiết kiệm năng lượng đã nêu ở trên, nhóm đã đề xuất

phương an thực hiện cụ thể như sau:

Môt số cổng Ethernet của chuyển mạch có thể được tắt đi khi không có lưu

lương đi qua, việc tắt cac port được thực hiện khi có yêu cầu từ bô điều khiển

(ví dụ như bô điều khiển NOX). Giải phap này có thể được ap dụng bằng

cach ngắt cac xung tín hiệu clock ra khỏi cac khối thực hiện việc truyền nhận

dữ liệu (cụ thể theo Hình 5.34 là cac khối RGMII từ 1 đến 4). Đồng thời cac

tín hiệu TX_clk tương ứng với cac khối đó cũng phải bị cach ly.

Khi chuyển mạch không cần thiết phải hoạt đông, bô điều khiển có thể ra

lệnh tắt toàn bô chuyển mạch. Khi đó, có thể tach toàn bô cac tín hiệu clock

ra khỏi cac khối của chuyển mạch tức là chuyển mạch hoạt đông với tần số

bằng 0.

Khối CC mới thiết kế sẽ được đặt ở nf2_top, top design của chuyển mạch.

Khi nhận được yêu cầu chuyển sang trạng thai năng lượng thấp gửi từ bô điều khiển,

phần mềm sẽ xử lý gói tin và chuyển yêu cầu đến CC thông qua PCI bus. Nó sẽ điều

khiển cac bô BUFGMUX chọn hoặc không chọn đường dây clock của cac khối cần

điều khiển. Mặc định ban đầu là cho phép cac clock hoạt đông (tín hiệu ở chân

“chọn tín hiệu” S của BUFGMUX ở mức thấp).

NETFPGA GROUP-KSTN-ĐTVT-K52 84

Page 101: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Hình 5.35 Sơ đồ vị trí lý tưởng của CC trong nf2_top

Sơ đồ khối như trên là lý tưởng, có thể ap dụng trong sản xuất chuyển mạch

công nghiệp. Việc nghiên cứu với NetFPGA trên môi trường Linux nảy sinh vấn đề

như sau:

- Thứ nhất, ngắt clock của khối nf2_core đồng nghĩa với ngắt clock của khối

driver giao tiếp giữa NetFPGA với hệ điều hành thông qua PCI Bus. Khiến hệ

thống bị treo do không thể liên lạc được với NetFPGA. Đây là khó khăn chưa thể

giải quyết vì vậy ta tạm thời chỉ ngắt port mà chưa đưa chuyển mạch về trạng thái

nghỉ toàn bộ (ngắt cả phần lõi).

- Ngoài ra, việc sửa lại project đã có sẵn để tạo môt khối vừa có thể điêu khiển

được cac bô BufMux trong nf2_top vừa có thể giao tiếp với phần mềm chạy trên hệ

điều hành Linux thông qua PCI bus là việc rất khó khăn. Nó đòi hỏi cần có môt thời

NETFPGA GROUP-KSTN-ĐTVT-K52 85

Page 102: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

gian tìm hiểu sâu sắc toàn bô project được nhóm nghiên cứu của trường đại học

Stanford phat triển từ năm 2007. Điều này dẫn đến việc tac giả sử dụng cach thông

thường là đặt khối CC trong khối user data path của nf2_core nhằm tận dụng

những tiện ích có sẵn như trong hình vẽ dưới đây:

Hình 5.36 Sơ đồ khối CC trong user data path

5.2.3 Ghép nối với các khối khác trong User data path

Khi được đặt trong khối udp, CC được ghép nối với hai khối Output Port

Lookup và Output Queue gần giống như trong mô hình pipeline của cac module đã

trình bày ở chương hai (Hình 2.15). Đây là lý do tại sao việc triển khai khối CC bên

ngoài user data path (không mô hình pipeline) là khó khăn.

NETFPGA GROUP-KSTN-ĐTVT-K52 86

Page 103: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Việc mô tả ghép nối tổng quat giữa cac khối trong user data path đã được

trình bày trong mục 2.2.4.2. Hình 5.37 dưới đây sẽ miêu tả cụ thể khối thành phần

trong khối user data path cũng như kết nối của chúng với khối CC.

Hình 5.37 Sơ đồ ghép nối CC với các khối khác trong user data path

Ở đây, đường dữ liệu thay vì được nối với cả hai khối Output Port Lookup và

Output Queue như mô hình pipeline trên Hình 2.15, mà sẽ được nối thẳng tới khối

buffer trong nf2_top như trên Hình 5.36. Cụ thể ta, cần sửa lại file user_data_path.v,

đồng thời thêm khối mới vào trong file quản lý nf2_core.xml:

...

<nf:group name="udp">

<nf:instance name="in_arb" base="0x02000100"/>

<nf:instance name="vlan_remover" />

<nf:instance name="header_parser" />

<nf:instance name="watchdog" base="0x02001400"/>

<nf:instance name="match_arbiter" />

<nf:instance name="OpenFlow_output_port_lookup"

...

NETFPGA GROUP-KSTN-ĐTVT-K52 87

Page 104: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

5.2.4 Thiết kế khối clock controller

Thiết kế của khối Clock controller gồm có:

- Khối điều khiển thanh ghi generic_regs: Khối này có kết nối với cac khối

điều khiển thanh ghi của cac khối khac tạo thành môt pipeline . generic_regs

được xây dựng dựa trên cơ sở khối generic_regs có sẵn được tìm thấy ở thư

mục netfpga/lib/Verilog/core/utils/generic_regs/src.

- Thanh ghi trạng thai key 16-bit ghi nhận của cac clock. Bốn bit đầu cho bốn

clock của cac khối DCM1 đến DCM4. Bit thứ 8 cho clock của khối

nf2_core. Cac bit còn lại sẽ sử dụng cho cac tac vụ khac sau này.

- Ngoài ra còn có thanh ghi đệm key_wire để truyền dữ liệu giữa khối điều

khiển thanh ghi generic_regs và thanh ghi trạng thai key.

Hình 5.38 Sơ đồ khối thiết kế của CC

Từ sơ đồ khối trên, tac giả tạo ra file clock_controller.v lưu module CC với

đầu ra và đầu vào như sau:

// --- Register interface

input reg_req_in,

input reg_ack_in,

input reg_rd_wr_L_in,

NETFPGA GROUP-KSTN-ĐTVT-K52 88

Page 105: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

input [`UDP_REG_ADDR_WIDTH-1:0] reg_addr_in,

input [`CPCI_NF2_DATA_WIDTH-1:0] reg_data_in,

input [UDP_REG_SRC_WIDTH-1:0] reg_src_in,

output reg_req_out,

output reg_ack_out,

output reg_rd_wr_L_out,

output [`UDP_REG_ADDR_WIDTH-1:0] reg_addr_out,

output [`CPCI_NF2_DATA_WIDTH-1:0] reg_data_out,

output [UDP_REG_SRC_WIDTH-1:0] reg_src_out,

// --- Misc

input clk,

input reset,

// --- Clock control

output [15:0] esrc_en,

input esrc_clk

Thanh ghi trạng thai key ở phần cứng sẽ được mô tả rõ ràng trong file mô tả

clock_controller.xml:

<nf:registers>

<nf:register>

<nf:name>key</nf:name>

<nf:description>The Key value used by the Clock

Controller Module</nf:description>

<nf:type>generic_software32</nf:type>

</nf:register>

</nf:registers>

Cuối cùng, tac giả tiến hành biên dịch lại dựa an bằng câu lệnh sau:

cd ~/netfpga/projects/OpenFlow_switch/synth/

NETFPGA GROUP-KSTN-ĐTVT-K52 89

Page 106: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

time make

Sau khi biên dịch lại dự an, tac giả có file cấu hình OpenFlow_switch.bit cho

NetFPGA ở ~/netfpga/bitfiles/. Ngoài ra, còn có file tiêu đề

reg_defines_OpenFlow_switch.h dùng cho việc viết ứng dụng phần mềm ở địa chỉ

~/netfpga/OpenFlow_switch/lib/C/.

5.3 Thiết kế phần mềm

Để thực hiện việc tiết kiệm năng lượng trên cac NetFPGA dựa trên việc tắt

bật và thay đổi trạng thai của port và bô chuyển mạch, tac giả đã nghiên cứu và triển

khai cac vấn đề sau :

o Cach thức nhận và xử lý lệnh điều khiển từ bô điều khiển tới bô chuyển

mạch OpenFlow bao gồm môt may tính Linux có cài đặt card NetFPGA.

o Thêm cac hàm xử lý gói tin mới và gửi kết quả xuống phần cứng

NetFPGA.

5.3.1 Truyền, nhận va xử lý bản tin từ bô điều khiển

Cac gói tin điều khiển từ bô điều khiển sẽ được gửi xuống cổng Ethernet

(cổng eth0) của may tính chứa card NetFPGA như Hình 5.39[7] dưới đây:

NETFPGA GROUP-KSTN-ĐTVT-K52 90

Page 107: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Hình 5.39 Sơ đồ mạng OpenFlow đơn giản

Cac port trên NetFPGA được dùng để gửi, nhận, chuyển tiếp… cac gói tin

trong mạng OpenFlow theo cac flow entry và cac action được định nghĩa trong flow

table 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 may tính chứa NetFPGA.

NETFPGA GROUP-KSTN-ĐTVT-K52 91

Page 108: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Hình 5.40 Sơ đồ hệ thống bô điều khiển va bô chuyển mạch OpenFlow

Hình 5.40[9] mô tả sơ đồ cac khối trong việc gửi, nhận và xử lý gói tin, điều

khiển phần cứng NetFPGA. 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 tach bản

tin và gửi lệnh xuống NetFPGA thông qua khối DRIVER.

5.3.2 Lam việc với phần mềm của chuyển mạch OpenFlow

Để thực hiện việc viết thêm cac hàm xử lý gói tin, tac giả đã tìm hiểu cấu trúc

cac file và thư mục trong root/openflow/. Đây chính là thư mục thực hiện nhiệm vụ

của khối Openflow software ở trên.

Cấu trúc thư mục openflow trong đường dẫn root/openflow như sau:

<openflow> `

NETFPGA GROUP-KSTN-ĐTVT-K52 92

Page 109: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

|-- include | `-- openflow |-- lib |-- udatapath `-- hw-lib `-- nf2

Để thực hiện việc thay đổi, trước tiên chúng ta cần sửa cac file cài đặt sau:

<openflow> ` |-- acinclude.m4 |-- Makefile.am `-- udatapath `-- automake.mk

Thêm cac hàm xử lý gói tin mới vào cac file sau trong thư mục udatapath với

cấu trúc thư mục như sau:

<openflow> `-- udatapath ` |-- chain.c |-- datapath.c |-- of_ext_msg.c |-- udatapath.c `-- some header files

Thay đổi cac file trong thư mục nf2 với cấu trúc đường dẫn như sau:

<openflow> `-- hw-lib `-- nf2

Vai trò chính của thư viện nf2 đó là:

Chứa cac bảng nf2, biểu diễn của cac bảng trên phần cứng NetFPGA. Cac bảng này tương đương với cac bảng trong không gian người dùng. Đây chính là giao diện để giao tiếp với phần cứng NetFPGA.

NETFPGA GROUP-KSTN-ĐTVT-K52 93

Page 110: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Làm sang tỏ sự liên hệ giữa NetFPGA bitmaps và cac cấu trúc trong phần mềm.

Giao tiếp với driver của NetFPGA trong không gian kernel.

5.3.3 Xây dựng va triển khai các chức năng mới

Trong giới hạn đề tài xây dựng bô chuyển mạch OpenFlow trên nền tảng phần

cứng NetFPGA, tac giả tập trung vào việc gửi nhận và xử lý cac gói tin

OFPT_PORT_MOD và OFPT_SWITCH_MOD như đã trình bày trong phần 4.4.4.

Cac hàm xử lý gói tin trong Bảng 5.10 dưới đây được thêm vào file

datapath.c trong thư mục root/OpenFlow/udatapath để thực hiện việc xử lý cac gói

tin.

Bảng 5.10 Các ham xử lý gói tin

Ham Chức năng

turn_on_port() Bật port

turn_off_port() Tắt port

change_link_rate(

)

Thay đổi gia trị clock của port theo tốc đô link từng thời

điểm

turn_on_switch() Bật switch

turn_off_switch() Tắt switch

sleep_switch() Chuyển switch về chế đô sleep

Cac hàm trong được thêm vào file nf2_drv.c trong thư mục

root/OpenFlow/hw-lib/nf2 để điều khiển phần cứng NetFPGA.

NETFPGA GROUP-KSTN-ĐTVT-K52 94

Page 111: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

Bảng 5.11 Các ham điều khiển phần cứng NetFPGA

Ham Chức năng

nf2_turn_on_port()

Ghi gia trị “0” vào 1 trong 8 bit đầu của thanh ghi

CLOCK_CONTROLLER_KEY_REG để bật TX

và RX của 1 trong 4 port.

nf2_turn_off_port()

Ghi gia trị “1” vào 1 trong 8 bit đầu của thanh ghi

CLOCK_CONTROLLER_KEY_REG để tắt TX

và RX của 1 trong 4 port.

nf2_change_link_rate()

Ghi gia trị 01,10,11 tương ứng với cac gia trị

10Mbps, 100Mbps và 1Gbps vào bit thứ 9 và 10

của thanh ghi để thay đổi gia trị clock của port theo

tốc đô link từng thời điểm.

nf2_turn_on_switch()

Ghi gia trị “00” vào bit 11 và 12 của thanh ghi

CLOCK_CONTROLLER_KEY_REG để bật

switch.

nf2_turn_off_switch()

Ghi gia trị “11” vào bit 11 và 12 của thanh ghi

CLOCK_CONTROLLER_KEY_REG để tắt

switch.

nf2_sleep_switch()

Ghi gia trị “01” vào bit 11 và 12 của thanh ghi

CLOCK_CONTROLLER_KEY_REG để tắt

switch.

Thêm thư viện vào file datapath.c trong thư mục root/OpenFlow/udatapath:

#include ../hw-lib/nf2/nf2.h

#include ../hw-lib/nf2/nf2_drv.h

Biên dịch lại code và cài đặt lại gói OpenFlow cho may tính:

$ cd /root/OpenFlow

$ ./configure --enable-hw-tables=nf2

NETFPGA GROUP-KSTN-ĐTVT-K52 95

Page 112: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 5ƯƠ

$ make

$ make install

5.4 Kết luận chương

Chương này đã đưa ra cac giải phap giúp tiết kiệm năng lượng trong cac trung

tâm dữ liệu trên nền tảng mạng OpenFlow đó là thiết kế cac khối chức năng mới

trong phần cứng NetFPGA để tạo nên cac chuyển mạch thông minh có khả năng tự

tiết kiệm năng lượng. Việc thử nghiệm kết quả sẽ được trình bày ở chương tiếp theo

của đồ an này.

NETFPGA GROUP-KSTN-ĐTVT-K52 96

Page 113: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

Chương 6. Thực hiện đo đạc va kết quả

Trong chương này, tac giả sẽ đanh gia cac kết quả đạt được thông qua việc đo

đạc mức năng lượng trước và sau khi sử dụng cac giải phap vừa nêu.

Để thiết lập môt testbed thực tế, trước hết chúng ta tìm hiểu cac thành phần

quan trọng là bô điều khiển, chuyển mạch OpenFlow, cac host (hoặc may tính ca

nhân) kết nối tới cac chuyển mạch.

Do việc trển khai bản tin điều khiển tắt chuyển mạch từ bô điều khiển xuống

OSC hoặc switch chưa thực hiện được trên thực tế nên phần này chỉ tập trung vào

việc ngắt kết nối giữa cac chuyển mạch (hay ngắt cac port) sử dụng bản tin

PORT_MOD có sẵn trong phiên bản OpenFlow 1.0.0.

6.1 Cơ sở hạ tầng thiết lập testbed

Hình 6.41 dưới đây mô tả sơ đồ testbed đơn giản ban đầu gồm môt bô điều

khiển (controller), môt chuyển mạch (switch) và bốn host dùng để kiểm tra những

giải phap cac chương trước đã đề ra.

Hình 6.41 Sơ đồ testbed ban đầu

NETFPGA GROUP-KSTN-ĐTVT-K52 97

Page 114: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

Việc tìm hiểu chuyển mạch OpenFlow và bô điều khiển NOX controller đã

được trình bày tương đối rõ ràng trong Chương 3 của đồ an nên phần này chỉ tập

trung chủ yếu vào thành phần còn lại là cac host nối với bô chuyển mạch.

Với trường hợp có sẵn NetFPGA, chúng ta có thể cấu hình phần cứng này

thành môt NIC 4-port đóng vai trò như 4 host.

Reference Network Interface Card project

Reference NIC project là môt trong những project mẫu dùng cho người mới

tìm hiểu về NetFPGA học cach tìm hiểu về nó. Với project này, chúng ta có thể cấu

hình NetFPGA card thành môt card mạng 4 cổng đôc lập. Trong một số trường hợp

có thể coi là 4 host riêng biệt. Cac cổng này có thể gửi nhận bản tin bằng cach sử

dụng cac hàm có sẵn trong thư viện NetFPGA.

Cac bước thực hiện như sau (mặc định thư mục cài đặt netfpga là ~/netfpga:

Cấu hình cho NetFPGA thành NIC card

nf_download ~/netfpga/bitfiles/reference_nic.bit

Cấu hình địa chỉ Ip cho cac cổng mạng. Dưới đây là ví dụ:

/sbin/ifconfig nf2c0 192.168.1.100

/sbin/ifconfig nf2c1 192.168.1.101

/sbin/ifconfig nf2c2 192.168.1.102

/sbin/ifconfig nf2c3 192.168.1.103

Sử dụng công cụ counterdump để kiểm tra sự truyền nhận gói tin của cac

port trên NetFPGA. Công cụ này nằm ở thư mục sw trong reference_nic

project.

NETFPGA GROUP-KSTN-ĐTVT-K52 98

Page 115: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

cd ~/netfpga/projects/reference_nic/sw/

make

Sau khi build thành công, công cụ đơn giản này sẽ đọc thanh ghi đếm gói tin

(phần cứng) và ghi nó lên trên terminal. Để sử dụng, gõ lệnh sau:

./counterdump

Công cụ sẽ in ra màn hình như sau:

Found net device: nf2c0Num pkts received on port 0: 0Num pkts dropped (rx queue 0 full): 0Num pkts dropped (bad fcs q 0): 0Num bytes received on port 0: 0Num pkts sent from port 0: 0Num bytes sent from port 0: 0

Num pkts received on port 1: 0Num pkts dropped (rx queue 1 full): 0Num pkts dropped (bad fcs q 1): 0Num bytes received on port 1: 0Num pkts sent from port 1: 0Num bytes sent from port 1: 0

Num pkts received on port 2: 0Num pkts dropped (rx queue 2 full): 0Num pkts dropped (bad fcs q 2): 0Num bytes received on port 2: 0Num pkts sent from port 2: 0Num bytes sent from port 2: 0

Num pkts received on port 3: 0Num pkts dropped (rx queue 3 full): 0Num pkts dropped (bad fcs q 3): 0Num bytes received on port 3: 0Num pkts sent from port 3: 0Num bytes sent from port 3: 0

NETFPGA GROUP-KSTN-ĐTVT-K52 99

Page 116: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

Ngoài counterdump cac nhà phat triển cũng cung cấp thêm send_pkts đề gửi

gói tin qua môt cổng mạng bất kỳ. Công cụ này trong phiên bản mới nhất

3.0.0 đặt ở thư mục ~/netfpga/lib/C/tools/send_pkts.

cd ~/netfpga/lib/C/tools/send_pkts

make

Muốn gửi 10 gói tin, mỗi gói có đô dài 100 byte từ cổng mạng nf2c0 (cổng

gần mainboard may tính nhất) ta sử dụng câu lệnh sau:

sudo ./send_pkts -i nf2c0 -s 10 -l 100

Công cụ sẽ tự đông chèn header cũng như 4 byte kiểm tra mã CRC vào gói

tin và gửi đi qua cổng mạng nf2c0.

6.2 Bô điều khiển chuyển mạch

6.2.1 Thiết lập hệ thống

Sau khi thực hiện bô điều khiển chuyển mạch (OSC) thành công, tac giả thiết

lập môt hệ thống thực nghiệm bao gồm môt may tính đóng vai trò Controller, môt

Switch được xây dựng trên môt may tính có card NetFPGA và thêm môt may tính có

NIC 4 cổng (NIC card 4 cổng này đôc lập truyền nhận với nhau, đóng vai trò như là

4 host hoặc chuyển mạch khac).

Hình 6.42 Sơ đồ hệ thống Testbed cho Hình 6.43 Hệ thống Testbed thực tế cho

NETFPGA GROUP-KSTN-ĐTVT-K52 100

Page 117: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

OSC OSC

Hình 6.42 và Hình 6.43 mô tả hệ thống testbed cho bô OSC.

Bô điều khiển (controller) là môt may tính chạy phần mềm NOX destiny

cho phiên bản OpenFlow 1.0.0, trên nền tảng hệ điều hành ubuntu 10.04.

Chuyển mạch (Switch) là may tính có NetFPGA card được cấu hình

thành OpenFlow switch phiên bản 2.1.0, trên nền tảng hệ điều hành

CentOS 5.8.

PC có NIC 4 cổng là may tính có NetFPGA card được cấu hình thành

Reference NIC phiên bản 3.0.0, trên nền tảng hệ điều hành CentOS 5.8.

6.2.2 Test hệ thống

- Chạy bô điều khiển NOX ở địa chỉ 192.168.1.17

./nox_core –v I ptcp:6633 pyswitch

- Chạy chuyển mạch OpenFlow và kết nối với bô điều khiển

./of_start 192.168.1.17:6633

- Add cac luông (flow) từ port 2 sang 4 vào flow table của OpenFlow switch

sử dụng lệnh dpctl

dpctl add-flow unix:/var/run/test

in_port:2,idle_timeout=300,actions=output:4

dpctl add-flow unix:/var/run/test

in_port:4,idle_timeout=300,actions=output:2

- Chạy OSC và kết nối với bô điều khiển.

- Gửi bản tin từ host 2 (nf2c1 của NIC) qua giao diện ethernet. Nếu OSC

không ngắt kết nối ở port 2 hoặc 4 thì bản tin này sẽ đến được port 2 (tức

NETFPGA GROUP-KSTN-ĐTVT-K52 101

Page 118: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

nf2c1) của chuyển mạch và sẽ được chuyển đến host 4 qua port 4 (tức nf2c3)

của chuyển mạch.

sudo ./send_pkts -i nf2c1 -s 10 -l 1000

- Sử dụng chương trình counterdump để kiểm tra lại số lượng gói tin đi qua

cac port này.

./counterdump

- Cấu hình bô điều khiển ở chế đô spanning_tree để gửi bản tin PORT_MOD

xuống OSC yêu cầu tắt cac port và thực hiện lại cac bước trên nhằm kiểm tra

xem có gói tin truyền nhận qua chuyển mạch OpenFlow hay không.

6.2.3 Kết quả

Tiến hành kiểm tra, ta có kết quả như sau:

- Số gói tin gửi nhận thu về ở 4 host trong trường hợp host 2 (nf2c1) gửi host 4

(nf2c3) không ngắt kết nối giữa 2 chuyển mạch:

[root@dhcppc17 sw]# ./counterdumpFound net device: nf2c0Num pkts received on port 0: 0Num pkts dropped (rx queue 0 full): 0Num pkts dropped (bad fcs q 0): 0Num bytes received on port 0: 0Num pkts sent from port 0: 0Num bytes sent from port 0: 0

Num pkts received on port 1: 0Num pkts dropped (rx queue 1 full): 0Num pkts dropped (bad fcs q 1): 0Num bytes received on port 1: 0Num pkts sent from port 1: 10Num bytes sent from port 1: 1000

Num pkts received on port 2: 0Num pkts dropped (rx queue 2 full): 0Num pkts dropped (bad fcs q 2): 0

NETFPGA GROUP-KSTN-ĐTVT-K52 102

Page 119: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

Num bytes received on port 2: 0Num pkts sent from port 2: 0Num bytes sent from port 2: 0

Num pkts received on port 3: 10Num pkts dropped (rx queue 3 full): 0Num pkts dropped (bad fcs q 3): 0Num bytes received on port 3: 1000Num pkts sent from port 3: 0Num bytes sent from port 3: 0

- Số gói tin gửi nhận thu về ở 4 host trong trường hợp host 2 (nf2c1) gửi host 4

(nf2c3) bô điều khiển gửi bản tin PORT_MOD ngắt kết nối giữa 2 chuyển

mạch:

[root@dhcppc17 sw]# ./counterdumpFound net device: nf2c0Num pkts received on port 0: 0Num pkts dropped (rx queue 0 full): 0Num pkts dropped (bad fcs q 0): 0Num bytes received on port 0: 0Num pkts sent from port 0: 0Num bytes sent from port 0: 0

Num pkts received on port 1: 0Num pkts dropped (rx queue 1 full): 0Num pkts dropped (bad fcs q 1): 0Num bytes received on port 1: 0Num pkts sent from port 1: 20Num bytes sent from port 1: 2000

Num pkts received on port 2: 0Num pkts dropped (rx queue 2 full): 0Num pkts dropped (bad fcs q 2): 0Num bytes received on port 2: 0Num pkts sent from port 2: 0Num bytes sent from port 2: 0

Num pkts received on port 3: 10Num pkts dropped (rx queue 3 full): 0Num pkts dropped (bad fcs q 3): 0Num bytes received on port 3: 1000

NETFPGA GROUP-KSTN-ĐTVT-K52 103

Page 120: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

Num pkts sent from port 3: 0Num bytes sent from port 3: 0

- Ta thấy sau 10 gói tin tiếp theo không thể đến được host 4 như yêu câu. Như

vậy OSC thành công trong việc ngắt kết nối giữa hai chuyển mạch.

Đo điện lượng tiêu thụ trên OSC bằng cach xac định điện ap và dòng điện đi

qua OSC, tac giả đã thu được kết quả như Bảng 6.12 và Bảng 6.13 dưới đây:

Bảng 6.12 Bảng năng lượng tiêu thụ của OSC khi không có kết nối nao bị ngắt

(relay không hoạt đông)

Lần

1

Lần

2

Lần

3

Lần

4

Lần

5

Trung

bình

Dòng điện (mA) 139 138 137 139 134 137

Điện áp (V) 5.12 5.12 5.12 5.13 5.12 5.12

Năng lượng tiêu thụ

(mW)

703

Bảng 6.13 Bảng năng lượng tiêu thụ của OSC theo số lượng kết nối bị ngắt (số

lượng relay hoạt đông)

Số lượng kết nối bị ngắt 0 1 2 3 4

Dòng điện (mA) 139 197 251 310 370

Điện áp (V) 5.13 5.12 5.12 5.12 5.12

Năng lượng tiêu thụ (mW) 713 1009 1285 1587 1894

Từ những kết quả thu được, chúng ta có những kết luận sau:

- Khi không có port nào được tăt, OSC chạy và tốn khoảng 700mW.

- Tổng công suất tiêu thụ trên OSC là khoảng 700 + 4 * 300 = 1900mW. Năng

lượng tiết kiệm được tăng theo số lượng kết nối bị ngắt.

NETFPGA GROUP-KSTN-ĐTVT-K52 104

Page 121: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

- Với mỗi port được tắt, điện năng tiêu thụ trên OSC được tăng thêm 300mW

nhưng điện năng tiêu thụ trên NetFPGA lại giảm đi 1W[11] và do đó, chúng

ta có năng lượng tiết kiệm được 1000 – 300 = 700mW/port.

- Ngoài ra, tac giả đã tính toan được thời gian đap ứng của hệ thống bắt đầu

tính từ lúc nhận bản tin cho đến khi gửi bản tin là khoảng 5ms (bằng cach sử

dụng cac timer thời gian của vi điều khiển).

6.3 Chuyển mạch OpenFlow có chức năng tiết kiệm năng lượng

6.3.1 Thiết lập hệ thống

Với bô chuyển mạch OpenFlow thiết kế mới này, tac giả thiết lập môt hệ

thống thực nghiệm bao gồm môt may tính làm controller và môt may tính có

NetFPGA làm Switch và môt may tính có card mạng NIC 4 cổng (NIC 4 cổng này

đóng vai trò như là 4 host).

Hình 6.44 Sơ đồ hệ thống testbed

cho chuyển mạch OpenFlow mới

Hình 6.45 Hệ thống testbed chuyển mạch

OpenFlow trong thực tế

Hình 6.44 và Hình 6.45 mô tả hệ thống testbed cho chuyển mạch OpenFlow với bô

tiết kiệm năng lượng mới.

Bô điều khiển (controller) là môt may tính chạy phần mềm NOX destiny cho

phiên bản OpenFlow 1.0.0, trên nền tảng hệ điều hành ubuntu 10.04

Chuyển mạch (Switch) là may tính có NetFPGA card được cấu hình thành

OpenFlow switch phiên bản 2.1.0, trên nền tảng hệ điều hành CentOS 5.8

NETFPGA GROUP-KSTN-ĐTVT-K52 105

Page 122: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

PC có NIC 4 cổng là may tính có NetFPGA card được cấu hình thành

Reference NIC phiên bản 3.0.0, trên nền tảng hệ điều hành CentOS 5.8

Hình 6.46 Sơ đồ kết nối chuyển mạch - NIC cho hệ thống testbed

6.3.2 Test hệ thống

Việc test thử phương an này tương tự với phương an sử dụng OSC, tuy nhiên

khi gửi bản tin PORT_MOD thay vì gửi xuống OSC ta gửi xuống chuyển mạch

OpenFlow để xử lý.

6.3.3 Kết quả

Tiến hành kiểm tra ta có kết quả như sau:

- Kết quả kiểm tra số lượng gói tin nhận phat giống với phương an sử dụng

OSC. Chuyển mạch có khả năng nhận bản tin gửi từ bô điều khiển xuống và

đóng ngắt cac port tương ứng.

- Do thời gian và thiết bị có giới hạn nhóm chưa thể có môt bài test nào cụ thể

nhằm tìm ra lượng điện năng tiêu thụ thực tế trong chuyển mạch OpenFlow

là bao nhiêu mà chỉ đanh gia được đã tạo ra môt phần cứng đạt yêu cầu đề ra.

6.4 Kết luận chương

Như vậy, kết thúc chương này, chúng ta đã lần lượt thử nghiệm cac giải phap

phần cứng trên nền môt mạng OpenFlow cụ thể. Qua việc thử nghiệm, cả hai

phương an đã thực sự thực hiện được cac yêu cầu đề ra của đồ an. Về phương diện lý

thuyết, phương an thứ hai - xây dựng khối phần cứng mới trên chuyển mạch

NETFPGA GROUP-KSTN-ĐTVT-K52 106

Page 123: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ CH NG 6ƯƠ

OpenFlow tỏ ra ưu việt hơn trong việc tiết kiệm năng lượng. Song trên thực tế lại

chưa có được môt đanh gia nào về mức năng lượng tiêu thụ khi thực hiện ap dụng

chuyển mạch OpenFlow mới này. Việc đo đạc năng lượng tiêu thụ sẽ được nhóm

hoàn thiện trong tương lai.

NETFPGA GROUP-KSTN-ĐTVT-K52 107

Page 124: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

Kết luận va hướng phát triển của đề tai

Thông qua đồ an, ta đã lần lượt triển khai hai giải phap

phần cứng hướng đến chuyển mạch OpenFlow nhằm tiết kiệm

năng lượng trong trung tâm dữ liệu. Những giải phap này phần

nào làm giảm được điện năng tiêu thụ trong trung tâm dữ liệu.

Đồng thời, thông qua đồ an, cac tac giả cũng tạo ra được cac

bản tin điều khiển mới, cũng như xây dựng trên thực tế được

môt mô hình hoàn thiện dùng để thử nghiệm những nghiên cứu

sâu hơn về phần cứng.

Tuy nhiên, trong đồ an này tac giả vẫn còn môt số vấn đề

chưa giải quyết được, đó là chưa đưa ra được con số cụ thể về

mức năng lượng tiêu thụ trên chuyển mạch OpenFlow khi thêm

chức năng tiết kiệm năng lượng; và chưa thể đưa chuyển mạch

này về trạng thai “nghỉ” toàn bô (mà chỉ có thể ngắt được từng

port môt mà phần lõi vẫn hoạt đông).

Trong thời gian sắp tới, tac giả sẽ nghiên cứu cach đưa

chuyển mạch OpenFlow về trạng thai “nghỉ” toàn bô, chuyển

tần số hoạt đông của chuyển mạch theo yêu cầu và thực hiện

đanh gia môt cach đầy đủ hơn về mức năng lượng tiêu thụ của

chuyển mạch OpenFlow mới này. Điều này chắc chắn sẽ giúp

cac nhà điều hành trung tâm dữ liệu tiết kiệm được lượng năng

lượng không nhỏ khi vận hành.

NETFPGA GROUP-KSTN-ĐTVT-K52 108

Page 125: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

TÀI LIỆU THAM KHẢO

[1] Truong Thu Huong, Pham Ngoc Nam, Nguyen Huu Thanh, Daniel Schlosser,

Michael Jarschel, Rastin Pries, "ECODANE – Reducing Energy Consumption

in Data Center Networks based on Traffic Engineering" (poster), in the

Proceedings of 11th Würzburg Workshop on IP: Joint ITG and Euro-NF

Workshop "Visions of Future Generation Networks" (EuroView2011), August

1st - 2nd 2011, Würzburg, Germany

[2] Priya Mahadevan, Puneet Sharma, Sujata Banerjee, Parthasarathy

Ranganathan, “Energy Aware Network Operations”, HP Labs, 2009.

[3] ONF White Paper, www.opennetworking.org, lần truy cập cuối 30/05/2012.

[4] Jad Naous, David Erickson, G. Adam Covington, Guido Appenzeller, Nick

McKeown, “Implementing an OpenFlow switch on the NetFPGA platform”,

ANCS, San Jose, CA, USA, November 6–7, 2008.

[5] Phạm Ngọc Nam, Slide bài giảng thiết kế với vi mạch khả trình.

[6] Pong P.Chu, FPGA prototyping using Verilog examples, John Wiley & Sons,

2008.

[7] OpenFlow White Paper, www. OpenFlow .org/documents/ OpenFlow - wp -

latest . pdf , lần truy cập cuối 30/05/2012

[8] http://yuba.stanford.edu/foswiki/bin/view/OpenFlow/Deployment/HOWTO/

LabSetup truy cập lần cuối ngày 31/05/2012

[9] NetFPGA Gigabit Router, www.netfpga.org truy cập lần cuối ngày

31/05/2012

[10] http://www.OpenFlow.org truy cập lần cuối ngày 30/05/2012

[11] Vijay Sivaraman, Arun Vishwanath, Zhi Zhao, Craig Russell, “Profiling Per-

Packet and Per-Byte Energy Consumption in the NetFPGA Gigabit Router”,

IEEE, 2011

[12] http://vi.wikipedia.org/wiki/C%E1%BA%A5u_tr%C3%BAc_ARM truy cập

lần cuối ngày 31/05/2012

NETFPGA GROUP-KSTN-ĐTVT-K52 109

Page 126: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

[13] Arm coxtex-m3 http://ti.com và http://ti.com/product/lm3s6965 truy cập lần

cuối ngày 30/05/2012

[14] IBM System Networking RackSwitch G8264 and RackSwitch G8264T,

http://www-03.ibm.com/systems/x/options/networking/bnt8264/index.html

[15] http://en.wikipedia.org/wiki/Ethernet_over_twisted_pair truy cập lần cuối

ngày 31/05/2012

[16] OpenFlow Specification, http://www.OpenFlow.org truy cập lần cuối ngày

30/05/2012

[17] http://lwip.wikia.com/wiki/LwIP_Wiki truy cập lần cuối ngày 31/05/2012

[18] http://www.noxrepo.org/ truy cập lần cuối ngày 30/05/2012

[19]B. Heller, S. Seetharaman, P. Mahadevan, Y. Yiakoumis, P. Sharma, S.

Banerjee, N. McKeown,“Elastic tree: Saving Energy in Data Center

Networks”,USENIX NSDI, April, 2010.

NETFPGA GROUP-KSTN-ĐTVT-K52 110

Page 127: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

PHỤ LỤC

Phụ lục 1: Code OpenFlow.c

#include "lwip/debug.h"#include "lwip/stats.h"#include "httpd.h"#include "lwip/tcp.h"#include "fs.h"#include "OpenFlow.h"#include "inc/lm3s8962.h"#include "inc/hw_memmap.h"#include "inc/hw_types.h"#include "driverlib/gpio.h"#include "driverlib/ethernet.h"#include "driverlib/sysctl.h"#define ON 0x01#define OFF 0x00#include <string.h>

unsigned int unpackint8(unsigned char *buf){

return (buf[0]);}unsigned int unpackint16(unsigned char *buf){

return (buf[0]<<8 | buf [1]);}unsigned long unpackint32(unsigned char *buf){

return ((buf[0]<<24) | (buf[1]<<16) | (buf[2]<<8) | buf[3]);}static err_tofp_received(void *arg, struct tcp_pcb *pcb,struct pbuf *p, err_t err){

u8_t *state = (u8_t *)arg; u16_t len;unsigned char * buf ;err_t buf_err = 0;u8_t *ver;u8_t *type;u16_t *port_no;u8_t hw_addr[6];u32_t *config;u16_t *of_len;

NETFPGA GROUP-KSTN-ĐTVT-K52 111

Page 128: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

int i;LWIP_UNUSED_ARG(err);if((err == ERR_OK ) && ( p != NULL )){

len = p->tot_len; buf = p->payload; tcp_recved(pcb, len);//Tach lay gia tri version va type cua ban tin*ver = unpackint8(buf);buf +=1;*type = unpackint8(buf);if(*type == OFPT_HELLO){

RIT128x96x4Enable(1000000); RIT128x96x4StringDraw("OFPT_HELLO ", 12, 56, 15);

RIT128x96x4StringDraw("Version 0x01", 12, 64, 15);RIT128x96x4Disable();

} else if(*type == OFPT_PORT_MOD){

RIT128x96x4Enable(1000000); RIT128x96x4StringDraw("OFPT_PORT_MOD", 12, 56, 15);

RIT128x96x4StringDraw("Version 0x01", 12, 64, 15);RIT128x96x4Disable();//Tach lay gia tri port_no, hw_addr, config tu ban tin

OFPT_PORT_MODbuf+=7;*port_no = unpackint16(buf);buf+=2;for( i = 0;i<6;i++){

hw_addr[i] = unpackint8(buf);buf+=1;

}*config = unpackint32(buf);if(*config == OFPPC_PORT_DOWN){

GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, ON);GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, ON);

}else{ GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, OFF);

GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, OFF);}

}

NETFPGA GROUP-KSTN-ĐTVT-K52 112

Page 129: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

else{

RIT128x96x4Enable(1000000); RIT128x96x4StringDraw("I dont know ", 12, 56, 15);

RIT128x96x4Disable();}buf_err = pbuf_free(p); if(buf_err == ERR_MEM){

RIT128x96x4Enable(1000000); RIT128x96x4StringDraw("error while freeing buf ", 12,

80, 15);RIT128x96x4Disable();

}while(p->next){

pbuf_free(p->next);p=p->next;

}}

}static err_tofp_connected(void *arg, struct tcp_pcb *pcb, err_t err){

struct ofp_header *oh;LWIP_UNUSED_ARG(arg);oh = (struct ofp_header *)mem_malloc(sizeof(struct ofp_header));if (oh == NULL){

return ERR_MEM;}oh->version = OFP_VERSION;oh->type = OFPT_HELLO;oh->length = 8;oh->xid = 0;if (err != ERR_OK){

RIT128x96x4Enable(1000000); RIT128x96x4StringDraw("Can't connect to host", 12, 48, 15);

RIT128x96x4Disable();}else{

RIT128x96x4Enable(1000000); RIT128x96x4StringDraw("OK connected", 12, 48, 15);

NETFPGA GROUP-KSTN-ĐTVT-K52 113

Page 130: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

RIT128x96x4Disable();tcp_write(pcb, oh,8,1);tcp_output(pcb);tcp_recv(pcb, ofp_received);

}

return err;}void ofp_err(void *arg, err_t err) {

mem_free(arg); } void ofp_end(struct tcp_pcb *pcb, u8_t *state) {

tcp_err(pcb, NULL); tcp_recv(pcb, NULL); tcp_sent(pcb, NULL); tcp_poll(pcb, NULL, 0); mem_free(state);

} err_t ofp_poll_close(void *arg, struct tcp_pcb *pcb) {

u8_t *state = (u8_t *)arg; struct ofp_header *oh;

oh = (struct ofp_header *)mem_malloc(sizeof(struct ofp_header));if (oh == NULL){

return ERR_MEM;}oh->version = OFP_VERSION;oh->type = OFPT_HELLO;oh->length = 8;oh->xid = 0;tcp_write(pcb, oh,8,1);tcp_output(pcb);return ERR_OK;

} err_t ofp_connect(void) {

u8_t *state; err_t err; struct tcp_pcb *pcb; struct ip_addr ipaddr; IP4_ADDR(&ipaddr, 192,168,1,34); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

NETFPGA GROUP-KSTN-ĐTVT-K52 114

Page 131: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_4|GPIO_PIN_5);GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_0|GPIO_PIN_2|GPIO_ PIN_3|

GPIO_PIN_1);if ((state = mem_malloc(1)) == NULL) return ERR_MEM; *state = 1; if ((pcb = tcp_new()) == NULL) {

mem_free(state); return ERR_MEM;

}

tcp_arg(pcb, state); tcp_err(pcb, ofp_err); tcp_recv(pcb, ofp_received); tcp_sent(pcb, NULL); tcp_poll(pcb, ofp_poll_close, 10); err = tcp_connect(pcb, &ipaddr, 6633, ofp_connected); if (err != ERR_OK) {

mem_free(state); tcp_abort(pcb);

} return err;

}

Phụ lục 2: Code clock_controller.v

///////////////////////////////////////////////////////////////////////////////// vim:set shiftwidth=3 softtabstop=3 expandtab:// $Id: clock_controller.v 2012-05-27 12:43:27 by Enbac119 $//// Module: clock_controller.v// Project: NF2.1// Description: Control the clocks of RX modules and nf2_core//// Caveats: Things will break for IPv4 packets with options... :-//////////////////////////////////////////////////////////////////////////////////`timescale 1ns/1psmodule clock_controller #( parameter DATA_WIDTH = 64, parameter CTRL_WIDTH = DATA_WIDTH/8, parameter UDP_REG_SRC_WIDTH = 2 )

NETFPGA GROUP-KSTN-ĐTVT-K52 115

Page 132: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

( // --- data path interface

// --- Register interface input reg_req_in, input reg_ack_in, input reg_rd_wr_L_in, input [`UDP_REG_ADDR_WIDTH-1:0] reg_addr_in, input [`CPCI_NF2_DATA_WIDTH-1:0] reg_data_in, input [UDP_REG_SRC_WIDTH-1:0] reg_src_in,

output reg_req_out, output reg_ack_out, output reg_rd_wr_L_out, output [`UDP_REG_ADDR_WIDTH-1:0] reg_addr_out, output [`CPCI_NF2_DATA_WIDTH-1:0] reg_data_out, output [UDP_REG_SRC_WIDTH-1:0] reg_src_out,

// --- Misc input clk, input reset,

// Them vao output [15:0] esrc_en, input esrc_clk );

`LOG2_FUNC //--------------------- Internal Parameter---------------------

//---------------------- Wires and regs------------------------

wire [`CPCI_NF2_DATA_WIDTH-1:0] key;

//------------------------- Modules---------------------------- generic_regs #( .UDP_REG_SRC_WIDTH (UDP_REG_SRC_WIDTH), .TAG (`CLOCK_CONTROLLER_BLOCK_ADDR), .REG_ADDR_WIDTH (`CLOCK_CONTROLLER_REG_ADDR_WIDTH), // Width of block addresses .NUM_COUNTERS (0), // How many counters

NETFPGA GROUP-KSTN-ĐTVT-K52 116

Page 133: Nghiên cứu giải pháp phần cứng tiết kiệm năng lượng trong trung tâm dữ liệu

Đ ÁN T T NGHI PỒ Ố Ệ 2012

.NUM_SOFTWARE_REGS (1), // How many sw regs .NUM_HARDWARE_REGS (0) // How many hw regs ) generic_regs ( .reg_req_in (reg_req_in), .reg_ack_in (reg_ack_in), .reg_rd_wr_L_in (reg_rd_wr_L_in), .reg_addr_in (reg_addr_in), .reg_data_in (reg_data_in), .reg_src_in (reg_src_in),

.reg_req_out (reg_req_out), .reg_ack_out (reg_ack_out), .reg_rd_wr_L_out (reg_rd_wr_L_out), .reg_addr_out (reg_addr_out), .reg_data_out (reg_data_out), .reg_src_out (reg_src_out),

// --- counters interface .counter_updates (), .counter_decrement(),

// --- SW regs interface .software_regs (key),

// --- HW regs interface .hardware_regs (),

.clk (clk), .reset (reset) );

//----------------------- Logic -----------------------------

reg [15:0] key_wire; always @(posedge esrc_clk) if (reset)

key_wire <= 15’b0; else

key_wire <= key[15:0]; assign esrc_en = key_wire;

endmodule // clock_controller

NETFPGA GROUP-KSTN-ĐTVT-K52 117