Re: [Nea] Proposed PB-TNC state machine changes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Nea] Proposed PB-TNC state machine changes



On 1/22/09 2:16 PM, "kaushik" <kaushik at cisco.com> wrote:

> Hi Steve,
> 
> The proposed solution addresses the synchronization issues with the PB-TNC
> state machine but introduces additional states and state transitions which
> increase the overall complexity of the state machine as you have pointed out.
> Here is an alternate that might be a simpler option
> 
> The fundamental problem is that re-assessment can be initiated by either by
> the Posture Broker Client or the Posture Broker Server and the state machine
> on the PBS and PBC can get out of synch if the re-assessment messages are
> generated at the same time and cross each other in transit. We can make a
> simplifying assumption that we won't allow re-assessment to be triggered
> during an assessment, i.e. Assessments will run to completion without being
> interrupted. This would mean that CRETRY and SRERTY messages can only be sent
> from the Decided state and that CRETRY & SRETRY messages sent during an
> assessment, i.e. when the state is either Client Working or Server Working,
> will be ignored.
> 
> The updated State Machine would look like this
> 
> 
>                      Receive
>                      CRETRY or
>                      SRETRY*     SRETRY*
>                       +--+   +----------------+
>                       |  |   |                |
>                       v  |   v                |
>                      +---------+  CRETRY  +---------+
>            CDATA     | Server  |<---------| Decided | CLOSE
>         +----------->| Working |--------->|         |-------+
>         |            +---------+  RESULT  +---------+       |
>         |                ^ |  |                             v
>         |                | |  +---------------------->=======
>       ========           | |              CLOSE       " End "
>       " Init "      CDATA| |SDATA                     =======
>       ========           | |                          ^    ^
>         |  |             | v                          |    |
>         |  | SDATA   +---------+          CLOSE       |    |
>         |  +-------->| Client  |----------------------+    |
>         |            | Working |                           |
>         |            +---------+                           |
>         |              |  ^ Receive                        |
>         |              |  | CRETRY*                        |
>         |              +--+                                |
>         |                       CLOSE                      |
>         +--------------------------------------------------+
> 
> 
> The changes from the state machine in the -02 version of the draft include
> 
> - CRETRY/SRETRY can only be sent from Decided state.
> - CRERTY and SRETRY sent from the Decided state move the state machine to
> Server Working state.
> - CRETRY or SRETRY messages received in Server Working state are ignored
> - CRETRY message received in Client Working state is ignored.
> 
> Let's apply this state machine to a re-assessment scenario.
> 
> 1. The state machine is in the Decided state and the Posture Broker Server
> decides to initiate a re-assessment and sends a SRERTY and the state machine
> on the PBS moves to the Server Working state.
> 
> 3. The Posture Broker Client may at the exact same time decide to initiate a
> re-assessment and send a CRETRY and that would move the state machine on the
> PBC to the Server Working state.
> 4. The PBS can receive the CRETRY from the PBC before or after it sends the
> SDATA based on the time taken on the PBS in generating the SDATA message. In
> either case the PBS will ignore the CRETRY message since it would be either in
> Server Working or Client Working states.
> 5. The reception of the SDATA message on the PBC would move the PBC state
> machine to Client Working and this would result in synchronization of the
> state machines between the PBC and PBS.
> 
> 
> 
> 
> On 1/9/09 4:12 PM, "Stephen Hanna" <shanna at juniper.net> wrote:
> 
>> At IETF 73, I proposed that we change the PB-TNC
>> state machine to eliminate a problem. I would like
>> to verify that we have WG consensus for the solution
>> that I proposed. I think we had consensus in the
>> room but consensus on the mailing list is what
>> matters. Therefore, I have described the problem
>> and my proposed solution in this email. Please
>> review and comment on this. Whatever your opinion,
>> please respond to this email with an expression
>> of your opinion within two weeks (by 5 PM PST
>> on Friday, January 23). At that time, I will
>> declare consensus if we have it.
>> 
>> The problem is more easily explained with the aid
>> of some diagrams. I suggest that you review the
>> slides on this topic that I used at IETF 73. They
>> are slides 30-44 in the slide deck available at
>> http://www.ietf.org/proceedings/08nov/slides/nea-0/nea-0.htm
>> The title of the first relevant slide is "PB-TNC
>> State Machine".
>> 
>> In essence, the problem is that with the state machine
>> in draft-ietf-nea-pb-tnc-02.txt, it is possible for the
>> PBC and PBS to get stuck in different states, losing
>> synchronization. Say that the PBC sends CRETRY. Who
>> should send the next message? There's no guidance.
>> The PBS and PBC might both send the next message and
>> then they will each believe that the message they
>> receive from the other is a response to the message
>> they sent. It's a bad and messy situation. The easy
>> solutions don't work either, as described in the slides.
>> 
>> At the meeting, I proposed a solution to the problem.
>> That was to alter the state machine to this one:
>> 
>>                                       CLOSE
>>                       +--------------------------------------+
>>                       |                                      |
>>                 +---------+  CRETRY  +---------+ CLOSE       |
>>      CDATA      | Server  |<---------| Decided |-----------+ |
>>   +------------>| Working |--------->|         |--------+  | |
>>   |             +---------+  RESULT  +---------+ SASYNC |  | |
>>   |               ^ | | |               |CASYNC         |  v v
>>   |               | | | +---------------|-----------+   |  =======
>> ========          | | +--------------+  |  SASYNC   v   v  " End "
>> " Init "  CDATA or| |         CASYNC |  |     +---------+  =======
>> ========  CRETRY  | |SDATA or        v  v     |  Server |   ^ ^
>>   |  |            | v SRETRY   +---------+    | Request |   | |
>>   |  | SDATA    +---------+    | Client  |    +---------+   | |
>>   |  +--------->| Client  |<---| Request |       | ^        | |
>>   |             | Working | SOK+---------+       | |        | |
>>   |             +---------+      ^      ^        | |        | |
>>   |               | | |   CASYNC |      | CASYNC | |        | |
>>   |               | | +----------+      +--------+ |        | |
>>   |               | |                              |        | |
>>   |               | +------------------------------+        | |
>>   |               |               SASYNC                    | |
>>   |               +-----------------------------------------+ |
>>   |                 CLOSE                                     |
>>   |  CLOSE                                                    |
>>   +-----------------------------------------------------------+
>> 
>> This revised state machine adds several states to make sure
>> that the client and server always agree on whose turn it is
>> to send data after a CASYNC or SASYNC is sent.
>> 
>> The main concern raised at IETF 73 was that this complicates
>> the state machine, adding two new states and one new PB-TNC
>> message type. That's true. However, I have wracked my brain
>> for a simpler solution that works and I haven't found one.
>> If someone else has a simpler solution, please speak up!
>> If not, I think we'll need to proceed with this one. It's
>> not bad. It's fairly simple, really. It just adds a bit
>> more complexity and that's never a good thing.
>> 
>> Thanks,
>> 
>> Steve
>> _______________________________________________
>> Nea mailing list
>> Nea at ietf.org
>> https://www.ietf.org/mailman/listinfo/nea

_______________________________________________
Nea mailing list
Nea at ietf.org
https://www.ietf.org/mailman/listinfo/nea

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