“To make money,” you will say. That was, however, not our motivation.
We all have been working on Diameter for several years in different roles and therefore we are regularly involved in discussions about Diameter specification questions, or questions about system design and implementation. Often, we go through the same discussions again and again – just with different people.
There was, however, no book to recommend to our co‐workers and friends. While we were attending the IETF #86 meeting in Orlando, we sat together outside the conference venue and talked about how to address the common questions we receive. The idea to write a book was born. We reached out to Sébastien, who maintains the freeDiameter
implementation, and asked him if he would be willing to help us by creating freeDiameter
examples since we prefer hands‐on examples in our technical books.
Since two of us had worked with Wiley before on other book projects, we reached out to Wiley again to socialize our idea. To keep it short, you are now holding a Diameter book in your hands.
We hope you enjoy our approach in making you a Diameter expert. We have set up a dedicated website with additional material for this book. If you have questions or feedback, please send us an email at ([email protected]) or visit our webpage at https://diameter‐book.info.
This book provides the necessary material to understand Diameter, Diameter applications, and the interactions many applications have with the backend infrastructure.
This book provides a coherent picture of Diameter without regurgitating the specifications. It provides information necessary to understand Diameter. To provide you with a hands‐on experience and to make your reading experience more interesting, we make use of an open source implementation of the Diameter protocol, called freeDiameter
, to
freeDiameter
.It is not our goal to cover everything found in the Diameter specifications. We will, however, provide you with the necessary pointers for further reading.
This book assumes only basic familiarity with how Internet protocols work, such as the concept of IP addresses, the layered protocol stack, and the functions of the layers (particularly the “network layer”, the “transport layer”, and the “application layer”).
We use freeDiameter
for examples and to illustrate test setups. A basic understanding of Unix is required in order to set up the freeDiameter
environment and to execute the protocol runs. An understanding of TCP/IP will make the examples easier to follow. Readers may skip the examples, but we do recommend engineers use the hands‐on experience to gain a deeper understanding of the protocol.
While a technical background or interest in technical matters is a plus, familiarity with the standardization work in the IETF or 3GPP is not required to understand this book.
We believe the following groups will benefit:
Chapter 1 discusses the motivation for using Diameter, briefly talks about the predecessor to Diameter, RADIUS, and introduces the open source Diameter implementation, freeDiameter
.
Chapter 2 describes Diameter via its building blocks. These building blocks are then used to illustrate the basic peer‐to‐peer communication between neighboring Diameter nodes in Chapter 3.
Chapter 4 extends Diameter communication from two nodes to an arbitrary number of nodes.
Following the chapters covering communication between Diameter nodes, Chapter 5 introduces security functionality. Diameter security is today mainly implemented and deployed at the level of peer‐to‐peer communication.
Chapter 6 describes selected Diameter applications in more detail. We have chosen applications that are deployed today and illustrate the flexibility and capabilities of Diameter well.
Chapter 7 is an advanced chapter that teaches you how to develop your own Diameter extensions, for example by defining new attribute–value pairs (AVPs), new commands, or even completely new Diameter applications.
We have added freeDiameter
examples throughout the book as far as applicable. Not every standardized functionality is already available in freeDiameter
.