Re: [Dime] Dime NAI Routing
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dime] Dime NAI Routing



I had some more thoughts around Avi's proposal and made a small summary and comparison of pros & cons. NAIdime means the solution proposed in the Dime draft. NAIavi is Avi's proposal.

1) All intermediates and peers support their own proposed solutions and
   no new application
   - Both NAIdime & NAIavi work fine

2) Some intermediates do not support NAI decoration, the destination Diameter server
   supports NAI decoration and no new application
   - NAIdime causes an "early" consumption of the request, which would
     cause the auth/authz fail in all realistic situations
- NAIavi would cause a routing loop and auth/authz to fail in all realistic situations. However, this applies only if there are more than one intermediate realms and the non-supporting realm is not next to the final destination.

3) Some intermediates do not support NAI decoration, the destination Diameter server
   does not support NAI decoration and no new application
   - NAIdime has the same issue as in 2)
- NAIavi auth/authz probably fails as the User-Name does not correspond to the user identity (it is still decorated). This depends on the used auth/authz
     method though.

4) Some intermediates do not support NAI decoration, the destination Diameter server
   supports NAI decoration, new application
   - Both NAIdime & NAIavi work ok (non-supporting agents get bypassed)

5) Some intermediates do not support NAI decoration, the destination Diameter server
   does not supports NAI decoration, new application
   - not applicable

6) Routing "processing" in an agent that supports NAI routing
   - NAIdime modifies both User-Name and Destination-realm. Final
routing decision still based on Destination-Realm+Application-id as
     defined in unmodified rfc3588.
   - NAIavi modifies only the User-Name. Final routing decision needs
     modifications to rfc3588 request routing as sometimes the routing
     is done based on the User-Name+Application-id and sometimes based
     on the Destination-Realm+Application-id.


DId I miss some scenario? Or did I get some scenario wrong?

Summarizing the above:

1) is trivial and probably the desired deployment scenario.
4) NAI routing coupled with a new application is the safe choice. Both
   NAIdime & NAIavi always work OK.
3) is a valid scenario where both NAIdime & NAIavi have issues. NAIavi
   has probably less issues depending on the used auth/authz method.
2) here NAIavi has an advantage. From a protocol point of view it is not ok to define a solution that is known to break in other than a naive deployment scenario. From a practical point of view, I think the naive deployment
   scenario is probably what gets deployed in real life. However, one
   could never be sure.
6) NAIavi probably requires more code changes in the existing rfc3588 code base. This could be a theoretical disadvantage though. I cannot really judge
   the amount of work required in other's products.

So.. comments? Honestly, I tried to be objective ;)

Cheers,
	Jouni



On Mar 11, 2009, at 12:38 AM, jouni wrote:

Hi Avi,

Thanks for the valuable input. See some comments inline.

On Mar 10, 2009, at 3:56 PM, Avi Lior wrote:

I have inline comments as well as new comment:

The over arching problem as I see it is that when you read the document, at least the introduction and abstract you get the sense that the draft is intending to fix base diameter behavior.

That is the intent.


But in responses I get, I get the feeling that the intent is really to have an Application based routing scheme using NAI.


Applications are recommended for cases where the requests pass through realms/networks where one cannot always claim that "all my agents implement RFC3588 + RFC-NAI-Routing". If you know that your networks support RFC3588 + RFC-NAI-Routing, there is no need to go for a new application. Section 4.3 is a recommendation for backwards compatibility.



If you are trying to fix base then we need a robust backwards compatible way of doing things. As well, we can argue whether or not it should be placed in DIME. There is more work to do.

We at least seem to agree that something needs to be done ;)


If you are trying to write a document that describes how one would do Application routing using NAI. Then that does not belong in base so we should stop debating that. And actually in this case what you are doing is fine and you are probably there.

So which is it?  And once we pick we should be clear in the text.

Definitely this is not about doing only application routing using NAI. One of the goals is to be able to request a vendor e.g. "give me an agent that implements RFC3588/RFC-NAI-Routing", without being more specific on applications.

I reread Sections 4.1-4.2. Which parts are unclear? I am happy to reword.


We could come up with a hybrid solution by the way.

If the priority is to make sure that the packet gets to the destination, then: You set the destination-realm to the final destination and intermediaries that support decorated NAI use the decorated NAI without modification to the destination-realm. Intermediaries that don't know about decorated NAI will just perform the destination- realm routing. As you point out you get looping but its not infinite looping. At least the message would get to the final destination.

The agent would send an error indicating a routing loop and then the agent MAY try an alternate route.. which would result another routing loop. I see no way out of this.



If NAI routing is the most important thing then you set the destination-realm to the next hop of the Decorated NAI. Each hop that supports this scheme will use the decorated-nai and will update the realm. If a hop is reached that does not understand decorated NAI then the packet will be consumed locally.



Please see inline for more comments

-----Original Message-----
From: jouni korhonen [mailto:jouni.nospam at gmail.com]
Sent: March 3, 2009 5:44 PM
To: Avi Lior
Cc: Lionel.morand at orange-ftgroup.com; Mark Jones;
tena at huawei.com; Hannes.Tschofenig at gmx.net; dime at ietf.org
Subject: Re: Dime NAI Routing

Hi Avi,

Thanks for reading & commenting the I-D.

On Mar 2, 2009, at 11:41 PM, Avi Lior wrote:

A couple of comments:

1)  The draft should mention something about the presence of
Destination-Host AVP.

The rule for routing is that the Destination-Host AVP is
not looked at
until the message reaches the terminal realm as determined by the
decorated NAI.

Where you would suggest to include the clarifying text? In
Section 4.2.?

I don't know. I will have to look at the draft. This is really a side issue and depends on the intent of the draft.

Ok.





2) I dont like the way Destination-Realm is being used.

The draft states that the destination realm is updated on a
hop by hop
basis together with the decorated NAI.

I assume that is the only way to ensure the request message
really goes through all wanted realms.

Correct. And in some cases NAI routing is going to be more important and in some cases it will be more important to make sure the message makes it all the way.


If an intermediary is not compliant with the scheme
presented by this
draft it will result in the intermediary consuming the
message locally
- since the message contains the destination realm equal to
its realm. Thus the message is not going to reach the destination.

That is the reason why the I-D suggests only using the
decoration stuff with a new application that is known to
support this I-D. In that way legacy agents can be bypassed.

Okay so here you are clear this is Application based routing.

This is suggested/recommended only when there is no guarantee that all agents implement the NAI routing. To my understanding all Diameter routing is based on applications + realms anyway, so I don't see the problem.



Instead, I propose that the destination realm should be
always set to
the terminal realm, thus:

Agents that are compliant with the draft will first look at
the NAI to
determine whether the packet has reached the terminal realm
or where
it should be routed next;

Are you proposing to make the routing decision based on the
User-Name (and ignore the Destination-Realm all together) in
cases where 1) the agent supports this I-D and 2) the
User-Name contains a decorated NAI?
Once the decorated NAI would have been "consumed" the
checking would be based on the Destination-Realm again..?

Almost. In the case where you want to guarantee packet delivery irrespective of whether nodes are compliant with this draft, then you set the destination-realm to the final destination of the decorated NAI. Agents that support your scheme would use the decorated NAI to determine how to route to the next hop. Agents that don't support your scheme will use the destination-realm to determine how to route to the next hop (they will ignore the decorated NAI).

Ok. That was close enough to my understanding ;) So, the route decision would be:

1) case NAI routing supported:
  route decision: User-Name + Application
  if User-Name's @realm matches agent's own realm, precess the NAI

2) case normal RFC3588
  route decision: Destination-Realm + Application
  Modify: none

right?




Agents that are not compatible with the draft will use the
old rules
for routing and would route the message according to the
destination-
realm only and thus the message will reach the final destintaion
albeit not necessarily according to the decorated NAI. But
at least it
would work.


Did I miss anything?

What happens if.. the route happens to have some
non-compliant agents and when the request reaches its final
end (e.g. according to the inter-connection architecture) the
User-Name still has decorated NAI?
Would the decorated NAI compliant server/proxy send to
request back to some other realm pointed by the User-name?
This would effectively cause a routing loop, right?
No. It may cause a loop but it wont be an infinite loop. So it depends, in some cases I may be okay with have strange routing but I will at least get the packet there. So it depends what I want to achieve.

There is no guarantee that the alternate route selected by the agent that discovered the loop would result to any better outcome. The alternate route could again route traffic back.

Cheers,
	Jouni




Cheers,
      Jouni








_______________________________________________
DiME mailing list
DiME at ietf.org
https://www.ietf.org/mailman/listinfo/dime


Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.