2018年6月11日月曜日

bxe(QLogic NetXtreme II BCM57840) did not link up with FreeBSD 11.1.

When I have install FreeBSD 11.1 on my server,  I have found that bxe(QLogic NetXtreme II BCM57840, 10GbE) did not link up.

My server is:

SuperMicro SuperServer1018R-WC0R
https://www.supermicro.com/products/system/1u/1018/sys-1018r-wc0r.cfm
CPU:
CPU: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz (2100.05-MHz K8-class CPU)
The network interface is a PCIe card:
bxe0: <QLogic NetXtreme II BCM57840 4x10GbE (B1) BXE v:1.78.90
I found that as following:
  1. With FreeBSD 11.1, bxe did not link up
  2. When trying to use PXE boot, then bxe linked up
  3. With Ubuntu 16.04, bxe linked up
So I tried some operations, and I have found that once, I down the bxe and then up the bxe, bxe linked up!

So, I decided to modify /etc/rc.d/netwait script as follwoing:

  • /etc/rc.conf
    ### Network link/usability verification options
    netwait_enable="YES"             # Enable rc.d/netwait (or NO)
    #netwait_ip=""                  # Wait for ping response from any IP in this list.
    netwait_timeout="60"            # Total number of seconds to perform pings.
    netwait_if="bxe0"                  # Wait for active link on each intf in this list.
    netwait_if_timeout="30"         # Total number of seconds to monitor link state.

    ###
    #
    #       # Handle SIGINT (Ctrl-C); force abort of while() loop
    #       trap break SIGINT
    #       while [ ${count} -le ${netwait_if_timeout} ]; do
    #
    ## ADDED
    #               /sbin/ifconfig ${wait_if} down 2>/dev/null
    #               /sbin/ifconfig ${wait_if} up 2>/dev/null
    ## ADDED
    #
    #               if output=`/sbin/ifconfig ${wait_if} 2>/dev/null`; then
    #                       if [ ${got_if} -eq 0 ]; then
    #
    ###
  • /etc/rc.d/netwait
            if [ -n "${netwait_if}" ]; then
                    any_error=0
                    for wait_if in ${netwait_if}; do
                            echo -n "Waiting for ${wait_if}"
                            link=""
                            got_if=0
                            count=1
                            # Handle SIGINT (Ctrl-C); force abort of while() loop
                            trap break SIGINT
                            while [ ${count} -le ${netwait_if_timeout} ]; do
    #
    # ADDED           
                                    /sbin/ifconfig ${wait_if} down 2>/dev/null
                                    /sbin/ifconfig ${wait_if} up 2>/dev/null
    # ADDED                             
    #

                                    if output=`/sbin/ifconfig ${wait_if} 2>/dev/null`; then
                                            if [ ${got_if} -eq 0 ]; then
                                                    echo -n ", interface present"
                                                    got_if=1
                                            fi
                                            link=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
                                            if [ -z "${link}" ]; then
                                                    echo ', got link.'
                                                    break
                                            fi
                                    fi
                                    sleep 1
                                    count=$((count+1))
                            done
This modification works well.

FreeBSD 11.1でbxe(QLogic NetXtreme II BCM57840, 10GbE)がリンクアップしない

あるサーバーにFreeBSD 11.1をインストールしたところ、bxe(QLogic NetXtreme II BCM57840, 10GbE)がリンクアップしないという現象に出会いました。

サーバーは
SuperMicro SuperServer1018R-WC0R
https://www.supermicro.com/products/system/1u/1018/sys-1018r-wc0r.cfm
で、CPUは、
CPU: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz (2100.05-MHz K8-class CPU)
ネットワークインターフェイスは、PCIeの拡張カードで10GbE×1の
bxe0: <QLogic NetXtreme II BCM57840 4x10GbE (B1) BXE v:1.78.90
というものです。

症状としては以下のようなものでした。
  1. FreeBSD 11.1ではリンクアップしない
  2. bxeでPXEによる起動を試みるとリンクアップする
  3. Ubuntu 16.04を入れるとリンクアップする
FreeBSD 11.1でいろいろと操作していると、起動後にifconfig bxe downとしてからifconfig bxe0 upとするとリンクアップすることがわかりました。

rc.dにそのような操作を追加してくれるようなスクリプトを探しましたが、ちょうどよいものがありません。/etc/rc.dにそのようなスクリプトを追加することを、最初、考えましたが、スクリプトの依存性の設定のために既存のスクリプトに少しだけ追記が必要です。しかし、そうしてしまうとOSのアップデートでその設定が失われてしまうかもしれません。

そこで、使っていない/etc/rc.d/netwaitを改造することにしました。これは次のような判断からです。
  1. netwaitを使う記述は/etc/rc.confにするので、netwaitの改造方法もrc.confに書いておく
  2. rc.confは今までのOSのアップデートの際には、書き変割らなかったので、netwaitの記述が失われても取り戻すことができる
  3. 変更はrc.confとnetwaitのみ
具体的には次のように設定しました。
  • /etc/rc.conf
    ### Network link/usability verification options
    netwait_enable="YES"             # Enable rc.d/netwait (or NO)
    #netwait_ip=""                  # Wait for ping response from any IP in this list.
    netwait_timeout="60"            # Total number of seconds to perform pings.
    netwait_if="bxe0"                  # Wait for active link on each intf in this list.
    netwait_if_timeout="30"         # Total number of seconds to monitor link state.

    ###
    #
    #       # Handle SIGINT (Ctrl-C); force abort of while() loop
    #       trap break SIGINT
    #       while [ ${count} -le ${netwait_if_timeout} ]; do
    #
    ## ADDED
    #               /sbin/ifconfig ${wait_if} down 2>/dev/null
    #               /sbin/ifconfig ${wait_if} up 2>/dev/null
    ## ADDED
    #
    #               if output=`/sbin/ifconfig ${wait_if} 2>/dev/null`; then
    #                       if [ ${got_if} -eq 0 ]; then
    #
    ###
  • /etc/rc.d/netwait
            if [ -n "${netwait_if}" ]; then
                    any_error=0
                    for wait_if in ${netwait_if}; do
                            echo -n "Waiting for ${wait_if}"
                            link=""
                            got_if=0
                            count=1
                            # Handle SIGINT (Ctrl-C); force abort of while() loop
                            trap break SIGINT
                            while [ ${count} -le ${netwait_if_timeout} ]; do
    #
    # ADDED           
                                    /sbin/ifconfig ${wait_if} down 2>/dev/null
                                    /sbin/ifconfig ${wait_if} up 2>/dev/null
    # ADDED                             
    #

                                    if output=`/sbin/ifconfig ${wait_if} 2>/dev/null`; then
                                            if [ ${got_if} -eq 0 ]; then
                                                    echo -n ", interface present"
                                                    got_if=1
                                            fi
                                            link=`expr "${output}" : '.*[[:blank:]]status: \(no carrier\)'`
                                            if [ -z "${link}" ]; then
                                                    echo ', got link.'
                                                    break
                                            fi
                                    fi
                                    sleep 1
                                    count=$((count+1))
                            done
netwaitではifconfigでネットワークインターフェイスが存在するかどうかを確かめているところの前でネットワークインターフェイスをdown、upしています。

こうすることでうまく動作するようになりました。今のところ、OSのアップデート程度の通信であれば動作しています。CIFSやNFSの利用でのようすをみてみることにします。

2018年6月3日日曜日

amazon.co.jpの中国発送の荷物を追跡する

日本のアマゾンで販売されいてるものの中で、中国からの発送になるものがあります。そのようなものを購入して、配送状況の確認をすると、
商品を発送しました。配送拠点を通過するまで配送業者による荷物の追跡はできません。
配送業者:中国邮政、お問い合わせ伝票番号:RX○○○○○CN (配送業者の連絡先)
というような、中国の郵便局の番号が表示されることがあります。この番号は、以下のサイトで追跡することができます。
  • http://en.4px.com/
    このサイトを開き、右側にある「TRACKING」のタブをクリックし、そこで、伝票番号を入れます。すると以下のような感じで追跡情報が表示されます。
    2018-○○-○○ xx:yy Domestic Air Cargo Termina,Shenzhen,China / Depart from facility to service provider.
    2018-○○-○○ xx:yy Sangda,Shenzhen,China / Shipment arrived at facility and measured
    2018-○○-○○ xx:yy Sangda,Shenzhen,China / Fpx pciked up shipment.
    2018-○○-○○ xx:yy Parcel information received
  • https://www.17track.net/en
    同じように伝票番号を入れて、「TRACK」をクリックします。すると、以下のように表示されます。
    Destination : Japan - Tracking consuming: 777 ms
        2018-○○-○○ xx:yy    CHINA, DONGGUAN, Dispatch from outward office of exchange
        2018-○○-○○ xx:yy    CHINA, Posting/Collection

    Origin : China - Tracking consuming: 222 ms
        2018-○○-○○ xx:yy    东莞互换局处理中心, 已出口直封
        2018-○○-○○ xx:yy    中国邮政集团公司东莞市国际邮件互换局兼交换站, 已出口开拆
        2018-○○-○○ xx:yy    广东东莞收寄中心, 已离开,下一站处理中心
        2018-○○-○○ xx:yy    广东东莞收寄中心, 已封发
        2018-○○-○○ xx:yy    广东东莞收寄中心, 已收寄
    右側にある「English」のチェックボックスをチェックすると英語での表示になります。

ヤマハの無線LANアクセスポイント WLX-402で社内用と来客用の無線ネットワークを分離する

ヤマハの無線LANアクセスポイント WLX-402
無線LAN アクセスポイント
https://network.yamaha.com/products/wireless_lan/wlx402/index
で、 社内用と来客用無線ネットワークを分離する設定をしてみました。

まず、2つあるLANポートの1番を社内LANへ、2番を来客用のLANへ接続します。来客用のLANは最終的には、インターネット接続用ルーターのあるポートに接続され、ここで、社内用のLANとフィルタなどで論理的に分離しています。

設定は、コントローラの役割を持ったWLX-402にログインして設定します(複数のWLX-402などがあり、別々の設定で運用している場合には、それぞれのWLX-402で設定します)。
  1. 「基本設定→LANポート設定」を開く
  2. 「アクセスVLAN ID (LAN1:1)」 を「1」に
  3. 「アクセスVLAN ID (LAN1:2)」 を「2」に
  4. 「グループ設定→グループN→無線設定→SSID管理」を開く
  5. VAPを追加
  6. 追加したVAPの「VLAN ID」を「2」に、その横のインタフェースを「LAN1:2」に

YAMAHA WLX-402 無線LAN アクセスポイント


職場で、ヤマハの無線LANアクセスポイント WLX-402
無線LAN アクセスポイント
https://network.yamaha.com/products/wireless_lan/wlx402/index
と、電源であるPoE電源のYPS-PoE-AT
YPS-PoE-AT
https://network.yamaha.com/products/options/yps-poe-at/index
を購入しました。

右はアクセスポイントの箱で大きさは300mm×350mmほど、左はPoEの箱です。
 

 
本体を取り出したところです。大きさはすこし縦長で長辺が約250mmほどでしょうか。
 全面には状態表示用のLEDが並んでいます。
 本体の後ろにはLANポートが2つ、コンソールポート、USBポート、電源コネクタなどがあります。
 本体の下には壁掛け金具と、無線LANの電波の反射板が入っていまいた。

 反射板は本体裏のくぼみに取り付けます。
 PoEの箱を開けたところです。
本体は200mm×100mm×50mmほどあり、かなり大きく感じます。
前面には接続するネットワークとのインタフェースと、WLX402へネットワーク接続と電源を供給するためのインタフェースがあります。
 
 裏には磁石があり、固定に使えるようになっています。
 電源ケーブルは2P+接地ケーブルがついたものです。
 電源ケーブルの抜け止めの金具が付属しています。
3Pの電源ケーブルに交換する場合には、この抜け止め金具がはまるものにする必要があります。

PoEアダプタを介して、既存のネットワークに接続したところです。
LANのインタフェースが2つあるので、WLX-402の仮想アクセスポイント機能と組み合わせて、社内用のネットワークと来客用のネットワークを分離できます。LANポートが1つのモデルだと、VLANを設定してVLANに対応したスイッチを使う必要があるので、少し面倒です。