对应关系
如图
Mapping- 所有进入opensips的信令,一般为INVITE,REGISTER, MESSAGE, OPTIONS 等,都是图示中1和2.这一部分称之为Request Route
- 当在Request Route中调用t_relay时,会触发Branch Route。 顾名思义,它是一个分支;Opensips在转发消息时,它可以同时发送多条腿,那么每一条腿就是一个Branch。
- 每一个Branch Route的回复消息,就是Reply Route。如图中的5,回复INVITE消息的180 Ringing;以及11,404 Not Found.
- 回复消息中所有异常消息(4xx-6xx),都时Failure Route
- 消息17,ACK发来的时候,dialog已经建立,此时的to header是有tag的。 它也是Request Route,但是是带有to tag的。所以会走到has_totag()分支逻辑中。
stateless and stateful routing 有状态和无状态路由
区别
- stateful
顾名思义,Opensips会在内存中记录routing中的request和对应的reply,同时会保持transaction过程中的变量信息。
同时,会有如下能力:
- Retransmission detection(重复消息检测)
- Performing retransmissions(有效重发机制)
- Timeout(transaction timeout检测)
- Parallel and serial forking(并行/串行分发)
- stateless
Opensips不做任何记录,只做功能上的routing,也不会触发Branch Route, Reply Route, Failure Route
stateless routing由Opensips的Stateless Module(SL)提供,而stateful routing由Transaction Module(TM)提供
routing method
网友评论