Skydive عبارة عن محلل بروتوكولات وطوبولوجيا شبكة مفتوح المصدر ومفتوح المصدر. ويهدف إلى توفير طريقة شاملة لفهم ما يحدث في البنية التحتية للشبكة.
لإثارة اهتمامك، سأقدم لك بعض لقطات الشاشة حول Skydive. أدناه سيكون هناك منشور حول مقدمة Skydive.
بريد "
يعرض Skydive طوبولوجيا الشبكة من خلال تلقي أحداث الشبكة من وكلاء Skydive. هل سبق لك أن تساءلت عن كيفية إضافة أو عرض مكونات الشبكة الموجودة خارج شبكة وكيل Skydive أو الكائنات غير التابعة للشبكة مثل TOR وتخزين البيانات وما إلى ذلك في مخطط الهيكل. لا داعي للقلق بشأن ذلك بعد الآن بفضل Node Rule API.
منذ الإصدار 0.20، توفر Skydive واجهة برمجة تطبيقات قاعدة العقدة التي يمكن استخدامها لإنشاء عقد وحواف جديدة ولتحديث البيانات التعريفية للعقد الموجودة. تنقسم واجهة برمجة تطبيقات قاعدة العقدة إلى واجهتي برمجة تطبيقات: واجهة برمجة تطبيقات قاعدة العقدة وواجهة برمجة تطبيقات قاعدة الحافة. يتم استخدام Node Rule API لإنشاء عقدة جديدة وتحديث البيانات التعريفية للعقدة الموجودة. يتم استخدام واجهة برمجة تطبيقات قاعدة الحافة لإنشاء حدود بين عقدتين، أي. يربط عقدتين.
سنرى في هذه المدونة حالتي استخدام، إحداهما عبارة عن مكون شبكة ليس جزءًا من شبكة القفز بالمظلات. الخيار الثاني هو مكون غير متصل بالشبكة. قبل ذلك، سنلقي نظرة على بعض الطرق الأساسية لاستخدام واجهة برمجة التطبيقات لقواعد الطوبولوجيا.
إنشاء عقدة Skydive
لإنشاء عقدة، يجب عليك توفير اسم عقدة فريد ونوع عقدة صالح. يمكنك أيضًا تقديم بعض الخيارات الإضافية.
skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
"UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
"Name": "node rule1",
"Description": "",
"Metadata": {
"Name": "node1",
"Type": "fabric"
},
"Action": "create",
"Query": ""
}
تحديث البيانات الوصفية لعقد Skydive
لتحديث البيانات التعريفية لعقدة موجودة، يجب عليك توفير استعلام gremlin لتحديد العقد التي تريد تحديث البيانات التعريفية عليها. وفقًا لطلبك، يمكنك تحديث البيانات التعريفية لعقدة واحدة أو أكثر باستخدام قاعدة عقدة واحدة.
skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
"UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
"Name": "update rule",
"Description": "",
"Metadata": {
"key1": "val1",
"key2": "val2"
},
"Action": "update",
"Query": "G.V().Has('Name', 'node1')"
}
إنشاء حافة Skydive
لإنشاء حافة، يجب عليك تحديد عقد المصدر والوجهة ونوع رابط الحافة؛ لإنشاء عقدة فرعية، يجب أن تكون قيمة نوع الرابط ملكية؛ وبالمثل، لإنشاء طبقة نوع رابط 2، يجب أن تكون قيمة نوع الرابط طبقة2. يمكنك إنشاء أكثر من رابط بين عقدتين، ولكن يجب أن يكون نوع الرابط مختلفاً.
skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
"UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
"Name": "edge",
"Description": "",
"Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
"Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
"Metadata": {
"RelationType": "both"
}
}
حالة الاستخدام الأولى
في هذه الحالة، سننظر في كيفية إظهار جهاز غير متصل بالشبكة في طوبولوجيا القفز بالمظلات. لنفترض أن لدينا مستودع بيانات يجب عرضه في مخطط طوبولوجيا القفز بالمظلات مع بعض البيانات الوصفية المفيدة.
نحتاج فقط إلى إنشاء قاعدة عقدة لإضافة الجهاز إلى الهيكل. يمكننا إضافة بيانات تعريف الجهاز كجزء من أمر الإنشاء، أو إنشاء واحد أو أكثر من أوامر قاعدة عقدة التحديث لاحقًا.
قم بتشغيل أمر قاعدة المضيف التالي لإضافة جهاز تخزين إلى مخطط الهيكل.
skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"
قم بتشغيل الأمر الموجود أسفل قاعدة الحافة لربط العقدة التي تم إنشاؤها بالعقدة المضيفة.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"
بعد تنفيذ الأوامر المذكورة أعلاه، يمكنك الآن رؤية الجهاز مرئيًا في مخطط طوبولوجيا القفز بالمظلات مع البيانات الوصفية المحددة كما هو موضح في الصورة أدناه.
حالة الاستخدام الثانية
في هذه الحالة سنرى كيفية إضافة جهاز شبكة ليس جزءًا من شبكة القفز بالمظلات. دعونا ننظر إلى هذا المثال. لدينا عميلان للقفز بالمظلات يعملان على مضيفين مختلفين، ولربط هذين المضيفين نحتاج إلى مفتاح TOR. على الرغم من أنه يمكننا تحقيق ذلك عن طريق تحديد عقد البنية والروابط في ملف التكوين، فلنرى كيف يمكننا فعل الشيء نفسه باستخدام واجهة برمجة التطبيقات لقواعد الطوبولوجيا.
بدون مفتاح TOR، سيظهر الوكيلان كعقدتين مختلفتين دون أي روابط، كما هو موضح في الصورة أدناه.
قم الآن بتشغيل أوامر قواعد المضيف التالية لإنشاء مفتاح TOR والمنافذ.
skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"
كما ترون، تم إنشاء مفتاح TOR والمنافذ وإضافتها إلى طوبولوجيا القفز بالمظلات، وستبدو الهيكلية الآن مثل الصورة أدناه.
قم الآن بتشغيل أوامر Edge Rule التالية لإنشاء اتصال بين مفتاح TOR والمنفذ 1 والواجهة العامة للمضيف 1.
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
قم بتشغيل الأوامر التالية لإنشاء رابط بين منفذ تبديل TOR 2 والواجهة العامة للمضيف 2
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
يتم الآن إنشاء اقترانات الملكية والطبقة الثانية بين محول TOR والمنفذ، بالإضافة إلى اقترانات الطبقة الثانية بين الوكلاء والمنافذ. الآن ستبدو الطوبولوجيا النهائية كما في الصورة أدناه.
الآن تم توصيل المضيفين/الوكلاء بشكل صحيح ويمكنك اختبار الاتصال أو إنشاء أقصر مسار لالتقاط بين المضيفين.
رابط PS إلى
نحن نبحث عن الأشخاص الذين يمكنهم كتابة منشورات حول ميزات Skydive الأخرى.
المصدر: www.habr.com