在epc中,e-node-b和mme之间的s1接口的传输层是使用的是sctp协议。这里就谈谈为什么选择sctp。我们先解释下为什么不用另外两个老朋友:UDP,TCP。
1)不用udp的原因:UDP没有任何质量保证的,会乱序和丢包。对于控制信令来说是不能接受的。丢了一个消息可能导致整个设备的状态错了,会带来无数意想不到的问题。为了保证消息的正确性。就必须在应用层增加保证机制,例如序列号,重传等等。这样增加了协议的复杂性,也增加了实现的复杂性。
2)不用TCP的原因:
1)TCP传输的单位是数据流。它没有开头和结尾的标志。而信令是一个个有长度的消息。如果要用TCP传递消息,就必须添加消息的结束开始标志。这个无疑增加了实现的难度
2)TCP的数据是保序的,如果前面的包丢了,后面的包即使收到了,也不能发给上层应用。必须等丢的包重传后,后面的包才能给上层应用。而服务器之间传递的一般是不同用户的消息。不同用户之间没有什么关联。不能够因为A用户的消息堵塞了,就影响b用户。解决的方案是为每个用户建立一个TCP的连接。可是这样就消耗比较多的资源。例如一个MME可能同时连接几十万个用户,几十万个TCP连接的开销是十分巨大的。
下面说下sctp的特点