DS2: Data Space | Data Share Digiotouch

DS2 · MCL module demo · Scenario 1

Streaming data under an Eclipse Dataspace Connector (EDC) contract

pX publishes a live sensor data stream as an EDC asset, and pY's EDC requests pX's catalog over the Dataspace Protocol (DSP) and negotiates a contract agreement for it. Under that agreement pY starts a PUSH transfer (powered by Kafka), which it can suspend, resume and terminate without losing any record emitted while the transfer is suspended.

Provider

pX
Publishes the sensor data stream
→

DS2 MCL module

Stream data plane
Custom data plane; forwards records while the transfer is active
→

Consumer

pY
Receives the records

How the contract controls the stream. The stream data plane is a custom data plane built for the MCL module; it is not an EDC data plane. It forwards records from pX's source topic to pY's sink topic only while a transfer process is active. pX's control plane starts a transfer process only for a request that references a valid contract agreement between pX and pY. Suspend, resume and terminate requests travel from pY's control plane to pX's control plane over DSP, and pX's control plane then signals the data plane. On suspend, the data plane stops consuming from the source topic and retains its committed Kafka offset, so a resume continues from the next unread record. The contract policy in this demo is open (always-true): any participant can obtain an agreement, but no record is transferred without one. Both participants use the same Redpanda (Kafka-compatible) broker on this host, so access is enforced by the contract and the data plane, not by network isolation.

1

Negotiate a contract and start the stream

2

Records arriving at pY

Emitted
–
by pX's source
Received
–
on pY's sink
Records / s
–
arriving now
Gaps
–
missing since this transfer's first record

Idle: nothing is being transferred.

waiting for records…
source: ? data plane: ? sink topic: ?
3

Suspend, resume, terminate

These buttons call pY's EDC Management API to suspend, resume or terminate the transfer process. After a suspend, Emitted keeps rising and Received stops, because the data plane has stopped consuming from the source topic. After the resume, the records emitted in between are delivered in order and Gaps stays at 0. Terminate ends the transfer process permanently; it cannot be resumed.

no transfer
4

Ask for the stream without a contract

pY submits a transfer request for the same asset with a contract agreement ID that was never negotiated. pY's control plane finds no such agreement and rejects the request with HTTP 400, so nothing is sent to pX and the data plane does not start. A forged request sent directly to pX over DSP is rejected by pX's control plane in the same way.