Virtlab:Protokoly/Rezervační server

Z VirtlabWiki

< Virtlab:Protokoly(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 09:56, 24. 2. 2007
Hra196 (Diskuse | příspěvky)
(úprava Cancel)
← Předchozí porovnání
Aktuální verze
Gry72 (Diskuse | příspěvky)
(Smazání rezervace)
Řádka 1: Řádka 1:
-Tento článek popisuje '''komunikační prokokol mezi rezervačními servery''' distribuovaného Virtlabu.+Tento článek popisuje '''komunikační prokokol mezi [[Virtlab:Rezervační server|rezervačními servery]] mezi klientem a rezervačním serverem''' distribuovaného Virtlabu.
-== Navržené vlastnosti ==+Informace o komunikačním protokolu s aktivačním serverem obsahuje článek [[Virtlab:Protokoly/Aktivační server]].
- +
-* Dotaz na prvky lokality daného rezervačního serveru (parametry: ID dotazující se lokality - filtrace podle ní, časový úsek - speciální případ:bez udání času vrátí všechny potenciálně zapůjčitelné prvky pro žádající lokalitu)+
- +
-* Dotaz na všechny prvky systému (zevnitř lokality lokálnímu rezervačními serveru, dotazy zvnějšku lokality budou filtrovány aplikací serveru (nepřicházejí z privátní zdrojové adresy)+
-** slouží jako proxy, zeptá se všech rezervačních serverů jiných lokalit (zprávou dotaz na prvky lokality) +
-** může být speciálním případen zprávy pro dotaz na prvky lokality s nastaveným příznakem žádosti o rekurzi.+
- +
-* Zadost o rezervaci - DOPRACOVAT PARAMETRY A MOZNE ODPOVEDI NA ZPRAVU+
-* Zrušení rezervace podle globálního čísla rezervace (u sebe nebo rekurzivně u všech, rekurze přijímána jen při poždavku zevnitř lokality)+
-* Výpis rezervací – výpis rezervační tabulky (lokálního rezervačního serveru nebo rekurzivně, ale v rekurzivním případě vrátí jen rezervace rezervace z tázající se lokality)+
- +
- +
-ID rezervace – bude vymýšlet rezervující lokalita (název lokality + sekvenční číslo). Bude sloužit i k možnosti zruseni rezervace+
- +
- +
-Při komunikaci mezi rezervačními servery uvádět jako parametr ID tázající se lokality + vymyslet systém autentizace, aby se ID tázající lokality nedalo podvrhnout.+
- +
-Lze počítat s tím, že komunikace půjde IPSec tunelem.+
- +
-Distribuovaná rezervace prvků je distribuovanou transakcí, vymyslet 2-fázový commit, včetně podpory rollbacku od timeoutu při neaktivitě rezervačního klienta. Rezerv. server obsluhuje více spojení najednou, promyslet, zda nevznikají potenciální deadlocky.+
- +
-=== Administrátorské CLI rezervačního serveru - navrh ===+
-* Výpis všech rezervací (dle časového intervalu od-do)+
-* Smazání záznamů o již proběhnuvších rezervacích+
-* Smazání budoucí rezervace+
 +== Vlastnosti ==
 +* Textově orientovaný protokol.
 +* Textové příkazy, oddělené <LF> (0x0A), (symbol <CR> (0x0D) je ignorován)
 +* Komunikace přes TCP spojení, standardně na portu 50001.
 +* Pro názvy příkazů a jména argumentů nerozlišuje velká a malá písmena (''case insensitive'').
 +* První řádek a každý další první po prázdném řádku určuje příkaz, následující řádky jeho argumenty.
 +* Na pořadí argumentů nezáleží a jsou case-insensitive.
 +* Za názvem argumentu je dvojtečka, za kterou ihned nasledují jeho parametry, za dvojtečkou nesmí být mezera.
 +* Bílé znaky (''whitespace''), jako tabelátory (0x09), mezery (0x20) nejsou povoleny, slouží jako oddělovače. parametrů pro argumenty. Výjimku tvoří mezery a tabelátory před názvem příkazu a argumentu. Tyto jsou odfiltrovány.
 +* Odeslání prázdného řádku (jen <LF> (0x0A)), potvrdí, že všechny argumenty byly odeslány a je možno zpracovat příkaz.
 +* Po odeslání prázdného řádku je možno psát další příkaz. Výjimku tvoří příkaz "SEND-DATA", kde jsou očekávána data a potom až další příkaz.
 +* Spojení ukončeno vždy na žádost klienta, mimo speciální případy, kdy rezervační server přijímaným datům nerozumí, nebo je klient připojen příliš dlouho.
 +* Při odpovědi serveru na příkaz je na prvním řádku návratový kód, mezera a za ní popis odpovědi.
 +* Pokud je definováno, že za návratovým kódem odesílá server data (například u ''get-offer''), je na následujícím řádku za kódem uvedeno číslo, znamenající velikost následujících dat v bytech. Data musí být textová a jejich budoucí interpreter musí počítat jen s malými písmenky. Dále nesmí používat znak <CR> (0x0D). Na dalším řádku pak začínají samotná data.
== Popis protokolu == == Popis protokolu ==
- +
-=== Vlastnosti ===+
-* Přes TCP spojení+
-* Textové příkazy, oddělené <LF> (0x0A), <CR> (0x0D) je ignorováno+
-* Case insensitive+
-* První řádek určuje příkaz, další jeho argumenty+
-* Na pořadí argumentů nezáleží+
-* Za názvem argumentu je dvojtecka, za kterou ihned nasledují jeho parametry+
-* Whitespace (tabelátory (0x09), mezery (0x20)) nejsou povoleny, slouží jako oddělovače parametrů pro argumenty+
-* Odeslání prázdného řádku (jen <LF>), potvrdí, že všechny argumenty byly odeslány a je možno zpracovat příkaz+
-* Spojení ukončeno vždy na žádost klienta+
-* Server po komunikaci neukončuje spojení, pouze po určitém timeoutu+
-* Při odpovědi je na prvním řádku kód odpovědi, mezera a za ní popis odpovědi, poté jsou poslána textová data+
- +
=== Zjištění obecné nabídky Rezervačního serveru === === Zjištění obecné nabídky Rezervačního serveru ===
* Příkaz: "GET-OFFER\n" * Příkaz: "GET-OFFER\n"
* Argument (povinný): "FOR: +'jednoznačný název lokality'\n" např. "FOR:vsb_ostrava\n" * Argument (povinný): "FOR: +'jednoznačný název lokality'\n" např. "FOR:vsb_ostrava\n"
-* Odpověď: XML soubor s přefiltrovanou nabídkou fyzických zařízení pro danou lokalitu+* Odpověď: Na prvním řádku odpovědi je číslo s velikostí následujících dat (v bytech). Následuje XML soubor s přefiltrovanou nabídkou fyzických zařízení pro danou lokalitu
- + 
 +Příklad:
 + GET-OFFER\n
 + FOR:vsb\n
 + \n
 + 
=== Zjištění nabídky celého distribuovaného RS === === Zjištění nabídky celého distribuovaného RS ===
* Stejné jako obecné zjištení "GET-OFFER" * Stejné jako obecné zjištení "GET-OFFER"
* Argument (povinný): DISTRIB Parametr: "YES", "DISTRIB:YES" * Argument (povinný): DISTRIB Parametr: "YES", "DISTRIB:YES"
-* Odpověď: XML soubor s přefiltrovanou nabídkou fyzických zařízení pro celý distribuovaný RS+* Odpověď: Na prvním řádku odpovědi je číslo s velikostí následujících dat (v bytech). Následuje XML soubor s přefiltrovanou nabídkou fyzických zařízení pro celý distribuovaný RS
- + 
 +Příklad:
 + GET-OFFER\n
 + FOR:vsb\n
 + DISTRIB:YES\n
 + \n
 + 
=== Zjištění nabídky v daném čase (Co je volné?) === === Zjištění nabídky v daném čase (Co je volné?) ===
-* Opět "GET-OFFER"+* Opět příkazem "GET-OFFER"
* Argument (povinný): "TIME:FROM{YYYY-MM-DD HH:MM}TO{YYYY-MM-DD HH:MM}\n" * Argument (povinný): "TIME:FROM{YYYY-MM-DD HH:MM}TO{YYYY-MM-DD HH:MM}\n"
** Příklad: ''"TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n"'' ** Příklad: ''"TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n"''
-* Odpověď: XML soubor s nabídkou všech fyzických zařízení lokalně nebo v celem distribuovaném VL pro danou lokalitu, podle argumentu (DISTRIB)+* Odpověď: XML soubor s nabídkou všech fyzických zařízení lokalně nebo v celem distribuovaném VL pro danou lokalitu, podle argumentu ''DISTRIB'', který je nepovinný.
 + 
 +Příklad:
 + GET-OFFER\n
 + FOR:vsb\n
 + DISTRIB:YES\n
 + TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n
 + \n
 + 
 +=== Rezervace ===
 +Při rezervaci předáme serveru unikátní ID rezervace, které jsme si vymysleli, ve formátu ''číslo@název_místní_lokality'', dále čas, kdy má být uskutečněna a nakonec seznam zařízené pro zarezervování ve formátu ''jméno@lokalita''. Při rezervaci je možno také zažádat o dočasné počkání na příkaz ''COMMIT'', kdy data nejsou trvale zapsána do databáze, dokud nedojde k potvrzení. Jestliže to nepříjde do učitého limitu, potom se data smažou.
 +* Příkaz "RESERVE"
 +* Povinné argumenty: ''FOR'', ''TIME'', ''ID''
 +* Seznam zařízení jako posloupnost argumentů ''DEVICE'', jejichž hodnotou je id zařízení.
 +* Nepovinný argument ''DISTRIB'' (význam stejný jako u ''GET-OFFER'').
 +* Žádost o čekání na příkaz ''COMMIT'' nepovinným argumentem ''NEED-COMMIT'' s hodnotami YES nebo NO. (Implicitně NO).
 + 
 +Příklad 1:
 + RESERVE
 + FOR:vsb\n
 + ID:14@vsb\n
 + DISTRIB:YES\n
 + TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n
 + \n
 +Příklad 2:
 + RESERVE
 + FOR:vsb\n
 + ID:14@vsb\n
 + TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n
 + NEED-COMMIT:YES\n
 + \n
=== Potvrzení rezervace === === Potvrzení rezervace ===
-* Rezervace je potvrzovana <<dvojitým '''commit'''>>,+* Nutno volat při rezervaci s nastaveným "NEED-COMMIT:YES"
-* Nejprve voláním příkazu "RESERVE\n" a poté "COMMIT"+* Voláním příkazu "COMMIT"
-* Zavolání "RESERVE" na vzdalený rezervační server znamená, že si server daný čas zablokuje, ostatním ho neposkytne a čeká (daný čas) na "COMMIT". +* Zavolání "RESERVE" s "NEED-COMMIT:YES" na vzdalený rezervační server znamená, že si server daný čas zablokuje, ostatním ho neposkytne a čeká (daný čas) na "COMMIT".
-* Druhý COMMIT je zavolán, byl-li první u všech serverů úspěšný+* COMMIT je automaticky rezervačním serverem v distribuovaném systému, bylo-li ''RESERVE'' u všech serverů úspěšné
-* Nebyl-li úspěšný, volá se přikaz "ROLLBACK"+* Povinným argumentem je vygenerované globalní reservation id - argument ID, které je složené z lokality a místního čísla id: "ID:<LocalID>@<lokalita>".
-* Nastane-li timeout, volá se ROLLBACK automaticky+* Commit může být použit i distribuovaně, ovšem toto v praxi nemá význam a slouží jen pro testování.
-* Povinným argumentem u obou příkazů je vygenerované globalní Reservation id, které je složené z lokality a místního čísla id: "ID:<LocalID>@<lokalita>". COMMIT již jiný argument nemá.+ 
-* U "RESERVE" je povinné rovnež uvést čas ve stejném formátu jako u zjištování nabídky.+Příklad:
-* Jako další argumenty RESERVE jsou ID síťových prvků dané lokace (každé jako zvláštní argument)+ COMMIT\n
-** Argument: DEVICE:id_zarizeni\n+ ID:14@vsb\n
-* Odpovědi:+ \n
-** 200 ACCEPTED<lf> ...kladná odpověď+ 
-** 400 REFUSED<lf> ...zaporná odpověď+'''POZOR: Protože rezervační server podle ResID rozpoznává, zda klient je z místní nebo cizí lokality (aby určil, zda má vkládat informaci do CRONu), nesmí se formát ResID změnit !'''
- + 
=== Smazání rezervace === === Smazání rezervace ===
* Příkaz "CANCEL" * Příkaz "CANCEL"
-* Povinný argument "ID:<lokalita> <id>"+* Povinný argument "ID:id_rezervace"
* Argument "DISTRIB:YES" pro distribuovanou verzi * Argument "DISTRIB:YES" pro distribuovanou verzi
* Pokud dané ID v systému neexistuje je ignorováno a není oznámena žádná chyba * Pokud dané ID v systému neexistuje je ignorováno a není oznámena žádná chyba
Řádka 83: Řádka 100:
** "210 Cancelled" operace provedena ** "210 Cancelled" operace provedena
** "410 Error" nebylo možno rušení provést (výpadek databáze) ** "410 Error" nebylo možno rušení provést (výpadek databáze)
 +
 +
 +
 +'''POZOR: Protože rezervační server podle ResID rozpoznává, zda klient je z místní nebo cizí lokality (aby určil, zda má zrušit informaci v CRONu), nesmí se formát ResID změnit !'''
 +
 +=== Odeslání konfigurace k rezervaci ===
 +Když klient rezervačního serveru na základě nabídky prvků a poté kladné rezervace vygeneruje síť spojení jednotlivých prvků ([[virtlab:Řídící server/Mapovací algoritmus|Mapovací algoritmus]]), je třeba tuto konfigurace předat rezervačnímu serveru. Ten ji dále poskytne konfiguračním skriptům, které vytvoří náplň konfigurace jednotlivých prvků. Konfigurace dané rezervace se může měnit kdykoliv před započetím úlohy.
 +* Odeslání konfigurace se provádí příkazem '''ATTACH'''.
 +* Povinným argumentem je ID rezervace (''číslo@lokalita'')
 +* Dalším povinným argumentem je "data-length", který obsahuje číslo odesílaného souboru v bytech.
 +* Data se přiloží za ukončovací znak příkazu (tedy za prázdný řádek). Data musejí mít přesně uvedenou velikost, protože bude-li jich odesláno méně, potom na ně server bude čekat a pro dané spojení nebude přijímat příkazy. Jedinou možností vysvobození pak bude ukončení spojení. Bude-li jich více, potom data nad rámec budou vnímána jako další příkaz, což způsobí chybová hlášení.
 +* Odeslaná data jsou uložena do souboru a později předána konfiguračním skriptům. Rezervační server je nijak neinterpretuje ani neupravuje.
 +
 +Příklad:
 + ATTACH
 + id:14@vsb
 + data-length:93
 +
 + <první řádek konfigurace>
 + <druhý řádek konfigurace za kterým je prázdný řádek>
 + ...
 + <poslední řádek>
 +
 +
=== Příklad === === Příklad ===
Řádka 92: Řádka 133:
<lf> <lf>
<- 200 OK <- 200 OK
 + 375
<?XML ..... > <?XML ..... >
end of the connection end of the connection
Řádka 106: Řádka 148:
-> RESERVE<lf> -> RESERVE<lf>
FOR:su_karvina<lf> FOR:su_karvina<lf>
- ID:14@su_karvina+ ID:14@su_karvina<lf>
TIME:FROM{2007-01-18 10:00}TO{2007-01-18 11:00}<lf> TIME:FROM{2007-01-18 10:00}TO{2007-01-18 11:00}<lf>
- DEVICE:r1+ DEVICE:r1<lf>
- DEVICE:r5+ DEVICE:r5<lf>
- DEVICE:sw2+ DEVICE:sw2<lf>
 + DISTRIB:yes<lf>
 + NEED-COMMIT:yes<lf>
<lf> <lf>
<- 200 ACCEPTED <- 200 ACCEPTED
Řádka 116: Řádka 160:
-> COMMIT<lf> -> COMMIT<lf>
- ID:14@su_karvina+ ID:14@su_karvina<lf>
 + <lf>
<- 200 ACCEPTED <- 200 ACCEPTED
end of the connection end of the connection
 +
 + -> ATTACH<lf>
 + ID:14@su_karvina<lf>
 + DATA-LENGTH:113<lf>
 + <lf>
 + r7:s0/2/2 r5:s0/0
 + r3:fa0/1 r5:gi0
 + r7:s0/2/4 r1:s0/1/1
 + <- 200 ATTACH OK
 +
 +[[Kategorie:Protokol]]
 +[[Kategorie:Rezervační server]]

Aktuální verze

Tento článek popisuje komunikační prokokol mezi rezervačními servery mezi klientem a rezervačním serverem distribuovaného Virtlabu.

Informace o komunikačním protokolu s aktivačním serverem obsahuje článek Virtlab:Protokoly/Aktivační server.

Obsah

Vlastnosti

  • Textově orientovaný protokol.
  • Textové příkazy, oddělené <LF> (0x0A), (symbol <CR> (0x0D) je ignorován)
  • Komunikace přes TCP spojení, standardně na portu 50001.
  • Pro názvy příkazů a jména argumentů nerozlišuje velká a malá písmena (case insensitive).
  • První řádek a každý další první po prázdném řádku určuje příkaz, následující řádky jeho argumenty.
  • Na pořadí argumentů nezáleží a jsou case-insensitive.
  • Za názvem argumentu je dvojtečka, za kterou ihned nasledují jeho parametry, za dvojtečkou nesmí být mezera.
  • Bílé znaky (whitespace), jako tabelátory (0x09), mezery (0x20) nejsou povoleny, slouží jako oddělovače. parametrů pro argumenty. Výjimku tvoří mezery a tabelátory před názvem příkazu a argumentu. Tyto jsou odfiltrovány.
  • Odeslání prázdného řádku (jen <LF> (0x0A)), potvrdí, že všechny argumenty byly odeslány a je možno zpracovat příkaz.
  • Po odeslání prázdného řádku je možno psát další příkaz. Výjimku tvoří příkaz "SEND-DATA", kde jsou očekávána data a potom až další příkaz.
  • Spojení ukončeno vždy na žádost klienta, mimo speciální případy, kdy rezervační server přijímaným datům nerozumí, nebo je klient připojen příliš dlouho.
  • Při odpovědi serveru na příkaz je na prvním řádku návratový kód, mezera a za ní popis odpovědi.
  • Pokud je definováno, že za návratovým kódem odesílá server data (například u get-offer), je na následujícím řádku za kódem uvedeno číslo, znamenající velikost následujících dat v bytech. Data musí být textová a jejich budoucí interpreter musí počítat jen s malými písmenky. Dále nesmí používat znak <CR> (0x0D). Na dalším řádku pak začínají samotná data.

Popis protokolu

Zjištění obecné nabídky Rezervačního serveru

  • Příkaz: "GET-OFFER\n"
  • Argument (povinný): "FOR: +'jednoznačný název lokality'\n" např. "FOR:vsb_ostrava\n"
  • Odpověď: Na prvním řádku odpovědi je číslo s velikostí následujících dat (v bytech). Následuje XML soubor s přefiltrovanou nabídkou fyzických zařízení pro danou lokalitu

Příklad:

 GET-OFFER\n
 FOR:vsb\n
 \n

Zjištění nabídky celého distribuovaného RS

  • Stejné jako obecné zjištení "GET-OFFER"
  • Argument (povinný): DISTRIB Parametr: "YES", "DISTRIB:YES"
  • Odpověď: Na prvním řádku odpovědi je číslo s velikostí následujících dat (v bytech). Následuje XML soubor s přefiltrovanou nabídkou fyzických zařízení pro celý distribuovaný RS

Příklad:

 GET-OFFER\n
 FOR:vsb\n
 DISTRIB:YES\n
 \n

Zjištění nabídky v daném čase (Co je volné?)

  • Opět příkazem "GET-OFFER"
  • Argument (povinný): "TIME:FROM{YYYY-MM-DD HH:MM}TO{YYYY-MM-DD HH:MM}\n"
    • Příklad: "TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n"
  • Odpověď: XML soubor s nabídkou všech fyzických zařízení lokalně nebo v celem distribuovaném VL pro danou lokalitu, podle argumentu DISTRIB, který je nepovinný.

Příklad:

 GET-OFFER\n
 FOR:vsb\n
 DISTRIB:YES\n
 TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n
 \n

Rezervace

Při rezervaci předáme serveru unikátní ID rezervace, které jsme si vymysleli, ve formátu číslo@název_místní_lokality, dále čas, kdy má být uskutečněna a nakonec seznam zařízené pro zarezervování ve formátu jméno@lokalita. Při rezervaci je možno také zažádat o dočasné počkání na příkaz COMMIT, kdy data nejsou trvale zapsána do databáze, dokud nedojde k potvrzení. Jestliže to nepříjde do učitého limitu, potom se data smažou.

  • Příkaz "RESERVE"
  • Povinné argumenty: FOR, TIME, ID
  • Seznam zařízení jako posloupnost argumentů DEVICE, jejichž hodnotou je id zařízení.
  • Nepovinný argument DISTRIB (význam stejný jako u GET-OFFER).
  • Žádost o čekání na příkaz COMMIT nepovinným argumentem NEED-COMMIT s hodnotami YES nebo NO. (Implicitně NO).

Příklad 1:

 RESERVE
 FOR:vsb\n
 ID:14@vsb\n
 DISTRIB:YES\n
 TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n
 \n

Příklad 2:

 RESERVE
 FOR:vsb\n
 ID:14@vsb\n
 TIME:FROM{2006-12-24 09:45}TO{2007-01-01 15:14}\n
 NEED-COMMIT:YES\n
 \n

Potvrzení rezervace

  • Nutno volat při rezervaci s nastaveným "NEED-COMMIT:YES"
  • Voláním příkazu "COMMIT"
  • Zavolání "RESERVE" s "NEED-COMMIT:YES" na vzdalený rezervační server znamená, že si server daný čas zablokuje, ostatním ho neposkytne a čeká (daný čas) na "COMMIT".
  • COMMIT je automaticky rezervačním serverem v distribuovaném systému, bylo-li RESERVE u všech serverů úspěšné
  • Povinným argumentem je vygenerované globalní reservation id - argument ID, které je složené z lokality a místního čísla id: "ID:<LocalID>@<lokalita>".
  • Commit může být použit i distribuovaně, ovšem toto v praxi nemá význam a slouží jen pro testování.

Příklad:

 COMMIT\n
 ID:14@vsb\n
 \n

POZOR: Protože rezervační server podle ResID rozpoznává, zda klient je z místní nebo cizí lokality (aby určil, zda má vkládat informaci do CRONu), nesmí se formát ResID změnit !

Smazání rezervace

  • Příkaz "CANCEL"
  • Povinný argument "ID:id_rezervace"
  • Argument "DISTRIB:YES" pro distribuovanou verzi
  • Pokud dané ID v systému neexistuje je ignorováno a není oznámena žádná chyba
  • Odpovědi:
    • "210 Cancelled" operace provedena
    • "410 Error" nebylo možno rušení provést (výpadek databáze)


POZOR: Protože rezervační server podle ResID rozpoznává, zda klient je z místní nebo cizí lokality (aby určil, zda má zrušit informaci v CRONu), nesmí se formát ResID změnit !

Odeslání konfigurace k rezervaci

Když klient rezervačního serveru na základě nabídky prvků a poté kladné rezervace vygeneruje síť spojení jednotlivých prvků (Mapovací algoritmus), je třeba tuto konfigurace předat rezervačnímu serveru. Ten ji dále poskytne konfiguračním skriptům, které vytvoří náplň konfigurace jednotlivých prvků. Konfigurace dané rezervace se může měnit kdykoliv před započetím úlohy.

  • Odeslání konfigurace se provádí příkazem ATTACH.
  • Povinným argumentem je ID rezervace (číslo@lokalita)
  • Dalším povinným argumentem je "data-length", který obsahuje číslo odesílaného souboru v bytech.
  • Data se přiloží za ukončovací znak příkazu (tedy za prázdný řádek). Data musejí mít přesně uvedenou velikost, protože bude-li jich odesláno méně, potom na ně server bude čekat a pro dané spojení nebude přijímat příkazy. Jedinou možností vysvobození pak bude ukončení spojení. Bude-li jich více, potom data nad rámec budou vnímána jako další příkaz, což způsobí chybová hlášení.
  • Odeslaná data jsou uložena do souboru a později předána konfiguračním skriptům. Rezervační server je nijak neinterpretuje ani neupravuje.

Příklad:

 ATTACH
 id:14@vsb
 data-length:93
 
 <první řádek konfigurace>
 <druhý řádek konfigurace za kterým je prázdný řádek>
 ...
 <poslední řádek>
 


Příklad

 User->Local RS
 
 -> GET-OFFER<lf>
    FOR:su_karvina<lf>
    DISTRIB:yes<lf>
    <lf>
 <- 200 OK
    375
    <?XML ..... >
 end of the connection   
 
 -> GET-OFFER<lf>
    FOR:su_karvina<lf>
    DISTRIB:yes<lf>
    TIME:FROM{2007-01-18 10:00}TO{2007-01-18 11:00}<lf>
    <lf>
 <- 200 OK
    <? XML .... >
 end of the connection   
 
 -> RESERVE<lf>
    FOR:su_karvina<lf>
    ID:14@su_karvina<lf>
    TIME:FROM{2007-01-18 10:00}TO{2007-01-18 11:00}<lf>
    DEVICE:r1<lf>
    DEVICE:r5<lf>
    DEVICE:sw2<lf>
    DISTRIB:yes<lf>
    NEED-COMMIT:yes<lf>
    <lf>
 <- 200 ACCEPTED
 end of the connection
 
 -> COMMIT<lf>
    ID:14@su_karvina<lf>
    <lf>
 <- 200 ACCEPTED
 end of the connection
 
 -> ATTACH<lf>
    ID:14@su_karvina<lf>
    DATA-LENGTH:113<lf>
    <lf>
    r7:s0/2/2 r5:s0/0
    r3:fa0/1  r5:gi0
    r7:s0/2/4 r1:s0/1/1
 <- 200 ATTACH OK
Osobní nástroje