I notice your example has various additional parts that indicate what you probably think is useful in an implementation (and you are probably right). If I was stuck at this point, perhaps shrinking it all down to the simplest possible interpretation (then building back up) would get me un-stuck.
Here's a minimal Scala implementation that reflects just the TLA+ and nothing more. Keep in mind I coded this in my e-mail client.
type NodeId = Int // to mark where I'm translating x \in Node
// [msg |-> [snd \in Node |-> 0], ack |-> 0
case class NodeState(
msg: Map[NodeId, Int], // [snd \in Node |-> 0]
ack: Int) // ack |-> 0
// [n \in Node |-> ...]
type Network = Map[NodeId, NodeState]
... of course, the glaring problem is that this has nothing to do with an actual network, but starting from something super simplified like this and adding / replacing (a lot of) details might get you there.
-Finn