PLIP: 並行線網際網路協議裝置¶
Donald Becker (becker@super.org) I.D.A. 超級計算研究中心, Bowie MD 20715
在某個時候,T. Thorn 可能會貢獻文字,Tommy Thorn (tthorn@daimi.aau.dk)
PLIP 簡介¶
本文件描述了 Net/LGX 的並行埠資料包推送器。此裝置介面允許兩個並行埠之間的點對點連線顯示為 IP 網路介面。
什麼是 PLIP?¶
PLIP 是並行線 IP,即透過並行埠傳輸 IP 資料包。 對於 PC 而言,顯而易見的選擇是印表機埠。 PLIP 是非標準的,但 [可以使用] 使用標準 LapLink 空印表機電纜 [也可以在 Turbo 模式下使用,使用 PLIP 電纜]。 [用於打包 IP 資料包的協議是由 Crynwr 發起的簡單協議。]
PLIP 的優點¶
它便宜,隨處可用,而且容易。
只需 PLIP 電纜即可連線兩臺 Linux 機器,而且可以用很少的錢製造出來。
連線兩臺 Linux 機器只需要一秒鐘的決定和幾分鐘的工作,無需搜尋 [受支援的] 網絡卡。 這在筆記型電腦的情況下尤其重要,因為網絡卡不易獲得。
不需要網絡卡還意味著,除了連線電纜之外,其他一切都是軟體配置 [原則上可以很容易地完成。]
PLIP 的缺點¶
無法像 SLIP 和 PPP 一樣透過調變解調器工作。 範圍有限,15 米。 只能用於連線三臺(?)Linux 機器。 無法連線到現有的乙太網。 不是標準(甚至不是像 SLIP 那樣的實際標準)。
效能¶
PLIP 輕鬆超越乙太網卡......(哎呀,我在做夢,但 *是* 快晚了。EOB)
PLIP 驅動程式詳細資訊¶
Linux PLIP 驅動程式是原始 Crynwr 協議的實現,它使用核心的並行埠子系統,以便在 PLIP 和其他服務之間正確共享並行埠。
IRQs 和觸發超時¶
當用於 PLIP 驅動程式的並行埠配置了 IRQ 時,只要透過電纜向其傳送資料,PLIP 驅動程式就會收到訊號,這樣,當沒有資料可用時,就不會使用該驅動程式。
但是,在某些機器上,很難(如果不是不可能)為某個並行埠配置 IRQ,主要是因為它被某些其他裝置使用。 在這些機器上,PLIP 驅動程式可以在無 IRQ 模式下使用,在這種模式下,PLIP 驅動程式會不斷輪詢並行埠以等待資料,如果此類資料可用,則對其進行處理。 這種模式不如 IRQ 模式高效,因為驅動程式必須每秒多次檢查並行埠,即使根本沒有傳送任何資料。 一些粗略的測量表明,就資料傳輸速度而言,使用無 IRQ 模式與 IRQ 模式相比,效能沒有明顯的下降。 主機驅動程式的機器上效能會有所下降。
當 PLIP 驅動程式在 IRQ 模式下使用時,用於觸發資料傳輸的超時(PLIP 驅動程式在嘗試握手傳輸某些資料時,在宣佈超時之前允許另一方的最大時間)預設為 500 微秒。 由於 IRQ 傳遞或多或少是立即的,因此此超時時間非常充分。
當在無 IRQ 模式下時,PLIP 驅動程式每秒輪詢並行埠 HZ 次(在本撰寫時,HZ 在大多數平臺上通常為 100,在 Alpha 上為 1024)。 在兩個此類輪詢之間,有 10^6/HZ 微秒。 例如,在 i386 上,10^6/100 = 10000 微秒。 很容易看出,觸發超時很可能在兩個此類輪詢之間過期,因為超時時間只有 500 微秒。 因此,需要在 PLIP 連線的 *另一側* 更改觸發超時時間,約為 10^6/HZ 微秒。 如果 PLIP 連線的兩側都在無 IRQ 模式下使用,則需要在兩側都進行此超時設定。
實際上,觸發超時時間可以短於上述計算。 這不是一個重要的問題,除非電線有故障,在這種情況下,長超時時間會在由於某種原因而丟失位時導致機器停頓。
可以在 Linux 中執行此更改的實用程式是 plipconfig,它是 net-tools 包的一部分(可以在 Documentation/Changes 檔案中找到其位置)。 一個示例命令是“plipconfig plipX trigger 10000”,其中 plipX 是適當的 PLIP 裝置。
PLIP 硬體互連¶
PLIP 使用幾種不同的資料傳輸方法。 第一種(也是早期版本的程式碼中唯一實現的一種)使用標準印表機“空”電纜一次傳輸四個位,使用連線到狀態位輸入的數位輸出。
第二種資料傳輸方法依賴於兩臺機器都具有雙向並行埠,而不是僅輸出 printer 埠。 這允許位元組寬度傳輸,並避免將半位元組重建為位元組,從而導致更快的傳輸。
並行傳輸模式 0 電纜¶
第一種傳輸模式的電纜是標準印表機“空”電纜,它使用第一個埠(機器 T)的數位輸出一次傳輸四個位,連線到第二個埠(機器 R)的狀態位輸入。 有五個狀態輸入,它們用作四個資料輸入和一個時鐘(資料選通)輸入,排列方式使得資料輸入位顯示為具有標準狀態暫存器實現的連續位。
實現此協議的電纜可以作為“空印表機”或“Turbo Laplink”電纜在市場上購買。 它可以由兩個 DB-25 公聯結器對稱連線而成,如下所示
STROBE output 1*
D0->ERROR 2 - 15 15 - 2
D1->SLCT 3 - 13 13 - 3
D2->PAPOUT 4 - 12 12 - 4
D3->ACK 5 - 10 10 - 5
D4->BUSY 6 - 11 11 - 6
D5,D6,D7 are 7*, 8*, 9*
AUTOFD output 14*
INIT output 16*
SLCTIN 17 - 17
extra grounds are 18*,19*,20*,21*,22*,23*,24*
GROUND 25 - 25
* Do not connect these pins on either end
如果您使用的電纜具有金屬遮蔽層,則應僅在一端將其連線到金屬 DB-25 外殼。
並行傳輸模式 1¶
第二種資料傳輸方法依賴於兩臺機器都具有雙向並行埠,而不是僅輸出 printer 埠。 這允許位元組寬度傳輸,並避免將半位元組重建為位元組。 此電纜不應在單向 printer (而不是 parallel)埠上使用,或者在未為 PLIP 配置機器時使用,因為它會導致輸出驅動程式衝突以及(不太可能的)損壞的可能性。
此傳輸模式的電纜應按如下方式構建
STROBE->BUSY 1 - 11
D0->D0 2 - 2
D1->D1 3 - 3
D2->D2 4 - 4
D3->D3 5 - 5
D4->D4 6 - 6
D5->D5 7 - 7
D6->D6 8 - 8
D7->D7 9 - 9
INIT -> ACK 16 - 10
AUTOFD->PAPOUT 14 - 12
SLCT->SLCTIN 13 - 17
GND->ERROR 18 - 15
extra grounds are 19*,20*,21*,22*,23*,24*
GROUND 25 - 25
* Do not connect these pins on either end
同樣,如果您使用的電纜具有金屬遮蔽層,則應僅在一端將其連線到金屬 DB-25 外殼。
PLIP 模式 0 傳輸協議¶
PLIP 驅動程式與模式 0 中的“Crynwr”並行埠傳輸標準相容。該標準規定了以下協議
send header nibble '0x8'
count-low octet
count-high octet
... data octets
checksum octet
每個八位位元組都作為以下內容傳送
<wait for rx. '0x1?'> <send 0x10+(octet&0x0F)>
<wait for rx. '0x0?'> <send 0x00+((octet>>4)&0x0F)>
要啟動傳輸,傳送機器輸出一個半位元組 0x08。 這會提高 ACK 線,從而觸發接收機器中的中斷。 接收機器停用中斷並提高自己的 ACK 線。
重申
(OUT is bit 0-4, OUT.j is bit j from OUT. IN likewise)
Send_Byte:
OUT := low nibble, OUT.4 := 1
WAIT FOR IN.4 = 1
OUT := high nibble, OUT.4 := 0
WAIT FOR IN.4 = 0