ARMT — Truyền tải đa đường thích ứng và bền bỉ

Một lần truyền tệp không chịu chết

Chúng tôi đang xây một cách gửi tệp dùng mọi kết nối giữa hai thiết bị cùng lúc — Wi-Fi, Bluetooth, dữ liệu di động, bất cứ thứ gì chúng với tới. Nếu một kết nối rớt giữa chừng, việc gửi vẫn cứ tiếp tục.

Belumind · TP. Hồ Chí Minh · · 9 phút đọc

wi-fiwi-fi directblemất kết nốibên nhận3 kênh hoạt động2 kênh hoạt động — không gián đoạn

để ý làn wi-fi — nó chết giữa chừng, còn thanh tiến độ bên nhận vẫn đầy lên không ngừng

Trong bài này

    Nỗi bực mình

    Chuyển file giữa hai chiếc điện thoại vẫn là chuyện chưa ai làm cho ra hồn

    Hai người ngồi đối diện nhau. Một người dùng iPhone, người kia dùng Android. Họ muốn chuyển một video 2 GB từ máy này sang máy kia. Năm 2026, các lựa chọn thực tế của họ là: một ứng dụng chat nén lại video rồi đẩy nó qua một datacenter ở nước khác, một đường link cloud drive đòi tài khoản và internet ổn định, hoặc bỏ cuộc và dùng cáp — nếu có ai mang đúng loại cáp.

    AirDrop rất tuyệt, cho đến khi máy bên kia sai hãng. Quick Share rất tuyệt, cho đến khi nó lặng lẽ không tìm thấy thiết bị nào trong một quán cà phê đông người, nơi băng tần 2.4 GHz là một bãi chiến trường. Còn ở những môi trường mà truyền trực tiếp quan trọng nhất — văn phòng luật nơi tài liệu tuyệt đối không được chạm tới server của bên thứ ba, phòng air-gapped, máy bay, bệnh viện — công cụ đơn giản là không tồn tại.

    Tất cả các hệ thống này đều hỏng theo cùng một kiểu: chúng chọn một đường truyền, và khi đường đó đứt, việc truyền file chết theo.

    Ý tưởng

    Kết nối là một danh mục đầu tư, không phải canh bạc chọn một

    Ở bất kỳ thời điểm nào, hai thiết bị gần nhau có chung nhiều kênh hơn hẳn số kênh mà mỗi bên thực sự dùng: Wi-Fi hạ tầng, kết nối Wi-Fi trực tiếp, hai biến thể Bluetooth, NFC, mạng di động qua cloud. Các công cụ chia sẻ hiện nay cho những kênh này lần lượt thử vai, chọn ra một kênh thắng cuộc, rồi đặt cược toàn bộ lần truyền vào nó.

    ARMT coi chúng là một danh mục đầu tư. Nó phát hiện mọi kênh khả dụng, giữ cả tập kênh đó luôn mở, và để việc truyền tận dụng bất kỳ kênh nào đang hợp lý vào lúc đó — dịch chuyển tỷ trọng khi điều kiện thay đổi, giống như một quỹ chỉ số không hoảng loạn khi một cổ phiếu giảm giá. Một kênh hỏng không phải là lỗi cần khôi phục; đó là một biến động giá cần tái cân bằng.

    Một kênh đang chết không phải là ngoại lệ. Nó chỉ là một ngày thứ Ba bình thường. Việc của giao thức là làm cho nó trở nên nhàm chán.

    Cam kết với người dùng gói gọn trong một động từ: Chia sẻ. Không có bộ chọn chế độ, không có “thử lại qua Bluetooth?”, không cần biết transport là gì. Mọi thứ bên dưới động từ đó là việc của chúng tôi, không phải của họ.

    Hệ thống

    Bốn tầng, một cam kết

    CONTROL PLANEdiscovery · rendezvous · danh tính & khóa — tìm peer qua mọi kênh, cả khi mất internetTRANSFER SERVICESvòng đời phiên — toàn vẹn dữ liệu, resume và bảo đảm giao nhậnADAPTIVE SCHEDULERliên tục đánh giá trạng thái kênh và phân bổ việc truyền lên các kênh —phần thú vị nhất (xem các bài toán mở)TRANSPORT PLUGINSradio wi-fi · wi-fi direct · ble · bluetooth classic · nfc · uwbover ip quic · webrtc · cellular · satellite+ một số transport thử nghiệm đang được đánh giá, không liệt kê ở đây
    hình 1 — kiến trúc phân tầng. plugin cố tình “dễ dãi” trong chuyện thế nào thì được tính là một “kênh”.

    Giao diện plugin được cố ý thiết kế lỏng về tiêu chí. Thứ gì có thể chuyển bit giữa hai thiết bị — ở bất kỳ tốc độ nào, theo bất kỳ chiều nào, ở bất kỳ tầng nào của stack — đều có thể đăng ký. Một số plugin thử nghiệm đang được đánh giá và không được nêu ở đây; chúng tôi sẽ viết về chúng khi có số liệu đo.

    Trước khi byte đầu tiên được gửi

    Tìm thấy nhau, ở mọi nơi

    Một lần truyền chỉ bền bỉ được đến mức khâu discovery của nó cho phép. Control plane của ARMT phát và lắng nghe trên mọi kênh discovery cùng lúc — quảng bá Bluetooth cho những ai ở gần về mặt vật lý, service discovery trong LAN cho những ai cùng mạng, và một tầng relay phi tập trung cho các peer ở bên kia internet: không tài khoản, không số điện thoại, không server công ty nào có thể sập hay khóa bạn ở ngoài. Danh tính là một cặp khóa. Chính những khóa giúp tìm ra peer cũng là khóa mã hóa phiên của bạn.

    bạnpeer · ble (cùng phòng)peer · lan (cùng mạng)peer · direct linkrelay meshpeer · bên kia địa cầuasync — họ thậm chíchưa cần online
    hình 2 — một danh tính, bốn cách để được tìm thấy. tầng relay giữ lại handshake cho đến khi peer của bạn thức dậy.

    Khi mọi thứ hỏng

    Failover như chưa hề xảy ra

    Đây là hành vi mà mọi thứ ở trên tồn tại để tạo ra. Giữa lúc đang truyền, kênh nhanh bị giết — phổ tần bị gây nhiễu, access point rớt, ai đó đi ra khỏi vùng phủ sóng. Các công cụ truyền thống hiện một vòng xoay chờ, rồi một thông báo lỗi, rồi một nút thử lại. Scheduler của ARMT nhận ra một nguồn phát đã im lặng, tái cân bằng sang những kênh còn lại, và đường cong dữ liệu đã giao chỉ đơn giản là… đổi độ dốc:

    thời gian →dữ liệu đã giao →hoàn tất filekênh nhanh bị ngắtkhông chờ. không thử lại. không mất tiến độ.độ dốc đổi; việc truyền thì không.
    hình 3 — hành vi mà chúng tôi đang hướng tới (minh họa khái niệm). resume và failover là cùng một cơ chế.

    Làm cho điều này thành sự thật — không phải thật kiểu demo, mà thật một cách nhàm chán và đo đếm được trước những sự cố kênh mà ngay cả hệ điều hành cũng không báo kịp thời — là phần lớn khối lượng công việc kỹ thuật. Độ trễ phát hiện lỗi, những kết nối nửa sống nửa chết, và những kênh nói dối về tình trạng của chính mình là nơi các giao thức transport phải chịu khổ.

    Địa hình

    Dải kênh rộng nhất từng được đưa vào lập lịch

    Các kênh trong danh mục của chúng tôi không chênh nhau vài phần trăm. Chúng chênh nhau nhiều bậc độ lớn — về băng thông, thời gian thiết lập, năng lượng trên mỗi byte, và cách chúng hỏng. Lập lịch trên những kênh như vậy là một bài toán khác hẳn multipath truyền thống, nơi các đường truyền ít ra còn cùng một giống loài:

    ~kbit/snfc~Mbit/sble~Gbit/swi-fimột scheduler, phủ toàn dải
    hình 4 — sáu bậc độ lớn giữa kênh chậm nhất và kênh nhanh nhất trong danh mục.

    Bên trong scheduler

    Cảm nhận, quyết định, tái cân bằng — mãi mãi

    Scheduler là một vòng điều khiển, không phải một bảng tra cứu. Nó liên tục ước lượng hành vi thực tế của từng kênh, cân nhắc chi phí với mức đóng góp, và quyết định lại danh mục — vì câu trả lời thay đổi ngay trong lúc việc truyền đang chạy:

    cảm nhậnmô hìnhquyết địnhhành độngđo trực tiếp, thụ động khi có thể —lưu lượng đo đạc không miễn phíliên tục đánh giátrạng thái kênhcân lại tỷ trọng danh mụckhi điều kiện thay đổitái cấu hình mà không làm rơimột byte in-flight nào
    hình 5 — vòng lặp không bao giờ thoát. một lần truyền là một chuỗi quyết định về danh mục, không phải một kế hoạch chạy một lần.

    Vì sao khó

    Các bài toán mở (phần vui nhất)

    Không điều nào ở trên khó nói ra. Tất cả đều khó biến thành sự thật. Đây là những câu hỏi chúng tôi thực sự đang giải — được trình bày dưới dạng bài toán, vì lời giải chính là sản phẩm:

    • kích hoạtKhi nào một kênh chậm mới đáng được đánh thức? Đánh thức nó tốn năng lượng, thời gian thiết lập, và — trên phổ tần dùng chung — cả hiệu năng bị lấy đi từ những kênh đang chạy. Có những vùng mà kênh “chậm nhất” thắng tuyệt đối, và có những vùng mà chỉ cần chạm vào nó là lỗ thuần. Vẽ ra ranh giới giữa các vùng đó là một bài toán mô hình hóa, không phải heuristic, và lập lịch multipath truyền thống chưa bao giờ phải trả lời nó trên một dải rộng đến thế.
    • những radio ăn thịt lẫn nhauWi-Fi, Wi-Fi Direct và cả hai biến thể Bluetooth trên một chiếc điện thoại dùng chung phổ tần — thường là chung cả ăng-ten. Bật tất cả lên và tổng thể lại nhỏ hơn các phần cộng lại. Scheduler phải suy luận về những kênh phá hoại lẫn nhau, với hành vi coexistence khác nhau theo từng chipset và không hệ điều hành nào ghi lại. (Nếu bạn từng chứng kiến cách xếp tác vụ tối ưu cho từng core sụp đổ vì băng thông bộ nhớ dùng chung, cảm giác này sẽ quen thuộc đến rợn người.)
    • tin một kênh chưa từng dùngMỗi quyết định kích hoạt đều cần ước lượng một kênh sẽ đem lại bao nhiêu — trước khi dồn lưu lượng vào nó. Việc thăm dò tiêu tốn chính dung lượng mà bạn đang cố đo; ước lượng đã cũ còn tệ hơn không có. Ước lượng kênh vừa rẻ vừa trung thực trên radio di động là một bài toán đo lường còn mở mà chúng tôi đang đào rất sâu.
    • chiều còn thiếuMọi scheduler trên đời đều mô hình hóa băng thông, độ trễ, độ tin cậy và năng lượng. Mô hình chi phí của chúng tôi có thêm một chiều thứ năm mà chúng tôi chưa thấy xuất hiện trong các transport scheduler hiện có. Đó là chìa khóa giải thích vì sao tập kênh của chúng tôi có thể rộng hơn của bất kỳ ai — và đó là tất cả những gì chúng tôi tiết lộ cho đến khi bài báo ra mắt.

    Bạn sẽ để ý là chúng tôi mô tả các bài toán chứ không phải lời giải. Lời giải — các mô hình, các ngưỡng, các số đo — chính là công việc, và chúng nằm lại trong nội bộ cho đến khi có bài báo.

    ← Tất cả bài kỹ thuậtARMT vẫn đang được xây dựng. Thêm kết quả, số đo và những phần còn thiếu sẽ được công bố sau.