How to connect a SCTP single-homed node with SCTP multi-homed one?

Typical and most robust way of configuring connectivity over SCTP (e.g. Diameter or Camel links) is to use two independent IP links (VLANs), bind them on SCTP level and let the protocol do the magic.

So the setup looks more or less like that:

Strangely enough, in one of my installations, I had to connect:

  • a single-homed node (“Node A”) with – this node is represented by a single IP address. Obviously, it has redundant network interfaces but logically, it’s just on IP
  • a multi-homed node (“Node B”) with classical setup – two interfaces (ports), two IP addresses

Im not going to convince you that this is a good solution. There are better ☺️ But in the given situation, I have had no other choice.

Communication in direction A -> B is easy – the A has both IP3 and IP4 set in the configuration, SCTP INIT is sent to one of the two. In response, INIT ACK contains both IPs of the B.

But here small troubles start: how this poor Node B knows over which port the packet should be sent? Classical routing configuration does not help as Node A is just one port but the B has two possible paths?

Answer is source-based routing. In Linux machine, it’s possible to set up IP routing not only based on the destination but also based on the source address.

Let’s assume that Node B has following interfaces:

Configure Routing Rules

Create rules to forward all the package entering via a particular NIC to go out the appropriate routing table. Tree routing tables table1 Sig-A, table 2 for Sig-B and default (table 254).

Example

Configure Routing File

Create one route-file for each signalling interface, including which routing table to use for different destination addresses.

Node A source-routing in table 1 (Sig A) and table 2 (Sig B).

Node A destination-routing in global routing table (254) with metric for Sig B.

Example:

 

Verify routing

To show different routing tables

Example:

 

To verify source-routing entery

ip route get [Destination-IP] from [SourceInterface-IP]

ip route get [Destination-IP] = global routing entery

 

Example:

To verify routing trace from a specific source interface

traceroute –s [SourceInterface-IP] [Destination-IP] traceroute [Destination-IP] = global routing trace

Example:

That’s it!

Many thanks to Ola for sorting this out and preparing this procedure.

 

How to connect a SCTP single-homed node with SCTP multi-homed one?
Tagged on:

Leave a Reply

Your email address will not be published. Required fields are marked *