How to create my own topology using the boilder-plate code in the NGSDN Tutorial?

Hi all.

This question is in the context of the NGSDN Tutorial.

I want to collect data about Round Trip Time for several Toplogies for a project I am pursuing. However, I need help modifying the given topologies. Example Topologies that I wish to create are, for example, host-switch-switch-host, host-switch-switch-switch-switch-host, and so on.

I tried creating the host-switch-switch-host topology by modifying the current topology, where the leftmost host is h2, the rightmost host is h3, the leftmost switch is leaf1, and the rightmost switch is leaf2. To do so, I modified the topo_v6.py and netcfg.json files. However, when I try to run the above, each time, one single entry fails to be entered into the tables of leaves 1 and 2, and the following error is shown in the log file:

Unable to INSERT table entry on device:leaf2: OTHER_ERROR UNKNOWN Error when adding match entry to target (:2) [PiTableEntry{tableId=IngressPipeImpl.routing_v6_table, matchKey={hdr.ipv6.dst_addr=0x20010001000100000000000000000000/64}, tableAction=ACT_PROF_GROUP:-331677696, priority=N/A, timeout=PERMANENT}]

A similar message also appears from leaf one and shows up as PENDING_ADD in the individual log of the switch(for both leaf1 and leaf2, which are our switches 1 and 2).

As you can see, the message type is OTHER_ERROR UNKNOWN Error, which is not helping in debugging either.

A proper set of guidelines about which files have to modify, and how they have to be changed to create any custom topology of my own would be appreciated. I am on a strict deadline, and I would appreciate any help.

I apologize if this issue seems lengthy. It would be great if someone could help me.

Thank you

Hi @xbdhshshs

The errors that you get and the PENDING ADD status means significano che stai mandando flow rules mean that you are sending flow rules that are not compatible with the data plane (pipeline p4 that you have installed). I don’t remember the detail of NGSDN Tutorial but you should pay attention to consistency among the p4 pipeline that you have and the flow rules that you send.

Best
Davide

1 Like

Hi @DavideS, thank you for your reply.

I tried my best to ensure that I was not breaking anything while changing the existing topology. To elaborate, I removed two links and 2 switches(which were labeled as spines) from the existing topologies. Additionally, I merely added one link between the remaining two switches. I don’t see in what manner this is incorrect, and it would be really helpful if you could provide me with some insights into what I might be doing incorrectly.

Thank you

Hi @xbdhshshs,

are you shure that all the switches are you sure that all switches are connected properly with the controller? have you tried to enter flow rules by hand via the ONOS REST api?

1 Like

Hi @DavideS. I think the switches are connected fine. The NGSDN tutorial provides four tests to check the topology’s connectivity and flow status, namely Routing, Packetio, Bridging, and srv6. Each of these tests is passing. Additionally, for each switch, the hosts connected to it in the same subnet are pinging perfectly. It’s just that packets are not getting transferred from one switch to another in the modified topology.

I haven’t tried ONOS REST API, which I will look into, but could you please elaborate on the exact purpose I will use it for?

Thank you

it’s just that packets are not getting transferred from one switch to another in the modified topology.

This means that you don’t have a flow rules that handle that kind of forwarding, in one or both the switches. Whith the ONOS REST API you can push those kind of flow rules by hand so you can achieve this kind of forwarding but you have to undestand which is the table that has the action to forward traffic and write che flow rule according to the “naming defined” in P4

1 Like

The name of the table is clearly visible here. I will certainly try this out.
Thank you very much.