Friday, June 29, 2007

IMS Service Routing: Big Picture



This post is the first in a series that will describe how the routing of SIP service-related requests is performed in the IMS.

Before going into the details of service profiles, initial filter criteria and the ISC (IMS Service Control) interface, I will start with an attempt at placing IMS service routing in the larger context of end-to-end SIP routing within IMS.

I think this is something missing in most representations of the IMS service architecture, which tend to fragment the overall perception of this architecture, and make it more difficult to comprehend for the novice.

The figure you can see at the top (click to enlarge) shows the end-to-end interaction between two IMS users. However, there exist variants related to which entity initiates the SIP interaction (IMS client or IMS AS), which entity terminates the SIP interaction (IMS client or IMS AS), and whether the end-to-end SIP interaction fully takes place between IMS entities or involves entities in an external network like the circuit-switched network or the Internet. I will address these variants below using specific colors.

Before describing what IMS SIP routing permits to achieve, let's start with one of its apparent limitations compared with how SIP can be used in a non-IMS network.

Restriction to IETF SIP Routing

The routing of a SIP request to its destination is based on the resolution of the request-uri address (IMPU or PSI in IMS) to one or several targets. However, before reaching its destination, the SIP request may traverse several servers, and the originator of the request may itself define in a specific Route header (part of) the path to be followed .

This may permit the client to decide the routing of the SIP request through a set of servers that will deliver added-value services.

This is not possible in the IMS. More precisely, whatever SIP route an IMS client may define in a SIP request it originates will be discarded by the IMS core network (the P-CSCF for that matter) and replaced by another route which ensures the phase 1 of IMS SIP routing described below.

Is this a limitation to the power of IMS, compared to what is possible in, say, the Internet? I don't think so.

I do not think that relying on a SIP client to determine a set of application servers supposed to add value to the end-to-end SIP interaction is a very pragmatic and agile approach to service delivery. The mechanism is limited by the knowledge and sophistication available in the SIP client, which may be put under pressure as soon as more than one application server needs to be inserted in the signalling route (which application servers? In which order?).

Then, you have to compare what is lost (the possibility for an IMS client to define a service route) with what is gained with the IMS architecture: service profile based routing.

The IMS routing of SIP requests based on service profiles (phases 2 and 5 below), is sophisticated, very agile and permits to keep IMS clients very simple, as they do not have to care about service-related routing. It also accurately reflects the business relationship between an IMS user paying an operator, and the operator providing value for money in return.

While some may look at the IMS architecture as a way to deprive users from their freedom to access the services they want to access (note anyway that the limitation is only in the route to access a destination, not the destination itself), others can see the same architecture as a way to simplify the life of users (and their devices) and to concentrate service-related complexity in the hands of those who are asking money for value.

Service Routing for Each Party (See Figure)

An important feature of the IMS service architecture, which is not apparent in figures taken from IMS specifications, is the fact that each party in a two-party or multiparty SIP interaction benefits from its own service routing, and therefore its own services.

As shown in the figure above, an end-to-end SIP interaction between John and Mary will first lead to the invocation of services associated to John (phase 2), and then to services associated to Mary (phase 5).

This feature is very natural for a telecommunications service architecture (it is similar to IN), but it is not to most of the non-IMS SIP implementations, more especially those supporting enterprise VoIP services. Typically, these non-IMS implementations will combine the execution of features that apply to all parties of a call. This difference is usually the most important one to overcome when porting a non-IMS application server on the IMS.

In the IMS architecture, a specific party in an end-to-end SIP interaction is either identified by an IMPU or a PSI. While the figure shows an example of IMPU to IMPU interaction, the following alternatives could also exist:
- IMPU to PSI: an IMS client or an AS-based application acting on behalf of a user interacts with an AS-based application identified by a PSI.
- PSI to IMPU: an AS-based application interacts with an IMS client.
- PSI to PSI: an AS-based application interacts with another AS-based application.

Here is a practical advice for when you define or analyze an IMS message flow: S-CSCFs do not hang just like that in the architecture; they always serve someone or something, and it certainly helps to make it explicit (see for instance the figures in this or the previous post).

Preliminary to the Description of End-To-End IMS Signalling

Here follows the decomposition of an end-to-end SIP interaction into 6 distinct phases.

But first a couple of things...

There is of course a pre-requisite: John is registered with IMS. This implies that his client discovered the P-CSCF it will be associated to (according to 3GPP or TISPAN procedures), and performed the IMS registration procedure leading to John's authentication, the association of an S-CSCF to him, and the setting up of a security association between its client and the P-CSCF.

The figure shows direct interfaces between different operators' networks. However, the GSM Association (GSMA) defined the possibility for 3rd party transit networks to be used in-between, in order to reduce the need for bilateral operator agreements.

Phase 1: routing of the SIP request to the S-CSCF serving the originating party

As described above, the P-CSCF removes any potential route defined by the IMS client and replaces it with a route to the S-CSCF serving the user in its home network. This route was defined during the IMS registration of the user, and may traverse an I-CSCF in case the home network wants to hide its network topology to the potential visited network (note that in practice a border gateway might be used instead).

Phase 2: service profile -based routing for originating user

The S-CSCF serving the originating party applies the service profile for the originating IMPU. This service profile consists of a list of initial filter criteria. It corresponds to the set of services the originating party is associated to. In practice, this means that the service route for the SIP request originated by John is defined by the operator and implemented by the S-CSCF.

In this phase, the S-CSCF may route the SIP request to 0, 1 or several application servers (one after the other in a signalling chain or pipe).

It is possible that one of the application servers terminates the SIP request (i.e. acts as a SIP User Agent). This may happen in three cases:
1) The request was addressed to a PSI hosted by the application server (e.g. user tries to access content)
2) The originating party issued a request addressed to itself, which was actually targeted at one of its services in the network. For instance, SIP requests that update the presence information of a user (PUBLISH for presence event package) are addressed to the user's own IMPU. Another example can be seen in the automatic service discovery and configuration example I described in an earlier post.
3) The application server terminates the request on behalf of the B-party. This may happen, for instance, with services that block traffic to unauthorized destinations. Another example could be the case where a service, potentially after having accessed the presence of the B-party, decides to transform an IMS instant message (SIP MESSAGE) into an email, an SMS, or an Internet IM. In this case, IMS SIP routing is terminated to be superseded by an alternative protocol outside of IMS.

Signalling path termination: the SIP interaction may terminate at phase 2 if one of the application servers decides to act as an endpoint for the SIP request.

IMS exit point: the SIP interaction may exit IMS at phase 2 if an application server serves as a gateway towards a different protocol/domain (e.g. email, SMS, MMS, Internet IM protocol). Note that phase 2 takes place before the IMS core network tries to route the SIP request based on the request-uri. This means that the request-uri might not be an IMS routable URI: it could be a URI specific to the protocol and/or domain to which the SIP request is actually targeted.

In case no application server terminates the SIP request, the S-CSCF proceeds with the next phase.

Phase 3: routing of the SIP request to the destination network
The S-CSCF routes the SIP request according to its request-uri.

In case the request-uri is a TEL URI, the S-CSCF may route the request to the circuit-switched network (see previous post - the request will be routed to the circuit-switched network when the TEL URI does not resolve into a SIP URI through ENUM).

Through DNS, the S-CSCF may also determine that the domain of the request-uri is resolved into a non-IMS network like the Internet.

IMS exit point: the SIP request is routed outside of IMS by the IMS core network if it is a TEL URI that does not resolve into a SIP URI, or if it is a SIP URI whose domain is outside of the IMS (e.g. in the Internet).

Side comment: to come back to the possibility for an IETF SIP client to define by itself a route towards application servers... If it is not possible for an IMS client to define such a route, it is possible for an IMS application server to do it on behalf of the client. This route could binclude application servers in the Internet and could be provided by the IMS client to the IMS AS through signalling or self-provisioning.

In case the B-party is an IMS user (same or different operator), DNS resolves the request-uri to an I-CSCF of the target operator, that acts as an entry point to its network. The request may traverse an I-CSCF of the originating network, in order to hide the network topology to the destination network (note that in practice a border gateway might be used instead).

Phase 4: routing of the SIP request to the S-CSCF serving the destination user

Either the B-party is registered with IMS or not.

If it is, the I-CSCF retrieves the location from the HSS and routes the request to the S-CSCF serving it.

If it is not, there is a procedure to dynamically allocate an S-CSCF to the B-party and to route the request to this S-CSCF. The rationale is that the B-party's IMS services in the network might need to be reachable even when the B-party is not available (e.g. presence, a voice call continuity server that will route the call to the circuit-switched network, a call forwarding service).

Alternative entry points to phase 4: instead of originating from the IMS and having followed phases 1 to 3, the request received by the I-CSCF may originate from the circuit-switched network (request is received from MGCF, i.e. signalling gateway with CS), or from a non-IMS network like the Internet.

IMS entry point: instead of an S-CSCF in the originating network, the request may come from the circuit-switched network (through an MGCF), or from a non-IMS SIP network (e.g. the Internet).

Phase 5: service profile -based routing for the terminating user

The S-CSCF serving the terminating party applies the service profile associated to the IMPU (or PSI) corresponding to the request-uri. This service profile consists of a list of initial filter criteria. It corresponds to a set of services associated to the terminating party.

In this phase, the S-CSCF may route the SIP request to 0, 1 or several application servers (one after the other).

It is possible that one of the application servers terminates the SIP request (i.e. acts as a SIP User Agent). This may happen in two cases:
1) The request was addressed to a PSI hosted by the application server (e.g. user tries to access content, user posts message in chat room). This is the case where an operator offers services to the world. Note that there exist alternative mechanisms to route a request to a PSI.
2) The application server terminates the request on behalf of the B-party. This might be the case for presence (the request was addressed to the B-party but was actually aimed at its presence server) and any other service acting on behalf of the terminating party (e.g. voice call continuity, call or message blocking or forwarding services).

Signalling path termination: the SIP interaction may terminate at phase 5 if one of the application servers decides to act as an endpoint for the SIP request.

IMS exit point: the SIP interaction may exit IMS at phase 5 if an application server serves as a gateway towards a different protocol/domain (e.g. email, SMS, MMS, Internet IM protocol).

Phase 6: delivery to the terminating party

In case there is still a SIP request to be delivered to a B-party, the S-CSCF routes the request to the P-CSCF(s) serving the B-party (there might be several in case several endpoints are registered with the same IMPU), which in turn contacts the device of the B-party.

SIP requests issued by application servers

This post essentially addressed the situation where the SIP request is initiated by an IMS client corresponding to an IMPU. However, to be complete, you also have to consider that IMS application servers are able to generate SIP requests, using either an IMPU or PSI as the originating party, and an IMPU or PSI as the request-uri.

When an AS issues a request with an IMPU as originating address, it is supposed to route it to an S-CSCF serving the IMPU. Starting with 3GPP R7, it is possible to allocate an S-CSCF to the IMPU even if it is not registered with IMS (i.e. the IMS AS issues a request on behalf of an IMPU which is not registered with IMS). IMS routing then proceeds with phase 2.

When an AS issues a request using a PSI as the originating party, it may either reach a S-CSCF serving the PSI, or route the request directly to an I-CSCF for the terminating party. Depending on the case, IMS routing then proceeds with phase 2 (the service profile is associated to the PSI) or directly with phase 4.

A specific case for having an IMS AS issuing a SIP request to the IMS is when it acts as a gateway towards another protocol and/or domain. This is the symetric case to what was described in purple for phases 2 and 5 above.

Christophe

There is no direct relationship to this post, but I just added the initial architecture proposed in 3GPP for the SCIM in the first post I wrote about it in May.

42 comments:

Anonymous said...

Hi Christophe

Allow me to add my first thoughts when reading your title "The big picture"; for me one of the BIGGEST inventions of the IMS architecture was to add the "two-level" approach to SIP.

With "two-level" I mean P-CSCF and S-CSCF; in former pre-IMS or NGN times, there was only the notion of the "one does it all" SIP server.

By introducing the P-CSCF and S-CSCF - and allowing a roaming network in between them (!) - you mimic the well adopted business model of mobile telephony to (fixnet) SIP communication.

The P-CSCF can/should be owned by the ISP (close to the access), the S-CSCF is owned by the service provider (close to the communcation service). With this two-level approach you basically allow the ISP to be part of the game. This is more important than one might think...

Anonymous said...

Hi, Christophe,

You mentioned that in Phase 1, the request may traverse an I-CSCF in case the home network wants to hide its network topology. What is the mechanism to do this? Since the registration procedure defined in the 24.229 only requires S-CSCF to insert service-route. Where the I-CSCF route information is send back to the UE?

Thanks,
John

Christophe Gourraud said...

Hi Joerg,

The signalling route to be used for post-registration SIP messages is documented in the Path header in the REGISTER. The P-CSCF does it, the I-CSCF may or may not do it.

Then, the S-CSCF constructs the service-route header based on the Path header. The service-route header is included in the response to the REGISTER.

Therefore: Path in REGISTER to document the route along the way, Service-route in answer to report the route back, with or without I-CSCF.

Christophe

Christophe Gourraud said...

Concerning the two levels between P-CSCF and S-CSCF...

I agree this is a great finding, more especially when you consider that the media in a SIP session can follow a more efficient path directly between the "visited" networks of the parties involved in a session.

However, just note that in the mobile world, the location of the P-CSCF in a visited network is still hypothetical, as currently there are no GPRS roaming agreements permitting it. The P-CSCF is always in the home network.

You can also make this architecture 3-level, including the other fundamental separation between SIP entities performing core functionalities (CSCFs) and SIP entities performing more advanced or agile functionalities (SIP AS).

Christophe

Anonymous said...

Hi Christophe

In your response to Jorge you mentioned that the P-CSCF inserts a Path header as part of the signaling route. I do not understand why the P-CSCF needs to do this. RFC 3327 says that the UA normally ignores the Path header and I thought that P-CSCF discovery determined what P-CSCF the UA uses. So why is it needed? I have been working with the OpenIMS core and I see the Path header inserted by the P-CSCF but my User Agents do not use it to do a DNS query and the INVITE messages they send to not include the information either.

Harish Kulkarni said...

hello Christophe,

Could you help me with an example or some more clarity on this non-IMS case?.

"Typically, these non-IMS implementations will combine the execution of features that apply to all parties of a call."

-thanks
harish

Christophe Gourraud said...

Hi Harish,

The IMS takes place into a multi-operator context, in which it cannot be assumed that the different parties involved in a SIP interaction, for instance a VoIP call, are subscribed to the same operator. It applies a clear segmentation of the services applying for each party, which is classical in the telecommunications domain. If you consider a call between users A and B, each will have its own S-CSCF, providing access to its own services.

On the other hand, most typical SIP network implementations take place in a closed context (an enterprise, a single Internet service provider), in which it is assumed that in most cases users A and B belong to the same domain. The typical architecture is to have a single SIP server supporting services for both A and B, and the logic on this server is usually not segmented user per user. Instead of reaching separate service logic for A and B, SIP signaling will reach a single service logic applying whatever has to be applied on both A and B.

Of course, some IMS-based interactions can take place between two users belonging in the same domain, while non IMS-based interactions can take place between users in two domains. However, the architectural difference remains:
- Even in the same operator domain, the IMS architecture discriminates between the A and B parties and will execute their services separately.
- In an implementation which is not architected in the half call model, the logic will detect that one party does not belong in the domain and will simply execute services related to the one in the domain.

Christophe

Unknown said...

Hi Cristophe, hi all,

first of all thank you for this great blog.

I have a very basic question. I have been through a number of documents describing SIP routing and service invocation and I have not been able to figure out how the S-CSCF distinguishes between session cases and specifically between originating and not-originating (terminating) call cases.

I know that the S-CSCF and the AS assist each other in this manner by adding the "orig" parameter in the route header. But as far as I know, no such parameter is added by the UAC in the originating call case or by the S-CSCF when forwarding to another IMS core (terminating call case).

Thank you in advance
niko

Anonymous said...

I have the following question related to IMS routing.

Assuming that an IMS mobile (A) is based in the U.S, but has roamed from the U.S to Spain. As part of the registration procedure, the I-CSCF in Spain will query A's HSS to get A's S-CSCF. A's HSS returns the S-CSCF in the U.S in the Diameter UAA message.

Now, A makes a call to a PSTN user (B) in Spain. The SIP INVITE will go from A to P-CSCF in Spain to S-CSCF in the U.S. and breaks out to MGCF in the U.S, goes back to the PSTN in Spain and terminates to B. This kind of routing is not very efficient.

Is there a way to assign the S-CSCF of the visited network in Spain to A?

Jack Chrysler said...
This comment has been removed by the author.
Anonymous said...

auto insurance missouri It is great to see how your success has developed and the long road you’ve taken. My sincerest wish is to be in a similar situation, one day. As the above user already said (and I believe this, too) … you, your blog and your thoughts have been very inspiring to many people. Thanks so much! Martin , auto insurance texas

Handwriting analyst said...

I agree that handwriting can say a great deal about a person. I think that men whose handwriting in incomprehensible care only about themselves and do not value others' opinions.

viagra online said...

thank you so much for posting this, I was seeking this information, because I have had some probhlems with IMS service, thanks again...

pfizer viagra brand sale said...

That is very good comment you shared.Thank you so much that for you shared those things with us.Im wishing you to carry on with ur achivments.All the best.

jaytirth said...

I am trying to implement this scenario using Open IMS Core. I am having problem configuring the I-CSCF. I'll be grateful if anyone can help me with the correct configurations.

Tiffani said...

It can't truly work, I believe like this.

Anonymous said...

www.blogger.com owner you are great

[url=http://luv-2-share-pics.tumblr.com]hot girls pics[/url]

Anonymous said...

Hey there! I've been reading your site for a while now and finally got the bravery to go ahead and give you a shout out from Austin Texas! Just wanted to say keep up the good work!

Feel free to surf to my web blog ... how to get .edu backlinks to your website
my webpage > .edu backlinks check,buy edu back links,buy edu backlinks,buy edu gov backlinks,buy edu gov links,buy edu links,cheap backlinks service,cheap edu backlinks,cheap edu links,cheap links charms,cheap links of london,cheap links of london bracelets uk,cheap links of london charms,cheap links of london friendship bracelet,cheap links of london sweetie bracelet,cheap linksys e4200,cheap linksys ea4500,cheap linksys router,dofollow edu backlinks,edu backlink service,edu backlinks,edu backlinks checker,edu backlinks free,edu backlinks list,edu backlinks service,edu backlinks software,edu backlinks squeezer,edu backlinks warrior forum,edu backlinks wiki,edu backlinkslinkwheelprofile backlinks,edu link building,edu link building service,edu links,edu links canada,edu links for sale,edu links guadalajara,edu links list,edu links seo,edu links service,edu links web site,edu text links,edu tv links,free edu backlinks,free edu links,get edu backlinks,get edu gov backlinks,get unlimited edu backlinks free,how to get .edu .gov backlinks,how to get .edu backlinks to your website,how to get edu backlinks,how to get edu backlinks for free,how to get edu links,linksedu.com,phc edu links,tv edu links,what are edu backlinks

Anonymous said...

This diagram is incorrect. Alice's SIP messaging would not leave her network through her I-CSCF. It would leave through a SBC on the edge, and enter into Bob's network through is I-CSCF.

The I-CSCF is only used when locating an S-CSCF (which is necessary when locating Bob's S-CSCF)

Anonymous said...

Best adult pay per click

[url=http://www.youtube.com/watch?v=QdRWd3nJFjE]Best adult ppc[/url]

Anonymous said...

Are you searching for [url=http://bbwroom.tumblr.com]BBW tumblr[/url] this blog is the right place for you!

Anonymous said...

I'm not sure where you're getting your information, but great topic.
I needs to spend some time learning much more or understanding more.
Thanks for fantastic information I was looking
for this information for my mission.

Stop by my weblog: Windows Registry Cleaner

Anonymous said...

www.blogger.com owner you are awsome writer
Here you got some [url=http://epic-quotes.tumblr.com]http://epic-quotes.tumblr.com[/url] for better humour

Anonymous said...

In your teenage years your hormones thrive due to growth and the
Sebum (oil) you produce in your skin. Becoming more active and getting
out and about in the fresh air will do wonders for your complexion.
People may have them in unsightly areas of their body.


Feel free to visit my web page - remove skin tags

Anonymous said...

Dresses with a large train may get caught up in the sand and a
long veil may become out of control with the wind

Also visit my web blog informal wedding dresses plus size

Anonymous said...

I can't tell you how fast you will see results because it depends on how much you want to get rid of acne. Cholera is an acute infection of the small intestine, and it can be life-threatening. There are a wide range of self tanners to choose from at department stores, but why not treat yourself to a spray tan at your nearest tanning salon.

Feel free to surf to my blog ... Skin tags removal

Anonymous said...

It involves listening to certain sounds and music that will train the ringing to go away and
stay away. Avoiding exposure to loud sound for a long time will be wise idea to stay clear
of the tinnitus. Dihuang (Rehmannia glutinosa):It is a Chinese
herb.

Feel free to visit my website ... Tinnitus Miracle Review

Anonymous said...

I loved as much as you will receive carried out right here.
The sketch is tasteful, your authored material stylish.
nonetheless, you command get bought an edginess over that you wish be delivering the following.
unwell unquestionably come further formerly again as
exactly the same nearly very often inside case you
shield this hike.

Feel free to surf to my page ... individual reputation management

Anonymous said...

You need to promote yourself online including the listing that you have
to know how to maximize student loans T3 -->In search for means to limit the personal use of the technology
is used. A casting announcement related to that twist ensured wide publicity for what should
have been be effectively optimized, it should be resisted.

Student Loans etiquette also keeps your account safe. It is not like ordinary advertisement but takes a longer course that
has long lasting effects for the final objective.

my web site: youngbusiness.info

Anonymous said...

Hі сollеagueѕ, itѕ great ρarаgraph сonceгning
tutоringand fully dеfined, keep it up all thе time.


Check out my web blοg lloyd irvin

Anonymous said...

I'm curious to find out what blog platform you have been utilizing? I'm having some small security problems with my
latest blog and I'd like to find something more safeguarded. Do you have any solutions?

Look into my webpage; Full Review

Anonymous said...

First of all I want to say excellent blog! I had a quick question in which I'd like to ask if you do not mind. I was interested to find out how you center yourself and clear your mind prior to writing. I have had a difficult time clearing my mind in getting my thoughts out there. I do enjoy writing however it just seems like the first 10 to 15 minutes tend to be wasted just trying to figure out how to begin. Any recommendations or tips? Cheers!

My web blog: Click On this website

Anonymous said...

Hiya. I was considering adding a hyperlink back to
your blog since both of our websites are based mostly around the same subject.

Would you prefer I link to you using your website address: http:
//www.blogger.com/comment.g?blogID=4706138697725258507&postID=9100925513501767943 or website title:
Blogger: The IMS Lantern. Be sure to let me know at your earliest convenience.

Thank you

Feel free to visit my blog post :: auto insurance discounts ()

Anonymous said...

I'm not sure exactly why but this website is loading incredibly slow for me. Is anyone else having this problem or is it a problem on my end? I'll check
back later and see if the problem still exists.

Review my web-site - Read More Listed here ()

Anonymous said...

Hello there, I'm new to running a blog and websites in general and was wondering how you got the "www" included in your web address name? I see your domain, "http://www.blogger.com/comment.g?blogID=4706138697725258507&postID=9100925513501767943" has the www and my web address looks like, "http://mydomain.com". Do you know the way I can alter this? I'm using Wordpress platform.
Thank you very much

Feel free to surf to my blog post; Read Even more ()

Anonymous said...

Hi there just wanted to give you a quick heads up and let you
know a few of the images aren't loading correctly. I'm not sure why but I think its a
linking issue. I've tried it in two different web browsers and both show the same outcome.

Here is my page Learn Even more Here

Anonymous said...

Hey there your web-site url: http://www.blogger.
com/comment.g?blogID=4706138697725258507&postID=9100925513501767943 seems to be redirecting to a
completely different webpage when I click the home-page button.
You may want to have this looked at.

Feel free to surf to my web page ... click the next document

Anonymous said...

Hello just wanted to give you a quick heads up. The words in your article
seem to be running off the screen in Internet explorer.

I'm not sure if this is a format issue or something to do with internet browser compatibility but I thought I'd post to let you know.
The design and style look great though! Hope you get the problem fixed soon.
Many thanks, for example click the next website!

Anonymous said...

Hi! I could have sworn I've been to this blog before but after reading through some of the post I realized it's
new to me. Nonetheless, I'm definitely delighted I found it and I'll be bookmarking and checking back often!


Feel free to visit my blog post: just click the following internet site

Anonymous said...

I don't know whether it's just me or if perhaps everybody else encountering issues with your blog.
It appears as if some of the written text within
your content are running off the screen. Can someone else please comment and
let me know if this is happening to them too? This could be a problem with my internet browser because I've had this happen before. Thank you

Review my weblog - complete link building services

Anonymous said...

I'm really enjoying the design and layout of your site. It's a very easy on the eyes which makes it much more
pleasant for me to come here and visit more often. Did you hire out a
developer to create your theme? Fantastic work!



Feel free to visit my web blog; search engine optimization

Anonymous said...

What i do not realize is if truth be told how you're no longer really much more neatly-liked than you might be right now. You are so intelligent. You understand thus considerably with regards to this matter, made me in my view consider it from so many various angles. Its like women and men don't seem to be interested unless it is one thing to accomplish with
Lady gaga! Your individual stuffs nice. At all times deal with it up!


my site: Sac Louis Vuitton Pas Cher