Protokol SLIP (Serial Line Internet Protocol) pracuje podobně jako protokol PPP na sériové lince s formátem IP. Pro svoji jednoduchost je vhodný pro komunikaci PLC-CU, nezajišťuje však detekci chyb (kontrolní součet v protokolu UDP je nepovinný). Kontrolu musí zajistit vyšší komunikační vrstva. Protokol SLIP je také vhodný pro spojení typu multidrop přes satelit.
Protokol vkládá IP datagramy přímo do sériové linky. Každý rámec je opatřen na začátku a na konci Esc-sekvencí END 0xC0. Znaky 0xC0 a 0xDB, které se vyskytnou uvnitř rámce, jsou nahrazeny takto:
příchozí IP datagram výsledný rámec SLIP začátek 0xC0 0xC0 0xDBDC 0xDB 0xDBDD konec 0xC0
Formát datagramu:
| END/8 | IP header | UDP header | MORSE pseudoframe | END/8 |
Formát IP datagramu je popsán v článku Formát UDP
datagramu IPGW pro MORSE. Následuje příklad datagramu s ESC znaky,
doplněn je krátký popis. Uživatelská data, zde E0 03 80 01
,
jsou obsažena uvnitř MORSE pseudoframe:
C045 0000 2800 0040 0040 1123 FB0A 6401 010A 6401 0280 1322 B800 1455 AA00 0090 8000 0000 00E0 0380 01C0 C0 |END/8 ...Esc-END 45 00 |vers/16| ...IP header 00 28 |IP hlen/16| 00 00 |No/16| 40 00 |Frag/16| 40 |ttl/8| 11 |protocol/8| 23 FB |hchs/16| 0A 64 01 01 |src IP/32| 0A 64 01 02 |dst IP/32| 80 13 |src port/16| ...UDP header 22 B8 |dst port/16| 00 14 |UDP len/16| 55 AA |chs/16| 00 00 |flags/16| ...MORSE pseudoframe 90 |PT/8| 80 |D/1|R/4|No/3| D=1 00 00 00 00 |morse addr/32| E0 03 80 01 |service request-Read GMT time/32| C0 |END/8 ...Esc-END
Příklad 1 – odeslání dat portem
Paket s daty BBBB přišel z CU 690F1083 do CU 690F1081 a je odeslán přes SCC2 protokolem SLIP:
10:06:35.011| |690F1081 690F1083|S02I IN 2|*09 7usr 0 BBBB 10:06:35.011 tx 40 | S02 C045 0000 2601 4440 0040 112E 1E0A 6401 0200 0000 0022 B800 0000 1293 5700 0009 0769 0F10 83BB BBC0
Komentář:
C0 ...Esc-END 4500 0026 0144 4000 4011 2E1E 0A64 0102 ...IPsrc 0000 0000 ...IPdst není definováno 22B8 0000 0012 9357 0000 09 ...typ paketu 07 ...D=0, CU->host, následuje adresa src 690F 1083 ...MORSE addr src BBBB ...data C0 ...Esc-END
Příklad 2 – čtení času GMT z DCE, přes síť
Simulovaný dotaz přišel protokolem SLIP do CU 690F1081 a je odeslán sítí MORSE do CU 690F1083. Opačným směrem se vrací odpověď:
10:09:04.902 rxsim 42 | S02 C045 0000 2800 0040 0040 1123 FB0A 6401 010A 6401 0280 1322 B800 14DC 1600 0090 8169 0F10 83E0 0380 01C0 10:09:04.903| |690F1083 690F1081|S02I OUT 4||90 1srv 0 E003 8001 10:09:05.080| |690F1081 690F1083|S02I IN 10|*92 1srv 0 E003 0001 4717 234B 00BA 10:09:05.081 tx 48 | S02 C045 0000 2E01 4640 0040 112E 140A 6401 0200 0000 0022 B800 0000 1A7A E700 0092 0169 0F10 83E0 0300 0147 1723 4B00 BAC0
Komentář k dotazu:
C0 4500 0028 0000 4000 4011 23FB 0A64 0101 ...IPsrc (PLC) 0A64 0102 ...IPdst (CU) 8013 22B8 0014 DC16 0000 90 81 ...D=1, host->CU, addr dst 690F 1083 ...MORSE addr dst E003 8001 ...data, servisní dotaz na čas C0
Komentář k odpovědi:
C0 4500 002E 0146 4000 4011 2E14 0A64 0102 ...IPsrc (CU) 0000 0000 ...IPdst není definováno 22B8 0000 001A 7AE7 0000 92 01 ...D=0, CU->host, addr src 690F 1083 ...MORSE addr src E003 0001 4717 234B 00BA ...data obsahující čas C0
Příklad 3 – komunikace s modemy Multidrop
___ |___| satellite | /|\ . . . . . . . . . . . . \|/ \|/ \|/ __|__ __|__ __|__ |_____|MD |_____|MD |_____|MD __|__ __|__ __|__ |_____|MR400 |_____|MR400 |_____|MR400 (L)oc IP: 00000001 00000002 00000003 MORSE addr: 690F0001 690F0002 690F0003
Modem multidrop (MD) vysílá paket na satelitní modem a ten jej transparentně vrací všem modemům MD, které jej slyší. Protokol SLIP aplikovaný na SCC mezi MORSE CU a MD umožňuje tuto komunikaci. Přijaté pakety adresované pro vlastní CU jsou zpracovány, ostatní jsou zahozeny. Příklad základní konfigurace CU s IP 00000001:
Nid|address |M | u s | L N |l w n g H|sTO Err Cent vTO hTO (0) 004A1E27 - S00| - R00|0 0 0 0 -| 15 SERV OFF 304 30 (1) 690F0001 S02 S00| - S03|0 0 0 0 -| 15 SERV OFF 304 30 (2) 00000000 S01 S00| - R02|0 0 0 0 -| 15 SERV OFF 304 30 (3) 00000000 S02 S00| - R03|0 0 0 0 -| 15 SERV OFF 304 30 (4) 00000000 S03 S00| - R04|0 0 0 0 -| 15 SERV OFF 304 30 Channel to Node Interface: retranslation | user+service lim id N A t m | N A t Base m sec brc han S e compr (0) 0 NO AR | 1 NO AR usr OFF usr OFF NONE (1) 0 NO AR | 2 MASK 00000000/08 usr OFF usr OFF NONE (2) 0 NO AR | 1 MASK 00000000/08 usr OFF usr OFF NONE (3) 1 NO AR | 0 MASK 00000000/08 usr OFF usr OFF NONE SCCs: n m g b p8 i s XRC D G o (0)RS232 ASYNC SW 19200N81 5 1600 --- D 0 MARS-A (1)RS232 ASYNC SW 19200N81 5 1600 --- D 0 MARS-A (2)RS232 ASYNC SW 19200N81 5 1600 --- D 0 MARS-A (3)RS232 ASYNC SW 19200N81 5 1600 --- D 0 SLIP INTERNET PROTOCOL GATEWAY: (L)oc IP:00000001h 0.0.0.1 MR(U):1500 M-IP-M: (A)rt:1; write (E)nable:ON (b)ase:690F0000 MAS(K):0000FFFF s(h)ift:0000 ->set Security off! (r)epeats:0000 Sec(u)rity:OFF (t)imeout:0 (p)roxy timeout:0s (f)rag size:400bytes (g)lue (append) up to:0packets Art1 ...je prázdná
Příklad 4 – komunikace se Setrem
Od verze 10.0.24.0 je možno spustit Setr s parametrem
-ns
, který provede lokální připojení přes SLIP. Protokol musí mít
nastavenu IP adresu 10.0.0.1, nejlépe pomocí parametru Defau(l)ts
for single host
. Setr pak automaticky použije adresu 10.0.0.2. Pro
spojení po SCC stačí 3 vodiče (Rx,Tx, GND). Příklady:
setr -ns ...lokální komunikace setr -ns -mh ...lokální komunikace + monitoring SCC setr -ns -mh -da690F1010 ...adresa připojeného nódu, komunikuje po síti
Setr s parametrem -ns
neprovádí address seek,
adresu nódu tedy může získat pouze pomocí parametru
-da
.
Příklad dotazu sts
vyslaného ze Setru, monitorováno v
CU:
11:21:47.442 rx;i 42 | S03 C045 0000 2800 0040 0040 1126 C30A 0000 020A 0000 0122 B822 B800 1449 A8 00 0090 8069 0F10 10E0 0A73 00C0 11:21:47.442| |690F1010 690F1010|S03I OUT 4||90 0srv 0 E00A 7300 11:21:47.442| |690F1010 690F1010|S03I IN 6|*92 0srv 0 A00A 3735 3330 11:21:47.442 tx 44 | S03 C045 0000 2A00 0A40 0040 1126 B70A 0000 010A 0000 0222 B822 B800 1690 BF 00 0092 0069 0F10 10A0 0A37 3533 30C0
Parametr -ns
je užitečný pro testování komunikace
CU-PLC, která probíhá protokolem SLIP.
INTERNET PROTOCOL GATEWAY: Defau(l)ts for single host (L)oc IP:0A000001h 10.0.0.1 suppress (H)eader:OFF MR(U):1400 M-IP-M: (A)rt:0; write (E)nable:ON (b)ase:00000000 MAS(K):00000000 s(h)ift:0000->set Security off! (r)epeats:0003 Sec(u)rity:ON (t)imeout:300 (p)roxy timeout:0s (f)rag size:400bytes (g)lue (append) up to:0packets IP-M-IP: (I)PArt:0 b(a)se:0A000001 (m)ask:00000000 IP(F)rag. size:552 MAS: (s)Art:single address; write (e)nable:ON (B)ase:690F1010 (M)ask:00000000 BEWARE! IF YOU CHANGE CONTENT OF THE ART TABLE, YOU SHOULD RESTART (INIT) THIS PROTOCOL! (P)inger (S)tatus Firewall (T)ype:0000 A(d)dress:00000000 Mas(k):00000000 Unix Time: e(n)able:OFF per(i)od:3600s time (H)ost:00000000 (q)uit >>
Protokol SLIP vyžaduje konfigurovat pouze:
Defau(l)ts | Defau(l)ts for single host — touto volbou se nastaví automaticky ostatní parametry pro komunikaci mezi IP adresami pro PC 10.0.0.2 a pro CU 10.0.0.1. Tyto parametry je možno vložit také ručně: |
(L)oc | (L)oc IP:0A000001h 10.0.0.1 — adresa protokolu SLIP |
MR(U) | MR(U):1400 — maximální délku přenášeného rámce |
(A)rt | (A)rt:0 — V případě spojení mezi dvěma CU po sériové lince použijeme konfiguraci jako při retranslaci do SCC s protokolem MARS-A. V parametrech SLIP použijeme režim M-IP-M a vložíme číslo tabulky (A)rt. Tabulka pak obsahuje pouze default gw na protějšího účastníka linky. |
(s)Art | (s)Art:single address — od verze 10.0.18.0 výběrem ze seznamu, ve starších verzích vložíme 0 a Art tabulku nevyplňujeme. |
(B)ase | (B)ase:690F1010 — adresa nódu připojenému k SCC s protokolem SLIP |
(M)ask | (M)ask:00000000 — maska pro jedinou adresu |
release 7.29 z 09/2005 – SLIP vložen do všech modulů pro Coldfire (MR400), není dále podporováno pro MR25
release 10.0.3.0 až 10.0.9.0 – v těchto verzích není protokol SLIP obsažen
release 10.0.18.0 z 10/2007 – defaulty pro režim „single address“, listbox pro volbu Art
release 10.0.24.0 z 12/2007 – parametr -ns pro komunikaci se Setrem