浅谈LTE--为什么EPC选择了sctp?

在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的特点

1)以消息为单位。上层用起来跟方便
2)保序,不丢包,防止拥塞。这个也是tcp的优点。
3)可以在一个连接中建很多子流,彼此之间不影响。消耗的资源比较少。
4)多宿主。一个链路断了,可以走另外一路。这个是电信核心网的要求之一。
5)不容易被dos攻击。

当然sctp的问题也不少。
1)就是太复杂,tcp和udp很容易就学会。sctp中的概念实在太多,而这方面的资料也很少。不容易学。
2)支持太少。没有什么库。

你可能感兴趣的:(通讯)