MM1 Router v4.0 High Level Design Document version: 1.1 Document date: July, 2007 Company Confidential Released
http://www.airwidesolutions.com/
airwide solutions Montreal
airwide solutions UK
1111 St-Charles Street West 8th floor, East Tower Longueuil, Quebec J4K 5G4 Canada
New Century Place 20 – 22 Queens Road Reading, Berkshire RG1 4AU United Kingdom
phone: +1 450 646 7700 toll free: +1 800 524 8792 fax: +1 450 646 7004
phone: +44 118 963 7272 fax: +44 118 964 2369
airwide solutions Ottawa
airwide solutions Australia
515 Legget Drive Suite 700 Kanata, Ontario K2K 3G4 Canada
Level 2, 173 Pacific Highway North Sydney, NSW 2060 Australia
phone: +1 613 270 0364 fax: +1 613 270 0497
phone: +61 2 99 29 41 11 fax: +61 2 99 29 41 99
Every reasonable effort has been made to ensure the information and procedures detailed in this guide are complete and accurate at the time of printing. However, information contained in this guide is subject to change without notice. © Copyright of airwide solutions 2006. All rights reserved. The copyright in this work is vested in airwide solutions and the information contained herein is confidential. This work (either in whole or in part) must not be modified, reproduced, disclosed or disseminated to others or used for purposes other than that for which it is supplied, without the prior written permission of airwide solutions. If this work (or any part of it) is provided to a party ("Other Party") under a contract between airwide solutions and the Other Party, then the use of the work by the Other Party shall be governed by the provisions of the contract.
Document history Issue
Date
Changes since last issue
Owner
1.0
January, 2006
Creation of HLD in new doc format
Ken Kim
1.1
July, 2007
Update for v4.0
David Jee
Changes since last issue
Document control Owner: Approved by:
David Jee
Title:
Software Designer
Tracee Smith
Title:
R&D Manager
Signature:
Date:
Review record ref.:
Distribution:
File pathname Last printed:
airwide solutions Error: Reference source not found
26298521.doc December 10, 2009
Error: Reference source not foundDocument version: 1.1Error: Reference source not found
3
MM1 Router v4.0
High Level Design
Contents Document history.......................................................................................................................................3 Contents....................................................................................................................................................4 1 Introduction..............................................................................................................................................5 1.1 Document goal................................................................................................................................5 1.2 Intended audience...........................................................................................................................5 1.3 References......................................................................................................................................5 2 High level view.........................................................................................................................................6 2.1 Main routing logic............................................................................................................................6 2.2 Optional routing logic.......................................................................................................................6 2.3 MM1 router search order.................................................................................................................8 2.4 Regular expressions........................................................................................................................9 2.5 Routing matrix.................................................................................................................................9 2.6 Log file rotation................................................................................................................................9 2.7 Information about the instanceId...................................................................................................10 2.8 Automatically generate the OAMP Agent configuration entries.....................................................10 3 Key items from the main configuration file (proxy.cfg)...........................................................................11 4 Routing configuration.............................................................................................................................12 4.1 Example........................................................................................................................................12
airwide solutions
4
1
Introduction airwide solutions was founded on July 26, 2004 following the acquisition of Schlumberger Messaging Solutions (MSG) by Taral Networks. The company provides innovative messaging and content delivery management solutions to over 75 wireless operators, content providers and aggregators around the world. Core products include SMSC, MMSC, MMS push and router gateways, Value-added services (VAS) management and Intelligent networking applications. airwide solutions helps customers worldwide to grow a dynamic and highly profitable messaging business by providing flexible and innovative wireless content delivery and messaging solutions.
1.1
Document goal The intent of this document is to explain at a high level, the design of the MM1 Proxy Agent.
1.2
Intended audience Internal airwide solutions staff (such as Operations, Delivery and Test Teams).
1.3
References The following documentation and links can help the reader understand this document: [1]
MM1 Router Configuration Guide, v4.3, Ken Kim, January 2006
[2]
MM1 Router Packaging and Installation Guide, January 2006
[3]
The Dummies Guide to Configuring the MM1 Router for Telstra, Ken Kim, August 2006
airwide solutions
5
2
High level view The role of MM1Proxy (also know as MM1Router or MMR) is to route mm1 message PDU from the handset to the appropriate MMSC. The main routing is base on the x-mms-transactionId and routing on the GET url.
2.1
Main routing logic The following three steps are always done: 1. GET url routing Routes defined in “geturlRoute.cfg” 2. X-mms-transactionId routing Route defined in “transactionIdRoute.cfg” 3. If all else fails, a Default route Route to server defined in “proxy.cfg” as “DEFAULT”
2.2
Optional routing logic Optionally, based on configuration flags, mm1proxy can also route base on: 1. HTTP header routing Based on the defined HTTP header name(“headerKey”), and routes defined in “headerRoute.cfg” 2. MM1 Message Type routing routes defined in “messageTypeRoute.cfg” 3. Sender Domain Routing, routes defined in “senderDomainRouting.cfg 4. Destination Routing, routes defined in “recipientRoute.cfg 5. MM7 Message ID routing, routes defined in “proxy.cfg MM7ROUTER=false oddMsgIdHost=1.2.3.4 evenMsgIdHost=2.2.3.4 6. The following filters is only done on the sender address a. ENUM b. Blacklist (MSISDN filtering) c. Domain filtering When “enableHeaderRouting” and “enableMessageTypeRouting” are enabled, and a Destination Filter is used, the following represents the precedence of the routing logic:
airwide solutions
6
1. HTTP header routing 2. Sender Domain 3. GET url routing 4. Destination (msisdn or shortcode) routing 5. MM1 Message Type routing 6. X-mms-transactionId routing 7. Default route Once a route type has been determined, the actual routing is then decided by a Regular Expression match being performed on the appropriate field.
airwide solutions
7
2.3
MM1 router search order Figure 1.
Flow chart showing the search order
Header Search
NO
GET URL Search
NO
Destination Filter
NO
MessageType Search
NO
YES
Default port =0
NO
Route
Default port =0
NO
Route
Default port =0
NO
Route
Default port =0
NO
Route
Default port =0
NO
Route
YES
YES
YES
YES
YES
YES
YES
X-mmstransactionID Search
YES
NO
YES
DEFAULT Route
airwide solutions
8
2.4
Regular expressions The regular expression syntax is based on the “Basic Regular Expression” from Sun. It is NOT the extended regular expression. For example: BASIC- will match [a-zA-Z0-9][a-zA-Z0-9]*/[a-zA-Z0-9] [a-zA-Z0-9]*/[a-zA-Z0-9] [a-zA-Z0-9]* EXTENDED - will not match [a-zA-Z0-9]+/[a-zA-Z0-9]+/[a-zA-Z0-9]+ For more details on the difference on Basic versus Extended, please visit: http://www.grymoire.com/Unix/Regular.html
2.5
Routing matrix Table 1.
Routing matrix
Routing Use Case/Configurat
2.6
POST with HEADER MSISDN= Log file rotationwith HEADER MSISDN= POST POST with HEADER MSISDN= POST with HEADER MSISDN= The log files are rotated base on AccessRotationInterval in configuration.
The timestamp based on seconds from epoch will be appended to the log file names specified in proxy.cfg. Archiving of these log files are the responsibility of the operator.
airwide solutions
9
2.7
Information about the instanceId. The instanceId that is defined in the routing configuration is used for OAMP Managed Object initialization. This value MUST be globally unique for each route, spanning across all mm1proxy configuration files. With this in mind, instanceId number ranges have been reserved for each routing method.
HTTP Header Method headerRoute.cfg: 300399
Sender Domain senderDomainRouting.cfg: 600-->699
GET Method getUrlRoute.cfg: 100199
Destination Method recipientRoute.cfg: 500599
Message Type Method messageTypeRoute.cfg: 400499
X-mms-transactionId Method transactionIdRoute.cfg: 200299
These are general guidelines. The ranges can be customized to any other type, as long as the instanceId is unique for each route. 2.8
Automatically generate the OAMP Agent configuration entries Once you have configured all of your route entries, execute generateOampConfig.sh >> /path/to/oampSystem.cfg This will append the corresponding oamp configuration for the mm1proxy, needed by the OAMP Agent.
airwide solutions
10
3
Key items from the main configuration file (proxy.cfg)
ServerHostPort = 0.0.0.0:8080 ManagementHostPort = 0.0.0.0:8889 #################################### # Routing config file #################################### #Emergency default server #################################### DEFAULT = 0.0.0.0:6187 RoutingConfigFile GETRoutingConfigFile
= ./transactionIdRoute.cfg = ./getUrlRoute.cfg
#Enabling header routing is mutual exclusive. Packets will not be inspected. #Performance will be reduced due to copying of data, required in parsing headers enableHeaderRouting = false headerKey = host headerRoutingFile = ./headerRoute.cfg enableMessageTypeRouting = false MessageTypeRoutingFile = ./messageTypeRoute.cfg
airwide solutions
11
4
Routing configuration Each routing method has a configuration in the following format: 1st) Define the default server for each Method Type. This default route’s regexMatch needs to match, otherwise the message will be routed to the emergency DEFAULT route defined in proxy.cfg Define: host= port= regexMatch= instanceId= 2nd) Define the list of servers by editing “server_list”, add a unique key name representing each server, separated by a space. 3rd) For each unique key defined in “server_list”, specify its appropriate host, port, regexMatch and instanceId values, in the following format: .host .port .regexMatch .instanceId
4.1
Example #################################### #Regular default server #################################### host=10.0.1.14 port=6187 regexMatch=[a-zA-Z0-9]* ##IMPORTANT instanceID must be globally unique instanceId=200 #################################### #MMSC server routing List #################################### server_list = AIRNGINE MMSC1 MMSC2 AIRNGINE.host = 10.0.1.206 AIRNGINE.port = 30139 AIRNGINE.regexMatch = ^[a-zA-Z0-9][a-zA-Z0-9]*/[a-zA-Z0-9][a-zA-Z09]*/[a-zA-Z0-9][a-zA-Z0-9]* AIRNGINE.instanceId=201 MMSC1.host = 10.0.1.1 MMSC1.port = 8080 MMSC1.regexMatch = ^REPLACEME1* MMSC1.instanceId=202 MMSC2.host = 10.0.1.2 MMSC2.port = 8090
airwide solutions
12
MMSC2.regexMatch = ^REPLACEME2* MMSC2.instanceId=203
airwide solutions
13