Principles and lessons in packet communications

After nearly a decade of experience, we reflect on the principles and lessons which have emerged in the field of packet communications. We begin by identifying the need for efficient resource sharing and review the original and recurring difficulties we had in achieving this goal in packet networks. We then discuss various lessons learned in the areas of: deadlocks; degradations; distributed control; broadcost channels; and hierarchical design. The principles which we discuss have to do with: the efficiency of Large system; the switching computer; network constraints; distributed control; flow control; stale protocols; and designers not yet experienced in packet communications. Throughout the paper, we identify various open issues which remain to be solved in packet communications.