fabric-testbed / InformationModel

FABRIC Information Model library
MIT License
7 stars 1 forks source link

Fix dealing with non-unique components #97

Closed ibaldin closed 2 years ago

ibaldin commented 2 years ago

Having NICs that are not uniquely named in a slice results in services sometimes having missing interfaces. I.e. L2Bridge service slivers that only have one interface (instead of expected 2). This probably has to do with NICs being referred to by name in some places in a slice. The fix likely lies in changing how FIM deals with component names which are not currently required to be unique in a slice, only in a node. Needs some investigation. The current workaround is to make sure NICs are named uniquely.

ibaldin commented 2 years ago

Some discussion about this issue:

More specifically this sliver

Reservation 5b4ba978-0528-4eb1-bc09-0049976d001b (Slice P4_SimpleRouter(34a014df-81cb-4889-9166-d349b9623444) Graph Id:aed1142f-4680-487e-acd2-b8b8ef426d93 Owner:name: orchestrator guid: orchestrator-guid email: XXXX State:StableOK )

Checking CF CLI:

Reservation ID: 5b4ba978-0528-4eb1-bc09-0049976d001b Slice ID: 34a014df-81cb-4889-9166-d349b9623444
Resource Type: L2Bridge Notices: Reservation 5b4ba978-0528-4eb1-bc09-0049976d001b (Slice P4_SimpleRouter(34a014df-81cb-4889-9166-d349b9623444) Graph Id:aed1142f-4680-487e-acd2-b8b8ef426d93 Owner:name: orchestrator guid: orchestrator-guid email: XXXX State:StableOK ) is in state [Active,None_]

Last ticket update:
Ticket events:
Last ticket update:
Ticket events:
Start: 2021-11-22 18:56:34 End: 2021-11-23 18:56:34 Requested End: 2021-11-23 18:56:34
Units: 1 State: Active Pending State: None_
Sliver: {'layer': 'L2', 'name': 'net2', 'node_map': "('d52a4586-b955-4b35-93b6-b738a6e4b3aa', 'node+tacc-data-sw:ip+192.168.16.3-ns')", 'reservation_info': '{"reservation_id": "5b4ba978-0528-4eb1-bc09-0049976d001b", "reservation_state": "Active"}', 'site': 'TACC', 'type': 'L2Bridge'}

I see interface_info on it. It has one interface net2-nic2-p1 I see labels set { mac: 02:F3:96:01:C7:5E, vlan: 2057, local_name: HundredGigE0/0/0/5, device_name: tacc-data-sw}

net2-5b4ba978-0528-4eb1-bc09-0049976d001b should have 2 interfaces. The missing one, this time, is the connectX-5 interface

Basically, all 4 of the networks have one cx5 iface on a common router node and one cx6-sriov-vf on a client node. In this case the cx5 on net2 is missing.

Checking other services shows that they have 2 interfaces each. Also looking at the slice it correctly has two interfaces on each service. Screen Shot 2021-11-22 at 4 28 50 PM

ibaldin commented 2 years ago

In addition it is likely that interfaces property (interface_list) methods of Node, CompositeNode need to be deprecated. Returning a dict based on interface name results in frequent unintended collisions of interface names - it is better to return a list.

ibaldin commented 2 years ago

Unique port names are dealt with in #110 by naming interfaces after node- and not its network service.