This is a simple dataset, even though it isn't linearly separable. A Multilayer perceptron is able to correctly classify this dataset.
The minimal architecture necessary to correctly classify this dataset requires 2 neurons for the input layer, 3 neurons in the hidden layer and 1 neuron in the output.
The three neurons in the hidden layer will learn to disentangle the data and disperse them in a 3-dimenional space such that they will become linearly separable in this new space.
You can evaluate how the learning varies depending on the activation function you use, especially for the hidden layer. Try to compare for example sigmoid, ReLu and tanh activation functions.
Here there's a fantastic explanation of what happens in the hidden layer when learning to classify this exact same dataset.