From 350617ae2cd0140b5b33b293f7a2e5399b25b78c Mon Sep 17 00:00:00 2001 From: Bruno Donassolo Date: Thu, 17 Jun 2021 13:38:10 +0200 Subject: [PATCH] StarZone documentation [doc] Explain Star Zone and its special route declaration. --- docs/source/Platform_examples.rst | 48 +++++++++++++++++++++++++++++++ docs/source/img/starzone.drawio | 1 + docs/source/img/starzone.svg | 3 ++ 3 files changed, 52 insertions(+) create mode 100644 docs/source/img/starzone.drawio create mode 100644 docs/source/img/starzone.svg diff --git a/docs/source/Platform_examples.rst b/docs/source/Platform_examples.rst index 36592f7b36..a653116df7 100644 --- a/docs/source/Platform_examples.rst +++ b/docs/source/Platform_examples.rst @@ -186,6 +186,54 @@ For example, ``3,4 ; 3,2 ; 3,1 ; 2``: :language: xml +Star Zone +--------- + +In a Star topology, as the name says, nodes are organized following a star. +It's similar to a cluster topology but you have the flexibility to set +different route for every component in the star. +Unfortunately, it's only available in the C++ interface. + +.. image:: img/starzone.svg + :scale: 80% + :align: center + +The particularity of this zone is how routes are declared. Instead of declaring the +source and destination, routes are described from a node to everybody else or from +everybody else to the node. In the example, the node *A* uses the *Link1* and *Backbone* +to communicate with other nodes (note that this is valid for both nodes inside or outside +the zone). More precisely, a communication from node *A* to *B* would use links: *Link1, Backbone, +Link3_down*. Note that duplicated links are removed from the route, i.e. in this example we'll use *Backbone* +only once. + +Also, note that the nodes (A, B and C) can be either hosts or other zones. In case of using zones, +set the gateway parameter properly when adding the route. + +The following code illustrates how to create this Star Zone and add the appropriates routes. + +.. code-block:: cpp + + auto* zone = sg4::create_star_zone("star"); + /* create hosts */ + const sg4::Host* hostA = zone->create_host("A", 1e9)->seal(); + const sg4::Host* hostB = zone->create_host("B", 1e9)->seal(); + + /* create links */ + sg4::Link* link1 = zone->create_link("link1", 1e6)->seal(); + sg4::Link* link3_up = zone->create_link("link3_up", 1e6)->seal(); + sg4::Link* link3_down = zone->create_link("link3_down", 1e6)->seal(); + sg4::Link* backbone = zone->create_link("backbone", 1e9)->seal(); + + /* symmetric route route: A->ALL and ALL->A, shared link1 */ + zone->add_route(hostA->get_netpoint(), nullptr, nullptr, nullptr, + std::vector{link1, backbone}, true); + /* route host B -> ALL, split-duplex link3, direction UP */ + zone->add_route(hostB->get_netpoint(), nullptr, nullptr, nullptr, + std::vector{link3_up, backbone}, false); + /* route host ALL -> B, split-duplex link3, direction DOWN */ + zone->add_route(nullptr, hostB->get_netpoint(), nullptr, nullptr, + std::vector{backbone, link3_down}, false); + .. todo:: Complete this page of the manual. SimGrid comes with an extensive set of platforms in the diff --git a/docs/source/img/starzone.drawio b/docs/source/img/starzone.drawio new file mode 100644 index 0000000000..e75ccc5b57 --- /dev/null +++ b/docs/source/img/starzone.drawio @@ -0,0 +1 @@ +7VrJcuM2EP0aHe0SCK5Hy0tSlZnEVU5lmcsUTEISYorggJAlzdcHJACuoGSNSMt2zcUWGnu/7n7NJifwerX9haF0+ZlGOJ5Y02g7gTcTywp8S/zNBTspcC1PChaMRFIEKsED+Y6VcKqkaxLhrDGQUxpzkjaFIU0SHPKGDDFGN81hcxo3d03RAncEDyGKtfTSqeR/k4gvlRy4QdXxKyaLpdrc1zd8ROHTgtF1onZMaIJlzwrpZdQtsyWK6KYmgrcTeM0o5fLXanuN41yvWmdy3l1Pb3kVhhP+kgkXd1+izfcFYMFnn95/DX//9tdvF0BB94zitdKGOi3fafUU18P5KmACZ5sl4fghRWHeuxH2IGRLvopV95zE8TWNKSvmwghhfx4KecYZfcK1Hjf08eM879F6yadnT5iHS9WI0SOO72lGOKGJkMV4Lm46e8aME4Hep1b3ikRRfuYZiskiFzAJWDnhSsnLgeruohtve7UKSqyE/WO6wpztxBA1AfoKXmX7lqPam8qOHFvJljUTgtoukLLeRbl2BaL4oXA8AlN9iRqEOBIGr5qU8SVd0ATFt5V0VoE8Fa1qzCdKUwXHf5jznfJetOa0CbwEWHuP0NgMJ9FV7p2iWbhFIbkj+WWKTeQp86Pt1724CV2zEO+5MjRjxHCMOHlurm/St5p6T4nYucTWDZrYdiDjiC0wV7Mq1MSt0a42LM0HZP372J55n8oI5IqVSZR3PMFKfIPnu3HuL3NanK6yH/fbmuqOi6ywgCsxALjptuoUvxb5/08keQJ6KXE0uZrsMxpm4cdNY9IeHApLwGyfCzMszoMei/Vyo1K6Fos7s4lzs8/JFZ2oyVWgrhvgHgfrDQkX00vbtYMGpBdqzx+1SD2EzucZ5pN2iBjAHmCvOUTk+UXWAE3WcLRN+aZVrnrtqRQXp+yzsjgWuQQ+zF4oS2WCMSfbPBgOwRA2bHp36e01hvANBOGPxg/2OfjhEBt0+WNAfnBfhx/ccfjBheZ9xuUHb0R+gF9Fypd8bJKwD5EEcFzQjAyncYQ+uN00ltYC4zGIe7rBGIP/7MV2cs4w7/hvLcw7IzqwfYzvjs4sQl3/5PMvXd38VzaFDpTgZqs2kK1dvXWPGRE6z2OIEp6RqlTYldSxZxzwT+S0k4xrAHIw+vr1u/B1L3hjvh4Y4GgpLFuitNAQ2hX0Vy+2FEYt3cvV9IjZ7TOWLAmMlFmv9Cg3afMsoxzxOu/WHE2yds31ZlmC0j+pZDO56QBQue2wHHShMpVn7LGg0kXPn1h13Qq8NazAT6z6sLLfGlb9BYyXUpIFTJT0IKhYdH4pKvsvIyehVn6YmQZAwW55jOV2UQCWAQY4Ggz2YZfp5le9dWT7iOSqq6V6Dd6gBC0buAwAvJZyZc7XKQMcXKhEd+h6Qmsfy5sedS4IjhzfXH+cegUw5UBHpqSe8fEThU+PRzj/u6xWgIPVCj8AXtNqBnGe8g2kWjXwmiuMV66wBqhX9D4fO2/q+fiMj7N9j6mVYTlWMEzhqxPWRirH+lPzPsbw9pqvcIDpld4HSFcbXwgMkDV5rWdCOD1z7qrD9OCh6I91rlNxMcri6MjsdSTuyuOTMrIq3WsZ0AAYt9+ZAMN3GWBqAHm8zzKC9xH88ZZwWU21pq5qy3LqNLBVu6qm5o1drdGupQ5IJa/0Eq/t5T2s0V2o/UTsg0uRWQPXdaAXWE7QXLbnoeBYMnKCZlZm2/tz81PHQ/sVcnk4VjyU7x7X6YfO5WWgOcObR/0Nif7mpb3Cj2Q+oll9IimHV9+gwtv/AQ== \ No newline at end of file diff --git a/docs/source/img/starzone.svg b/docs/source/img/starzone.svg new file mode 100644 index 0000000000..0a02eb109e --- /dev/null +++ b/docs/source/img/starzone.svg @@ -0,0 +1,3 @@ + + +
Link1
Link1
A
A
Link3_down
Link3_down
B
B
Link4
Link4
C
C
Star Zone
Star Zone
Backbone
Backbone
Link5
Link5
Outer world
Outer world
Link3_up
Link3_up
Viewer does not support full SVG 1.1
\ No newline at end of file -- 2.20.1