- heavy connection setup/shutdown scheme of TCP is a disadvantage in a dynamic environment. The minimum number of packets exchanged for even the shortest TCP transaction is nine, while with TIPC this can be reduced to two, or even to one if connectionless mode is used
- The connection-oriented nature of TCP makes it impossible to support true multicast
TIPC Important design assumptions
- most messages cross only one direct hop
- security is a less crucial issue in closed clusters
TIPC Advantage
- fast link failure detection
--> Link setup - A TIPC node periodically broadcasts Link Request messages on all configured media interfaces. If such a message is received by a node with no prior established link to the sending node, it replies with a unicast Link Response message. This establishes a Link between those two nodes.
--> Link continuity check - A background timer is maintained for each link. When a certain amount of time is passed without regular incoming traffic, a message is sent over the link to indicate to the counterpart that the link is still up. This message also contains an acknowledge for the last received Link Level Sequence Number, in order to allow the receiver to release sent packet buffers, and a Last Sent Sequence Number, allowing the receiver to detect gaps in the packet sequence. The continuity check mechanism allows rapid detection of communication media failure, or node crashes.
- reliable multicast service
- full address transparency over the whole cluster
--> A TIPC address is written in the form <zone.cluster.node>, i.e. the address <1.2.3> identifies node number 3 inside cluster 2 in zone 1
--> The TIPC stack uses a functional addressing (port names) scheme. Port names are unique and valid among the whole cluster, an application may connect to this "port name"
- for both connectionless and -oriented message flows, packet or byte-stream order is maintained from the receiving application's point of view.
- fixed-size sliding window protocol
--> flow control - congestion control - is performed only for connection oriented connection
UDP - Connectionless, Unreliable, Not ordered, No congestion control
TIPC - Connectionless, reliable, ordered, No congestion control
TIPC - Connection-oriented, reliable, ordered, congestion control
Fragmentation/Defragmentation
Congestion Control
Sequence/Retransmission Control
struct sockaddr_tipc {
unsigned short family;
unsigned char addrtype;
signed char scope;
union {
struct tipc_portid id;
struct tipc_name_seq nameseq;
struct {
struct tipc_name name;
__u32 domain;
} name;
} addr;
};
struct tipc_name {
__u32 type;
__u32 instance;
};
/* Build socket address */
addr.family = AF_TIPC;
addr.addrtype = TIPC_ADDR_NAME;
addr.addr.name.name.type = IPC_TIPC_ADDR_TYPE;
addr.addr.name.name.instance = svcIndex;
addr.addr.name.domain = 0;
addr.scope = TIPC_ZONE_SCOPE;
Reference:
http://en.wikipedia.org/wiki/TIPC
FlorianWestphalTIPCAusarbeitung.pdf
http://www.strlen.de/tipc/
http://tipc.sourceforge.net/doc/draft-spec-tipc-07.html
http://ealnet2010a.wordpress.com/2011/02/11/tcp-vs-udp/
http://tipc.sourceforge.net/doc/Programmers_Guide.txt