The NINA backend supports the concept of migration so we can perform maintenance to backend servers without effecting a user's sessions. The server will initiate the migration and tell the client it needs to migrate to a different server.
The client acknowledges that it is ready to be migrated to the server. The server then tells the client where to reconnect to start its session up again.
Migration SNACs
Name
|
Subgroup
|
Origin
|
Description
|
OSERVICE__PAUSE_REQ
|
0x000B
|
Host
|
This is sent by the server when it needs to migrate the client.
|
OSERVICE__PAUSE_ACK
|
0x000C
|
Client
|
This is sent by the client to acknowledge the receipt and processing of a OSERVICE__PAUSE_REQ SNAC request.
|
OSERVICE__RESUME
|
0x000D
|
Host
|
In certain situations the server may abort a migration after having told the client to PAUSE.
|
OSERVICE__MIGRATE_GROUPS
|
0x0012
|
Host
|
This SNAC commands the client to reconnect to the server specified by the included OSERVICE__TLV_TAGS_RECONNECT_HERE TLV.
|
From Aleksandr Shutko: Various sequences in OSCAR protocol
|
|
|
Migration sequence used to redirect client to new BOS server during current BOS
shutdown. Server can migrate whole connection or only several services. Migration
always initiated by server. Server can abort migration sequence via
SNAC(01,0D) - server resume command.
|
Migration sequence |
<< |
SNAC(01,0B) |
Server sends pause. Client should stop send snacs |
>> |
SNAC(01,0C) |
Client ack pause command |
<< |
SNAC(01,12) |
Server sends migration (cookie/BOS address) |
<> |
disconnect |
Client disconnects from BOS (only full migration) |
<> |
login (stage II) |
Client start normal login sequence from stage II |
|
|
|
|
|
|
|