इस प्रोजेक्ट के बारे में
pktc एक CLI उपकरण और ट्री-टाइलिंग संकलक है जो आपको नेटवर्क वायर पर आपके द्वारा अपेक्षित पैकेट संरचना का वर्णन करने देता है और इसके बाद संबंधित लिनक्स कर्नेल टनल डिवाइस कॉन्फ़िगरेशन को स्वचालित रूप से निकालता है।
`netplan`, `systemd-networkd`, और NetworkManager की तरह डिवाइस प्रकार के नाम के पहले और फिर पैरामीटर भरने के बजाय, pktc विपरीत दृष्टिकोण अपनाता है: आप एक पेड़ के रूप में एनकैप्सुलेशन स्टैक का वर्णन करते हैं, और उपकरण यह निर्धारित करता है कि कौन सा कर्नेल प्राथमिक उसे उत्पन्न करता है।
मूल विचार ट्री टाइलिंग द्वारा निर्देश चयन है। एनकैप्सुलेशन स्टैक एक स्पाइन में समतलीकृत होता है — एक रैखिक सूची ऑपरेटिंग प्रोटोकॉल लेयर — जिसे डिवाइस-आकार के टाइल्स द्वारा ढका जाता है। यह तकनीक कंपाइलर बैकएंड द्वारा मशीन निर्देश चुनने के तरीके के समान है, लेकिन टाइल्स लिनक्स टनल डिवाइस हैं और उत्पन्न कोड `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` — सत्यापन के लिए अंतर्गत ट्रैफ़िक कैसा दिखना चाहिए उसे प्रिंट करता है
- `pktc parse` — वर्णन फ़ाइल से एनकैप्सुलेशन स्पाइन प्रिंट करता है
एक विशिष्ट विशेषता लूप-क्लोजिंग टेस्ट मोड है: `make netns` एक veth जोड़े पर दो नेटवर्क नेमस्पेस बनाता है, दोनों छोरों को एक ही वर्णन से कॉन्फ़िगर करता है, ट्रैफ़िक प्रवाहित करता है, और अंतर्गत कैप्चर करता है। एक गोल्डन टेस्ट यह साबित करता है कि इच्छित आदेश उत्पन्न किए गए थे; एक कर्नेल टेस्ट यह साबित करता है कि डिवाइस बनाया गया था; और कैप्चर यह साबित करता है कि डिवाइस वह ले जाता है जो पेड़ ने दावा किया था।
`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.