Skydive Àr en öppen kÀllkodsnÀtverks- och protokollanalysator i realtid. Den syftar till att ge ett omfattande sÀtt att förstÄ vad som hÀnder i nÀtverksinfrastrukturen.
För att vÀcka ert intresse kommer jag att visa ett par skÀrmdumpar om Skydive. Lite lÀngre ner kommer det att finnas ett inlÀgg som introducerar Skydive.


InlÀgg «» pÄ Habré.
Skydive visar nÀtverkstopologin genom att ta emot nÀtverkshÀndelser frÄn Skydive-agenter. Har du nÄgonsin undrat hur man lÀgger till eller visar nÀtverkskomponenter pÄ topologidiagrammet som Àr utanför Skydive-agenternas nÀtverk eller icke-nÀtverksobjekt som TOR, datalager, etc. Oroa dig inte lÀngre för detta, tack vare Node rule API.
FrÄn och med version 0.20 tillhandahÄller Skydive Node rule API, vilket kan anvÀndas för att skapa nya noder och kanter samt för att uppdatera metadata för befintliga noder. Node rule API Àr uppdelat i tvÄ API-grÀnssnitt: nodregel-API och kantregel-API. Nodregel-API anvÀnds för att skapa en ny nod och uppdatera metadata för en befintlig nod. Kantregel-API anvÀnds för att skapa en kant mellan tvÄ noder, d.v.s. koppla ihop tvÄ noder.
I den hÀr bloggen kommer vi att se tvÄ anvÀndningsfall, varav det ena Àr en nÀtverkskomponent som inte Àr en del av skydive-nÀtverket. Det andra alternativet Àr en icke-nÀtverkskomponent. Innan detta kommer vi att gÄ igenom nÄgra grundlÀggande anvÀndningssÀtt av topologins regel-API.
Skapa en Skydive-nod
För att skapa en nod mÄste du ange ett unikt nodnamn och en giltig nodtyp. Du kan ocksÄ ange nÄgra ytterligare parametrar.
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": ""
}Uppdatera Skydive-nodernas Metadata
För att uppdatera metadata för en befintlig nod mÄste du tillhandahÄlla en förfrÄgan pÄ gremlin-sprÄket för att vÀlja de noder dÀr du vill uppdatera metadata. Enligt din förfrÄgan kan du uppdatera metadata för en eller flera noder med hjÀlp av en nodregel.
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')"
}Skapa en Skydive-kant
För att skapa en kant mÄste du ange kÀll- och mÄlnoder samt typ av relation för kanten. För att skapa en undernod ska vÀrdet pÄ relationen vara ownership, och för att skapa en relation av typen layer2 ska vÀrdet vara layer2. Du kan skapa mer Àn en relation mellan tvÄ noder, men typ av relation mÄste vara olika.
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"
}
}Första anvÀndningsalternativet
I det hÀr fallet kommer vi att visa hur man representerar en icke-nÀtverksenhet i Skydive-topologin. LÄt oss anta att vi har ett datalager som ska visas i Skydive-topologidiagrammet med viss anvÀndbar metadata.
Vi behöver bara skapa en nodregel för att lÀgga till enheten i topologin. Vi kan lÀgga till metadata för enheten som en del av create-kommandot eller senare skapa en eller flera update nodregler.
Kör kommandot för nodregeln nedan för att lÀgga till lagringsenheten i topologisk schemat.
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"Kör kommandot för kanten nedan för att koppla den skapade noden med vÀrdnoden.
skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"Efter kommandona ovan kan du nu se enheten synlig i Skydive-topologin med angiven metadata, som visas pÄ bilden nedan.

Andra anvÀndningsalternativet
I det hĂ€r fallet kommer vi att se hur man lĂ€gger till en nĂ€tverksenhet som inte Ă€r en del av skydive-nĂ€tverket. LĂ„t oss titta pĂ„ det hĂ€r exemplet. Vi har tvĂ„ skydive-agenter som körs pĂ„ tvĂ„ olika vĂ€rdar, för att koppla dessa tvĂ„ vĂ€rdar behöver vi en TOR-switch. Ăven om vi kan uppnĂ„ detta genom att definiera strukturer och lĂ€nkar i konfigurationsfilen, lĂ„t oss se hur vi kan göra samma sak med API:et för toppologiregler.
Utan TOR-switchen skulle de tvÄ agenterna se ut som tvÄ olika noder utan nÄgra lÀnkar, som visas i bilden nedan.

Nu kör följande kommandon för Node Rules för att skapa TOR-switchen och portarna.
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"Som ni ser har TOR-switchen och portarna skapats och lagts till i skydive-topologin, och nu kommer topologin att se ut som pÄ bilden nedan.

Nu kör de följande Edge Rule-kommandona för att skapa en koppling mellan TOR-switchen, port 1 och den offentliga grÀnssnittet pÄ vÀrd 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"Kör följande kommandon för att skapa en koppling mellan TOR-switchen, port 2 och den offentliga grÀnssnittet pÄ vÀrd 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"Nu skapas ownership- och layer2-kopplingarna mellan TOR-switchen och porten, liksom layer2-kopplingarna mellan agenterna och portarna. Nu kommer den slutliga topologin att se ut som pÄ bilden nedan.

Nu Àr de tvÄ vÀrdarna/agenterna korrekt kopplade, och du kan kontrollera anslutningen eller skapa en fÄngst av den kortaste vÀgen mellan de tvÄ vÀrdarna.
P.S. LĂ€nk till
Det söks efter personer som kan skriva inlÀgg om andra möjligheter med Skydive.
pÄ skydive.network.
KĂ€lla: habr.com
