官术网_书友最值得收藏!

Stateful Operation

Stateful Operation

This is a simplified description of the stateful operation. You will find a complete and more detailed description in the RFC3261 text. There is a close resemblance between the openser.cfg sections and the figure above. However some processes are manual, such as to check the Max-forwards header, while others are encapsulated in a single command. To illustrate, when you call t_relay() all the forward request processing as described is done automatically.

When operating in stateful mode, a proxy is simply a SIP transaction processor and all these processing steps are required:

  • Validate the request
  • Pre-process the routing information
  • Determine the request's target
  • Forward the request to the target
  • Process all responses

A stateful proxy creates a new server transaction for each new request received. Any retransmissions of the request will then be handled by that server transaction.

Example: For each request traversing our SIP proxy we will:

Step 1: Request validation

  • Check the message size to avoid buffer overflows.
  • Check the Max-forwards header to detect loops.

Step 2: Routing information pre-processing

  • If there is a record-route header, process it.

Step 3: Determine the request target

  • Is it in the location database (registered users)?
  • Is there a route to the destination (gateway destinations)?
  • Is it directed to an external domain (external addresses)?

Step 4: Request forwarding

  • Call the function t_relay() and OpenSER will do all the job for you statefully.

Step 5: Response processing

  • Usually this is done automatically by OpenSER. Sometimes you can use the onreply_route[] section to handle some response. Example: in a "call forward on busy" scenario, we could use the response 486 (Busy) to direct the call to a voicemail server.
主站蜘蛛池模板: 永新县| 吉林市| 绵竹市| 根河市| 阳城县| 朔州市| 房产| 读书| 聂荣县| 海兴县| 湖南省| 滁州市| 沽源县| 兴安盟| 津南区| 海宁市| 墨脱县| 乃东县| 康定县| 格尔木市| 贡觉县| 田东县| 东乌珠穆沁旗| 永州市| 天峻县| 洮南市| 尼木县| 邯郸县| 鄂温| 扎囊县| 桃园县| 抚远县| 济源市| 辉南县| 土默特右旗| 新昌县| 池州市| 儋州市| 定南县| 吴忠市| 句容市|