Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Skydive — to analizator topologii sieci i protokołów z otwartym kodem źródłowym w czasie rzeczywistym. Jego celem jest dostarczenie kompleksowego sposobu zrozumienia, co dzieje się w infrastrukturze sieciowej.

Aby wzbudzić wasze zainteresowanie, przedstawiam kilka zrzutów ekranu dotyczących Skydive. Poniżej znajdziecie post wprowadzający do Skydive.

Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Post „Wprowadzenie do skydive.network” na Habrze.

Skydive wyświetla topologię sieci, uzyskując zdarzenia sieciowe od agentów Skydive. Czy kiedykolwiek zastanawialiście się, jak dodać lub wyświetlić na diagramie topologii komponenty sieci, które znajdują się poza agentami sieci Skydive lub nie-sieciowe obiekty, takie jak TOR, magazyn danych itd.? Już nie musicie się tym martwić, dzięki API reguły węzła.

Od wersji 0.20, Skydive oferuje API reguły węzła, które może być używane do tworzenia nowych węzłów i krawędzi oraz aktualizowania metadanych istniejących węzłów. API reguły węzła jest podzielone na dwa interfejsy API: interfejs API reguły węzła i interfejs API reguły krawędzi. Interfejs API reguły węzła jest używany do tworzenia nowego węzła i aktualizowania metadanych istniejącego węzła. Interfejs API reguły krawędzi jest używany do tworzenia krawędzi między dwoma węzłami, tj. łączy dwa węzły.

W tym blogu zaprezentujemy dwa przykłady użycia, z których jeden dotyczy komponentu sieciowego, który nie jest częścią sieci Skydive. Drugi przykład to komponent nie-sieciowy. Przed tym omówimy kilka podstawowych sposobów użycia API reguły topologii.

Tworzenie węzła Skydive

Aby stworzyć węzeł, należy wskazać unikalną nazwę węzła i dozwolony typ węzła. Możecie również podać dodatkowe parametry.

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": ""
}

Aktualizacja metadanych węzłów Skydive

Aby zaktualizować metadane istniejącego węzła, należy dostarczyć zapytanie w języku gremlin, aby wybrać węzły, w których chcecie zaktualizować metadane. Zgodnie z waszym zapytaniem można zaktualizować metadane jednego lub kilku węzłów za pomocą reguły jednego węzła.

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')"
}

Tworzenie krawędzi Skydive

Aby stworzyć krawędź, należy określić węzeł źródłowy, węzeł docelowy oraz typ połączenia. Dla utworzenia węzła podrzędnego typ połączenia powinien być ustawiony na ownership, a dla połączenia typu layer2 - na layer2. Można stworzyć więcej niż jedno połączenie między dwoma węzłami, ale typ połączenia musi być różny.

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"
  }
}

Pierwszy przypadek użycia

W tym przypadku omówimy, jak przedstawić urządzenie niebędące częścią sieci w topologii Skydive. Załóżmy, że mamy magazyn danych, który powinien być przedstawiony na diagramie topologii Skydive z pewnymi przydatnymi metadanymi.

Musimy tylko stworzyć regułę węzła, aby dodać urządzenie do topologii. Możemy dodać metadane urządzenia jako część polecenia create lub później stworzyć jedną lub kilka aktualizacji reguł węzła.

Uruchom poniższe polecenie reguły węzła, aby dodać pamięć masową do schematu topologii.

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"

Uruchom poniższe polecenie reguły krawędzi, aby powiązać stworzony węzeł z węzłem hosta.

skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"

Po wykonaniu powyższych poleceń, możesz teraz zobaczyć urządzenie widoczne w schemacie topologii Skydive z przypisanymi metadanymi, jak pokazano na rysunku poniżej.

Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Drugi przypadek użycia

W tym przypadku zobaczymy, jak dodać urządzenie sieciowe, które nie jest częścią sieci skydive. Rozważmy ten przykład. Mamy dwóch agentów skydive działających na dwóch różnych hostach, do połączenia tych dwóch hostów potrzebny jest przełącznik TOR. Nawet jeśli możemy to osiągnąć, definiując węzły struktury i linki w pliku konfiguracyjnym, zobaczmy, jak możemy to samo zrobić za pomocą API reguł topologii.

Bez przełącznika TOR dwaj agenci będą wyglądać jak dwa różne węzły bez żadnych linków, jak pokazano na poniższym rysunku.

Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Teraz wykonaj poniższe polecenia Reguły węzła, aby stworzyć przełącznik TOR i porty.

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"

Jak widać, przełącznik TOR i porty zostały utworzone i dodane do topologii skydive, a teraz topologia będzie wyglądać tak, jak pokazano na poniższym rysunku.

Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Teraz wykonaj poniższe polecenia Reguły krawędzi, aby stworzyć połączenie między przełącznikiem TOR, portem 1 i publicznym interfejsem hosta 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"

Wykonaj poniższe polecenia, aby stworzyć połączenie między przełącznikiem TOR, portem 2 i publicznym interfejsem hosta 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"

Teraz tworzone są połączenia ownership i layer2 między przełącznikiem TOR a portem, a także połączenia layer2 między agentami a portami. Ostateczna topologia będzie wyglądać tak, jak pokazano na poniższym rysunku.

Ręczne dodawanie węzła do topologii Skydive przez klienta Skydive

Teraz dwa hosty / agenci są odpowiednio połączeni, a Ty możesz sprawdzić połączenie lub utworzyć przechwycenie najkrótszej trasy między dwoma hostami.

P.S. Link do oryginalnego postu

Szukamy osób, które mogłyby pisać posty o innych możliwościach Skydive.
Czatu Telegram na skydive.network.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster