TL;DR Tự động đàm phán đã bị tắt trên công tắc của tôi và có các cài đặt đề xuất của nhà sản xuất cho kết nối 40G. Bật tính năng tự động thương lượng đã giải quyết được sự cố.
Tôi muốn trả lời câu hỏi của mình bằng các chi tiết từ cuộc phiêu lưu của tôi trên con đường này để thiết lập mạng 40 gigabit. Bằng cách này, bất kỳ ai khác thử điều này trong tương lai đều có một số điểm tham khảo.
Tôi nghĩ điều quan trọng cần lưu ý là tôi đã sử dụng NIC 40G của mình ở chế độ Ethernet chứ không phải Infiniband. Trình điều khiển Ethernet dường như hoạt động, nhưng tôi đã kết thúc với trình điều khiển OFED vì nó đã hoạt động và tôi không muốn làm phiền nó nữa. Nếu bạn có kế hoạch để có được một thiết lập như thế này, bảo đảm thẻ của bạn có khả năng ở chế độ Ethernet!
Những gì tôi đã cố gắng
Khi tôi có công tắc, NIC và cáp, tôi đã cài đặt trình điều khiển/phần mềm OFED (OpenFabrics Enterprise Distribution) do Mellanox/Nvidia cung cấp. Khi những thứ đó không thiết lập được liên kết, tôi đã sử dụng các công cụ được tích hợp trong phần mềm để cập nhật chương trình cơ sở của chúng. Nó khá đơn giản, vấn đề duy nhất tôi gặp phải là tìm tệp .bin chương trình cơ sở mới nhất cho các thẻ cụ thể của mình. Phần mềm tôi sử dụng là 2.33.5000, vẫn còn khá cũ nhưng mới hơn những gì có trên thẻ.
Sau khi thất bại, tôi cho rằng dây cáp/bộ thu phát (một thiết bị) là thủ phạm. Tôi đã đổi dây cáp mà tôi đã mua ban đầu để lấy một cặp (56G 10m AOC + ĐẮC 56G 2m > AOC 40G 11m + ĐẮC 40G 1m) của các loại cáp tùy chỉnh được thiết kế cho công tắc Mikrotik cụ thể mà tôi đã mua. Vì chúng đã được tùy chỉnh, chúng mất một tháng để đến nơi. Khi những thứ này đến và không hoạt động, tôi đã bối rối và tiếp tục tìm kiếm sự trợ giúp trên các diễn đàn khác nhau. Chẳng bao lâu sau, tôi được gợi ý mua một công cụ từ FS.com, điều này sẽ cho phép tôi mã hóa lại nhà cung cấp trên bộ thu phát để hy vọng lừa được NIC hoạt động.
Vì cáp đã được tùy chỉnh cho công tắc, tôi cho rằng đó là do NIC không hợp tác. Đặt bộ thu phát thành IBM hoặc Mellanox đều không hoạt động.Sau khi tìm kiếm thêm sự trợ giúp, một số người đề nghị tôi tìm tài liệu về NIC và tìm cáp/bộ thu phát tương thích. Tôi đã tìm thấy một tệp PDF (mặc dù không được cung cấp hoặc tạo bởi IBM/Mellanox) liệt kê một số số bộ phận tương thích mà FS.com đã cung cấp. Vì vậy, tôi đã mua Bộ giải mã IBM 49Y7890 1m từ FS.com.
Khi nó đến, tôi thấy đây cũng không phải là giải pháp. Quá tuyệt vọng, tôi đã tìm thấy một số chủ đề của những người đã flash thẻ của họ sang phần sụn Mellanox thực sự. Tôi quyết định thử sức mình với nó. Sau một số khắc phục sự cố để trình cập nhật hoạt động, tôi đã flash thành công phiên bản chương trình cơ sở 2.42.5000 với PSID mới là MT_1100120019 (Xem đoạn 4 'Đây chưa phải là kết thúc' để biết chi tiết về cách điều này có thể làm hỏng mọi thứ. Xem tại đây để biết cách vượt đèn flash). Sau khi nỗ lực này không thành công, các cuộc thảo luận tiếp theo đã diễn ra về vấn đề này và cuối cùng kết luận rằng tôi nên kiểm tra các NIC được kết nối trực tiếp với nhau. Sau khi tôi kết nối các NIC với nhau và thiết lập mạng con của chúng, tôi thấy tốc độ 36,5GBit/giây bằng một số thử nghiệm iperf (vì iperf và iperf3 là một luồng nên bạn sẽ cần thiết lập nhiều NIC cho các tốc độ này. Tôi thiết lập 16 bộ mỗi bộ để sử dụng 10 chủ đề). Khi tôi đã loại bỏ các NIC khỏi danh sách thủ phạm, tôi bắt đầu tự hỏi liệu cài đặt tự động đàm phán trên công tắc có phải là một vấn đề hay không. Bật lại tôi thấy ngay 'link ok'.
Đây không phải là kết thúc của nó
Tôi đã thiết lập để hoạt động, hóa ra không có vấn đề về khả năng tương thích và tôi có thể không bao giờ cần phải đổi cáp của mình hoặc mua cáp của IBM. Tôi ngây ngất nhưng điều này còn lâu mới kết thúc. Tôi đã định chạy thiết lập này với Proxmox trên máy chủ của mình và Windows dưới dạng máy khách. Cả hai hệ thống này sẽ được trang bị 40G.
Vì tôi biết mình sẽ làm hỏng cài đặt Proxmox nhiều lần, nên trước tiên tôi sao lưu mọi thứ vào một ổ đĩa khác. Sau khi hoàn tất, tôi tiến hành cài đặt trình điều khiển Mellanox OFED trên Proxmox.Có một số vấn đề khi thử điều này, trình điều khiển OFED cố gắng xóa các gói rất quan trọng khỏi Proxmox vì chúng 'can thiệp' vào trình điều khiển (chúng không làm vậy). Vì vậy, tôi đã chỉnh sửa tập lệnh mlnxofedinstaller và nhận xét tất cả các cuộc gọi đến chức năng 'remove_old_packages'. Điều này ngăn trình cài đặt cung cấp cho Proxmox một lobotomy.
Tại thời điểm này, hầu hết mọi thứ đều hoạt động, vấn đề duy nhất tôi gặp phải là gửi dữ liệu đến máy chủ. Nó không chấp nhận nhiều hơn vài megabyte mỗi giây, ít hơn nhiều so với những gì tôi nên nhận. Tôi đã thử nhiều phiên bản phần mềm khác nhau, thử Ubuntu 20.04, 19.XX không hoạt động do các phụ thuộc mà Proxmox không có nhưng hai bản cài đặt đó thì có. Tôi buộc phải cài đặt trình điều khiển Ubuntu 18.04 vì đây là những trình điều khiển mới nhất không có vấn đề phụ thuộc. Việc cài đặt trình điều khiển thường không giải quyết được vấn đề về tốc độ. Vì vậy, tôi đã cố gắng cài đặt các gói hạt nhân chỉ bằng cách sử dụng --kernel-chỉ
cờ trên trình cài đặt. Tại một số thời điểm, tôi đã đạt được tốc độ mà mình đang tìm kiếm, nhưng đây là một sự may mắn vì tôi không thể sao chép chúng sau này. Tôi quyết định thử một số biến thể của trình điều khiển Debian 10, có tốc độ tốt hơn một chút ở mức 20 MB/giây. Sau một thời gian nảy ý tưởng với người khác, tôi đã thử đặt mạng 40G thành 9000 MTU. Điều này dẫn đến một số kết quả kỳ lạ nghiêm trọng. Tốc độ chỉ đạt 1 gigabit mặc dù toàn bộ thiết lập có MTU là 9000. Tôi đã chuyển nó trở lại 1500 để thử nghiệm thêm trên Ubuntu thay vì Proxmox, vì tôi có tốc độ tốt trên Ubuntu. Điều này không thành công, các bài kiểm tra tốc độ mà tôi đã thực hiện ban đầu chắc hẳn chỉ là một sự ăn may.
Tôi quyết định hoán đổi các NIC trong hệ thống, đánh dấu chúng là 1 và 2 sau khi lấy chúng ra để không bị nhầm lẫn. Sau khi chạy nhiều bài kiểm tra tốc độ hơn, hóa ra thẻ trong hệ thống Proxmox là vấn đề. Tôi đã có thể gửi ở tốc độ tối đa, nhưng không thể nhận ở tốc độ tối đa. Tôi nhớ lại các trình điều khiển cập nhật chương trình cơ sở trên NIC đó và không nghĩ nhiều về nó vì tôi đang sử dụng phiên bản mới nhất.Vì vậy, tôi flash lại phiên bản flash chéo mà tôi đã cài đặt ban đầu. Sau khi thử nghiệm thêm, chúng tôi kết luận rằng tốc độ giới hạn ở mức 22GBit/giây trở lên và 11GBit/giây trở xuống là kết quả của nhiều nút cổ chai khác nhau giữa các hệ thống. Thử nghiệm cụ thể trên đĩa RAM có tệp 30 gibibyte, chúng tôi đã kết luận rằng máy chủ có DIMM được điền gấp đôi có thể ghi với tốc độ gấp đôi. Cố gắng sử dụng NVMe với hệ thống tệp NTFS trên hệ thống thử nghiệm đã hoạt động kém do lớp tương thích là một luồng. Sau khi chạy thêm hàng chục bài kiểm tra iperf, mọi thứ đều hoạt động trơn tru, ngay cả với máy chủ đang chạy Proxmox.
Lưu ý khi sử dụng trình điều khiển OFED, bạn sẽ mất khả năng kết nối với mạng chia sẻ CIFS. Trình điều khiển OFED dỡ mô-đun này cho đến khi trình điều khiển không còn chạy nữa. Trình điều khiển Ethernet hoạt động nhưng có thể cần phải flash qua chương trình cơ sở mellanox.
Con đường phía trước
Vì tôi có ngân sách khoảng 1.500 đô la nên tôi phải sử dụng một số thiết bị rẻ nhất mà tôi có thể tìm thấy. Do đó, các thẻ mạng $60. Khi tôi tìm thấy công tắc Mikrotik mới này với giá 500 đô la, tôi đã rất thích thú. Nó có tất cả những gì tôi cần với mức giá tốt nhất mà tôi có thể tìm được, thậm chí còn đánh bại một số thiết bị đã qua sử dụng. Nó không có giấy phép cổng và đi kèm với một trong những giấy phép phần mềm hàng đầu. Đó thực sự là một thỏa thuận khó khăn để đánh bại. Tất nhiên mọi thứ đều đi kèm với sự thỏa hiệp.
Mặc dù tôi không thực sự có ý định sử dụng các cổng 10G SFP+, nhưng tôi muốn chúng để mở rộng trong tương lai. Tôi đã nhận được một bộ chuyển đổi SFP+ sang RJ45 và một NIC 10G nên tôi có một số thứ để kiểm tra trong khi thiết bị 40G đang được vận chuyển. Tôi có thể nhận được tổng cộng 2 gigabit mỗi giây trên 10G NIC. Đây là tất cả dữ liệu tôi có thể cung cấp giữa kết nối internet 1 gigabit và máy chủ được trang bị 1 gigabit của tôi. Nhưng cố gắng chạy tải lên gigabit lên internet từ thẻ 10G dẫn đến tốc độ thấp hơn nhiều so với tôi mong đợi. Tôi chỉ nhận được khoảng 300Mb/giây mặc dù có thể đạt tốc độ 900Mb/giây khá chắc chắn.Tôi đã tiến hành hỏi xung quanh và lý thuyết về việc công tắc không có kích thước bộ đệm để giảm 10G xuống 1G là kết luận. Lý thuyết này được củng cố bằng cách chuyển đường lên 1G của bộ định tuyến của tôi sang cổng 10G và cố gắng tải lên ở tốc độ gigabit từ hệ thống 40G (chỉ giảm 4 lần, thay vì 10 lần) đã giảm tốc độ xuống ~1mbps. Điều này cho thấy 48 cổng 1G có bộ đệm dùng chung.
Đây thực sự không phải là vấn đề đối với máy Windows của tôi, vì tôi chưa bao giờ tải lên ở tốc độ đó. Nhưng đối với máy chủ của tôi, đây là một vấn đề khá lớn. Việc băng thông tải lên bị cắt xuống còn một phần ba có thể trở thành một vấn đề thực sự. Sau khi tìm hiểu kỹ một số thứ, tôi thấy rằng mình có thể sử dụng các chỉ số định tuyến để buộc lưu lượng truy cập thông qua NIC 40G hoặc NIC 1G tùy thuộc vào vị trí của nó. Mặc dù giải pháp này không hoàn hảo 100% nhưng nó vẫn hoạt động khá tốt.
Sử dụng tuyến đường -n
lệnh Tôi có thể thấy các tuyến đường hiện tại của mình. Mục tiêu là sửa đổi các tuyến đường để 40G được ưu tiên cho các kết nối cục bộ và 1G được ưu tiên cho các kết nối internet. Số liệu trên tuyến đường càng cao thì chi phí sử dụng càng đắt, vì vậy hệ thống sẽ sử dụng tuyến đường ít tốn kém nhất.
Proxmox vận chuyển với ifupdown theo mặc định, nó ổn định hơn và có nhiều tính năng hơn. Netplan có thể thêm các tuyến đường, nhưng không thể xóa hoặc sửa đổi chúng. Nó cũng không cho phép bạn chạy các lệnh trước, trong hoặc sau khi bắt đầu giao diện. Bạn có thể sử dụng netplan, nhưng bạn sẽ cần thiết lập một dịch vụ riêng để xóa/sửa đổi các tuyến bổ sung.
Đây là hiện tại của tôi /etc/mạng/giao diện
config, tôi phải thêm các lệnh sau vào NIC của mình để thêm các tuyến vào;
tự động ens18 # 1 Gigabit NIC
iface ens18 inet tĩnh
...
post-up /usr/sbin/route add -net 192.168.0.0/24 metric 1000 ens18
tự động ens19 # 40 Gigabit NIC
iface ens19 inet tĩnh
...
post-up /usr/sbin/route add -net 0.0.0.0/0 gw 192.168.0.1 metric 1000 ens19
post-up /usr/sbin/route add -net 192.168.0.0/24 metric 1 ens19
post-up /usr/sbin/route del -net 192.168.0.0/24 metric 0 ens19
Các tuyến đường của bạn sẽ trông như thế nào;
Bảng định tuyến IP hạt nhân
Cổng đích Genmask Flag Metric Ref Sử dụng Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 1 0 0 ens18
0.0.0.0 192.168.0.1 0.0.0.0 UG 1000 0 0 ens19
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 ens19
192.168.0.0 0.0.0.0 255.255.255.0 U 1000 0 0 ens18
Rõ ràng là các giao diện này sẽ cần phải có trên các IP cục bộ khác nhau, tôi khuyên bạn nên sử dụng IP được đặt thành 40G NIC cho mọi thứ cục bộ. Nếu có thứ gì đó cần được chuyển tiếp qua cổng, hãy sử dụng NIC gigabit. Bạn có thể sử dụng gigabit NIC cục bộ miễn là bạn không gửi nhiều hơn 100MB mỗi lần. Định tuyến này có thể hoạt động nếu bạn gửi dữ liệu cục bộ 40 gigabit/giây tới IP được liên kết với cổng gigabit, tuy nhiên, điều này không phải lúc nào cũng nhất quán.
Điều quan trọng cần lưu ý là nếu bạn đang sửa đổi một tuyến đường, bạn nên thêm phiên bản đã sửa đổi trước khi xóa phiên bản cũ.
Cũng cần lưu ý rằng thiết lập của bạn có thể không cần chính xác như tôi đã đăng ở trên. Ví dụ: cài đặt Proxmox của tôi đã thêm tuyến đường cho ens18, vì vậy tôi cần xóa tuyến đường đó sau khi thêm tuyến đường tôi muốn.
Và thế là xong! Cuối cùng tôi đã hoàn thành thiết lập của mình với tốc độ tôi muốn. Tôi có thể truyền đến máy chủ của mình với tốc độ khoảng 1,7 GB/giây và từ khoảng 1 GB/giây (giới hạn là NTFS hoặc một trong các ổ SSD).