سخت‌افزار و رایانش ابری

فراتر از نام دامنه: اجرای بازی Doom در معماری DNS؛ تحلیل فنی یک انتزاع محاسباتی

در دنیای مهندسی شبکه، DNS همواره به عنوان «دفترچه تلفن اینترنت» شناخته شده است، اما یک آزمایش جسورانه و تکنیکال نشان داده که می‌توان با استفاده از قابلیت‌های پایگاه داده‌ای DNS و استاندارد RFC 2136، مرزهای محاسباتی این پروتکل را به شکلی غیرمتعارف جابجا کرد؛ به طوری که بازی کلاسیک Doom بر روی آن «اجرا» می‌شود.

DNS به مثابه یک پایگاه داده

از دیدگاه معماری داده، DNS چیزی جز یک دیتابیس توزیع شده با قابلیت‌های ذخیره‌سازی مقادیر (Key-Value) نیست. اگر بتوانید داده‌ها را در یک دیتابیس ذخیره کنید، می‌توانید نتایج عملیات‌های منطقی و محاسباتی را نیز به صورت پیش‌فرض در آن جای دهید. با ذخیره جداول حقیقت (Truth Tables) در قالب بیش از ۶.۴ میلیون رکورد در پروتکل DNS، عملاً یک ماشین حساب بسیار کند اما کاربردی ساخته شده است. این سیستم به جای اجرای مستقیم کدهای ریاضی، نقش یک کتابدار را ایفا می‌کند که پاسخ‌های از پیش محاسبه شده را در لحظه ارائه می‌دهد.

معماری اجرا: وقتی BIND وظیفه پردازش را بر عهده می‌گیرد

در این پروژه از BIND 9.20 به عنوان موتور اصلی استفاده شده است. نکته کلیدی در اینجاست که DNS به تنهایی یک CPU نیست، بلکه «رمزگشایی دستورات» (Instruction Decoding) توسط یک کامپایلر پیش‌نیاز انجام می‌شود. هسته مرکزی این پیاده‌سازی بر پایه RFC 2136 (DNS UPDATE) است که اجازه می‌دهد وضعیت‌های جدید تنها در صورتی که وضعیت قبلی دقیقاً با آنچه انتظار می‌رود مطابقت داشته باشد (Optimistic Concurrency Control)، جایگزین شوند. این یعنی یک مکانیزم Compare-and-Swap (CAS) بومی که از سال ۱۹۹۷ در پروتکل DNS حضور داشته است.

چالش‌های عملکرد و سرعت در محیط شبیه‌سازی

اجرای Doom روی DNS با محدودیت‌های شدید زمانی مواجه است. برای یک تراکنش DNS معمولی، حدود ۴ تا ۷ میکروثانیه زمان نیاز است، اما هر عملیات محاسباتی در این ماشین DNS-محور نیازمند چندین کوئری متوالی است:

  • هر عملیات جمع ۳۲ بیتی، ۴ کوئری DNS را مصرف می‌کند.
  • هر انشعاب (Branch) در کدهای بازی، نیازمند ۵ کوئری است.
  • برای رندر هر فریم، میلیون‌ها درخواست باید پردازش شود.

در تلاش‌های اولیه، هر حرکت (Press Right) ۵۷۷ ثانیه به طول می‌انجامید که با بهینه‌سازی‌هایی مانند انتقال به پروتکل UDP و حذف Paddingهای غیرضروری در پاسخ‌های DNS، این زمان به ۵۴ ثانیه کاهش یافت. با این حال، دستیابی به نرخ ۶۰ فریم در ثانیه (یا حتی ۳۵ تیک استاندارد Doom) همچنان با محدودیت‌های ذاتی تأخیر شبکه و تعداد کوئری‌ها فاصله نجومی دارد.

مشخصات فنی و محیط اجرا

  • نرم‌افزار میزبان: Debian GNU/Linux
  • سرویس دهنده DNS: BIND 9.20
  • روش ذخیره‌سازی: ۶.۴ میلیون رکورد Truth Table
  • استاندارد عملیاتی: RFC 2136 (DNS UPDATE)
  • روش دسترسی: محلی (Container با شبکه غیرفعال)

نتیجه‌گیری

این آزمایش ثابت می‌کند که با دست‌کاری هوشمندانه در پروتکل‌های زیرساختی، می‌توان از آن‌ها برای مقاصدی خارج از هدف اصلی (Resolution) استفاده کرد. اگرچه این سیستم یک کامپیوتر واقعی نیست، اما یک دیتابیس فوق‌العاده دقیق است که توانایی شبیه‌سازی منطق یک CPU را دارد. این پروژه درس بزرگی در مورد پتانسیل پنهان در پروتکل‌های کلاسیک شبکه به ما می‌آموزد؛ حتی زمانی که این آزمایش تنها برای اثباتِ «غیرممکن بودنِ جذاب» طراحی شده باشد.

📌 منبع و مطالعه بیشتر: The Register: No shame in the Domain Name game
حامد

حامد

مسئول مجله فناوری آسمان نقره‌ای