Abstractions for Software-defined Networks