390 likes | 712 Views
ARCNET. Token-bus net. Host 1. Host 2. Host n. Hastighed : max 10 Mbit/s Antal hosts pr. segment: 255 dvs ID: 1-255. Opstart af token. Hvis en maskine ikke er med d vs ingen INVITATION TO TRANSMIT i 420 S. Så råber den ''ALLE SKAL DØ''. RECONFIGURATION BURST. 111111110.
E N D
ARCNET Token-bus net Host 1 Host 2 Host n ..... Hastighed : max 10 Mbit/s Antal hosts pr. segment: 255 dvs ID: 1-255
Opstart af token Hvis en maskine ikke er med dvs ingen INVITATION TO TRANSMIT i 420 S. Så råber den ''ALLE SKAL DØ'' RECONFIGURATION BURST .... 111111110 111111110 111111110 765 gange Her efter: Når bus bliver IDLE vent 41S + 73 S * (255-ID) ------------------------------------------------------------------------------------ Hvis stabig IDLE så:Send INVITATION TO TRANSMIT til mig selv samt find næste hoat men mindre ID Ellers: Vent til en sender INVITATION TO TRANSMIT til mig
Find NID NID er ID'en for den host med nærmeste lavere ID. NID = ID NID--; Send ITT to NID hvis ingen aktivitet i 37,4 S så hop: ellers stop ca 3 km frem samt tilbage= 15 S + 15 S plus opstartstid ca 6.4 S.
Pakkeformat 11 bit Der sendes byte enheder: xxxx-xxxx 110 Invitation To Transmit: ITT 111111 EOT DID DID End Of Transmission: 04Hex To gange Distination ID
Pakkeformat Free Buffer Enquiries 111111 ENQ DID DID Enquiry: 85Hex To gange Distination ID Negative Acknowledgement Acknowledgement 111111 NAK 111111 ACK 15Hex 86Hex
Pakkeformat DataPakke ... 111111 SOH SID DID DID Source ID Start Of Header: 01Hex To gange Distination ID ... COUNT SC DATA CRC CRC 1-508 byte 256-N for short packet 16 15 2 1 X + X + X + X 512-N for long packet 0 for long packet
Data transmision Sender: ID Modtage: DID ITT til ID send FBE send ACK send DataPacket send ACK ITT til NID
TTP MEDL-tabel for note 3 Time Buf add. D L I T ..... 3 1 4 0 5 0 6 0 7 0 .....
Pakkeformat Normal 1 4 0-128 16 CRC Data Header StartOf Frame Header: 1 Bit I/N-frame og 3bit Mode change. Init 1 4 16 CRC Global time, current MEDL index, Membership vector
Tradmark (Name) Application area Technology Capacity Support Controller Area Network (CAN) automotive industry, cars, forklifters, tractors CSMA/CA 40m: 1 mbps 500m: 125kbps Intel embedded controllers (80517). Keil RT-51. DeviceNet from Allen Bradley Profibus Proces control Higher level token rotation. Lower level master slave. 2 mbps on rs-485 Siemens Simatic EN50170 P-net Proces control Virtual higher level token rotation. Lower level master slave. 76.8 kbps on rs-485 P-net from Proces Data EN50170 Attached Ressource Computer Network ARC-net Robot control, Marine automation Token bus. 2-5 mbps on rs-485 Mitsubitsi ATOMOS EN50170 Time Triggered Protocol Car automation, x-by wire TDMA 2 mbps Tttech, Tech Univ. of Vienna. Herman Kopetz LON proces control CSMA/CD ... 300-1.2 mbps EcheLon LonWorks Motorola Highway Adressable Remote Transducer (HART) Transducer communication FSK on 4-20 mA Master Slave 3-4 req. / sec. InterBus Procescontrol Master Slave. Summation Frame Protocol 500 kpbs on rs-485 Bitbus radio broadcast and telecommunication systems building automation Master Slave 300 kbps on rs-485 FireWire Connecting video and audio equiptment in PC-env. Combined Daisy Chain and TDMA 50-400 mbps on tw. pair. (4.5 m.) IEEE 1394 Fiber Distributed Data Interface (FDDI) all purpose LAN space applications Token ring 100 mbps on fiber optics or tw. pair. (100km, max 2 km betw. stations.) IEEE 802.5 Industrial Ethernet
Transmission Error Control Tilføje ekstra bit til pakker således at der bliver en given mindste afstand (Hamming afstand) mellem lovlige pakker. Fx. Even paritet som giver Hamming afstand på 2.
Transmission Error Control Hamming afstand: dmin = 5. Max antal fejl der kan detekteres: dmin - 1. Max antal fejl der kan rettes: (dmin - 1) / 2.
CRC - Cyclic Redundancy Check IEEE 802.3 CRC-32: x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1 Dvs 10000 0100 - 1100 0001- 0001 1101 - 1011 0111 ARCnet: CRC-16 x^16 + x15 + x ^ 2 + 1 Dvs 11000 0000 - 0000 0101 CAN bus: CRC-CCITT X^16+X^12+X^5+1 Dvs 10001 0000 - 0010 0001
CRC - Cyclic Redundancy Check • List af de mest brugte CRC polynomier • CRC-12: X^12+X^11+X^3+X^2+X+1 • CRC-16: X^16+X^15+X^2+1 • CRC-CCITT: X^16+X^12+X^5+1 • CRC-32: X^32+X^26+X^23+X^22+X^16+X^12+ • X^11+X^10+X^8+X^7+X^5+X^4+X^2+X+1 • The CRC-12 bruges til 6-bits streams. • Både CRC-16 og CCRC-CCITT er for 8 bits streams. • CRC-32 giver ekstra sikkerhed da der generes en 32 bit Checksum. • CRC-32 bruges i fx. (IEEE-802).
CRC - Cyclic Redundancy Check Polynomie: 10011 Data: 1101011011 110000 10011 :1101011011 10011 10011 10011 00001 00000 00010 00000 00101 00000 01011 Remainder Checksum 00000 1011
CRC - Cyclic Redundancy Check Message M=1010001101Pattern P=110101FCS F=1110 (to be calculated)
QoS – Quality of Service Network layer: • Reliability • Delay • Jitter • Bandwidth
QoS – Quality of Service Løsning: • Kapacitet nok. Fx. Telefonsystemet. • Reciver buffer. Øger delay og mininere jitter. • Begrænsning af senderes bithastighed. Minder delay, mindre jitter og mindre Bandwidth.
Bucket algoritmen • En sender buffer. • En cyklisk task der er aktiv hvis der er data i bufferen og sender disse data med en passende lav bidhastighed.
Token Bucket algoritmen • En sender buffer der fyldes med token token/sek. • Senderen sender sine data vha tokens dvs. Nbit pr token fra bufferen.
Application Presentation Session Transport Network Data Link Fysisk Netværkslaget Simpel routing Statisk routes med garanti egenskaber QoS
Application Presentation Session Transport Network Data Link Fysisk Transportlaget Muligøre data overførsel. Tilpasning af QoS faktorerne.
Tilpasning af QoS TCP: Pålidelig, stort jitter og delay. UDP: Upålidelig, mindre jitter og delay. RTP: Upålidelig, ingen jitter og mindre delay.
Application Presentation Session Transport Network Data Link Fysisk API RPC, RMI og CORBA Socket
Socket int sock; sock=socket(<adress family>,<socket type>,<protocol>); bind(sock,<server adress>,<adress length>); listen(sock,<queue size>); newsock=accept(sock,<peer adress>,<adress length>) sock=socket(<adress family>,<socket type>,<protocol>); bind(sock,<server adress>,<adress length>); connect(sock,<server adress>,<adress length>)
RPC program TSTPROG { version TSTVERS { int TSTSTRING(string) = 1; } =1; } = 0x20000099; int * tststring_1(argp, clnt) char **argp; CLIENT *clnt; { static int clnt_res; memset((char *)&clnt_res, 0, sizeof (clnt_res)); if (clnt_call(clnt, TSTSTRING, (xdrproc_t) xdr_wrapstring, (caddr_t) argp, (xdrproc_t) xdr_int, (caddr_t) &clnt_res, TIMEOUT) != RPC_SUCCESS) { return (NULL); } return (&clnt_res); }
RPC program TSTPROG { version TSTVERS { int TSTSTRING(string) = 1; } =1; } = 0x20000099; #include <stdio.h> #include "rpcprog.h" int * tststring_1(msg) char **msg; { static int result; fprintf(stderr,"strang: %s\n", *msg); result =4; return (&result); }
RPC program TSTPROG { version TSTVERS { int TSTSTRING(string) = 1; } =1; } = 0x20000099; #include <stdio.h> #include "rpcprog.h" main(argc, argv) int argc; char *argv[]; { CLIENT *cl; int *resultat; char *server; char *message; server= argv[1]; message= argv[2]; cl= clnt_create(server,TSTPROG, TSTVERS,"tcp"); resultat= tststring_1(&message,cl); printf("resultat; %d\n",*resultat); }
1.Write and compile Java code for interfaces 2.Write and compile Java code for implementation classes 3.Generate Stub and Skeleton class files from the implementation classes 4.Write Java code for a remote service host program 5.Develop Java code for RMI client program 6.Install and run RMI system
Interface public interface Calculator extends java.rmi.Remote { public long add(long a, long b) throws java.rmi.RemoteException; public long sub(long a, long b) throws java.rmi.RemoteException; public long mul(long a, long b) throws java.rmi.RemoteException; public long div(long a, long b) throws java.rmi.RemoteException; }
Implementation public class CalculatorImpl extends java.rmi.server.UnicastRemoteObject implements Calculator { public CalculatorImpl() throws java.rmi.RemoteException { super(); } public long add(long a, long b) throws java.rmi.RemoteException { return a + b; } public long sub(long a, long b) throws java.rmi.RemoteException { return a - b; } public long mul(long a, long b) throws java.rmi.RemoteException { return a * b; } public long div(long a, long b) throws java.rmi.RemoteException { return a / b; } }
Client import java.rmi.Naming; import java.rmi.RemoteException; import java.net.MalformedURLException; import java.rmi.NotBoundException; public class CalculatorClient { public static void main(String[] args) { try { Calculator c = (Calculator) Naming.lookup( "rmi://localhost /CalculatorService"); System.out.println( c.sub(4, 3) ); System.out.println( c.add(4, 5) ); } catch (MalformedURLException murle) { System.out.println(murle); } catch (RemoteException re) { System.out.println(re); } catch (NotBoundException nbe) { System.out.println(nbe); } catch (java.lang.ArithmeticException ae) { System.out.println(ae); } } }
Server import java.rmi.Naming; public class CalculatorServer { public CalculatorServer() { try { Calculator c = new CalculatorImpl(); Naming.rebind("rmi://localhost:1099/CalculatorService", c); } catch (Exception e) { System.out.println("Trouble: " + e); } } public static void main(String args[]) { new CalculatorServer(); } }