Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Có thể kết hợp nhiều kênh Internet thành một? Có rất nhiều quan niệm sai lầm và hoang đường xung quanh chủ đề này; ngay cả những kỹ sư mạng có kinh nghiệm cũng thường không biết rằng điều này có thể thực hiện được. Trong hầu hết các trường hợp, tập hợp liên kết bị gọi nhầm là cân bằng ở cấp độ NAT hoặc chuyển đổi dự phòng. Nhưng tổng thực sự cho phép khởi chạy đồng thời một kết nối TCP duy nhất trên tất cả các kênh Internet, ví dụ như phát sóng video để nếu có bất kỳ kênh Internet nào bị gián đoạn thì việc phát sóng sẽ không bị gián đoạn.

Có những giải pháp thương mại đắt tiền để phát sóng video, nhưng những thiết bị như vậy có giá rất cao. Bài viết mô tả cách định cấu hình gói OpenMPTCPRouter mã nguồn mở, miễn phí và giải quyết những quan niệm sai lầm phổ biến về tính tổng kênh.

Những lầm tưởng về tổng hợp kênh

Có nhiều bộ định tuyến gia đình hỗ trợ chức năng Multi-WAN. Đôi khi các nhà sản xuất gọi đây là tổng hợp kênh, điều này không hoàn toàn đúng. Nhiều nhà mạng tin rằng ngoài LACP và tổng hợp ở cấp độ L2, không tồn tại tập hợp kênh nào khác. Tôi thường nghe nói rằng điều này thường không thể thực hiện được đối với những người làm việc trong lĩnh vực viễn thông. Vì vậy, chúng ta hãy cố gắng tìm hiểu những huyền thoại phổ biến.

Cân bằng ở cấp độ kết nối IP

Đây là cách hợp lý và phổ biến nhất để sử dụng nhiều kênh Internet cùng một lúc. Để đơn giản, hãy tưởng tượng rằng bạn có ba nhà cung cấp Internet, mỗi nhà cung cấp cho bạn một địa chỉ IP thực từ mạng của họ. Tất cả các nhà cung cấp này đều được kết nối với bộ định tuyến hỗ trợ chức năng Multi-WAN. Đây có thể là OpenWRT với gói mwan3, mikrotik, ubiquiti hoặc bất kỳ bộ định tuyến gia đình nào khác, vì tùy chọn như vậy không còn phổ biến nữa.

Để mô phỏng tình huống, hãy tưởng tượng rằng các nhà cung cấp đã cung cấp cho chúng tôi các địa chỉ sau:

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Tức là kết nối với máy chủ từ xa example.com Thông qua mỗi nhà cung cấp, máy chủ từ xa sẽ thấy ba máy khách IP nguồn độc lập. Cân bằng cho phép bạn phân chia tải trên các kênh và sử dụng đồng thời cả ba kênh. Để đơn giản, hãy tưởng tượng rằng chúng ta chia đều tải cho tất cả các kênh. Kết quả là, khi khách hàng mở một trang web có ba hình ảnh, anh ta sẽ tải từng hình ảnh xuống thông qua một nhà cung cấp riêng biệt. Về phía trang web, có vẻ như các kết nối từ ba IP khác nhau.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Khi cân bằng ở cấp độ kết nối, mỗi kết nối TCP sẽ đi qua một nhà cung cấp riêng biệt.

Chế độ cân bằng này thường gây rắc rối cho người dùng. Ví dụ: nhiều trang web liên kết chặt chẽ cookie và mã thông báo với địa chỉ IP của khách hàng và nếu địa chỉ đó thay đổi đột ngột, yêu cầu sẽ bị từ chối hoặc khách hàng sẽ đăng xuất khỏi trang web. Điều này thường được sao chép trong hệ thống ngân hàng khách hàng và các trang web khác với các quy tắc phiên người dùng nghiêm ngặt. Dưới đây là một ví dụ minh họa đơn giản: các tệp nhạc trên VK.com chỉ khả dụng với khóa phiên hợp lệ được gắn với IP và các máy khách sử dụng tính năng cân bằng như vậy thường không phát âm thanh vì yêu cầu không được chuyển đến nhà cung cấp nào. phiên họp đã kết thúc.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Khi tải xuống torrent, cân bằng mức kết nối sẽ tổng hợp băng thông của tất cả các kênh

Việc cân bằng này cho phép bạn có được tổng tốc độ của kênh Internet khi sử dụng nhiều kết nối. Ví dụ: nếu mỗi nhà cung cấp trong số ba nhà cung cấp có tốc độ 100 Megabits thì khi tải torrent chúng ta sẽ nhận được 300 Megabits. Bởi vì torrent mở ra nhiều kết nối được phân phối giữa tất cả các nhà cung cấp và cuối cùng sử dụng toàn bộ kênh.

Điều quan trọng là phải hiểu rằng một kết nối TCP sẽ luôn chỉ đi qua một nhà cung cấp. Nghĩa là, nếu chúng tôi tải xuống một tệp lớn qua HTTP, thì kết nối này sẽ được thực hiện thông qua một trong các nhà cung cấp và nếu kết nối với nhà cung cấp này bị hỏng, quá trình tải xuống cũng sẽ bị hỏng.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Một kết nối sẽ luôn chỉ sử dụng một kênh Internet

Điều này cũng đúng đối với các chương trình phát sóng video. Nếu bạn đang phát video phát trực tuyến tới một số loại Twitch có điều kiện, thì việc cân bằng ở cấp độ kết nối IP sẽ không mang lại bất kỳ lợi ích cụ thể nào vì luồng video sẽ được phát trong một kết nối IP. Trong trường hợp này, nếu nhà cung cấp WAN 3 bắt đầu gặp vấn đề về giao tiếp, chẳng hạn như mất gói hoặc giảm tốc độ, thì bạn sẽ không thể chuyển ngay sang nhà cung cấp khác. Việc phát sóng sẽ phải dừng lại và kết nối lại.

Tổng hợp kênh thực

Tính năng tổng hợp kênh thực giúp có thể chạy một kết nối đến Twitch có điều kiện thông qua tất cả các nhà cung cấp cùng một lúc theo cách mà nếu bất kỳ nhà cung cấp nào bị hỏng thì kết nối sẽ không bị gián đoạn. Đây là một bài toán khó đến bất ngờ mà vẫn chưa có lời giải tối ưu. Nhiều người thậm chí không biết rằng điều này là có thể!

Từ các hình minh họa trước đó, chúng tôi nhớ rằng máy chủ Twitch có điều kiện chỉ có thể nhận luồng video từ chúng tôi từ một địa chỉ IP nguồn, điều đó có nghĩa là nó phải luôn ổn định đối với chúng tôi, bất kể nhà cung cấp nào đã ngừng hoạt động và nhà cung cấp nào đang hoạt động. Để đạt được điều này, chúng tôi cần một máy chủ tổng hợp sẽ chấm dứt tất cả các kết nối của chúng tôi và kết hợp chúng thành một.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Máy chủ tổng hợp tổng hợp tất cả các kênh vào một đường hầm. Tất cả các kết nối đều bắt nguồn từ địa chỉ máy chủ tổng hợp

Trong sơ đồ này, tất cả các nhà cung cấp đều được sử dụng và việc vô hiệu hóa bất kỳ nhà cung cấp nào trong số đó sẽ không gây mất liên lạc với máy chủ Twitch. Về cơ bản, đây là một đường hầm VPN đặc biệt, bên dưới nó có một số kênh Internet cùng một lúc. Nhiệm vụ chính của sơ đồ như vậy là có được kênh liên lạc chất lượng cao nhất. Nếu một trong các nhà cung cấp bắt đầu gặp sự cố, mất gói, tăng độ trễ, thì điều này sẽ không ảnh hưởng đến chất lượng liên lạc theo bất kỳ cách nào, vì tải sẽ tự động được phân phối qua các kênh khác tốt hơn hiện có.

Giải pháp thương mại

Vấn đề này từ lâu đã gây rắc rối cho những người phát sóng các sự kiện trực tiếp và không có quyền truy cập Internet chất lượng cao. Đối với những tác vụ như vậy, có một số giải pháp thương mại, chẳng hạn như công ty Teradek tạo ra những bộ định tuyến khổng lồ như vậy để lắp các gói modem USB vào:

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Bộ định tuyến phát sóng video với chức năng tổng hợp kênh

Các thiết bị như vậy thường được tích hợp khả năng thu tín hiệu video qua HDMI hoặc SDI. Cùng với bộ định tuyến, đăng ký dịch vụ tổng hợp kênh cũng được bán, cũng như xử lý luồng video, chuyển mã và chuyển tiếp thêm. Giá của những thiết bị như vậy bắt đầu từ $ 2k với một bộ modem, cộng với một khoản đăng ký dịch vụ riêng.

Đôi khi nó trông khá đáng sợ:

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Thiết lập OpenMPTCPRouter

Nghị định thư MP-TCP (MultiPath TCP) được phát minh để có thể kết nối qua nhiều kênh cùng một lúc. Ví dụ, của anh ấy hỗ trợ iOS và có thể kết nối đồng thời với máy chủ từ xa thông qua WiFi và qua mạng di động. Điều quan trọng là phải hiểu rằng đây không phải là hai kết nối TCP riêng biệt mà là một kết nối được thiết lập trên hai kênh cùng một lúc. Để tính năng này hoạt động, máy chủ từ xa cũng phải hỗ trợ MPTCP.

OpenMPTCPRouter là một dự án bộ định tuyến phần mềm nguồn mở cho phép tóm tắt kênh thực sự. Các tác giả tuyên bố rằng dự án đang ở trạng thái phiên bản alpha nhưng nó đã có thể được sử dụng. Nó bao gồm hai phần - một máy chủ tổng hợp, được đặt trên Internet và một bộ định tuyến, nơi một số nhà cung cấp Internet và chính các thiết bị khách được kết nối: máy tính, điện thoại. Bộ định tuyến tùy chỉnh có thể là Raspberry Pi, một số bộ định tuyến WiFi hoặc máy tính thông thường. Có các bộ lắp ráp làm sẵn cho nhiều nền tảng khác nhau, rất tiện lợi.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Cách OpenMPTCPRouter hoạt động

Thiết lập máy chủ tổng hợp

Máy chủ tổng hợp được đặt trên Internet và chấm dứt các kết nối từ tất cả các kênh của bộ định tuyến máy khách thành một. Địa chỉ IP của máy chủ này sẽ là địa chỉ bên ngoài khi truy cập Internet thông qua OpenMPTCPRouter.

Đối với nhiệm vụ này, chúng tôi sẽ sử dụng máy chủ VPS trên Debian 10.

Yêu cầu đối với máy chủ tổng hợp:

  • MPTCP không hoạt động trên ảo hóa OpenVZ
  • Có thể cài đặt kernel Linux của riêng bạn

Máy chủ được triển khai bằng cách thực hiện một lệnh. Tập lệnh sẽ cài đặt kernel có hỗ trợ mptcp và tất cả các gói cần thiết. Tập lệnh cài đặt có sẵn cho Ubuntu và Debian.

wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh

Kết quả cài đặt server thành công.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Chúng tôi lưu mật khẩu, chúng tôi sẽ cần chúng để định cấu hình bộ định tuyến máy khách và khởi động lại. Điều quan trọng cần lưu ý là sau khi cài đặt, SSH sẽ có sẵn trên cổng 65222. Sau khi khởi động lại, chúng ta cần đảm bảo rằng chúng ta đã khởi động bằng kernel mới

uname -a 
Linux test-server.local 4.19.67-mptcp

Chúng ta thấy dòng chữ mptcp bên cạnh số phiên bản, có nghĩa là kernel đã được cài đặt chính xác.

Thiết lập bộ định tuyến máy khách

Trên trang web dự án Các bản dựng sẵn có sẵn cho một số nền tảng, chẳng hạn như Raspberry Pi, Banana Pi, bộ định tuyến Lynksys và máy ảo.
Phần này của openmptcprouter dựa trên OpenWRT, sử dụng LuCI làm giao diện, quen thuộc với bất kỳ ai đã từng gặp OpenWRT. Bản phân phối nặng khoảng 50MB!

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Với tư cách là người thử nghiệm, tôi sẽ sử dụng Raspberry Pi và một số modem USB với các nhà khai thác khác nhau: MTS và Megafon. Tôi không nghĩ mình cần chỉ cho bạn cách ghi hình ảnh vào thẻ SD.

Ban đầu, cổng Ethernet trong Raspberry Pi được cấu hình là lan với địa chỉ IP tĩnh 192.168.100.1. Để tránh vướng dây trên bàn, tôi đã kết nối Raspberry Pi với điểm truy cập WiFi và đặt bộ điều hợp WiFi của máy tính thành địa chỉ tĩnh 192.168.100.2. Máy chủ DHCP không được bật theo mặc định, vì vậy bạn phải sử dụng địa chỉ tĩnh.

Bây giờ bạn có thể đăng nhập vào giao diện web 192.168.100.1

Khi bạn đăng nhập lần đầu, hệ thống sẽ yêu cầu bạn đặt mật khẩu root, SSH sẽ có sẵn mật khẩu tương tự.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter
Trong cài đặt mạng LAN, bạn có thể đặt mạng con mong muốn và bật máy chủ DHCP.

Tôi sử dụng các modem được xác định là giao diện USB Ethernet với máy chủ DHCP riêng, vì vậy việc cài đặt này yêu cầu gói bổ sung. Quy trình này giống hệt với việc thiết lập modem trong OpenWRT thông thường, vì vậy tôi sẽ không đề cập đến nó ở đây.

Tiếp theo bạn cần cấu hình các giao diện WAN. Ban đầu, hệ thống tạo ra 1 giao diện ảo WAN2 và WANXNUMX. Chúng cần được chỉ định một thiết bị vật lý, trong trường hợp của tôi đây là tên của các giao diện modem USB.

Để tránh nhầm lẫn với tên giao diện, tôi khuyên bạn nên xem tin nhắn dmesg trong khi kết nối qua SSH.

Vì bản thân các modem của tôi hoạt động như bộ định tuyến và có máy chủ DHCP nên tôi phải thay đổi cài đặt của phạm vi mạng nội bộ của chúng và tắt máy chủ DHCP vì ban đầu cả hai modem đều cấp địa chỉ từ cùng một mạng và điều này gây ra xung đột.

OpenMPTCPRouter yêu cầu các địa chỉ giao diện WAN phải tĩnh, vì vậy chúng tôi đưa ra các mạng con cho modem và định cấu hình chúng trong hệ thống → openmptcprouter → menu cài đặt giao diện. Tại đây bạn cần chỉ định địa chỉ IP và khóa máy chủ thu được trong quá trình cài đặt máy chủ tổng hợp.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Nếu thiết lập thành công, một hình ảnh tương tự sẽ xuất hiện trên trang trạng thái. Có thể thấy rằng bộ định tuyến đã có thể truy cập được máy chủ tổng hợp và cả hai kênh đều hoạt động bình thường.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Chế độ mặc định là Shadowocks + mptcp. Đây là một proxy bao bọc tất cả các kết nối bên trong chính nó. Ban đầu nó được cấu hình để chỉ xử lý TCP, nhưng UDP cũng có thể được kích hoạt.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Nếu không có lỗi trên trang trạng thái, quá trình thiết lập có thể được coi là hoàn tất.
Với một số nhà cung cấp, có thể xảy ra tình huống khi cờ mptcp bị cắt dọc đường lưu lượng thì sẽ xuất hiện lỗi sau:

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Trong trường hợp này, bạn có thể sử dụng chế độ vận hành khác mà không cần sử dụng MPTCP, tìm hiểu thêm về điều này đây.

Kết luận

Dự án OpenMPTCPRouter rất thú vị và quan trọng, vì nó có lẽ là giải pháp toàn diện mở duy nhất cho vấn đề tổng hợp kênh. Mọi thứ khác đều được đóng chặt và độc quyền hoặc đơn giản là các mô-đun riêng biệt mà người bình thường không thể hiểu được. Ở giai đoạn phát triển hiện tại, dự án vẫn còn khá thô sơ, tài liệu cực kỳ nghèo nàn, nhiều thứ đơn giản là chưa được mô tả. Nhưng đồng thời nó vẫn hoạt động. Tôi hy vọng rằng nó sẽ tiếp tục phát triển và chúng tôi sẽ có được các bộ định tuyến gia đình có thể kết hợp các kênh ngay lập tức một cách chính xác.

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Theo dõi nhà phát triển của chúng tôi trên Instagram

Tổng hợp kênh Internet thực sự - OpenMPTCPRouter

Nguồn: www.habr.com

Thêm một lời nhận xét