Image default
Máy Tính

Tối Ưu Tốc Độ OPNsense FTTP PPPoE: Khắc Phục Giảm Băng Thông Trên Hệ Thống Firewall Tùy Chỉnh

Việc xây dựng một hệ thống firewall tùy chỉnh chạy OPNsense là một trong những nâng cấp đáng giá nhất cho mạng cục bộ (LAN) của bạn. Mặc dù bộ định tuyến được cung cấp bởi nhà cung cấp dịch vụ Internet (ISP) có thể đủ dùng cho các thiết lập gia đình tiêu chuẩn với một vài thiết bị không dây, nhưng khi bạn bắt đầu thêm nhiều máy khách hơn và lên kế hoạch một mạng lưới với các tính năng nâng cao như VLANs, bạn rất có thể sẽ gặp phải một số vấn đề về hiệu suất. Ngoài ra, còn có vấn đề về quyền riêng tư và khả năng kiểm soát mạng.

Tuy nhiên, một điểm yếu mà OPNsense dường như còn thiếu sót là tốc độ tải xuống trên các kết nối Point-to-Point Protocol over Ethernet (PPPoE) và Fibre to the Premises (FTTP). Vấn đề này có thể làm giảm đáng kể tốc độ tải xuống của bạn lên đến 50%. Một giải pháp phổ biến là ảo hóa OPNsense thông qua một hypervisor như Proxmox. Tuy nhiên, với mong muốn triển khai trên phần cứng vật lý (bare metal), chúng tôi đã tìm kiếm một giải pháp trực tiếp và may mắn tìm thấy hướng dẫn từ Ben Tasker. Tất cả những gì cần thiết chỉ là một vài tinh chỉnh (tunables) và một lần khởi động lại nhanh chóng.

OPNsense, FTTP và PPPoE: Nguyên Nhân Giảm Tốc Độ

Vấn đề nằm ở FreeBSD

Theo nhiều thảo luận trong cộng đồng và các tài nguyên trực tuyến, chúng tôi nhận ra rằng các kết nối FTTP, cáp quang PPPoE và hệ điều hành FreeBSD không hoạt động tối ưu cùng nhau trên phần cứng vật lý. Hệ điều hành cơ bản của OPNsense (dựa trên FreeBSD) sẽ chỉ sử dụng một nhân CPU duy nhất để xử lý các gói tin đến trên kết nối, điều này tạo ra một nút thắt cổ chai, giới hạn tốc độ mạng của bạn theo khả năng tăng tốc của một nhân CPU đó. Với thiết bị firewall không quạt của chúng tôi, sử dụng CPU Intel công suất thấp, điều này đã làm giảm đáng kể băng thông.

Không có tính năng RSS (Receive-Side Scaling) được kích hoạt, kết nối 900Mbps của chúng tôi chỉ còn lại khoảng 400 Mbps khi kết nối ra thế giới bên ngoài. Điều này cho thấy sự lãng phí nghiêm trọng về băng thông mà gói cước ISP đã cung cấp.

Mặc dù thiết bị phần cứng của chúng tôi hoàn toàn đủ khả năng để chạy OPNsense và hỗ trợ kết nối cáp quang 1Gbps, nhưng thật khó để nhận ra vấn đề này chỉ qua bảng điều khiển OPNsense, trừ khi bạn đi sâu vào kiểm tra tài nguyên hệ thống đang được sử dụng. Sau khi xác nhận rằng firewall thực sự chỉ sử dụng một nhân CPU duy nhất trong quá trình kiểm tra tốc độ và tải xuống tệp, đã đến lúc tìm kiếm một giải pháp để buộc OPNsense (và FreeBSD) tận dụng ba nhân CPU còn lại.

Tùy thuộc vào phần cứng của bạn, card mạng (NIC) có thể hỗ trợ tính năng Receive-Side Scaling (RSS), nhưng OPNsense lại tắt tính năng này theo mặc định. RSS cho phép card mạng của bạn xử lý các gói tin đến bằng cách sử dụng nhiều nhân CPU cùng lúc. Hãy hình dung kết nối Internet của bạn như một đường cao tốc với một làn đường cho mỗi nhân CPU. Nếu không có RSS được bật, đường cáp quang của chúng ta đang chạy với ba trong số bốn làn đường (đối với CPU lõi tứ) bị chặn do công trình. Việc bật RSS sẽ giải phóng các “công trình” này và cung cấp thêm băng thông, cho phép dữ liệu được xử lý song song và hiệu quả hơn.

Thiết bị chuyển mạch quản lý Zyxel XGM1915 hỗ trợ tối ưu mạng OPNsenseThiết bị chuyển mạch quản lý Zyxel XGM1915 hỗ trợ tối ưu mạng OPNsense

Hướng Dẫn Áp Dụng Giải Pháp Khắc Phục Nhanh Chóng Cho OPNsense

Các tùy chỉnh (tunables) cần thiết để tối ưu hiệu suất

Chúng tôi đã khá thất vọng khi biết vấn đề này sâu sắc đến mức nào, vì có lẽ sẽ mất nhiều thời gian hơn để nó được giải quyết triệt để trong các bản cập nhật tương lai. Mặc dù chúng tôi có nghe nói rằng pfSense+ đã được cấu hình theo cách mà FreeBSD sẽ sử dụng nhiều nhân CPU cho tác vụ này và những cải tiến này đã được gửi lên cộng đồng FreeBSD, nhưng để khắc phục OPNsense ngay bây giờ, chúng tôi cần một giải pháp tức thời mà không liên quan đến việc ảo hóa firewall của mình.

Việc nâng cấp thiết bị lên một cấu hình CPU mạnh hơn cũng bị coi là lãng phí, vì đây không phải là vấn đề phần cứng mà là vấn đề phần mềm, và nó sẽ không giải quyết triệt để mà chỉ che giấu vấn đề. May mắn thay, Ben Tasker (và một số người khác trong cộng đồng) đã tìm ra giải pháp, liên quan đến việc sử dụng một vài tùy chỉnh (tunables) để thay đổi cách OPNsense hoạt động. Đây không phải là điều gì quá phức tạp, nhưng nó đảm bảo OPNsense sử dụng RSS với mỗi nhân CPU nhận gói tin, và các driver sử dụng hàng đợi ISR, phân phối tải trên tất cả các nhân.

Với các tùy chỉnh này được cấu hình, tốc độ tải xuống của chúng tôi đã tăng từ khoảng 300-400 Mb/s lên mức ấn tượng 900 Mb/s, chính xác là tốc độ mà gói cước ISP của chúng tôi cung cấp. Vậy, hãy cùng xem các bước thực hiện.

  1. Đăng nhập vào giao diện quản lý OPNsense của bạn.
  2. Điều hướng đến System > Settings > Tunables.
  3. Nhấp vào nút + để thêm một tùy chỉnh mới với các giá trị sau để OPNsense sử dụng tất cả các nhân CPU có sẵn để xử lý các gói tin đến:
    net.isr.maxthreads = -1

    Đây là tùy chỉnh quan trọng giúp OPNsense sử dụng số lượng luồng xử lý gói tin tối đa bằng số lượng nhân CPU có sẵn.

    net.isr.bindthreads = 1

    Tùy chỉnh này đảm bảo rằng các luồng xử lý gói tin được liên kết với từng nhân CPU cụ thể, tối ưu hóa việc phân phối tải.

  4. Thêm một tùy chỉnh khác. Lần này, chúng ta cho phép các driver của NIC sử dụng hàng đợi ISR:
    net.isr.dispatch = deferred

    Tùy chỉnh này thay đổi cách thức xử lý ngắt, cho phép phân phối tải tốt hơn và tận dụng hiệu quả hơn tài nguyên CPU.

  5. Tiếp theo là thêm các tùy chỉnh kích hoạt RSS. (Lưu ý rằng net.inet.rss.bits nên được đặt bằng căn bậc hai của số nhân CPU bạn có. Ví dụ, nếu bạn có CPU 4 nhân, giá trị sẽ là 2).
    net.inet.rss.enabled = 1

    Tùy chỉnh này bật hoàn toàn tính năng Receive-Side Scaling, cho phép card mạng phân phối việc xử lý gói tin đến nhiều nhân CPU.

    net.inet.rss.bits = 2

    Giá trị này điều khiển số lượng “bit” được sử dụng để băm các gói tin, ảnh hưởng đến cách chúng được phân phối giữa các hàng đợi RSS. Với CPU 4 nhân (2^2), giá trị 2 là phù hợp.

Và đó là tất cả những gì cần làm. Sau khi thực hiện các thay đổi và khởi động lại OPNsense một cách nhanh chóng, sức mạnh tiềm ẩn của kết nối FTTP 1Gbps sử dụng PPPoE đã được giải phóng hoàn toàn, mang lại trải nghiệm tuyệt vời. Chúng tôi đã kiểm tra lại xếp hạng Bufferbloat để đảm bảo rằng các cài đặt này không đẩy độ trễ của mạng lên cao, nhưng thực tế là mọi thứ đều được cải thiện trên toàn diện. Cùng với việc điều chỉnh Traffic Shaping, chúng tôi hiện có một kết nối gần như hoàn hảo, rất lý tưởng cho chơi game trực tuyến và các tác vụ yêu cầu độ trễ thấp khác.

Giao diện Dashboard của OPNsense hiển thị tình trạng hệ thống sau khi tối ưuGiao diện Dashboard của OPNsense hiển thị tình trạng hệ thống sau khi tối ưu

Kết luận

OPNsense là một hệ điều hành firewall mạnh mẽ và linh hoạt, mang lại khả năng kiểm soát mạng vượt trội so với các bộ định tuyến ISP truyền thống. Tuy nhiên, như đã phân tích, một số hạn chế trong cách FreeBSD xử lý các kết nối PPPoE/FTTP có thể làm giảm đáng kể tốc độ mạng, đặc biệt khi chưa được tối ưu đúng cách.

Thông qua việc áp dụng các tùy chỉnh hệ thống (tunables) đơn giản như đã hướng dẫn, người dùng OPNsense có thể kích hoạt tính năng Receive-Side Scaling (RSS) và buộc hệ điều hành tận dụng tối đa các nhân CPU có sẵn. Điều này không chỉ giúp khắc phục vấn đề giảm tốc độ download mà còn cải thiện hiệu suất tổng thể của mạng, mang lại trải nghiệm duyệt web, chơi game và làm việc trực tuyến mượt mà hơn. Với những tinh chỉnh này, OPNsense thực sự khẳng định vị thế là một giải pháp firewall tùy chỉnh vượt trội, đáng tin cậy cho mọi người dùng công nghệ mong muốn tối ưu hóa mạng của mình. Hãy thử áp dụng các bước trên và chia sẻ trải nghiệm của bạn trong phần bình luận!

Related posts

Nhược điểm của màn hình 360Hz: Có thực sự đáng giá cho game thủ Việt?

Administrator

Windmill: Nền Tảng Tự Động Hóa Mạnh Mẽ Dành Cho Lập Trình Viên

Administrator

ON1 Photo Raw: Kẻ Thay Thế Adobe Lightroom Đáng Giá Cho Nhiếp Ảnh Gia

Administrator