تحذير
هذا البرنامج في مرحلة مبكرة من التطوير وغير جاهز لبيئات الإنتاج.
Hoppipolla (تعني بالآيسلندية "القفز إلى البرك" ) هو إطار عمل موزع للشبكات المسؤولة من جانب المستخدم استنادًا إلى بروتوكول إنترنت SCION. وهو ينفذ جزءًا من مقترح الإنترنت المسؤول بنهج مستوحى من البنية المصممة في ورقة تأثيرات القيمة المحاسبية للشبكات المسؤولة ومن خلال مشروع التحقق من المسار الذي يحركه المستخدم والتحكم فيه للشبكات بين المجالات (UPIN).
بمجرد التثبيت، يسمح Hoppipolla للمستخدم بنشر السياسات المعبر عنها في برمجة مجموعة الإجابات (ASP) لتحديد عقد الشبكة (أي الأنظمة المستقلة) التي تتوافق معها عند توجيه الحزم إلى عناوين بعيدة أخرى في شبكة SCION.
مثال على هذه السياسة باللغة الطبيعية:
Do not route network traffic through nodes that are located in country X
والذي، باستخدام بناء جملة ASP الخاص بـ Hoppipolla، سيبدو كما يلي:
-valid(Path) :- country(Hop, "X"), hop(Hop), path(Path), contains(Path, Hop).
يتكون الإطار من مجموعة من الخدمات ومجموعات SDK الخاصة باللغة المستخدمة للتفاعل معها من جانب العميل. تعرض جميع الخدمات واجهة برمجة تطبيقات gRPC المحددة في مجلد protos
والتي يمكن استخدامها مباشرة بدلاً من SDK الذي تختاره.
فيما يتعلق بالتبعيات الخارجية، يعتمد Hoppipolla حصريًا على SCION. من المتوقع أن يوفر المستخدم نقطة دخول إلى مكدس SCION عبر اتصال مستقر ببرنامج SCION الخفي.
اتبع هذا الدليل لتثبيت SCION واستخدامه ضمن اختبار SCIONLab.
في هذه المرحلة، Hoppipolla ليست جاهزة للإنتاج في بيئة موزعة بالكامل. لذلك، بالنسبة للعمل التجريبي، يوصى بتشغيله محليًا باستخدام docker compose
.
يمكنك العثور على مثال لخيارات التكوين التي يمكن تمريرها إلى الخدمات في ملف .env.example
.
مهم
وعلى الأخص، يجب تعيين متغير البيئة HOPPIPOLLA_SCIOND_URI
على عنوان البرنامج الخفي SCION (على سبيل المثال، 127.0.0.1:30255).
يحتوي المستودع على ملف docker-compose.yml
الذي يقوم بتشغيل كافة الخدمات الضرورية. يمكنك تنشيط Hoppipolla على جهازك ببساطة عن طريق تشغيل:
docker compose up
تحذير
سيتم تحديده لاحقًا
يوضح المقتطف التالي استخدامًا بسيطًا لـ Python SDK:
config = hp.HoppipollaClientConfig() # القيم الافتراضيةclient = hp.HoppipollaClient.from_config(config)issuer = client.get_default_issuer()policy1 = client.publish_policy( Issuer, '-valid(Path) :- Country(Hop, "X") ، قفزة(قفزة)، مسار(مسار)، يحتوي على(مسار، قفزة).')النتيجة = Client.ping("1-ff00:0:110,10.0.0.1")
Hoppipolla مرخص من GNU GPL v3.0.