Domanda:
C'è un modo per inviare dati seriali su un livello ethernet fisico senza incapsulamento?
Uğur Gümüşhan
2012-01-05 05:06:10 UTC
view on stackexchange narkive permalink

Mi chiedo se posso usare il livello ethernet fisico come una porta seriale. È possibile? Il caso sarebbe leggere i segnali con un dispositivo elettronico senza occuparsi delle intestazioni di rete.

La mia risposta istintiva è di dirti di usare un OpenGear. Ma lo chiamerei anche incapsulamento. Anche se mi chiedo se ciò che considero incapsulamento non è davvero ciò che intendi con esso ...
Sei risposte:
user3624
2012-01-05 10:08:53 UTC
view on stackexchange narkive permalink

Sì, puoi assolutamente abbandonare i livelli del protocollo di rete e inviare i dati "direttamente". Ma probabilmente non lo vorrai.

Quello che fai è usare Ethernet Phy, magnetici e connettori standard. Ma invece di utilizzare un MAC Ethernet (controller di accesso ai media) si utilizza un FPGA per inviare / ricevere dati senza il sovraccarico di rete. Ciò è stato fatto per diverse interfacce "non del tutto compatibili con Ethernet" come Ethersound e altri protocolli industriali.

Una cosa che non puoi abbandonare è la natura del pacchetto. È comunque necessario trasmettere dati in pacchetti da 64 a circa 1500 byte (alcuni Phy consentono pacchetti fino a 8192 byte). Non è possibile trasmettere pacchetti inferiori a 64 byte o superiori a 1500. E si deve tenere conto del corretto "gap" tra i pacchetti. Ma hai il controllo completo su ciò che è nei pacchetti e su qualsiasi intestazione (se presente).

Sto sorvolando su molti dettagli, tuttavia. In realtà non è così facile ei requisiti sono diversi a seconda dello standard Ethernet che si desidera utilizzare (10/100/1000 mbps). In alcuni casi ci sono problemi di codifica del segnale da affrontare.

Ti consiglio di non farlo su Ethernet. Richiede una grande quantità di abilità per progettare la logica FPGA, abilità che la maggior parte delle persone non ha. E i vantaggi di farlo sono minimi. È molto più facile usare semplicemente i controller Ethernet standard e gli stack di protocolli associati che inventare le proprie cose.

I requisiti di lunghezza del pacchetto sono imposti per garantire un rilevamento e un ripristino affidabili delle collisioni. Se si utilizza una rete privata con una lunghezza massima del cavo diversa e le tempistiche dei tentativi, si potrebbero consentire pacchetti più o meno lunghi. Tuttavia, la codifica a livello di byte utilizzata su Ethernet richiede che i byte di dati vengano inviati consecutivamente senza pause, a differenza della seriale asincrona che può ospitare e preservare quantità arbitrarie di temporizzazione tra i byte.
@supercat Non è del tutto corretto, almeno non in questo contesto. Pacchetti più brevi potrebbero essere OK, ma pacchetti più lunghi non lo sarebbero (a meno che non sia specificato nella scheda tecnica di Phy). Il Phy sta facendo qualcosa chiamato "Baseline Wander Correction". Normalmente il Phy utilizza il gap tra pacchetti per ricalibrare la linea di base. Se questo non viene fatto abbastanza frequentemente, va fuori controllo e si ottengono errori di dati. La fisica moderna con un BWC migliore consente lunghezze di pacchetto più lunghe (a.k.a. Pacchetti Jumbo). Il rilevamento delle collisioni gioca un ruolo importante, ma non è tutta la storia.
RedGrittyBrick
2012-01-05 05:23:49 UTC
view on stackexchange narkive permalink

Puoi effettivamente eseguire RS232 su un cavo ethernet Cat5. Router e dispositivi simili a volte hanno porte "console" seriali con prese modulari 8P8C (jack RJ45).

Tuttavia, se si desidera inviare dati seriali tramite una scheda NIC Ethernet senza che appaiano pacchetti Ethernet effettivi sul cavo, sfortunato.

D'altra parte, molti produttori vendono convertitori da seriale a ethernet che possono essere usati in coppia per connettere in modo trasparente dispositivi seriali usando l'infrastruttura Ethernet. Cerca "Ethernet Serial"

Example from gridconnect.com

A volte questi vengono forniti con "ComPort Redirector Software" che crea una porta Com virtuale su un computer. Probabilmente funzionano con la maggior parte delle applicazioni che si aspettano una vera porta seriale. Potrebbero non funzionare se stai eseguendo piccole manipolazioni.

enter image description here

Inoltre, se c'è un interruttore intermedio, verrà * molto * confuso.
Scott Chamberlain
2012-01-05 05:32:11 UTC
view on stackexchange narkive permalink

Sulla base della tua domanda penso di sapere cosa vuoi, ma prima vorrei chiarire alcune cose.

  • Ethernet (o come lo standard si chiama IEEE 802.3) si trova sul livello 2 ( livello collegamento dati) del modello OSI.
  • Il filo (il cavo cat5 / 6 e i connettori RJ45) sono effettivamente definiti nel livello 1 ( livello fisico), potresti aver sentito parlare del termine 100BASE-T prima, che definisce il livello fisico.
  • Ethernet non deve essere eseguito su 100BASE-T e 100BASE-T non ha bisogno di trasportare Ethernet

Ora passiamo alla tua domanda:

Puoi acquistare dispositivi che trasporteranno seriale su 100BASE-T ma non faranno alcun incapsulamento. Questi dispositivi non funzioneranno con la rete domestica poiché lo switch / hub / router si aspetta che i pacchetti IEEE 802.3 arrivino lungo il cavo e non i pacchetti seriali.

Puoi anche ottenere dispositivi che funzioneranno in seriale su IP ma non è necessario utilizzare un cavo 100BASE-T (o Ethernet).

Shane Madden
2012-01-05 05:11:46 UTC
view on stackexchange narkive permalink

Sì e no; il rame è rame e il rame RJ45 funziona alla grande per le connessioni seriali, ma non confonderlo per Ethernet a meno che non stia parlando del protocollo Ethernet: switch e altri dispositivi Ethernet non approveranno.

A Cisco piace sicuramente questa idea, per esempio; il cavo standard della console seriale Cisco è RJ45 in rame all'estremità del dispositivo. enter image description here

Questo non sta usando il [livello fisico Ethernet] (http://en.wikipedia.org/wiki/Ethernet_physical_layer), sta usando solo cavi Ethernet. Il livello fisico include il metodo di segnalazione, i livelli di tensione, la piedinatura e così via.
@DavidSchwartz "senza avere a che fare con le intestazioni di rete" ci porta fuori dal regno di Ethernet. Detto questo, la mia ipotesi era che intendesse usare CAT5 per una connessione seriale. Uğur, è così?
Le intestazioni di rete non fanno parte del livello fisico Ethernet. Stai presumendo che intendesse qualcosa di non standard con il termine tecnico "[livello fisico Ethernet] (http://en.wikipedia.org/wiki/Ethernet_physical_layer)". Si potrebbe pensare che abbia detto "cavi Ethernet" o qualcosa di altrettanto informale.
@DavidSchwartz Hai assolutamente ragione, ma c'è anche una potenziale barriera linguistica. La formulazione della domanda mi ha portato a pensare che ethernet non fosse il termine che stava cercando. Eliminerò questa risposta se ciò non dovesse essere il caso - e ho votato contro la tua risposta per aver risposto alla domanda effettiva anziché alla domanda immaginata.
L'unica eccezione a quanto sopra a cui riesco a pensare è IMPI / seriale su LAN o IAMT / SOL che suppongo debba ancora richiedere l'encapulation (non ho mai rilevato il traffico con l'intenzione di verificarlo) - in accordo con David Schartz, fornisci maggiori informazioni per consentirci di aiutarti.
+1 Penso che questo risponda a ciò che originariamente aveva in mente l'OP.
Olin Lathrop
2012-01-05 21:15:47 UTC
view on stackexchange narkive permalink

No, non con quello che di solito viene inteso come "livello fisico" di Ethernet. Questo include il cavo, il magnete e il PHY (sta per "fisico"). Anche a livello fisico, non stai solo inviando livelli arbitrari 0 e 1 all'altra estremità.

Ci sono anche più cose chiamate "ethernet" che sono diverse a livello fisico. C'è l'originale, 10base-2, 10base-T, 100base-T, ecc. Quelli più vecchi e lenti usavano la codifica manchester, se ricordo bene. A 100 Mbit / s le cose sono state cambiate per ottenere la maggiore velocità. Anche se ti limitassi alle vecchie versioni con codifica manchester da 10 Mbit / s, la risposta sarebbe comunque no. I dati vengono intrinsecamente inviati in pacchetti. Questi hanno un preambolo privato del phy layer che viene utilizzato in parte per il rilevamento delle collisioni (in alcune varianti), la sincronizzazione dell'orologio e l'inizio dell'identificazione dei pacchetti. Poi c'è un segnale di uscita dal pacchetto, come gli impulsi di collegamento, che è gestito nel livello fisico. Poiché Ethernet è accoppiato tramite trasformatore, tutto deve avvenire a una frequenza minima poiché il livello CC viene perso da un'estremità all'altra. Questa è una delle ragioni per la codifica di manchester.

Potresti impostare una ethernet privata con solo un phy a ciascuna estremità e inviare singoli pacchetti. Tecnicamente non hai bisogno di un livello MAC se vuoi solo ottenere pacchetti di bit grezzi da un'estremità all'altra. In pratica, è probabilmente più facile usare anche un livello MAC a ciascuna estremità, anche se vuoi solo pacchetti di bit da un'estremità all'altra. I chip Phy sono solitamente progettati per essere guidati solo da specifici chip MAC, o talvolta si ottengono PHY e MAC tutti integrati in un chip, chiamato MAC / PHY. Puoi ancora inviare pacchetti di dati grezzi a livello MAC ignorando alcune delle cose del wrapper.

David Schwartz
2012-01-05 05:12:19 UTC
view on stackexchange narkive permalink

Per fare ciò, dovresti prendere il livello fisico PHYceiver da una scheda Ethernet e collegarlo a una porta seriale anziché a un controller Ethernet.

Tieni presente che puoi usare solo questo punto a punto. Non è possibile utilizzare hub o switch. Alcuni hub potrebbero funzionare per fortuna, ma gli switch sicuramente non lo faranno.

Qual è il problema esterno? Probabilmente ci sono modi molto migliori per portare a termine il lavoro.

Rendi il tuo ultimo paragrafo un commento. Idealmente dovresti porre tutte le domande pertinenti prima di rispondere.
No, non puoi "semplicemente" prendere un Phy e collegarlo a una porta seriale. Le interfacce standard MII / GMII / Etc di Phy richiedono la trasmissione di determinati simboli che non è possibile eseguire con una semplice connessione seriale.
@DavidKessner Hai ragione. Avresti bisogno di clock e codifica che il PHY potrebbe tollerare. L'idea è fondamentalmente un non-starter.
@Kellenjb Non ho bisogno di sapere che per rispondere alla sua domanda, sto solo suggerendo che sta facendo la domanda sbagliata.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...