Virtlab:Protokoly/Rezervační server

Z VirtlabWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 12:25, 7. 12. 2006
Gry72 (Diskuse | příspěvky)

← Předchozí porovnání
Verze z 10:39, 15. 12. 2006
Hra196 (Diskuse | příspěvky)
(muj navrh)
Následující porovnání →
Řádka 20: Řádka 20:
Lze počítat s tím, že komunikace půjde IPSec tunelem. 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. 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.
 +
 +== Komunikační protokol (návrh [[Uživatel:hra196|Tomáše Hrabálka]]) ==
 +
 +'''Výpis ze souboru ''reserv/doc/popis.txt'':'''
 + Popis komunikačního protokolu
 + =============================
 + - pres TCP spojeni
 + - textove prikazy, oddelene <CR>
 + - prvni radek urcuje prikaz, dalsi jeho argumenty
 + - na poradi argumentu nezalezi
 + - odeslani prazdneho radku, jen <CR>, potvrdi, ze vsechny argumenty byly odeslany
 + - spojeni ukonceno vzdy na zadost klienta
 + - server po komunikace neukoncuje spojeni, pouze po urcitem timeoutu
 +
 + Zjisteni obecne nabidky RS
 + --------------------------
 + Prikaz: "GET OFFER\n"
 + Argument (povinny): "FOR +'jednoznacny nazev lokality'\n" napr. "FOR vsb_ostrava\n"
 + Odpoved: XML soubor s prefiltrovanou nabidkou fyzickych zarizeni pro danou lokalitu
 +
 + Zjisteni nabidky celeho distribuovaneho RS
 + -----------------------------------------
 + Argument (povinny): DISTRIB
 + Odpoved: XML soubor s prefiltrovanou nabidkou fyzickych zarizeni pro cely distribuovany RS
 +
 + Zjisteni nabidky v danem case (Co je volne?)
 + --------------------------------------------
 + Argument (nepovinny): "TIME FROM YYYY-MM-DD HH:MM TO YYYY-MM-DD HH:MM\n"
 + napr. "TIME FROM 2006-12-24 09:45 TO 2007-01-01 15:14\n"
 + Odpoved: XML soubor s nabidkou vsech fyzickych zarizeni lokalne nebo v celem Distr VL pro danou lokalitu,
 + podle argumentu (DISTRIB)
 +
 + Potvrzeni rezervace
 + -------------------
 + - Rezervace je potvrzovana dvojim volanim prikazu "COMMIT\n"
 + - Jeho prvni zavolani na vzdaleny rezervacni server znamena, ze si server dany cas zablokuje,
 + ostatnim ho neposkytne a ceka (dany cas) na druhy COMMIT.
 + - Druhy COMMIT je zavolan, byl-li prvni u vsech serveru uspesny
 + - Nebyl-li uspesny, volame prikaz ROLLBACK
 + - Nastane-li timeout, vola se ROLLBACK automaticky
 + - Jako argumenty COMMIT jsou ID sitovych prvku dane lokace (kazde jako zvlastni argument)
 + - Argumet: DEVICE id_zarizeni\n
 + - Odpoved: ACCEPTED<cr> ...kladna odpoved
 + REFUSED<cr> ...zaporna odpoved
 +
 + Priklad
 + -------
 + User->Local RS
 +
 + -> GET OFFER<cr>
 + FOR su_karvina<cr>
 + DISTRIB<cr>
 + <cr>
 + <- <?XML ..... >
 + end the connection
 +
 + -> GET OFFER<cr>
 + FOR su_karvina<cr>
 + DISTRIB<br>
 + TIME FROM 2007-01-18 10:00 TO 2007-01-18 11:00<cr>
 + <cr>
 + <- <? XML .... >
 + -> COMMIT<cr>
 + DEVICE r1
 + DEVICE r5
 + DEVICE sw2
 + <cr>
 + <- ACCEPTED
 + -> COMMIT<cr>
 + <- ACCEPTED
 + end of the connection

Verze z 10:39, 15. 12. 2006

Protokol rezervačního serveru

První návrh:

  • Dotaz na prvky lokality daného rezervačního serveru (parametry: ID dotazující se lokality - filtrace podle ní, časový úsek - spec. 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.

Komunikační protokol (návrh Tomáše Hrabálka)

Výpis ze souboru reserv/doc/popis.txt:

 Popis komunikačního protokolu
 =============================
 - pres TCP spojeni
 - textove prikazy, oddelene <CR>
 - prvni radek urcuje prikaz, dalsi jeho argumenty
 - na poradi argumentu nezalezi
 - odeslani prazdneho radku, jen <CR>, potvrdi, ze vsechny argumenty byly odeslany 
 - spojeni ukonceno vzdy na zadost klienta
 - server po komunikace neukoncuje spojeni, pouze po urcitem timeoutu
 
 Zjisteni obecne nabidky RS
 --------------------------
 Prikaz: "GET OFFER\n"
 Argument (povinny): "FOR +'jednoznacny nazev lokality'\n" napr. "FOR vsb_ostrava\n"
 Odpoved: XML soubor s prefiltrovanou nabidkou fyzickych zarizeni pro danou lokalitu
 
 Zjisteni nabidky celeho distribuovaneho RS
 -----------------------------------------
 Argument (povinny): DISTRIB
 Odpoved: XML soubor s prefiltrovanou nabidkou fyzickych zarizeni pro cely distribuovany RS
 
 Zjisteni nabidky v danem case (Co je volne?)
 --------------------------------------------
 Argument (nepovinny): "TIME FROM YYYY-MM-DD HH:MM TO YYYY-MM-DD HH:MM\n"  
                 napr. "TIME FROM 2006-12-24 09:45 TO 2007-01-01 15:14\n"
 Odpoved: XML soubor s nabidkou vsech fyzickych zarizeni lokalne nebo v celem Distr VL pro danou lokalitu,
          podle argumentu (DISTRIB)
 
 Potvrzeni rezervace
 -------------------
 - Rezervace je potvrzovana dvojim volanim prikazu "COMMIT\n"
 - Jeho prvni zavolani na vzdaleny rezervacni server znamena, ze si server dany cas zablokuje,
   ostatnim ho neposkytne a ceka (dany cas) na druhy COMMIT. 
 - Druhy COMMIT je zavolan, byl-li prvni u vsech serveru uspesny
 - Nebyl-li uspesny, volame prikaz ROLLBACK
 - Nastane-li timeout, vola se ROLLBACK automaticky
 - Jako argumenty COMMIT jsou ID sitovych prvku dane lokace (kazde jako zvlastni argument)
 - Argumet: DEVICE id_zarizeni\n
 - Odpoved: ACCEPTED<cr> ...kladna odpoved
            REFUSED<cr>  ...zaporna odpoved
 Priklad
 -------
 User->Local RS
 
 -> GET OFFER<cr>
    FOR su_karvina<cr>
    DISTRIB<cr>
    <cr>
 <- <?XML ..... >
 end the connection
 
 -> GET OFFER<cr>
    FOR su_karvina<cr>
    DISTRIB
TIME FROM 2007-01-18 10:00 TO 2007-01-18 11:00<cr> <cr> <- <? XML .... > -> COMMIT<cr> DEVICE r1 DEVICE r5 DEVICE sw2 <cr> <- ACCEPTED -> COMMIT<cr> <- ACCEPTED end of the connection
Osobní nástroje