αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

Skydive αž‚αžΊαž‡αžΆαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž  αž”αžŽαŸ’αžαžΆαž‰αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžαžΆαž˜αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžœαž·αž—αžΆαž‚αž–αž·αž’αžΈαž€αžΆαžšαŸ” αžœαžΆαž˜αžΆαž“αž‚αŸ„αž›αž”αŸ†αžŽαž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžœαž·αž’αžΈαžŠαŸαž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž“αžΌαžœαžšαžΌαž”αžαžαž’αŸαž€αŸ’αžšαž„αŸ‹αž–αžΈαžšαž”αžΈαž’αŸ†αž–αžΈ Skydive αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž“αžΉαž„αž˜αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αž’αŸ†αž–αžΈαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ Skydive αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

αž”αŸ’αžšαž€αžΆαžŸ "αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈ skydive.networkΒ» αž“αŸ…αž›αžΎ Habre αŸ”

Skydive αž”αž„αŸ’αž αžΆαž‰αž”αžŽαŸ’αžαžΆαž‰ topology αžŠαŸ„αž™αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αž–αžΈαž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžš Skydive αŸ” αžαžΎαž’αŸ’αž“αž€αž’αŸ’αž›αžΆαž”αŸ‹αž†αŸ’αž„αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž”αž“αŸ’αžαŸ‚αž˜ αž¬αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž”αžŽαŸ’αžαžΆαž‰αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜ topology αžŠαŸ‚αž›αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αž”αžŽαŸ’αžαžΆαž‰αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžš Skydive αž¬αžœαžαŸ’αžαž»αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αžŽαŸ’αžαžΆαž‰αžŠαžΌαž…αž‡αžΆ TOR, αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαžŠαžΎαž˜αŸ” αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž–αŸ’αžšαž½αž™αž”αžΆαžšαž˜αŸ’αž—αž’αŸ†αž–αžΈαžœαžΆαž‘αŸ€αžαž‘αŸ αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡ Node rule API αŸ”

αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αŸ†αžŽαŸ‚ 0.20 Skydive αž•αŸ’αžαž›αŸ‹αž“αžΌαžœ Node rule API αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžαŸ’αž“αžΆαŸ†αž„ αž“αž·αž„αž‚αŸ‚αž˜αžαŸ’αž˜αžΈ αž“αž·αž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αŸ” Node rule API αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‡αžΆ APIs αž–αžΈαžšαŸ– node rule API αž“αž·αž„ edge rule APIαŸ” Node Rule API αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžαŸ’αž“αžΆαŸ†αž„αžαŸ’αž˜αžΈ αž“αž·αž„αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αŸ” API αž…αŸ’αž”αžΆαž”αŸ‹αž‚αŸ‚αž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž–αŸ’αžšαŸ†αžŠαŸ‚αž“αžšαžœαžΆαž„αžαŸ’αž“αžΆαŸ†αž„αž–αžΈαžš αž–αŸ„αž›αž‚αžΊαž§αŸ” αž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž–αžΈαžšαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸ†αž“αž½αž“αž–αžΈαžš αžŠαŸ‚αž›αž˜αž½αž™αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž’αžΆαžαž»αž•αŸ’αžŸαŸ†αž”αžŽαŸ’αžαžΆαž‰αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒαž”αžŽαŸ’αžαžΆαž‰ skydive networkαŸ” αž‡αž˜αŸ’αžšαžΎαžŸαž‘αžΈαž–αžΈαžšαž‚αžΊαžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αžŽαŸ’αžαžΆαž‰αŸ” αž˜αž»αž“αž“αŸ„αŸ‡ αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαž·αž’αžΈαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎ Topology Rules 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 Nodes Metadata

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž“αŸƒαžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž•αŸ’αžαž›αŸ‹αžŸαŸ†αžŽαž½αžš 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 Edge

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž‚αŸ‚αž˜ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž”αŸ’αžšαž—αž– αž“αž·αž„αž‘αž·αžŸαžŠαŸ… αž“αž·αž„αž”αŸ’αžšαž—αŸαž‘αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸƒαž‚αŸ‚αž˜ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžαŸ’αž“αžΆαŸ†αž„αž€αžΌαž“ αžαž˜αŸ’αž›αŸƒαž”αŸ’αžšαž—αŸαž‘αžαŸ†αžŽαžαŸ’αžšαžΌαžœαžαŸ‚αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž· αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžŠαŸ‚αžš αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž‘αžΈ 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 topology αŸ” αž…αžΌαžšαž™αžΎαž„αž–αž·αž…αžΆαžšαžŽαžΆαžαžΆαž™αžΎαž„αž˜αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜ skydive topology αž‡αžΆαž˜αž½αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ”

αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž…αŸ’αž”αžΆαž”αŸ‹ node αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž§αž”αž€αžšαžŽαŸαž‘αŸ… topology αŸ” αž™αžΎαž„β€‹αž’αžΆαž…β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž˜αŸαžαžΆβ€‹αž§αž”αž€αžšαžŽαŸβ€‹αž‡αžΆβ€‹αž•αŸ’αž“αŸ‚αž€β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆ αž¬β€‹αž€αŸ’αžšαŸ„αž™β€‹αž˜αž€β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆβ€‹αž…αŸ’αž”αžΆαž”αŸ‹β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž’αžΆαž”αŸ‹αžŠαŸαžβ€‹αž˜αž½αž™β€‹αž¬β€‹αž…αŸ’αžšαžΎαž“αŸ”

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž€αŸ’αž”αž½αž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαŸ‚αž˜αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αž‘αŸ…αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜ topology αŸ”

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"

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž›αžΎ αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜ skydive topology αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžŠαžΌαž…αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

αž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΈαž–αžΈαžš

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž–αžΈαžšαž”αŸ€αž”αž”αž“αŸ’αžαŸ‚αž˜αž§αž”αž€αžšαžŽαŸαž”αžŽαŸ’αžαžΆαž‰αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒαž”αžŽαŸ’αžαžΆαž‰ skydive αŸ” αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡αŸ” αž™αžΎαž„αž˜αžΆαž“αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžš skydive αž–αžΈαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αž»αž„αžαžΆαž€αŸ‹ TOR αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αžΎαž„αž’αžΆαž…αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αžŠαŸ„αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαŸ’αž“αžΆαŸ†αž„αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αŸαžŠαŸ„αž™ αžŸαžΌαž˜αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎ Topology Rules API αŸ”

αž”αžΎαž‚αŸ’αž˜αžΆαž“αž€αž»αž„αžαžΆαž€αŸ‹ TOR αž‘αŸ αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžšαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž‡αžΆαžαŸ’αž“αžΆαŸ†αž„αž–αžΈαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžŽαžΆαž˜αž½αž™ αžŠαžΌαž…αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ Host Rules αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αž»αž„αžαžΆαž€αŸ‹ 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 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ… skydive topology αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡ topology αž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ 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 switch port 2 αž“αž·αž„ host 2 public interface

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"

αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž· αž“αž·αž„αžŸαŸ’αžšαž‘αžΆαž”αŸ‹ 2 αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžšαžœαžΆαž„αž€αž»αž„αžαžΆαž€αŸ‹ TOR αž“αž·αž„αž…αŸ’αžšαž€ αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž•αŸ’αžŸαžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαŸ’αžšαž‘αžΆαž”αŸ‹ 2 αžšαžœαžΆαž„αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžš αž“αž·αž„αž…αŸ’αžšαž€αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ topology αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ”

αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαŸ†αž„αž‘αŸ… Skydive topology αžŠαŸ„αž™αžŠαŸƒαžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Skydive

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“/αž—αŸ’αž“αžΆαž€αŸ‹αž„αžΆαžšαž‘αžΆαŸ†αž„αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ αž¬αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αžΆαž”αŸ‹αž™αž€αž•αŸ’αž›αžΌαžœαžαŸ’αž›αžΈαž”αŸ†αž•αž»αžαžšαžœαžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‘αžΆαŸ†αž„αž–αžΈαžšαŸ”

PS αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… αž”αŸ’αžšαž€αžΆαžŸαžŠαžΎαž˜

αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž˜αž“αž»αžŸαŸ’αžŸαžŠαŸ‚αž›αž’αžΆαž…αžŸαžšαžŸαŸαžšαž”αŸ’αžšαž€αžΆαžŸαž’αŸ†αž–αžΈαž˜αž»αžαž„αžΆαžš Skydive αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”
αž€αžΆαžšαž‡αž‡αŸ‚αž€αžαžΆαž˜αžαŸαž‘αŸαž€αŸ’αžšαžΆαž˜ αžαžΆαž˜αžšαž™αŸˆ skydive.network αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹