F.6. 加入網路裝置

在 Red Hat Enterprise Linux 中加入網路裝置的過程跟過去大相逕庭。這是因為核心已經從 2.4 版升級到 2.6 版:

第 F.6.1 節 描述了如何將 qeth 裝置加進 Red Hat Enterprise Linux 的既有情形中。如果您打算安裝其他 zSeries 的網路介面,第 F.6.2 節 會是很好的參考資料。

F.6.1. 加入 qeth 裝置

首先先看看 qeth 裝置的驅動程式模組是否已經載入。

# lsmod | grep qeth
qeth                  135240  0
qdio                   45360  2 qeth
ipv6                  303984  13 qeth
ccwgroup               15104  1 qeth

如果 lsmod 指令顯示模組尚未被載入,請執行 modprobe 載入這些模組:

# modprobe qeth

接下來,建立 qeth 群組裝置。

# echo <read_device_bus_id>,<write_device_bus_id>,<data_device_bus_id>
  > /sys/bus/ccwgroup/drivers/qeth/group

由於這指令的長度關係,我們將它分成兩行顯示。

再接下來的例子中,read_device_bus_id 是 0.0.0600,write_device_bus_id 是 0.0.0601,同時 data_device_bus_id 是 0.0.0602。這裝置是 z/VM 虛擬網路卡,我們打算使用的 IP 位址是 192.168.70.69。

# echo 0.0.0600,0.0.0601,0.0.0602 > /sys/bus/ccwgroup/drivers/qeth/group

接下來,確定 qeth 群組裝置是否建立正確。

# ls /sys/bus/ccwgroup/drivers/qeth
0.0.0600  0.0.09a0  group  notifier_register

您可以選擇是否要加入一個連接埠名稱。首先,先確定是否有使用連接埠名稱的必要。

# cat /sys/bus/ccwgroup/drivers/qeth/0.0.0600/portname
no portname required

這訊息表示您不需要提供連接埠名稱。

要加入連接埠名稱,請先確定裝置都已離線,然後使用以下指令:

注注意
 

當您加入連接埠名稱時,裝置一定要離線。

# echo <portname> > /sys/bus/ccwgroup/drivers/qeth/0.0.0600/portname

接下來,讓裝置重新上線:

# echo 1 /sys/bus/ccwgroup/drivers/qeth/0.0.0600/online

並檢查裝置的狀態:

# cat /sys/bus/ccwgroup/drivers/qeth/0.0.0600/online
1

傳回值「1」表示裝置已經上線;而「0」表示裝置是離線的。

檢查裝置是否已經指定了介面名稱:

# cat /sys/bus/ccwgroup/drivers/qeth/0.0.0600/if_name
eth1

要改變 if_name 的值,請使用以下指令:

# echo <new_if_name> > /sys/bus/ccwgroup/drivers/qeth/0.0.0600/if_name

您可以選擇性地設定額外參數與功能,視您設定系統的方式與所需要的功能而定。

欲了解這些功能的使用資訊,請參閱http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdfLinux for zSeries and S/390 Device Drivers, Features, and Commands)。

現在您得為新介面建立設定檔。網路介面的設定檔都位於 /etc/sysconfig/network-scripts/ 目錄下。

這些網路設定檔的命名方式為 ifcfg-<device>,其中的 device 是位於稍早建立的 qeth 群組裝置中,if_name檔案裡的值;這例子中是 eth1

如果另一個裝置的同名檔案已經存在,那麼最簡單的方式,就是給這檔案一個新名稱。

# cd /etc/sysconfig/network-scripts
# cp ifcfg-eth0 ifcfg-eth1

如果您沒有事先定義好的類似檔案,您就必須建立新檔。請使用這個 ifcfg-eth0 例子為樣板,建立您所需的檔案。

/etc/sysconfig/network-scripts/ifcfg-eth0
# IBM QETH
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:06:29:FB:5F:F1
IPADDR=9.12.20.136
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.09a0,0.0.09a1,0.0.09a2
TYPE=Ethernet

編輯新的 ifcfg-eth1 檔案。

暫時移除 HWADDR 那一行。

修改 DEVICE 敘述,以反映您 ccwgroup 中的 if_name 檔案內容。

修改 IPADDR 敘述,以反映您新介面的 IP 位址。

如果需要的話,一併修改 NETMASK 敘述。

如果您希望開機的時候一併啟動,那麼請將 ONBOOT 一欄設為 yes

確定 SUBCHANNELS 敘述跟您 qeth 裝置的硬體位址相同。

/etc/sysconfig/network-scripts/ifcfg-eth1
# IBM QETH
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.70.87
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.0600,0.0.0601,0.0.0602
TYPE=Ethernet

您需要為 qeth 裝置設定一個別名,並紀錄在 /etc/modprobe.conf 中。請編輯這檔案,加入介面的別名。

/etc/modprobe.conf
alias eth0 qeth
alias eth1 qeth
options dasd_mod dasd=0.0.0100,0.0.4b19

現在您可以啟動新介面:

# ifup eth1

檢查這介面的狀態:

# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 02:00:00:00:00:01
          inet addr:192.168.70.87  Bcast:192.168.70.255  Mask:255.255.255.0
          inet6 addr: fe80::ff:fe00:1/64 Scope:Link
          UP BROADCAST RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:23 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:644 (644.0 b)  TX bytes:264 (264.0 b)

請留意 ifconfig 執行結果中,第一行的 HWaddr 欄位。請把這欄位之後的值加到 ifcfg-eth1 檔案中,底下這行是個範例:

HWADDR=02:00:00:00:00:01

現在 ifcfg-eth1 看起來如下:

# IBM QETH
DEVICE=eth1
HWADDR=02:00:00:00:00:01
BOOTPROTO=static
IPADDR=192.168.70.69
NETMASK=255.255.255.0
ONBOOT=yes
NETTYPE=qeth
SUBCHANNELS=0.0.0600,0.0.0601,0.0.0602
TYPE=Ethernet

檢查新介面的路由資訊:

# route
Kernel IP routing table
Destination     Gateway         Genmask        Flags Metric Ref  Use Iface
192.168.70.0    *               255.255.255.0  U     0      0      0 eth1
9.12.20.0       *               255.255.255.0  U     0      0      0 eth0
169.254.0.0     *               255.255.0.0    U     0      0      0 eth1
default         pdlrouter-if5.p 0.0.0.0        UG    0      0      0 eth0

請使用 ping 指令看是否能接觸到閘道器,以驗證您的改變是否正確:

# ping -c 1 192.168.70.8
PING 192.168.70.8 (192.168.70.8) 56(84) bytes of data.
64 bytes from 192.168.70.8: icmp_seq=0 ttl=63 time=8.07 ms

如果預設的路徑資訊改變,請一併更新 /etc/sysconfig/network

F.6.2. 加入網路裝置的快速指引

要為 zSeries 系列加入新的網路介面,有幾項基本工作要做。

底下一節將為您解說安裝 zSeries 網路裝置驅動程式的每個步驟之基本資訊。

F.6.2.1. 採用 LCS 裝置驅動程式

區域網路通道工作站(LCS,LAN channel station)裝置驅動程式支援 OSA-2 乙太網路 / 環狀網路、非 QDIO 模式的 OSA-Express 高速乙太網路、以及非 QDIO 模式的 OSA-Express 高速環狀網路。對 z990 來說,LCS 驅動程式還支援非 QDIO 模式的十億位元(Gigabit)乙太網路(含 1000Base-T)。

根據加入介面的種類,LCS 驅動程式會指定以下其中一種基本介面名稱:給 OSA-Express 高速乙太網路與十億位元乙太網路使用的 eth<n>;或是給環狀網路使用的tr<n>,其中 <n> 是獨一無二的整數,以區別該裝置。 <n> 為 0,表示是第一個裝置,1 為第二個,餘此類推。

  • 載入裝置的驅動程式:

    # modprobe lcs
  • 建立群組裝置:

    # echo <read_device_bus_id>,<write_device_bus_id> 
    > /sys/bus/ccwgroup/drivers/lcs/group

    由於這指令的長度關係,我們將它分成兩行顯示。

  • 設定裝置。

    OSA 卡能為單一 CHPID 提供多達 16 組連接埠。預設上 LCS 群組裝置會使用第 0 號連接埠。要採用其他連接埠,請使用類似以下的指令:

    # echo <portno> > /sys/bus/ccwgroup/drivers/lcs/<device_bus_id>/portno

    如果要更進一步了解設定 LCS 驅動程式的相關資訊,請參閱:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 將裝置上線:

    # echo 1 /sys/bus/ccwgroup/drivers/lcs/<read_device_bus_id>/online
  • 定義別名。

    根據要加入的介面種類,請在 /etc/modprobe.conf 檔案中加入類似底下這一行:

    eth<n> alias lcs
    tr<n> alias lcs
  • 為設定建立 script。

    /etc/sysconfig/network-scripts/ 目錄中建立一個檔案,檔名近似以下範例:

    ifcfg-eth<n>
    ifcfg-tr<n>

    這檔案看起來如下:

    /etc/sysconfig/network-scripts/ifcfg-eth0
    # IBM LCS
    DEVICE=eth0
    BOOTPROTO=static
    HWADDR=00:06:29:FB:5F:F1
    IPADDR=9.12.20.136
    NETMASK=255.255.255.0
    ONBOOT=yes
    NETTYPE=lcs
    SUBCHANNELS=0.0.09a0,0.0.09a1
    PORTNAME=0
    TYPE=Ethernet

    根據要加入的介面種類,DEVICE 參數應該是以下之一:

    DEVICE=eth<n>
    DEVICE=tr<n>
  • 啟動裝置。

    根據要加入的介面種類,請使用 ifup 指令:

    # ifup eth<n>
    # ifup tr<n>

F.6.2.2. 採用 QETH 裝置驅動程式

QETH 網路驅動程式支援 zSeries HiperSockets、OSA-Express 高速乙太網路、十億位元乙太網路(含 1000Base-T)、高速環狀網路、以及使用 QDIO 模式的 ATM 功能(模擬成乙太區域網路)。

根據要加入的介面種類,QETH 驅動程式會指定底下三者之一的基本名稱:

  • HiperSocket 裝置的 hsi<n>

  • OSA-Express 高速乙太網路與十億位元乙太網路的 eth<n>

  • 環狀網路用的 tr<n>

其中 <n> 是個獨一無二的整數,用來代表該裝置。<n> 如果為 0,代表第一個裝置,1 代表第二個裝置,餘此類推。

  • 載入裝置的驅動程式:

    # modprobe qeth
  • 建立群組裝置:

    # echo <read_device_bus_id>,<write_device_bus_id>,<data_device_bus_id>
      > /sys/bus/ccwgroup/drivers/qeth/group

    由於這指令的長度關係,我們將它分成兩行顯示。

  • 設定裝置。

    如果要更進一步了解設定 QETH 驅動程式的相關資訊,請參閱:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 將裝置上線:

    # echo 1 /sys/bus/ccwgroup/drivers/qeth/<read_device_bus_id>/nline
  • 定義別名。

    根據要加入的介面種類,請在 /etc/modprobe.conf 檔案中加入類似以下的一行:

    hsi<n> alias qeth
    eth<n> alias qeth
    tr<n> alias qeth
  • 為設定建立 script。

    /etc/sysconfig/network-scripts/ 目錄中建立一個檔案,檔名近似以下範例:

    ifcfg-hsi<n> 
    ifcfg-eth<n>
    ifcfg-tr<n>

    這檔案看起來像:

    /etc/sysconfig/network-scripts/ifcfg-eth0
    # IBM QETH
    DEVICE=eth0
    BOOTPROTO=static
    HWADDR=00:06:29:FB:5F:F1
    IPADDR=9.12.20.136
    NETMASK=255.255.255.0
    ONBOOT=yes
    NETTYPE=qeth
    SUBCHANNELS=0.0.09a0,0.0.09a1,0.0.09a2
    TYPE=Ethernet

    根據要加入的介面種類,DEVICE 參數應該類似以下之一:

    DEVICE=hsi<n>
    DEVICE=eth<n>
    DEVICE=tr<n>
  • 啟動裝置。

    根據要加入的介面種類,請使用 ifup 指令:

    # ifup hsi<n>
    # ifup eth<n>
    # ifup tr<n>

F.6.2.3. 採用 CTC 裝置驅動程式

通道對通道(CTC,Channel-to-Channel)是大型主機間的典型高速傳輸連接。CTC 裝置的驅動程式能在兩部 zSeries 與 S/390 類的 Linux 之間,或是一台 zSeries 與 S/390 類的 Linux 與大型主機作業系統(例如 z/OS、OS/390、z/VM、或 z/VSE)之間,建立點對點 TCP/IP 或 tty 連線。

CTC 驅動程式會指定類似以下的基本介面名稱:

ctc<n>

其中 <n> 是個獨一無二的整數,用來代表該裝置。<n> 如果為 0,代表第一個裝置,1 代表第二個裝置,餘此類推。

  • 載入裝置的驅動程式:

    # modprobe ctc
  • 建立群組裝置:

    # echo <read_device_bus_id>,<write_device_bus_id> 
    > /sys/bus/ccwgroup/drivers/ctc/group

    由於這指令的長度關係,我們將它分成兩行顯示。

  • 設定裝置。

    設定通訊協定:

    # echo <protocol> /sys/bus/ccwgroup/drivers/ctc/<device_bus_id>/protocol

    <protocol> 為 0、1、2、或 3。

    0 — 這通訊協定提供了非 OS/390 或 z/OS 等電腦的相容能力,例如 VM TCP 服務的電腦。這是預設值。

    1 — 這通訊協定為 Linux 類的電腦提供了加強型封裝檢查。

    2 — 這通訊協定為 Linux 類電腦,提供了以 CTC 為基礎的 tty 連線。

    3 — 這通訊協定為 OS/390 或 z/OS 類電腦提供了相容能力。

    如果要更進一步了解設定 CTC 驅動程式的相關資訊,請參閱:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 將裝置上線:

    # cho 1 /sys/bus/ccwgroup/drivers/lcs/<read_device_bus_id>/online
  • 定義別名。

    根據要加入的介面種類,請在 /etc/modprobe.conf 中加入類似以下的一行:

    ctc<n> alias ctc
  • 為設定建立 script。

    請在 /etc/sysconfig/network-scripts/ 目錄中,用以下的命名方式建立一個檔案:

    ifcfg-ctc<n>

    這檔案看起來如下:

    /etc/sysconfig/network-scripts/ifcfg-ctc0
    # IBM CTC
    DEVICE=ctc0
    BOOTPROTO=static
    IPADDR=192.168.70.136
    GATEWAY=172.16.70.136
    NETMASK=255.255.255.255
    ONBOOT=yes
    SUBCHANNELS=0.0.1b00,0.0.1b01
    NETTYPE=ctc
    CTCPROT=0
    TYPE=CTC
  • 啟動裝置。

    根據要加入的介面種類,請使用 ifup 指令:

    # ifup ctc<n>

F.6.2.4. 採用 IUCV 裝置驅動程式

使用者間通訊載具(IUCV,Inter-User Communication Vehicle)是虛擬機器的通訊機制,能讓使用虛擬機器的用戶端,跟另一個虛擬機器用戶端(或控制程式,甚至是自己)互相通訊。zSeries 與 S/390 的 Linux IUCV 裝置驅動程式是網路裝置的驅動程式,利用 IUCV 在不同的虛擬機器使用者 ID 間通訊,或讓 Linux 用戶端與另一個虛擬機器用戶端(例如 TCP/IP 服務電腦)通訊。

IUCV 驅動程式的基本介面名稱如下:

iucv<n>

其中 <n> 是個獨一無二的整數,用來代表該裝置。<n> 如果為 0,代表第一個裝置,1 代表第二個裝置,餘此類推。

  • 載入裝置的驅動程式:

    # modprobe netiucv
  • 建立 IUCV 裝置:

    # echo <peer_id> > /sys/bus/iucv/drivers/netiucv/connection

    其中 <peer_id> 是您想要連接的虛擬機器用戶端 ID。IUCV 驅動程式會將這 ID 轉譯成大寫。這個值多半是TCPIP。

    這會建立如下的 sysfs 架構:

    cat /sys/bus/iucv/drivers/netiucv/netiucv<n>

    其中 <n> 是個獨一無二的整數,用來代表該裝置。<n> 如果為 0,代表第一個裝置,1 代表第二個裝置,餘此類推。

  • 設定裝置。

    如果需要的話,設定最大的緩衝區大小:

    # echo <value> > /sys/bus/iucv/drivers/netiucv/netiucv<n>/buffer
      

    其中 <value> 是您打算設定的位元組大小。如果您設定的值超出範圍,那系統會忽略這個值。

    最大緩衝區大小所能接受的範圍,端看 MTU 而定。這個值的範圍從 < 最小 MTU + 標頭大小 > 到 < 最大 MTU + 標頭大小 >。通常標頭的大小為 4 個位元組。最大緩衝區大小的預設值為 32768 位元組(32 KB)。

    如果要更進一步了解設定 IUCV 驅動程式的相關資訊,請參閱:

    http://oss.software.ibm.com/developerworks/opensource/linux390/docu/lx26apr04dd01.pdf (Linux for zSeries and S/390 Device Drivers, Features, and Commands)

  • 定義別名。

    根據要加入的介面種類,請在 /etc/modprobe.conf 中加入類似以下的一行:

    iucv<n> alias netiucv
  • 為設定建立 script。

    請在 /etc/sysconfig/network-scripts/ 目錄中,用以下的命名方式建立一個檔案:

    ifcfg-iucv<n>

    這檔案看起來像:

    /etc/sysconfig/network-scripts/ifcfg-iucv0
    # IBM IUCV
    DEVICE=iucv0
    BOOTPROTO=static
    IPADDR=192.168.70.136
    GATEWAY=172.16.70.136
    NETMASK=255.255.255.255
    ONBOOT=yes
    NETTYPE=iucv
    PEERID=TCPIP
    TYPE=IUCV
  • 啟動裝置。

    根據要加入的介面種類,請使用 ifup 指令,類似以下範例:

    # ifup iucv<n>