عن المشروع
pktc هو أداة سطر أوامر ومترجم بصيغة tiling الشجرية يسمح بوصف هيكل الحزم المتوقع على الشبكة، ويشتق تلقائياً تكوين جهاز نفق نواة لينكس المقابل.
بدلاً من تسمية نوع الجهاز أولاً ثم ملء المعاملات (كما يتطلب `netplan` و`systemd-networkd` وNetworkManager)، يتبع pktc النهج المعاكس: تصفstack التغليف كشجرة، وتحدد الأداة primitive النواة المنتجة له.
الفكرة الأساسية هي اختيار التعليمات عبر tiling الشجرة. ينطبق stack التغليف إلى عمود فقري — قائمة خطية لطبقات البروتوكول — يغطي بعدها بلاط على شكل أجهزة. التقنية تعكس كيفية اختيار backend للمترجم تعليمات الآلة، باستثناء أن البلاطات هي أجهزة نفق لينكس والكود المُصَّدر هو أوامر `iproute2`.
البلاطات المدعومة تشمل IPIP (`ipv4 · ipv4`)، GRE (`ipv4 · gre · ipv4`)، GRE tap (`ipv4 · gre · ethernet`)، وVXLAN (`ipv4 · udp · vxlan · ethernet`). تتكون الأنفاق المتداخلة بشكل طبيعي كوحدات متعددة دون منطق خاص.
الأوامر الرئيسية:
- `pktc lower` — يطبع أوامر `ip link` / `ip addr` لإنشاء الجهاز
- `pktc mirror` — يطبع التكوين المتماثل للنهاية البعيدة
- `pktc expect` — يطبع كيف يجب أن يبدو حركة underlay للتحقق
- `pktc parse` — يطبع العمود الفقري من ملف وصف
ميزة مميزة هي وضع الاختبار بإغلاق الحلقة: `make netns` يبني نسقين شبكيين على veth pair، ويعدّل طرفيها من نفس الوصف، ويدفع الحركة خلالهما، ويصطاد underlay. اختبار ذهبي يثبت إصدار الأوامر المقصودة؛ واختبار نواة يثبت إنشاء الجهاز؛ والاصطياد يثبت أن الجهاز يحمل ما ادعته الشجرة.
التثبيت عبر `go install github.com/vinodhalaharvi/pktc/cmd/pktc@latest` أو البناء من المصدر بـ `make check`، `make demo`، و`make netns`.
المشروع في مراحله الأولى مع أربع بلاطات وخلفي واحد. حُذف Geneve وVLAN وXFRM وWireGuard عمداً لأن وحدات النواة الخاصة بها لم تكن متاحة أثناء التطوير.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.