Open YufengXin opened 7 years ago
OK, I have to apologize - the Flukes version that supposedly had the NdlPath fix actually did not - I ignored POM version dependencies when rebuilding Flukes. Now that I'm using the actual test version, the ts-2-9 case displays correctly with no changes. So I can deploy this version of Flukes as production and things should work.
For mp-st-2 case above things aren't quite as rosy. It displays the following figure:
I'm investigating.
Thanks,
Please deploy it. I can play with it by manually modifying the manifest.
-Yufeng
On May 18, 2017, at 1:52 PM, Ilya Baldin notifications@github.com wrote:
OK, I have to apologize - the Flukes version that supposedly had the NdlPath fix actually did not - I ignored POM version dependencies when rebuilding Flukes. Now that I'm using the actual test version, the ts-2-9 case displays correctly with no changes. So I can deploy this version of Flukes as production and things should work.
For mp-st-2 case above things aren't quite as rosy. It displays the following figure: https://cloud.githubusercontent.com/assets/12304033/26216213/4493ae6a-3bd1-11e7-9b4d-228e9ad63674.png I'm investigating.
— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/RENCI-NRIG/orca5/issues/133#issuecomment-302489694, or mute the thread https://github.com/notifications/unsubscribe-auth/AHPA5hUP2tusj5KwDEvFprTRl2Xq0vcLks5r7IV2gaJpZM4Nbxqz.
Done (same location)
Try it on the ts-2-9 first. If it works for that, it's the right version.
Per discussion with @YufengXin we are going to leave the version of flukes in the 'new' configuration and Yufeng will work to get rid of unnecessary /
Should I update the 'production' version of Flukes to this as well, or not?
This has to do with extra /
I'm not sure if this is relevant to the problem, but in the mp-st-2 manifest, the wsuNet/Domain/vlan
and the cienaNet/Domain/vlan
both have three hasInterface
statements, while the bbnNet/Domain/vlan
(connected to the stitchport) only has two hasInterface
statements.
wsuNet:
<rdf:Description rdf:about="http://geni-orca.renci.org/owl/wsuNet.rdf#wsuNet/Domain/vlan/726cbd9b-6438-48f8-94fb-2d4f4323d476/vlan">
<rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#CrossConnect"/>
<j.8:inDomain rdf:resource="http://geni-orca.renci.org/owl/wsuNet.rdf#wsuNet/Domain/vlan"/>
<j.8:message>Reservation 6ca34019-2a11-4834-8c06-faad3410d7f4 (Slice mp-st-2) is in state [Active,None]
</j.8:message>
<j.8:hasReservationState rdf:resource="http://geni-orca.renci.org/owl/request.owl#Active"/>
<j.13:hasURL>http://geni-orca.renci.org/owl/wsuNet.rdf#wsuNet/Domain/vlan/726cbd9b-6438-48f8-94fb-2d4f4323d476/vlan</j.13:hasURL>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3-Node2/0/intf"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/wsuNet.rdf#wsuNet/IBM/G8264/TenGigabitEthernet/ExoGeni/2/ethernet"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/wsuNet.rdf#wsuNet/IBM/G8264/TenGigabitEthernet/1/0/ethernet"/>
<j.6:bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10000000</j.6:bandwidth>
<j.10:hasResourceType rdf:resource="http://geni-orca.renci.org/owl/domain.owl#VLAN"/>
<j.1:inRequestNetworkConnection rdf:resource="http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3"/>
<j.13:inConnection rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</j.13:inConnection>
<rdfs:label>1821</rdfs:label>
</rdf:Description>
bbnNet:
<rdf:Description rdf:about="http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan/aa36c306-9b86-4135-919b-fb9a8a5f5aa4/vlan">
<rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#CrossConnect"/>
<j.8:inDomain rdf:resource="http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan"/>
<j.8:message>Reservation dcdf3fa5-8680-4f85-9f08-47cd218b0cdf (Slice mp-st-2) is in state [Active,None]
</j.8:message>
<j.8:hasReservationState rdf:resource="http://geni-orca.renci.org/owl/request.owl#Active"/>
<j.13:hasURL>http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan/aa36c306-9b86-4135-919b-fb9a8a5f5aa4/vlan</j.13:hasURL>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/bbnNet.rdf#BbnNet/IBM/G8052/GigabitEthernet/1/1/ethernet/2400"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/bbnNet.rdf#BbnNet/IBM/G8052/GigabitEthernet/1/0/ethernet"/>
<j.6:bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10000000</j.6:bandwidth>
<j.10:hasResourceType rdf:resource="http://geni-orca.renci.org/owl/domain.owl#VLAN"/>
<j.1:inRequestNetworkConnection rdf:resource="http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3"/>
<j.13:inConnection rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</j.13:inConnection>
<rdfs:label>2400</rdfs:label>
</rdf:Description>
The same potential discrepancy is exhibited in the simple.stitchport.manifest.txt file too.
Should VLANs connected to StitchPorts have three hasInterface
statements?
There are two things that I have been looking at, the hasInterface
statements on Net domain VLAN statements, like the comment above; and hasInterface
statements in the Stitchport device topology statements. Making sure these extra hasInterface
statements exist seem to improve the graph connectivity, but also seem to introduce 'doubled' links.
In the TS2-9 case, there is still the problem where it seems to be random whether or not the Stitchport will be connected to the rest of the graph.
I modified the provided mp-st-2-manifest to include the third hasInterface
statement, as shown below in the diff
output.
*** 1643,1661 ****
<rdf:Description rdf:about="http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan/aa36c306-9b86-4135-919b-fb9a8a5f5aa4/vlan">
<rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#CrossConnect"/>
<j.8:inDomain rdf:resource="http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan"/>
<j.8:message>Reservation dcdf3fa5-8680-4f85-9f08-47cd218b0cdf (Slice mp-st-2) is in state [Active,None]
</j.8:message>
<j.8:hasReservationState rdf:resource="http://geni-orca.renci.org/owl/request.owl#Active"/>
<j.13:hasURL>http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan/aa36c306-9b86-4135-919b-fb9a8a5f5aa4/vlan</j.13:hasURL>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/bbnNet.rdf#BbnNet/IBM/G8052/GigabitEthernet/1/1/ethernet/2400"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/bbnNet.rdf#BbnNet/IBM/G8052/GigabitEthernet/1/0/ethernet"/>
- <j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#592972d7-67a7-4702-9f6a-5cfc783a24e7/Stitching/Domain/intf"/>
<j.6:bandwidth rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10000000</j.6:bandwidth>
<j.10:hasResourceType rdf:resource="http://geni-orca.renci.org/owl/domain.owl#VLAN"/>
<j.1:inRequestNetworkConnection rdf:resource="http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3"/>
<j.13:inConnection rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</j.13:inConnection>
<rdfs:label>2400</rdfs:label>
</rdf:Description>
I modified the provided simple.stitchport.manifest to include the extra hasInterface
statement for the Stitchport device, as shown below in the diff
output.
*** 2057,2065 ****
<rdf:Description rdf:about="http://geni-orca.renci.org/owl/7e263185-2a7b-4a42-93fd-ef5c72c6d496#StitchPort0">
<rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Device"/>
<j.3:inDomain rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#f910c80f-24bc-49d8-89d1-60ed4f722186/Stitching/Domain"/>
<j.16:hasInterface rdf:resource="http://geni-orca.renci.org/owl/ion.rdf#AL2S/Chameleon/Cisco/6509/GigabitEthernet/1/1/3299"/>
- <j.16:hasInterface rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#f910c80f-24bc-49d8-89d1-60ed4f722186/Stitching/Domain/intf"/>
<j.16:hasGUID>03a3261d-f9ad-4b82-9137-809b4698ab05</j.16:hasGUID>
<j.16:hasURL>http://geni-orca.renci.org/owl/orca.rdf#Stitching/Domain</j.16:hasURL>
<j.11:inRequestNetworkConnection rdf:resource="http://geni-orca.renci.org/owl/7e263185-2a7b-4a42-93fd-ef5c72c6d496#Link0"/>
<j.16:inConnection rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</j.16:inConnection>
I started writing a test case that looks at the manifest. I print out the manifest into temp files, so that I can review them in flukes. This is two consecutive runs of the test case, with the same code, producing manifest that are effectively the same, but with different random GUIDs, etc.
As you can see, in one case the graph/Stitchport is fully connected, and in one case it is not. It is potentially interesting that there is no 'double' link in evidence, as there is in the simple-stitchport example.
TS2-9.rdf-manifest-6561746094323557689.rdf.txt
<rdf:Description rdf:about="http://geni-orca.renci.org/owl/5f4e1c51-acf8-4376-a4c6-840e115df525#StitchPort0">
<rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Device"/>
<j.2:inDomain rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#858247f1-8554-457e-85e7-2fd7e5b63f73/Stitching/Domain"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/ion.rdf#AL2S/Chameleon/Cisco/6509/GigabitEthernet/1/1/3292"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#858247f1-8554-457e-85e7-2fd7e5b63f73/Stitching/Domain/intf"/>
<j.13:hasGUID>81034d72-b712-4204-85c0-592b0e0c4496</j.13:hasGUID>
<j.13:hasURL>http://geni-orca.renci.org/owl/orca.rdf#Stitching/Domain</j.13:hasURL>
<j.9:inRequestNetworkConnection rdf:resource="http://geni-orca.renci.org/owl/5f4e1c51-acf8-4376-a4c6-840e115df525#Link9"/>
<j.13:inConnection rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</j.13:inConnection>
</rdf:Description>
TS2-9.rdf-manifest-5450746101034930766.rdf.txt
<rdf:Description rdf:about="http://geni-orca.renci.org/owl/5f4e1c51-acf8-4376-a4c6-840e115df525#StitchPort0">
<rdf:type rdf:resource="http://geni-orca.renci.org/owl/topology.owl#Device"/>
<j.2:inDomain rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#78cc0e36-719c-4cfc-b355-beca733a5632/Stitching/Domain"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/ion.rdf#AL2S/Chameleon/Cisco/6509/GigabitEthernet/1/1/3292"/>
<j.13:hasInterface rdf:resource="http://geni-orca.renci.org/owl/orca.rdf#78cc0e36-719c-4cfc-b355-beca733a5632/Stitching/Domain/intf"/>
<j.13:hasGUID>81034d72-b712-4204-85c0-592b0e0c4496</j.13:hasGUID>
<j.13:hasURL>http://geni-orca.renci.org/owl/orca.rdf#Stitching/Domain</j.13:hasURL>
<j.9:inRequestNetworkConnection rdf:resource="http://geni-orca.renci.org/owl/5f4e1c51-acf8-4376-a4c6-840e115df525#Link9"/>
<j.13:inConnection rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</j.13:inConnection>
</rdf:Description>
Need to check by running Flukes in Eclipse to see how the structure of manifest can be changed to be properly connected [Ilya]
There are two cases - when stitchport is defined in XXXNet site vs when it is defined directly on ION.
So the issue appears to be the structure of a path to stitchport vs a structure of the path to regular node. It isn't wrong in either case, but it is different. I have code that after the path is reconstructed out of RDF entities (it includes, nodes and links) walks the sequence throwing away links and connecting the nodes). In the case of node-to-node path I can simply skip every other step without checking and it works. In the case of a stichport there seems to be an extra element that needs to be skipped. I need to look closer and talk to Yufeng to make sure my fix is correct, but this should be a straightforward fix within Flukes without messing with ORCA code.
Example node-to node path:
Path (len: 9) node - http://geni-orca.renci.org/owl/rciNet.rdf#rciNet/Domain/vlan/d8e192d7-ebae-4f92-a643-0cfb80344ddf/vlan link - http://geni-orca.renci.org/owl/rciNet.rdf#RciNet/IBM/G8264/TenGigabitEthernet/1/0/ethernet-Renci/Cisco/6509/TenGigabitEthernet/3/6/ethernet/ec3cd17c-01d4-4b8b-b4e2-f26bce1feee0 node - http://geni-orca.renci.org/owl/ben.rdf#ben/Domain/vlan/b23af89e-20ae-4117-9e4d-fdddb4f50fa1/vlan link - http://geni-orca.renci.org/owl/ben-6509.rdf#Renci/Cisco/6509/TenGigabitEthernet/3/2/fiber-NLR/DD/Juniper/QFX3500/xe/0/0/0/fiber/ab17e02a-e0ea-48ad-84f5-c12cfb966f70 node - http://geni-orca.renci.org/owl/nlr.rdf#nlr/Domain/vlan/e5445c94-ecf2-4a4b-9c43-3badb88c531a/vlan link - http://geni-orca.renci.org/owl/nlr.rdf#NLR/DD/Juniper/QFX3500/xe/0/0/1/ethernet-ION/DD/Cisco/6509/TenGigabitEthernet/1/2/ethernet/4bbadc34-2fa9-4314-99d6-8c49dd1ab4e0 node - http://geni-orca.renci.org/owl/ion.rdf#ion/Domain/vlan/bea2c0c7-0d05-49a4-8e2a-3a58f5223bce/vlan link - http://geni-orca.renci.org/owl/ion.rdf#AL2S/tamuNet/Cisco/6509/TengigabitEthernet/1/1/ethernet-tamuNet/IBM/G8264/TenGigabitEthernet/1/0/ethernet/8efa44b4-a2bc-4e36-9877-0268c1beecc7 node - http://geni-orca.renci.org/owl/tamuNet.rdf#tamuNet/Domain/vlan/9c28f4e8-6174-4b80-a571-c2084678b93c/vlan
Example node to stitchport path:
Path (len: 4)
node - http://geni-orca.renci.org/owl/7e263185-2a7b-4a42-93fd-ef5c72c6d496#StitchPort0 node - http://geni-orca.renci.org/owl/ion.rdf#ion/Domain/vlan/b3d08360-79f1-4682-8fa8-e7144401e4f9/vlan link - http://geni-orca.renci.org/owl/uflNet.rdf#UFLNet/IBM/G8052/TenGigabitEthernet/1/0/ethernet-ION/UFLNet/Cisco/6509/TenGigabitEthernet/1/1/ethernet/9ad15a79-c5ef-4f54-a173-9b038dc453a3 node - http://geni-orca.renci.org/owl/uflNet.rdf#uflNet/Domain/vlan/acd2c837-56a7-4d23-a6d6-1e4b871d0d12/vlan
This was fixed in RENCI-NRIG/flukes#15
For mp-st-2-manifest.rdf.txt Flukes fails to properly derive a path from VLAN3 to the stitchport:
DEBUG - Network Connection Path: http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3
DEBUG - Printing roots
DEBUG - http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3
DEBUG - Printing paths
DEBUG - Path (len: 5) http://geni-orca.renci.org/owl/cienaNet.rdf#cienaNet/Domain/vlan/9012931d-400c-4211-8af3-2c115d524f20/vlan http://geni-orca.renci.org/owl/ion.rdf#AL2S/cienaNet/Cisco/6509/TenGigabitEthernet/1/1/ethernet-CIENANet/IBM/G8264/TenGigabitEthernet/1/0/ethernet/cbf7d50c-a8ae-4fb7-adf4-a6cb6773c653 http://geni-orca.renci.org/owl/ion.rdf#ion/Domain/vlan/8656151e-279e-4f09-9fb1-a82f37fdb61b/vlan http://geni-orca.renci.org/owl/nlr.rdf#NLR/DD/Juniper/QFX3500/xe/0/0/1/ethernet-ION/DD/Cisco/6509/TenGigabitEthernet/1/2/ethernet/6898da86-be34-42ed-b861-e907785858f0 http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3
DEBUG - Path (len: 3) http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#StitchPort0 http://geni-orca.renci.org/owl/bbnNet.rdf#BbnNet/IBM/G8052/GigabitEthernet/1/1/ethernet/2400-592972d7-67a7-4702-9f6a-5cfc783a24e7/Stitching/Domain/intf/b909e069-5d6d-46fd-a2f0-de82eac07b54 http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3
DEBUG - Path (len: 5) http://geni-orca.renci.org/owl/wsuNet.rdf#wsuNet/Domain/vlan/726cbd9b-6438-48f8-94fb-2d4f4323d476/vlan http://geni-orca.renci.org/owl/ion.rdf#AL2S/wsuNet/Cisco/6509/TengigabitEthernet/1/1/ethernet-wsuNet/IBM/G8264/TenGigabitEthernet/1/0/ethernet/35a401cb-cfe9-4365-86c9-dd5e0c567ae8 http://geni-orca.renci.org/owl/ion.rdf#ion/Domain/vlan/1028b829-9920-4d76-83d1-73e75897e996/vlan http://geni-orca.renci.org/owl/nlr.rdf#NLR/DD/Juniper/QFX3500/xe/0/0/1/ethernet-ION/DD/Cisco/6509/TenGigabitEthernet/1/2/ethernet/6898da86-be34-42ed-b861-e907785858f0 http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3
Notice path to Stitchport is only of length 3 and it skips the ion node completely. I'm looking at the path logic under orca.ndl to see if it can be fixed easily, but this is a model problem.
There are two problems with mp-st-2-manifest.rdf.txt (which is a request with three-way broadcast link, one of which is a StitchPort in a bbnNet domain)
If I remove that interface (comment out in the manifest), then the manifest can be displayed almost correctly, if I undo the change in RENCI-NRIG/flukes#15. The reason for that is, unlike the comment above showing a stitchport path being stitchport-node-link-node-link-node, in this case the path from stitchport is the proper sequence stitchport-link-node-link-node-link-node-link-node .
node - http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#StitchPort0 link - http://geni-orca.renci.org/owl/bbnNet.rdf#BbnNet/IBM/G8052/GigabitEthernet/1/1/ethernet/2400-592972d7-67a7-4702-9f6a-5cfc783a24e7/Stitching/Domain/intf/b909e069-5d6d-46fd-a2f0-de82eac07b54 node - http://geni-orca.renci.org/owl/bbnNet.rdf#bbnNet/Domain/vlan/aa36c306-9b86-4135-919b-fb9a8a5f5aa4/vlan link - http://geni-orca.renci.org/owl/ion.rdf#AL2S/BBN/Juniper/MX/TenGigabitEthernet/1/1/ethernet-BbnNet/IBM/G8052/GigabitEthernet/1/0/ethernet/049190e5-ed20-4bbd-ab18-c7b3b6709a72 node - http://geni-orca.renci.org/owl/ion.rdf#ion/Domain/vlan/55b3b3e1-ab12-4903-a8cb-0b4aa6bc4620/vlan link - http://geni-orca.renci.org/owl/nlr.rdf#NLR/DD/Juniper/QFX3500/xe/0/0/1/ethernet-ION/DD/Cisco/6509/TenGigabitEthernet/1/2/ethernet/6898da86-be34-42ed-b861-e907785858f0 node - http://geni-orca.renci.org/owl/6c952985-efad-46ad-a216-59a078f130a5#VLAN3
This requires a correction to the model for me to (a) be able to not use the interface that creates a shortcut from bbnNet to VLAN3 somehow and (b) make it consistent so paths from stitchport always have a link following it. Then I can undo the fix in RENCI-NRIG/flukes#15 and everything will 'just work'.
@YufengXin
@ibaldin would you pls modify the attached manifest files to make them show correctly at Flukes, then I will try to generate the right RDF accordingly? I tried manually modifying the RDF, but could not make them work.
The inter-rack MP case maybe useful because the two VM branches show correctly.
ts-2-9.rdf.txt ts-2-9-manifest.rdf.txt mp-st-2.rdf.txt mp-st-2-manifest.rdf.txt