Virtlab:Protokoly/Aktivační server

Z VirtlabWiki

< Virtlab:ProtokolyVerze z 22:28, 1. 8. 2007; zobrazit aktuální verzi
← Starší verze | Novější verze →
Přejít na: navigace, hledání

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

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 50002.
  • 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.
  • 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.

Popis protokolu

Pokyn rezervačního serveru aktivačnímu serveru ke znovunačtení databáze

  • Příkaz: "kill\n"
  • Argument (povinný): "kill:10\n"
  • Odpověď: Návratový kód.

Příklad:

 kill\n
 kill:10\n
 \n

Pokyn rezervačního serveru aktivačnímu serveru k ukočení činnosti

  • Příkaz: "kill\n"
  • Argument (povinný): kill:15\n"
  • Odpověď: Návratový kód.

Příklad:

 kill\n
 kill:15\n
 \n


Poznámky

  1. Volba příkazu kill a číselných kódů přímo vyplývá ze způsobu realizace oddělení serverů původně komunikujících skrze funkci OS kill.
  2. Kód aktivačního serveru zatím není ošetřen proti DoS útoku, který lze úspěšně realizovat odesláním signálu pro ukončení programu (9, 15)! V původní implementaci byl SIGTERM skutečně využíván pro ukončení aktivačního serveru (child process) rezervačním (parent). Situaci lze ošetřit buď pomocí iptables nebo kontrolou argumentů předávaných příkazem kill a navržením jiného mechanismu pro ukončení aktivačního serveru (je-li nějaký mechanismus pro ukončování vůbec nutný - postačilo by například, aby jej obsluha prostě killnula ručně).