الخلاصة
- يدرج دليل Barry الصيغة
::/0مورداً افتراضياً لـIPv6 في مرساة الثقة، لكن المسألة 7 تقول إن الكتابة نفسها تُرفض في حقول موارد الشهادة وROA. - يسمح الكود المثبت بالنقطتين والشرطة المائلة بعد بدء الرمز النصي غير المقتبس، لكنه لا يبدأ ذلك الرمز إلا بحرف أو رقم أو
$أو. لذلك تعبر0::/0، فيما تتوقف::/0قبل تشغيل محلل بادئة IP. - تجعل RFC 4291 الصيغة
::/0بادئة مشروعة، وتجعلها RFC 5952 التمثيل القياسي. أما0::/0فلها المعنى نفسه، لكنها ليست المخرَج المضغوط إلى أقصى حد. - لا تثبت المصادر إنشاء كائن غير صالح، أو وصوله إلى relying party، أو أثراً على إنتاج LACNIC أو التوجيه. الأداة المناسبة هي جدول امتثال من التحليل المعجمي إلى DER مع رمز واضح لمرحلة التوقف.
صفر لا يغيّر فضاء العناوين
الفارق كله حرف واحد:
::/0
0::/0
كلتا السلسلتين تمثلان عنوان IPv6 المكوّن من 128 صفراً مع طول بادئة يساوي صفراً؛ أي إنهما تغطيان فضاء IPv6 كله. لكن المسألة 7 في مستودع LACNIC/barry تسجل مسارين مختلفين داخل البرنامج: الصيغة القياسية تصطدم بمحرف غير متوقع، والصيغة التي تبدأ برقم تعمل حلاً مؤقتاً.
هذا الحد مهم لأن Barry ينشئ مواد RPKI، ومنها مواد غير سليمة عمداً لاختبار برمجيات التحقق. ولا يصبح الاختبار سلبياً بحق إلا بعد أن تتحول مدخلة موجبة ومشروعة إلى قيمة محددة، ثم إلى بايتات يمكن تعيينها. إذا لم تنشئ لغة الوصف رمزاً نصياً أصلاً، فلا يمكن نسبة النتيجة إلى شهادة أو ROA أو relying party. لم يوجد كائن كي يتخذ أي منها قراراً بشأنه.
أقوى قراءة لصالح المؤسسة قراءة متحفظة. تصف بيانات المستودع Barry بأنه مولّد صغير، لا خدمة إنتاج. ويصف الدليل المثبت عند الالتزام المفحوص المشروع ومواصفة Repository Descriptor بأنهما قيد العمل، ويحذر من تغييرات غير متوافقة قبل الإصدار 1.0. كانت قائمتا الإصدارات والوسوم فارغتين وقت الجمع. نشر مسألة صغيرة قابلة للفحص سلوك مناسب في مرحلة النموذج الأولي، وليس دليلاً على حادث تشغيلي.
مثال المسألة والأثر الملصق ليسا البايتات نفسها
فُتحت المسألة في 28 أغسطس/آب 2026. وعند حد الأدلة في 6 سبتمبر/أيلول بقيت مفتوحة من دون وسوم أو تعليقات أو تحديث لاحق. يسجل GitHub صلة صاحب البلاغ بالمستودع على أنها NONE. ولا يوجد رد من مشرف يؤكد إعادة الإنتاج أو التشخيص أو الإصلاح.
يضع البلاغ ::/0 في موضعين: امتداد موارد IP لشهادة سلطة إصدار، وipAddrBlocks في ROA. ويعرض 0::/0 حلاً حالياً. لكن هناك تفصيلاً لا يجوز محوه: ملف الوصف المعروض يستخدم ::/0 في الحقلين، بينما يطبع الأثر الملصق أولاً قيمة عُدلت بالفعل إلى 0::/0، ثم يتوقف لاحقاً عند النقطتين في بداية حقل آخر برسالة Unexpected character: : (0x3a).
لا يلغي هذا الاختلاف المسألة؛ بل يحدد ما يمكن قوله. يُظهر الأثر مباشرة فشلاً عند نقطتين في أول السلسلة. ويقول صاحب البلاغ إن الصيغة القياسية تفشل في الحقلين. لكن السجل العام لا يبرهن بصورة مستقلة على فشل مدخلتين متطابقتين بايتاً بايتاً في تشغيل واحد. ولهذا ينبغي لوصل اختبار الامتثال أن يحفظ بايتات المدخلة وهاشها؛ فنسخ الحل المؤقت إلى حقل واحد قد يبدل التجربة بصمت.
ولا يعرض الأثر شهادة أو ROA مشوهاً، أو مستودعاً منشوراً، أو نتيجة تحقق. ولا يثبت تغير مسار أو مشاركة نظام RPKI الإنتاجي لدى LACNIC. كل ذلك يقع بعد الحد الذي رُصد هنا.
قاعدة المحرف الأول تفسر الاختلاف
ثُبتت قراءة الكود عند الالتزام 994a598321336baf1767f0fbfb460ed96c29fe4f المؤرخ في 1 سبتمبر/أيلول. موضوعه تنفيذ authorityCertIssuer في AKI، ولا يدعي إغلاق المسألة 7. أما سجل الالتزامات الحديثة فيحدد زمن الملاحظة، ولا يثبت أي تغيير أدخل هذا السلوك أو أصلحه.
في src/rpki_tree.c، لا تبدأ next_token سلسلة غير مقتبسة إلا إذا كان المحرف الأول أبجدياً رقمياً، أو $، أو . النقطتان لا تحققان الشرط؛ فينتقل المسار إلى try_emoji ثم تُرفض : العادية بوصفها محرفاً غير متوقع.
بعد بدء السلسلة تصبح القاعدة أوسع. يُسمح بالنقطتين والشرطة المائلة داخلها، لأن قاعدة الاستمرار تستبعد أساساً الفراغات والفواصل البنيوية للغة. لا يجعل الصفر في أول 0::/0 مكتبة IPv6 تقبل شبكة مختلفة. إنه يحقق شرط البدء فحسب، ثم يبقى ::/0 داخل الرمز المفتوح.
يجعل الدليل هذا الحد أكثر وضوحاً. فهو يعرض أيضاً عنواناً مضغوطاً مثل 2001:db8::/64؛ ولأنه يبدأ برقم ست عشري فإنه يجتاز البوابة الأولى. ثم يدرج ::/0 مورداً افتراضياً لـIPv6 في مرساة الثقة، وهي تبدأ تحديداً بالمحرف المرفوض. لذلك فإن عبارة «يدعم IPv6 المضغوط» أوسع من الواقع: الضغط بعد رقم والضغط من أول محرف يسلكان فرعين معجميين مختلفين.
يأتي فهم البادئة في مرحلة تالية. في src/field.c، تفصل parse_ip_node النص عند /، وتتعرف إلى IPv6 بوجود النقطتين، ثم تستدعي inet_pton وتقرأ طول البادئة. الصيغة المرفوضة لا تصل إلى هذه الدالة. لذلك لا يصح وصف المشكلة بأنها رفض من inet_pton أو خطأ في الطول أو ربط الحقل.
الصيغة القياسية ينبغي أن تكون المسار العادي
تسمح RFC 4291 باستخدام :: لضغط مجموعات الأصفار المتصلة، وتعرض :: نفسه بوصفه العنوان الصفري الكامل. كما تُكتب البادئة بعنوان IPv6 مشروع ثم / وطول البادئة. وعليه فإن ::/0 مدخلة IPv6 مشروعة.
تفصل RFC 5952 بين القبول والإخراج. ينبغي للتنفيذ أن يقبل الأشكال المشروعة في RFC 4291، وأن يستخدم عند توليد النص التمثيل القياسي والضغط الأقصى. تحمل 0::/0 عائلة العنوان وقيمته وطوله نفسها، لكنها تبقي مجموعة صفر كان الإخراج القياسي سيحذفها.
وحّد فحص محلي محدود بمكتبة Ruby IPAddr صيغ ::/0 و0::/0 و0000::/0 والعنوان الصفري المكتوب كاملاً إلى القيمة والمدى نفسيهما. ليس هذا تشغيلاً لـBarry ولا مرجعاً أعلى من RFC؛ إنه دعم محدود لحصر التحقيق في البوابة المعجمية بدلاً من افتراض فرق شبكي.
وفي طبقة الكائن، تمثل RFC 3779 موارد IP على هيئة BIT STRING بترميز DER. يتحول نطاق جميع العناوين بطول صفر إلى 03 01 00. ولا تبقى كتابة ملف الوصف خاصية في الشهادة أو ROA. إذا توقفت المدخلة عند المحلل المعجمي، فلا توجد قيمة DER كي يقبلها relying party أو يرفضها.
جدول صغير يحفظ حدود القرار
لا حاجة إلى وعد عام بدعم IPv6. يمكن لكل صف في جدول مذيّل بإصدار أن يحفظ بايتات ملف الوصف وهاشها، والحقل المقصود، ونتيجة إنشاء الرمز، وعائلة العنوان والقيمة والطول بعد التطبيع، والصيغة القياسية، والتزام المحلل والمولّد، وهاش الكائن إن وصلت العملية إلى بنائه.
وينبغي اختيار مرحلة النهاية من قائمة ثابتة: descriptor-tokenize أو prefix-parse أو field-bind أو object-build أو DER-encode أو RP-validate. بذلك لا يتحول رفض عند المولّد إلى فشل منسوب إلى المدقق. أما الثابت المركزي فهو أن parse(format(parse(input))) يحافظ على عائلة العنوان وقيمته وطوله. والمدخلات المشروعة المتكافئة ينبغي أن تلتقي في قيمة DER نفسها متى نجح التوليد.
لا يشهد هذا الجدول بأن Barry مكتمل، ولا يشرح IPv6 كله. إنه يجيب عن سؤال محلي قابل للمراجعة: ما البايتات التي قُبلت، وما القيمة التي فُهمت، وما الكائن الذي أُنشئ، وأي طبقة اتخذت القرار الأخير. ذلك هو العقد الأدق لأداة تولد اختبارات سلبية.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
