Chelsio T580 trên pfSense: làm sao để đưa một cổng QSFP+ về chế độ 4x10G cho cáp breakout
Mình chạy pfSense trên một con máy nhỏ có Chelsio T580, và muốn một trong các cổng QSFP+ cấp cho bốn host 10G thay vì một đường 40G duy nhất. Cáp breakout thì vẫn đang trên đường về, nên mình muốn card đã ở đúng mode trước khi cáp tới.
- Máy pfSense, Chelsio T580, một cổng QSFP+ hiện đang cắm DAC 40G, cage thứ hai còn trống
- driver cxgbe, có cxgbetool dùng được từ shell
- DAC breakout QSFP+ sang 4xSFP+, OCTTAPCABLE3M (phương án dự phòng là AOC OCTCABLE5M-SR)
- host 10G ở đầu xa, cage SFP+ thường
Hiện tại card chỉ luôn hiện đúng hai interface 40G:
cxgbe0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 9000
media: Ethernet 40Gbase-CR4 <full-duplex>
cxgbe1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
media: Ethernet autoselect
status: no carrier
Những gì mình đã làm:
- lục qua hết các subcommand của cxgbetool để tìm thứ gì đó giống setting port-mode, không thấy gì
- tìm loader tunable cho cxgbe có thể tách cổng ra, cũng không có
- đọc đủ nhiều để khá chắc là chỉ riêng sợi cáp sẽ không làm được việc đó, adapter phải ở mode 4x10G trước đã
Vậy việc tách 40G / 4x10G có phải là thứ mà driver FreeBSD chuyển được hay không, hay nó nằm trong cấu hình của adapter? Và nếu là cấu hình, thì cách được hỗ trợ để đổi nó từ một máy chạy FreeBSD là gì?
Comments 5
Nói ngắn gọn: driver không làm được việc này. Cách bố trí cổng đến từ cấu hình được nạp vào adapter, đó chính là lý do vì sao cả cxgbe lẫn cxgbetool đều không hề để lộ ra một công tắc đổi mode nào. Bạn đổi nó bằng chính công cụ cấu hình của Chelsio, và card sẽ quay lại với một personality mới.
Đưa công cụ đó vào máy (chỉ cần một USB stick mount vào đâu đó là đủ) rồi chạy:
Nó hỏi bạn muốn nói đến adapter nào, rồi tới mode nào bạn muốn. Mode breakout được liệt kê là Spider (4x10G), đó chính là mục biến cổng QSFP+ thành bốn lane 10G.
Trên một bản cài sạch, lần chạy đầu thường sập ngay lập tức:
Không có gì lạ, chỉ là thiếu một thư viện. Cài flashrom vào thì nó sẽ kéo theo như một dependency:
Cái đó kéo theo libpci 3.5.6_1, sau đó script chạy được và việc đổi mode báo thành công.
Một lưu ý, vì bạn đang làm việc này trước khi cáp tới: tất cả những gì bạn có ở thời điểm đó chỉ là công cụ báo rằng mode đã được áp dụng. Còn bốn lane có thực sự lên hay không thì chỉ chứng minh được khi có cáp breakout cắm trong cage, nên đừng gỡ bỏ phần cấu hình 40G cho tới khi bạn đã kiểm tra xong.
Trước khi tiếp tục lục tìm knob trong driver: card đang chạy cấu hình nào, và bạn có đưa được python2.7 vào máy đó không? Thứ thay đổi được chuyện này là một công cụ của Chelsio, không phải một phần của bộ công cụ FreeBSD, và trên một bản cài gốc nó cần thêm vài thứ không có sẵn.
Thêm một chuyện nữa, vì cxgbe0 hiện đang lên link ở 40G: có gì đang chạy trên cổng đó mà bạn không thể để mất không? Mode đến từ cấu hình được nạp vào adapter, nên card sẽ quay lại với một personality khác và cả hai cổng biến mất trong lúc đó xảy ra. Làm việc này từ console, đừng làm qua chính đường link 40G đó.
Xác nhận, và đúng thứ tự luôn. Lần chạy đầu chết với
sau đó pkg install flashrom kéo libpci 3.5.6_1 vào và script chạy ngon lành. Nó liệt kê adapter, mình chọn Spider (4x10G), và nó báo việc đổi mode thành công.
Cáp thì vẫn chưa tới, nên mình chưa nói được gì về bốn cổng kia cả. Mình sẽ báo lại khi nào OCTTAPCABLE3M thực sự nằm trong cage.
Cùng ý tưởng đó nhưng trên chip switch, với thủ tục rườm rà hơn nhiều. Trên một con ICX 7750, cổng 40G sẽ không tách ra cho tới khi máy thoát khỏi cut-through mode:
Sau đó bạn gỡ hết cấu hình khỏi cổng 40G và bật breakout lên nó:
Sau lần reload thứ hai, bốn sub-port hiện ra là 1/2/1:1 đến 1/2/1:4 và hoạt động như những interface 10G độc lập bình thường. Hai lần reload chỉ để cắm một sợi cáp, nhưng ít ra đây là hành vi có tài liệu ghi lại, chứ không phải một cấu hình adapter ẩn mà bạn phải tự biết là nó tồn tại.
Đáng nói thêm là mode chỉ là một nửa trận chiến thôi, đầu xa cũng phải chấp nhận chính sợi cáp đó. Trên MX204 và MX10003, một DAC 40G thường vẫn lên link tốt dưới các bản Junos cũ; khi DAC 100G được hỗ trợ chính thức, mấy con DAC 40G âm thầm rớt khỏi danh sách, và giờ thì chúng không còn được hỗ trợ trên mấy máy đó nữa. Cái được hỗ trợ là quang breakout 4x10G, QSFPP-4X10GE-LR hoặc SFPP-4X10GE-SR, và hàng bên thứ ba thường phải được mã hóa đúng SKU tương ứng thì cổng mới chịu nhìn tới.
Con Chelsio của bạn dễ tính hơn nhiều so với một linecard router, nhưng nếu bốn nhánh đó đấu vào thiết bị của hãng khác, hãy kiểm tra xem thiết bị đó xử lý DAC breakout thế nào trước khi quay lại đổ lỗi cho mode của adapter.