Khi DNS không chỉ còn là hệ thống phân giải tên miền

Một thử nghiệm công nghệ đầy châm biếm vừa khiến giới hạ tầng mạng phải chú ý: trò chơi Doom đã được biên dịch để chạy trên một “cỗ máy” mà phần số học và bộ nhớ đều nằm trong DNS. DNS, viết tắt của Domain Name System, vốn là hệ thống giúp chuyển tên miền như example.com thành địa chỉ IP để máy tính tìm thấy nhau trên Internet. Tuy nhiên, tác giả của dự án lập luận rằng về bản chất DNS cũng là một cơ sở dữ liệu, tức nơi lưu trữ và truy xuất dữ liệu theo khóa và giá trị. Nếu cơ sở dữ liệu có thể lưu câu trả lời cho các phép tính, các điều kiện so sánh và trạng thái bộ nhớ, thì về lý thuyết nó cũng có thể trở thành nền tảng cho một hệ thống tính toán.

Ý tưởng nghe như trò đùa, nhưng Doom thực sự đã chạy

Dự án này không biến DNS thành CPU theo nghĩa truyền thống. CPU, hay bộ xử lý trung tâm, thường trực tiếp giải mã và thực thi lệnh. Ở đây, phần giải mã lệnh được thực hiện trước bởi trình biên dịch, còn DNS chỉ đóng vai trò như một “thủ thư” tra cứu các bảng đáp án đã được tính sẵn. Tác giả cho biết ông đã biên dịch Doom cho một máy 32-bit, trong đó mọi phép cộng, rẽ nhánh và cập nhật trạng thái đều dựa vào truy vấn DNS. Kết quả là trò chơi có thể hoạt động, nhưng chỉ ở mức cực kỳ chậm: lần thử đầu tiên, chỉ riêng thao tác nhấn sang phải đã mất 577 giây mới thấy kết quả.

Vì sao DNS chạy được Doom nhưng gần như không thể chơi

Nút thắt nằm ở hiệu năng. Trong thử nghiệm, phần mềm máy chủ DNS được dùng là BIND 9.20, một triển khai DNS rất phổ biến trên Linux và Unix. BIND có thể phản hồi truy vấn rất nhanh, khoảng vài micro giây mỗi truy vấn; micro giây là đơn vị bằng một phần triệu giây. Nhưng Doom cần khối lượng thao tác khổng lồ. Một phép cộng 32-bit cần bốn lần tra cứu DNS, một lệnh rẽ nhánh cần năm lần, và để dựng một khung hình có thể cần tới 6,6 triệu truy vấn. Sau nhiều tối ưu như dùng UDP thay cho TCP ở một số đường truyền, gom dữ liệu dày hơn trong thanh ghi và giảm số lần ghi trạng thái, thời gian phản hồi cho một thao tác đã giảm từ 577 giây xuống 146,3 giây rồi còn 54,4 giây. Dù vậy, con số này vẫn cách rất xa mức có thể chơi được. Doom vận hành ở tốc độ 35 tic mỗi giây; “tic” là nhịp cập nhật logic nội bộ của game, tương đương khoảng 28,6 mili giây mỗi bước, trong khi hệ thống DNS này vẫn đang ở mức 54.000 mili giây.

Công nghệ phía sau: RFC 2136, UDP và cơ chế ghi có điều kiện

Điểm thú vị nhất của dự án là nó tận dụng RFC 2136 DNS UPDATE, một tiêu chuẩn cho phép cập nhật bản ghi DNS động. RFC là viết tắt của Request for Comments, bộ tài liệu tiêu chuẩn kỹ thuật cốt lõi của Internet. Trong trường hợp này, mỗi lần cập nhật trạng thái đều kèm điều kiện rằng thao tác chỉ thành công nếu trạng thái trước đó vẫn đúng như lần ghi gần nhất. Đây là kiểu kiểm soát cạnh tranh mà giới cơ sở dữ liệu gọi là optimistic concurrency, tức giả định xung đột ít xảy ra và chỉ kiểm tra khi ghi; nó cũng gần với khái niệm compare-and-swap, một kỹ thuật chỉ thay giá trị nếu giá trị hiện tại vẫn khớp với kỳ vọng. Nói cách khác, DNS ở đây không chỉ lưu dữ liệu mà còn đảm nhiệm một dạng logic đồng bộ trạng thái.

6,4 triệu bản ghi DNS để thay cho phép tính thời gian thực

Toàn bộ “bộ não” của hệ thống được dựng từ 6,4 triệu bản ghi chứa các bảng chân trị và đáp án tính sẵn. Bảng chân trị là cấu trúc liệt kê mọi đầu vào có thể xảy ra và đầu ra tương ứng, thường dùng trong logic số và thiết kế mạch. Ví dụ, một bản ghi có thể lưu kết quả của phép 255 cộng 1 để trả về 0 kèm bit nhớ. Nhờ đó, DNS không cần tự tính toán mà chỉ việc tra cứu câu trả lời đã được chuẩn bị trước. Tác giả còn cho biết đầu ra từng điểm ảnh của mỗi khung hình được đối chiếu với một trình giả lập độc lập để chứng minh rằng hệ thống thật sự dựa vào DNS chứ không âm thầm rơi về tính toán cục bộ.

Không có phần cứng đặc biệt, chỉ là Debian, BIND và một container

Một chi tiết đáng chú ý là hệ thống này không chạy trên hạ tầng tùy biến kỳ lạ. Nó sử dụng BIND 9.20 tiêu chuẩn đi kèm Debian, được cấu hình qua tệp named.conf. Debian là một bản phân phối Linux nổi tiếng về tính ổn định, còn container là môi trường đóng gói ứng dụng giúp cô lập phần mềm với hệ điều hành bên dưới. Tác giả nói hệ thống được đặt trong một container đã tắt kết nối mạng, nhằm nhấn mạnh rằng đây không phải trò “đánh tráo khái niệm” dựa vào dịch vụ bên ngoài, mà là một thử nghiệm thuần túy với chính cơ chế DNS.

Một màn trình diễn kỹ thuật vô dụng nhưng giàu ý nghĩa

Dự án này rõ ràng không nhằm tạo ra cách mới để chơi Doom, càng không phải lời kêu gọi thay CPU bằng máy chủ DNS. Giá trị của nó nằm ở việc phơi bày ranh giới mờ giữa cơ sở dữ liệu, hệ thống mạng và mô hình tính toán. Khi một dịch vụ tưởng như chỉ để phân giải tên miền lại có thể, bằng đủ sự kiên nhẫn và hàng triệu bảng tra cứu, vận hành được logic của một trò chơi kinh điển, nó trở thành minh họa sống động cho tính linh hoạt lẫn sự phi lý hấp dẫn của kỹ thuật phần mềm hiện đại. Nói ngắn gọn: DNS có thể không được sinh ra để chạy Doom, nhưng Internet dường như luôn tìm ra cách để khiến điều đó xảy ra.

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