intTypePromotion=1
ADSENSE

Thiết kế bộ đệm cho các thiết bị chuyển mạch crossbar lớp 2 sử dụng kiểu bộ nhớ chia sẻ

Chia sẻ: ViSumika2711 ViSumika2711 | Ngày: | Loại File: PDF | Số trang:8

19
lượt xem
0
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài viết giáo thiệu thuật toán mô tả thiết kế bộ nhớ chia sẻ trên nền tảng công nghệ FPGA cải tiến từ các công bố trước đây, đồng thời cũng đưa ra một số kết quả đánh giá sử dụng FPGA của Xilinx. Kết quả đánh giá cho thấy thuật toán cải tiến đáp ứng được trong ứng dụng thiết kế thiết bị chuyển mạnh lớp 2.

Chủ đề:
Lưu

Nội dung Text: Thiết kế bộ đệm cho các thiết bị chuyển mạch crossbar lớp 2 sử dụng kiểu bộ nhớ chia sẻ

Công nghệ thông tin<br /> <br /> THIẾT KẾ BỘ ĐỆM CHO CÁC THIẾT BỊ CHUYỂN MẠCH<br /> CROSSBAR LỚP 2 SỬ DỤNG KIỂU BỘ NHỚ CHIA SẺ<br /> Nguyễn Văn Thành, Nguyễn Thị Mỹ Linh, Trần Đức Huy,<br /> Thái Trung Kiên*, Hoàng Đình Thắng<br /> Tóm tắt: Bài báo giáo thiệu thuật toán mô tả thiết kế bộ nhớ chia sẻ trên<br /> nền tảng công nghệ FPGA cải tiến từ các công bố trước đây, đồng thời cũng đưa ra<br /> một số kết quả đánh giá sử dụng FPGA của Xilinx. Kết quả đánh giá cho thấy thuật<br /> toán cải tiến đáp ứng được trong ứng dụng thiết kế thiết bị chuyển mạnh lớp 2. Đây<br /> là kết quả ban đầu của dự án nghiên cứu “Nghiên cứu thiết kế, chế tạo thiết bị<br /> chuyển mạch (Switch) có tính năng an toàn, bảo mật thông tin trên nền tảng<br /> FPGA và mã nguồn mở”.<br /> Từ khóa: Share-memory; Switch; FPGA.<br /> <br /> 1. ĐẶT VẤN ĐỀ<br /> Mô hình chuyển mạch lớp 2 được sử dụng ngày nay dựa trên cấu trúc Crossbar,<br /> theo [1] cấu trúc thiết bị được mô tả như trên hình 1.<br /> <br /> 1 2 3 4 5<br /> <br /> <br /> <br /> <br /> 1<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> 3<br /> <br /> <br /> <br /> <br /> 4<br /> <br /> <br /> <br /> <br /> 5<br /> <br /> <br /> <br /> <br /> Hình 1. Kiến trúc chuyển mạch lớp 2.<br /> Trong kiến trúc này bộ đệm cho các gói tin được tổ chức trên cả đầu vào, đầu ra<br /> và cho từng điểm giao (crossbar). Từ kiến trúc như vậy thiết bị chuyển mạch có<br /> một số kiểu bộ đệm như sau:<br /> - Kiến trúc bộ đệm đầu vào (kiểu 1).<br /> - Kiến trúc bộ đệm đầu ra (kiểu 2).<br /> - Kiến trúc bộ đệm kết hợp (kiểu 3).<br /> Theo [2] kiến trúc bộ đệm kiểu 1 có thông lượng hệ thống chỉ bằng 58,6%<br /> thông lượng có thể đạt được của hệ thống. Kiến trúc kiểu 2 sẽ dẫn đến dung lượng<br /> bộ đệm rất lớn và khó có thể tổ chức các thiết bị có thông thượng lớn do giới hạn<br /> <br /> <br /> 182 N. V. Thành, …, H. Đ. Thắng, “Thiết kế bộ đệm cho các thiết bị … kiểu bộ nhớ chia sẻ.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> của các công nghệ bộ nhớ. Như vậy người ta sử dụng kiểu 3, và chia sẻ các bộ đệm<br /> cho tất cả các đầu vào và đầu ra.<br /> Theo [3], [4], [5] cấu trúc bộ nhớ chia sẻ cho các thiết bị chuyển mạch lớp 2<br /> được đưa ra như hình 2. Trong hình 2, thiết bị bao gồm các phần như sau:<br /> - Bộ đệm dữ liệu đầu vào.<br /> - Bộ đệm dữ liệu đầu ra.<br /> - Bộ đệm dữ liệu chia sẻ.<br /> - Bộ thuật toán quản lý dữ liệu.<br /> Bộ nhớ chia sẻ<br /> <br /> 1<br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> N<br /> <br /> <br /> <br /> <br /> Thuật toán quản lý bộ nhớ<br /> <br /> Bộ đệm đầu ra<br /> Bộ đệm đầu vào<br /> <br /> 1 1<br /> <br /> <br /> 2 2<br /> Gói đến Gói đi<br /> <br /> <br /> N N<br /> <br /> <br /> <br /> <br /> Hình 2. Kiến trúc chung bộ nhớ chia sẻ.<br /> Cấu trúc hình 2 hoạt động trên cơ sở một số giả thiết như sau:<br /> - Các gói tin được đưa đến và đi có tốc độ như nhau trên tất cả các cổng.<br /> - Các gói tin có kích thước không thay đổi.<br /> - Các gói tin được lưu trữ trên các ô nhớ bằng đúng kích thước của chúng.<br /> Các gói tin trong hệ thống mạng không có kích thước giống nhau, tốc độ của<br /> các gói tin đến từ các cổng cũng không giống nhau. Như vậy để có thể thực hiện<br /> các cấu trúc này cần phải được cải tiến. Trên thực tế hãng Cisco đã sử dụng cấu<br /> trúc này cho nhiều thiết bị [6], tuy nhiên các kết quả nghiên cứu và ứng dụng của<br /> họ đều không được công bố. Một trong các thiết kế cho các thiết bị chuyển mạch<br /> được tham khảo từ [7], kiến trúc này sử dụng cho các thiết bị chuyển mạch trong<br /> mạng ATM và có kích thước gói cố định 64 byte.<br /> 2. XÂY DỰNG MÔ HÌNH BỘ NHỚ CHIA SẺ<br /> Kiến trúc bộ nhớ chia sẻ cho các thiết bị chuyển mạch lớp 2 trong thiết kế của<br /> được đưa ra trên hình 3.<br /> Kiến trúc này thực hiện với thiết bị chuyển mạch lớp 2, với một số yêu cầu<br /> như sau:<br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 183<br /> Công nghệ thông tin<br /> <br /> - Bộ nhớ chia sẻ được phân thành các ô nhớ, mỗi ô nhớ có kích thước 64 byte.<br /> - Các gói tin được phân chia thành các đoạn, mỗi đoạn 64 byte.<br /> - Các gói tin có thể được ghi ở các ô nhớ không liên tiếp nhau.<br /> Như vậy, kiến trúc này khác với các kiến trúc đã được công bố ở các điểm sau:<br /> - Các gói tin có độ dài thay đổi.<br /> - Các gói tin bị phân mảnh thành các đoạn 64 byte.<br /> - Các gói tin có trọng số khác nhau để đảm bảo thực hiện QoS.<br /> Để giải quyết các vấn đề thực tế, ở đây đưa thêm các thành phần so với kiến<br /> trúc được nêu trong [7] bao gồm:<br /> - Tổ chức các danh sách liên kết để đánh dấu các gói tin khi chúng bị phân mảnh.<br /> - Bộ nhớ chia sẻ có con trỏ đọc và con trỏ ghi riêng.<br /> - Tổ chức việc đọc/ghi các gói tin theo danh sách liên kết để đảm bảo đọc chính<br /> xác vị trí các ô nhớ, khối liên kết đọc dữ liệu và khối liên kết ghi dữ liệu chứa địa<br /> chỉ ô nhớ tiếp theo cần đọc của mỗi gói tin trên bộ nhớ chia sẻ.<br /> - Hàng đợi chứa giá trị địa chỉ ô nhớ đầu tiên của danh sách liên kết đọc dữ liệu,<br /> và dự trữ để tính QoS cho việc ghi dữ liệu.<br /> Bộ nhớ chia sẻ Hàng đợi dữ liệu đầu ra<br /> 1<br /> <br /> <br /> <br /> <br /> 2<br /> <br /> <br /> <br /> <br /> N<br /> <br /> <br /> <br /> <br /> Quản lý bộ các bộ nhớ<br /> <br /> <br /> Liên kết đọc dữ liệu Liên kết ghi dữ liệu<br /> <br /> Hình 3. Kiến trúc bộ nhớ chia sẻ cải tiến<br /> Như vậy, để thực hiện cấu trúc này ưu tiên lớn nhất phải xây dựng được liên kết<br /> đọc/ghi dữ liệu. Sơ đồ thuật toán thực hiện điều khiển các danh sách liên kết được<br /> đưa ra trên hình 4.<br /> Các bước ghi dữ liệu bao gồm:<br /> - Bước 1. Lựa chọn điểm đầu tiên để ghi dữ liệu theo vị trí con trỏ đánh dấu vị<br /> trí cuối cùng lần ghi trước.<br /> <br /> <br /> 184 N. V. Thành, …, H. Đ. Thắng, “Thiết kế bộ đệm cho các thiết bị … kiểu bộ nhớ chia sẻ.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> - Bước 2. Đọc giá trị dữ liệu từ các ô nhớ của liên kết ghi dữ liệu, nó là địa chỉ<br /> của bộ nhớ chia sẻ ghi dữ liệu.<br /> - Bước 3. Cập nhật giá trị vừa ghi sang liên kết đọc dữ liệu.<br /> Bắt đầu<br /> <br /> <br /> <br /> <br /> Write:<br /> - Start = 0.<br /> - Ô nhớ 0 ghi 1.<br /> - Ô nhớ 1 ghi 2…<br /> - Ô nhớ cuối = xff..ff<br /> <br /> <br /> <br /> <br /> Read:<br /> - Ghi xff..ff vào tất cả các<br /> ô.<br /> <br /> <br /> <br /> <br /> Write gói<br /> <br /> <br /> <br /> <br /> Write: Read gói<br /> - Start = Start + length<br /> <br /> <br /> <br /> <br /> Read:<br /> - Khởi tạo bản ghi mới.<br /> Read:<br /> - Start = Write Start.<br /> - Nhận giá trị đầu start từ bản ghi.<br /> - Ghi vào danh sách liên kết read (bộ nhớ read)<br /> - Đọc giá trị tiếp theo từ danh sách liên kết read.<br /> tương ứng với danh sách liên kết write (địa chỉ<br /> - Việc đọc dừng lại khi ô nhớ = xff...ff<br /> và giá trị bộ nhớ tương ứng bộ nhớ write)<br /> - Tại điểm: Start + length = xff...ff.<br /> <br /> <br /> <br /> <br /> Write:<br /> - Ghi vào điểm end giá trị start của bản ghi.<br /> - Các nút tiếp theo ghi theo giá trị đọc ra từ<br /> danh sách liên kết.<br /> - Giá trị cuối cùng của danh sách liên kết là ô<br /> nhớ tương ứng với giá trị dừng đọc của danh<br /> sách liên kết read.<br /> <br /> <br /> <br /> <br /> Kiểm tra cuối<br /> con trỏ đọc/ghi?<br /> <br /> <br /> <br /> <br /> Kết thúc<br /> <br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 185<br /> Công nghệ thông tin<br /> <br /> Hình 4. Thuật toán điều khiển danh sách liên kết.<br /> Các bước đọc dữ liệu:<br /> - Bước 1. Lấy vị trí đọc dữ liệu đầu tiên từ hàng đợi dữ liệu.<br /> - Bước 2. Đọc dữ liệu ở vị trí tiếp theo từ liên kết đọc dữ liệu.<br /> - Bước 3. Cập nhật các ô nhớ đã đọc cho danh sách liên kết ghi dữ liệu.<br /> 3. XÂY DỰNG BỘ NHỚ CHIA SẺ TRÊN CẤU TRÚC FPGA<br /> Các cấu trúc bộ nhớ chia sẻ thường sử dụng trên bộ nhớ DDR ngoài, việc thiết<br /> kế sử dụng trên DDR ngoài có một số nhược điểm như sau:<br /> - Việc ghi/đọc dữ liệu trền cùng bus nên khó khăn trong việc điều khiển.<br /> - Do giới hạn về công nghệ (tốc độ, số bus dữ liệu, khả năng hỗ trợ của FPGA)<br /> nên tốc độ đọc không cao.<br /> - Phức tạp trong thuật toán điều khiển đọc ghi.<br /> - Thời gian giữ chậm gói tin lớn.<br /> Ở đây, thiết kế và thực hiện bộ nhớ chia sẻ sử dụng các khối RAM nội của<br /> FPGA. Cụ thể trên chíp XC7K480T-2FFG1156C của hãng Xilinx, với những ưu<br /> điểm như sau:<br /> - Thời gian đọc ghi nhanh (1 chu kỳ clock).<br /> - Dễ dàng thực hiện đọc/ghi dữ liệu.<br /> Bảng 1. Kết thử nghiệm bằng Vivado 17.2 của Xilinx.<br /> Name BRAM_18K DSP48E FF LUT<br /> DSP - - - -<br /> Experssion - - 3564 2323<br /> FIFO - - - -<br /> Instance 0 - 8586 4233<br /> Memory 405 - 682 381<br /> Multiplexer - - - 652<br /> Register - - - -<br /> Total 405 - 12832 7589<br /> Vailable 1910 1920 597200 597200<br /> <br /> 4. THỬ NGHIỆM BỘ NHỚ CHIA SẺ TRÊN FPGA CỦA XILINX<br /> Sơ đồ thử nghiệm như được miêu tả trên hình 5, bao gồm các khối:<br /> - Khối tạo giả gói tin Gigabit Ethernet theo chuẩn IEEE 802.3az: thực hiện chức<br /> năng tạo ra các gói tin ethernet chuẩn có địa chỉ MAC và kiểu đảm bảo một gói<br /> được đưa đến cổng Port In có thể đưa tới một trong các cổng Port Out theo địa chỉ<br /> MAC đích.<br /> <br /> <br /> <br /> <br /> 186 N. V. Thành, …, H. Đ. Thắng, “Thiết kế bộ đệm cho các thiết bị … kiểu bộ nhớ chia sẻ.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> - Khối tính toán số block còn trống trong bộ nhớ: dựa vào danh sách liên kết<br /> đọc dữ liệu và danh sách liên kết ghi dữ liệu để tính số block còn trống.<br /> - Khối so sánh các gói đầu ra và đầu vào: kiểm tra địa chỉ MAC đích của các<br /> gói giữa đầu ra và đầu vào để tính toán sai số có thể xảy ra đối với hệ thống hay<br /> không.<br /> Các điều kiện thử nghiệm:<br /> - Tốc độ các gói đầu vào ngẫu nhiên, cực đại 1Gbps.<br /> - Độ trễ để đầu ra nhận dữ liệu của các Port Out giữa các gói là một micro giây.<br /> - Thời gian lấy mẫu của hệ thống một giây.<br /> - Kích thước gói tin từ 64Byte – 1500 Byte.<br /> - Số ô nhớ 64Byte khoảng 100.000 nghìn ô nhớ.<br /> <br /> Khối tính toán số<br /> block còn trống<br /> trong bộ nhớ<br /> <br /> <br /> <br /> <br /> Gigabit Ethernet Port IN 1 Gigabit Ethernet Port Out 1<br /> <br /> <br /> <br /> Gigabit Ethernet Port IN 2 Gigabit Ethernet Port Out 2<br /> <br /> Bộ tạo giả gói tin<br /> Ethernet với các<br /> Khối so sánh các gói<br /> tham số ngẫu nhiên Bộ nhớ chia sẻ<br /> đầu ra và đầu vào<br /> về độ dài và port<br /> vào, port ra<br /> <br /> <br /> <br /> <br /> Gigabit Ethernet Port IN 48 Gigabit Ethernet Port Out 48<br /> <br /> <br /> <br /> <br /> Hình 5. Sơ đồ thử nghiệm khối bộ nhớ chia sẻ.<br /> Ở đây tham số đáng quan tâm nhất của hệ thống bao gồm:<br /> - Số của gói tin đầu ra/tổng số gói tin đầu vào.<br /> - Đánh giá xem bộ nhớ có bị tràn bộ nhớ chia sẻ hay không.<br /> <br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 187<br /> Công nghệ thông tin<br /> <br /> <br /> <br /> <br /> Hình 6. Số ô nhớ còn trống khi thực hiện thử nghiệm.<br /> Sơ đồ hình 6 miêu tả kết quả tính toán số ô còn trống của hệ thống với thử<br /> nghiệm, như thể hiện số ô còn trống còn rất lớn trong điều kiện thử nghiệm (luôn<br /> lớn hơn 90000 ô trê tổng số 100000 nghìn ô nhớ), có nghĩa năng lực của hệ thống<br /> có thể đáp ứng ở điều kiện thử cao hơn.<br /> Trên hình 7, miêu tả tỷ số gói tin đúng (ở đầu ra)/tổng số gói tin đầu vào, có thể<br /> nhận thấy số gói tin bị discard do sai số rất thấp, và tỷ lên này luôn xấp xỉ bằng 1.<br /> <br /> <br /> <br /> <br /> Hình 7. Đồ thị tỉ lệ gói tin đúng/tổng số gói tin.<br /> Với kết quả thử nghiệm có một số nhận xét như sau:<br /> - Các tổ chức bộ nhớ theo phương pháp bộ nhớ chia sẻ có số ô trống lớn hơn 90%<br /> khi không có delay ở đầu ra.<br /> - Số gói tin bị hủy do việc đọc ghi từ bộ nhớ chia sẻ rất thấp (nhở hơn 0,1%).<br /> 5. KẾT LUẬN<br /> Bài báo mô tả một số kết quả nghiên cứu và thực hiện bộ nhớ chia sẻ sử dụng<br /> cho các thiết bị chuyển mạch, có một số nhận xét như sau:<br /> - Kế quả thực thực hiện bộ nhớ chia sẻ có thể ứng dụng trong thiết kế các<br /> chuyển mạch lớp 2 sử dụng FPGA không cần sử dụng các bộ nhớ ngoài;<br /> - Tốc độ truy cập và đáp ứng độ trễ thời gian của hệ thống rất thấp, thể hiện<br /> trên hình 6 do tỷ lệ số ô còn trống cao trong suốt quá trình thử nghiệm;<br /> <br /> <br /> 188 N. V. Thành, …, H. Đ. Thắng, “Thiết kế bộ đệm cho các thiết bị … kiểu bộ nhớ chia sẻ.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> - Với cách sử dụng bộ nhớ chia sẻ có thể giải quyết được các nhược điểm do<br /> công nghệ bộ nhớ ngoài để thiết kế các thiết bị truyệ thông có tốc độ cao.<br /> Lời cảm ơn: Bài báo này là kết quả nghiên cứu của đề tài “Nghiên cứu thiết kế,<br /> chế tạo thiết bị chuyển mạch (Switch) có tính năng an toàn, bảo mật thông tin trên<br /> nền tảng FPGA và mã nguồn mở”, thuộc Chương trình khoa hoc và công nghệ<br /> trọng điểm cấp quốc gia giai đoan 2016-2020: "Nghiên cứu công nghệ và phát triển<br /> sản phẩm công nghệ thông tin phục vụ Chính phủ điện tử", mã số KC.01/16-20.<br /> TÀI LIỆU THAM KHẢO<br /> [1]. Kennedy Clark, Kevin Hamilton, Cisco LAN Switching, Cisco Press, 1999.<br /> [2]. Itamar Elhanany, Mounir Hamdi, High-perfomance Packet Switching<br /> Architectures, Springer 2010.<br /> [3]. Sundar Iyer, Ramana Rao Kompella, Nick McKeown, Analysis of a Memory<br /> Architecture for Fast Packet Buffers, Computer Systems Laboratory, Stanford<br /> University.<br /> [4]. George Kornaros, A Buffered CrossBar Switch Fabric Utilizing Shared<br /> Memory, Proceedings of the 9th EUROMICRO Conference on Digital System<br /> Design, 2009.<br /> [5]. Dwayne Burns , Ciaran Toall, Kieran McLaughlin, Sakir Sezer, Mike Hutton,<br /> Kevin Cackovic, An FPGA Based Memory Efficient Shared Buffer<br /> Implementation, 2007 IEEE.<br /> [6]. https://www.cisco.com.<br /> [7]. Mutlu Arpaci, John A.Copeland, Buffer Management for Shared-Memory ATM<br /> switches, IEEE Communications Surveys & Tutorials, 2003.<br /> <br /> ABTRACT<br /> DESIGN BUFFER DATA FOR LAYER 2 SWITCH DEVICE<br /> USING SHARE MEMORY<br /> This paper introduces an algorithm using share memory technique on<br /> FPGA, which is based on other papers. The proposed algorithm is estimated<br /> on Xilinx’s FPGA chip to show that it can be used for designing layer 2-<br /> switch device. This is fist result for project “Design layer 2 security switch<br /> device based on FPGA and open source”.<br /> Keywords: Share-memory; Switch; FPGA.<br /> <br /> Nhận bài ngày 04 tháng 07 năm 2018<br /> Hoàn thiện ngày 09 tháng 10 năm 2018<br /> Chấp nhận đăng ngày 05 tháng 11 năm 2018<br /> Địa chỉ: Viện CNTT / Viện KH-CNQS.<br /> *<br /> Email: kienthaiturng@gmail.com.<br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 11 - 2018 189<br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2