Interfacing with SDP in AA0.5

In this document, we aim at describing how, in AA0.5, the P4 switch will:

  • be connected to SDP;

  • provide ARP requests to SDP;

  • interpret ARP answers from SDP;

  • be connected to the 6 Alveo;

  • route SPEAD traffic to SDP;

  • be configured to perform SPEAD/SDP routing.

Overall we are interested in describing the operation of the P4 switch in the scenario depicted below.

SPEAD header

Hardware

In this configuration the P4 switch is using 7 of the 100G ports as follows:

  • 6 ports connected to the Alveo server using 100G DAC cables

  • 1 physical ports connected to SDP using 100G QSFP LR.

In addition, the P4 switch is using 2 10G ports, one for the Management&Control and one for connection to the PTP switch.

Using ARP to help SDP topology

For the downstream integration with SDP, Low.CBF needs to before sending any data to discover the MAC address associated to a given SDP node as shown in the diagram below from ECP-210085 - CBF, PSS, PST to obtain the destination MAC address using ARP.

SPEAD header

As a result, we foresee that the ARP integration for communication to SDP could be achieved as follows:

  • Low CBF receives Correlator configuration alongside destination IP addresses for the various outputs (from TM subarray LMC via CSP&CBF subarray LMC)

  • Low.CBF allocator configures Alveos and P4 switch accordingly

  • P4 switch configuration consists in routing port and/or destination IP address that match the various configuration. In more details:
    • Configuration is done via Tango which in turn configures the SKA connector

    • SKA connector would:
      • If Intermediate switch, just apply configuration as it knows destination port (i.e. I/O switch)

      • If I/O switch, the procedure would be as follows:
        • Connector passes IP address to an internal ARP resolver thread

        • Thread sends ARP queries via local Linux interface connected to port 33/2 on the switch (and listen on the same interface for responses)

        • These queries are broadcasted to all downstream ports to SDP

        • P4 switch should receive response on a single port (MAC address green arrow in the diagram above) and as a result it will generate a packet containing <IP@, Mac@, received_port> information to port 65/0

        • Using this information SKA connector configures P4 table associated to this configuration

        • Switch would modify packets on the fly to have correct addresses during sending of the visibility data

        • In the background ARP resolver would continue to send query to mitigate potential reconfiguration downstream and help SDP maintaining their topology

        • If changes are detected the SKA connector will re-configure table automatically

  • Association table <IP@, Mac@, port> would be accessible via Connector Tango Davice at anytime

In regards to the data stream going to PSS and PST, it is assumed at the moment that the integration via ARP would follow a similar procedure as for SDP.

Tango integration

This interaction through the tango device is realised through 2 methods and 1 attribute:

  • AddPortsToSDPARP, which add a list of physical ports to the ARP resolution process. The argument

for this method is a json string of the form:

'{"SDP": [{"port": "10/0"}]}'
  • AddIPToResolve, which add a list of IP address to resolve. This method take a json

string of the following form as an argument:

'{"IP": [{"address": "192.168.1.1"}]}'
  • arp_replies attrribute returns a json string maching IP Addresses to both

MAC address and P4 port number

LFAA routing for SDP

Outgoing traffic

In the context of AA0.5, Low CBF correlator will generate 0.2Gbps of raw data. Computation for the various data rate can be found here. This raw data is encapsulated in SPEAD packet.

P4 routing

Prior to generate traffic, Low CBF would have received a list of IP addresses and UDP port numbers for the visibility traffic. In this context, the programmable switch just needs to perform 2 actions upon reception of SPEAD-SDP traffic:

  • IP forwarding based on destination IP address

  • MAC address substitution based on the ARP resolution mentioned above.

Tango methods

  • AddSDPIPEntry: adding an IP forwarding table entry sending all packets from IP address i to Port p

'{"sdp_ip": [{"src": {"ip": "192.168.1.1" }, "dst": {"port": "12/0"}}]}'
  • RemoveSDPIPEntry: removing an IP forwarding table entry

'{"sdp_ip": [{"src": {"ip": "192.168.1.1" }}]}'
  • UpdateSDPIPEntry: updating an IP forwarding table entry sending all packets from IP address i to Port p

'{"sdp_ip": [{"src": {"ip": "192.168.1.1" }, "dst": {"port": "12/0"}}]}'
  • ClearSDPIPTable: emptying the IP forwarding table

  • sdpIpRoutingTable: return the current instance of the IP forwarding table from the switch

  • AddSDPMACEntry: adding an Change Mac Address table entry changing the destination MAC address of all packets with

IP address i to MAC address m

'{"sdp_mac": [{"src": {"ip": "192.168.1.1" }, "dst": {"mac": "aa:bb:cc:dd:ee:ff"}}]}'
  • RemoveSDPMACEntry: removing an Change Mac Address table entry

'{"sdp_ip": [{"src": {"ip": "192.168.1.1" }}]}'
  • UpdateSDPMACEntry: updating an Change Mac Address table entry changing the destination MAC address of all packets with

IP address i to MAC address m

'{"sdp_mac": [{"src": {"ip": "192.168.1.1" }, "dst": {"mac": "aa:bb:cc:dd:ee:ff"}}]}'
  • ClearSDPMACTable: emptying the an Change Mac Address table

  • sdpMacRoutingTable: return the current instance of the Change Mac Address table from the switch