Một trang web chạy trên con chip siêu rẻ vẫn là chuyện có thật

Chi phí lưu trữ website ngày càng tăng có thể khiến nhiều người nghĩ đến những giải pháp cực đoan hơn, và một dự án mới từ nhà phát triển kiêm blogger Maurycy Zalewski đã đẩy ý tưởng đó đi rất xa: phục vụ một trang web từ vi điều khiển 8-bit giá chỉ khoảng 1,30 USD. Thành phần trung tâm của hệ thống là AVR64DD32, một dòng vi điều khiển AVR của Microchip. Vi điều khiển là loại chip nhỏ gọn chuyên dùng để điều khiển thiết bị nhúng, khác với CPU trên máy tính ở chỗ tài nguyên cực kỳ hạn chế nhưng tiêu thụ điện thấp và giá rẻ. Con chip này chỉ có một lõi 8-bit chạy tối đa 24 MHz, 8 KB SRAM, tức bộ nhớ tạm dùng khi chương trình đang hoạt động, 64 KB flash để lưu mã chương trình, cùng 256 byte EEPROM, loại bộ nhớ không mất dữ liệu khi tắt nguồn nhưng dung lượng rất nhỏ.

Giá phần cứng rẻ, nhưng cái khó nằm ở phần mềm

Zalewski cho biết bản thân ông gần như không tốn chi phí vì đã có sẵn linh kiện, nhưng nếu tính đầy đủ điện trở, tụ điện, bo mạch và các thành phần cơ bản khác, tổng giá thành của dự án chỉ vào khoảng 2 đến 3 USD. Dù phần cứng đơn giản và lắp ráp chỉ mất vài phút, việc viết phần mềm lại là câu chuyện hoàn toàn khác. Để một vi điều khiển nhỏ bé có thể phản hồi yêu cầu từ trình duyệt web, nhà phát triển phải tự xử lý nhiều lớp giao tiếp mạng vốn thường do hệ điều hành hoặc phần cứng chuyên dụng đảm nhiệm.

Vì sao Ethernet thông thường không phù hợp

Trở ngại lớn đầu tiên đến từ tốc độ giao tiếp. Các chân I/O, tức chân vào/ra dùng để truyền và nhận tín hiệu của AVR64DD32, chỉ đạt tối đa khoảng 12 MHz. Điều đó khiến chip này không thể trực tiếp xử lý Ethernet theo cách thông thường. Ngay cả chuẩn Ethernet đời đầu 10BASE-T, tức mạng 10 megabit/giây qua cáp xoắn đôi, cũng đã quá nhanh với con chip. Tệ hơn, chuẩn này dùng Manchester encoding, một kỹ thuật mã hóa tín hiệu trong đó mỗi bit dữ liệu được biểu diễn bằng hai trạng thái điện, khiến lưu lượng thực tế trên đường truyền tăng gấp đôi. Nói cách khác, 10 megabit dữ liệu có thể biến thành 20 megabit tín hiệu ở tầng vật lý, vượt xa khả năng xử lý của vi điều khiển.

Giải pháp bất ngờ: dùng SLIP, giao thức Internet cổ điển trên đường truyền nối tiếp

Thay vì chờ mua chip Ethernet chuyên dụng, Zalewski chọn một lối đi khác: SLIP. Đây là viết tắt của Serial Line Internet Protocol, một giao thức ra đời từ gần bốn thập kỷ trước để đóng gói lưu lượng IP qua kết nối nối tiếp, tức kiểu truyền dữ liệu tuần tự từng bit qua đường serial. Trước thời Internet băng rộng, SLIP từng được dùng khá phổ biến để đưa máy tính lên mạng. Ngày nay, giao thức này vẫn còn xuất hiện trong Linux nhờ cấu trúc gọn nhẹ và phù hợp để kết nối vi điều khiển với hệ thống mạng hiện đại. Việc chọn SLIP giúp dự án tránh được yêu cầu phần cứng phức tạp hơn, dù đổi lại nhà phát triển phải tự xử lý nhiều phần giao tiếp mạng ở mức thấp.

Tự dựng TCP/IP trên chip 8-bit là phần khó nhất

Kết nối được lên Internet mới chỉ là bước đầu. Để thực sự phục vụ một trang web, con chip còn phải hiểu và phản hồi các giao thức mạng cốt lõi. Zalewski nói rằng vi điều khiển có thể tạo các gói phản hồi bằng cách hoán đổi địa chỉ nguồn và đích của gói tin đến, đồng thời đặt lại TTL. TTL, viết tắt của Time To Live, là trường trong gói IP dùng để giới hạn số lần gói tin được chuyển tiếp qua mạng nhằm tránh việc nó chạy vòng lặp vô tận. Tuy nhiên, phần mất nhiều ngày nhất là triển khai TCP, giao thức chịu trách nhiệm thiết lập kết nối tin cậy giữa máy chủ và trình duyệt. Khi đã có TCP, phần HTTP, tức giao thức ứng dụng dùng để truyền tải nội dung web, được đơn giản hóa tối đa bằng cách trả về một phản hồi cố định cho mọi yêu cầu.

Chỉ một URL, nhưng vẫn đủ để gọi là web server

Giới hạn lớn nhất của hệ thống là nó chỉ phục vụ được một URL duy nhất. URL là địa chỉ cụ thể của tài nguyên trên web, chẳng hạn một trang hoặc một tệp. Vì toàn bộ phản hồi HTTP được mã hóa cứng, tức hardcoded trực tiếp trong chương trình thay vì xử lý động theo từng đường dẫn, vi điều khiển không thể linh hoạt như một web server thông thường. Dù vậy, đây vẫn là minh chứng ấn tượng rằng một hệ thống cực nhỏ vẫn có thể tham gia vào hạ tầng web nếu chấp nhận hy sinh hiệu năng, tính năng và khả năng mở rộng.

Không có IP công cộng? WireGuard và máy chủ trung gian giải quyết bài toán

Một thách thức khác là làm sao để yêu cầu từ Internet công cộng có thể đến được con chip đặt trong nhà mà không phải trả tiền cho địa chỉ IP public định tuyến trực tiếp. Để xử lý việc này, Zalewski dùng WireGuard để tạo kết nối tới một máy chủ đặt trong trung tâm dữ liệu ở Helsinki. WireGuard là giao thức VPN hiện đại, nổi tiếng nhờ thiết kế gọn, tốc độ cao và cấu hình tương đối đơn giản. VPN, hay mạng riêng ảo, cho phép tạo một đường hầm mã hóa giữa hai điểm trên Internet. Trong mô hình này, máy chủ ở trung tâm dữ liệu đóng vai trò proxy, tức máy trung gian nhận yêu cầu từ bên ngoài rồi chuyển tiếp về vi điều khiển qua một dải địa chỉ nội bộ. Điều đó có nghĩa khách truy cập không kết nối trực tiếp vào ngăn xếp TCP/IP của vi điều khiển, mà đi qua một lớp chuyển tiếp ở phía trước.

Dự án nhỏ nhưng gợi mở nhiều điều về giới hạn của phần cứng

Theo chia sẻ của tác giả, phần lắp ráp phần cứng chỉ mất vài phút, nhưng phần mềm ngốn nhiều ngày làm việc. Đây cũng là điểm khiến dự án trở nên đáng chú ý: nó không chỉ là một màn trình diễn vui vẻ, mà còn cho thấy với đủ kiên nhẫn, những con chip cực rẻ vẫn có thể đảm nhiệm các tác vụ vốn tưởng chỉ dành cho máy tính hoặc bo mạch mạnh hơn. Zalewski đã công bố cả mã nguồn lẫn bản nhị phân biên dịch sẵn để cộng đồng có thể thử nghiệm, sửa đổi hoặc tiếp tục đẩy giới hạn xa hơn. Dù chưa thể thay thế dịch vụ hosting thực thụ, dự án này là ví dụ sinh động về sự sáng tạo trong thế giới phần cứng nhúng và mạng máy tính.

Danh mục máy quét mã vạch

Máy quét mã vạch - Quét mã Qr - Quét mã vạch sản phẩm.

DÒNG MÁY CÓ DÂY

máy quét mã vạch không dây

DÒNG MÁY KHÔNG DÂY

DÒNG MÁY KIỂM KHO PDA

DÒNG MÁY FITMOUNT