スキップしてメイン コンテンツに移動

米国の固定ブロードバンド接続について:2018年12月FCC統計

米国の固定ブロードバンド接続について、前回より新しいデータが公開されたので早速Postgressにデータをインポートしてみました。データは、前回と同じく、こちらから入手しました。(データは2018年12月時点のデータで、ダウンロードリンクはここです。)

データサイズは前回と同じく10GBほどで、あまり変わりません。すでにブロードバンド接続は接続数で見たときに、頭打ちであるということですが、前回クエリした結果と同じく、接続速度の改善がどの程度あるのか興味のあるところです。

なお今回のデータは、head -n 1でヘッダーを見たところ、前回のヘッダーの省略名のようでしたが、項目自体は変わりないようでした。
前回のヘッダ
$ head -n1 Fixed_Broadband_Deployment_Data__June__2017_Status_V1.csv
Logical Record Number,Provider ID,FRN,Provider Name,DBA Name,Holding Company Name,Holding Company Number,Holding Company Final,State,Census Block FIPS Code,Technology Code,Consumer,Max Advertised Downstream Speed (mbps),Max Advertised Upstream Speed (mbps),Business,Max CIR Downstream Speed (mbps),Max CIR Upstream Speed (mbps)
今回のヘッダ
$ head -n 1 fbd_us_with_satellite_dec2018_v2.csv
LogRecNo,Provider_Id,FRN,ProviderName,DBAName,HoldingCompanyName,HocoNum,HocoFinal,StateAbbr,BlockCode,TechCode,Consumer,MaxAdDown,MaxAdUp,Business,MaxCIRDown,MaxCIRUp

なお、今回、データベースをUTF8で作成したいので、PostgresはDebian10/busterにインストールしました。(windowsではdbのロケールはUTF-8に設定できません。また、windowsでのcopyコマンドが32bitのため、データ分割など手間がかかるので、linuxで作成しています。)

1. databaseの作成。
今回のデータベースは、usfixedbbユーザがオーナーで、エンコーディングはUTF-8、ロケールはja_JP.UTF-8にてDBを作成します。

$ sudo apt-get install postgres
$ sudo -u postgres -i

$ psql
psql (11.7 (Debian 11.7-0+deb10u1))
"help" でヘルプを表示します。

postgres=# create user usfixedbb WITH PASSWORD 'Password' CREATEDB;
CREATE ROLE
postgres=# create database usfixedbb with OWNER=usfixedbb ENCODING='UTF-8' LC_COLLATE='ja_JP.UTF-8' LC_CTYPE='ja_JP.UTF-8';
CREATE DATABASE
postgres=# GRANT pg_read_server_files TO usfixedbb;
GRANT ROLE
postgres=# \q
2.テーブルの作成とデータのインポート
先に、ダウンロードしたデータを/tmp以下に解凍し保存しておきます。
cd /tmp
unzip US-Fixed-with-Satellite-Dec2018.zip
Archive:  US-Fixed-with-Satellite-Dec2018.zip
  inflating: fbd_us_with_satellite_dec2018_v2.csv

psql -U usfixedbb -h localhost -d usfixedbb;
ユーザ usfixedbb のパスワード:
psql (11.7 (Debian 11.7-0+deb10u1))
SSL 接続 (プロトコル: TLSv1.3、暗号化方式: TLS_AES_256_GCM_SHA384、ビット長: 256、圧縮: オフ)
"help" でヘルプを表示します。

DROP TABLE dec2018;
CREATE TABLE dec2018
(
 LogRecNo TEXT NOT NULL,
 Provider_Id TEXT,
 FRN TEXT,
 ProviderName TEXT,
 DBAName TEXT,
 HoldingCompanyName TEXT,
 HocoNum TEXT,
 HocoFinal TEXT,
 StateAbbr TEXT,
 BlockCode TEXT,
 TechCode TEXT,
 Consumer TEXT,
 MaxAdDown TEXT,
 MaxAdUp TEXT,
 Business TEXT,
 MaxCIRDown TEXT,
 MaxCIRUp TEXT,
 PRIMARY KEY (LogRecNo)
); 
usfixedbb=> \q
今回のデータのエンコードは, nkf -gで調べたところ、どういうわけか、SJISでした。(英語以外のプロバイダ名称がありました...さすがアメリカ。)そのため、先にicovで元データをutf-8に変換しておきます。(外字や機種依存文字もあるかもしれないので、変換前のエンコーディングをSJISではなく、CP932でもよいのですが、念のためWINDOWS-31Jにしておきました。)
time iconv -f WINDOWS-31J -t UTF8 fbd_us_with_satellite_dec2018_v2.csv -o fbd_us_with_satellite_dec2018_v2.utf8.csv

real    3m2.465s
user    1m14.204s
sys     0m17.505s
続いて、ダウンロード・解凍・変換したデータをロードします。
$ psql -U usfixedbb -h localhost -d usfixedbb
ユーザ usfixedbb のパスワード:
psql (11.7 (Debian 11.7-0+deb10u1))
SSL 接続 (プロトコル: TLSv1.3、暗号化方式: TLS_AES_256_GCM_SHA384、ビット長: 256、圧縮: オフ)
"help" でヘルプを表示します。

usfixedbb=> \timing
タイミングは on です。
usfixedbb=> copy dec2018 from '/tmp/fbd_us_with_satellite_dec2018_v2.utf8.csv' WITH csv header;
COPY 70788824
時間: 3209194.600 ミリ秒(53:29.195)
なお、今回のマシンは、Hyper-V上のDebian10/Busterで、メモリは8GBを割り当てていますので、7千万件の読み込みとしては、チューニングもしていませんし、まずまずかなと思います。 また、データのロードがすんだら、外部から接続できるようにしておきます。
# /etc/postgresql/11/main/pg_hba.conf に追加
hostssl all             all             192.168.3.0/24          md5
hostssl all             all             10.1.4.0/24             md5
hostssl all             all             10.1.2.0/24             md5
# /etc/postgresql/11/main/postgresql.conf を編集(カンマ区切り。pgがリッスンするアドレスを記入)
listen_addresses = 'localhost,X.X.X.X'
# pgの再起動
/etc/init.d/postgresql restart
# 接続テスト
$ psql postgres://usfixedbb@X.X.X.X:5432/usfixedbb
Password for user usfixedbb:
psql (11.7 (Debian 11.7-0+deb10u1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
以下、総件数のクエリ結果です。
usfixedbb=> select count(*) from dec2018;
  count
----------
 70788824
(1 row)

Time: 324057.473 ms (05:24.057)
3.クエリーについて
前回のクエリーは
select "Max Advertised Downstream Speed (mbps)", "Provider ID", "Provider Name", count(*) from testtable02 group by "Max Advertised Downstream Speed (mbps)", "Provider ID", "Provider Name" order by count(*) desc;
でしたが、今回はフィールド名が異なるので、調整しますと、
select "maxaddown","provider_id","providername", count(*) from dec2018 group by "maxaddown", "provider_id", "providername" order by count(*) desc;
となります。なお実行時間はTime: 275317.793 ms (04:35.318)でした。
4. おまけ
今回のクエリーの結果をODBCなどで取り込むにはクライアントマシンに負荷がかかりすぎるので、クエリの結果をテーブルとして新規作成し、そのテーブルを開くようにします。(いわゆるサマリーテーブルです。)
sqlコマンドは以下のようになります。
CREATE TABLE result_001 AS
select "maxaddown","provider_id","providername", count(*) from dec2018 group by "maxaddown", "provider_id", "providername" order by count(*) desc;
なお、ざっと見たところ、前回とあまり変わりがありませんでしたが、通信衛星を用いているケースが最も多く、通信環境の整っていない地域からの比較的低速なインターネット接続が非常に多数あることはわかりました。いずれにしても、前回同様、米国では高速なブロードバンドが全域で提供されているというわけではなく、一部改善(高速化)の接続が増えているものの、まだまだ改善の余地があるということだと思います。高速な5Gの普及が望まれているのもうなずけるところですね。

今回はここまでです。以上。

コメント

このブログの人気の投稿

wsdd を使ってSamba サーバをネットワークに表示

Windows 10のアップデートで、セキュリティー対応のため、smbv1がデフォルトではインストールされなくなり、Samba serverがエクスプローラーのネットワークに表示されなくなってしまいました。そこで、いくつか方法を調べたのですが、linuxでwsdの実装がないか探したところ、 https://github.com/christgau/wsdd が、見つかりましたので、さっそくインストールしてみました。まだパッケージにはないようですが、インストール自身は簡単です。wsdd自体は以下のように取得し、linkを張っておきます。 cd /usr/local/bin/ sudo wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py sudo chmod 755 wsdd.py sudo ln -sf wsdd.py wsdd こちらのsambaサーバはDebianなので、/etc/systemd/system/wsdd.serviceは以下のようにしました。 [Unit] Description=Web Services Dynamic Discovery host daemon Requires=network-online.target After=network.target network-online.target multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/wsdd -d MYDOMAIN [Install] WantedBy=multi-user.target wsdd -d MYDOMAINのところを、環境にあわせて書き換えてください。 次に、systemdに登録・起動テストを行います。 systemctl enable wsdd systemctl start wsdd 起動に成功すると、エクスプローラーのネットワークに表示されます。  なおこのwsddはpython3が必要です。一度試してみてください。SMBv1/CIFSを停止していても、大丈夫です。 cで書かれたほかのwsddの実装もあるようなので、いずれパッケージになるかも...

Windows デバイス暗号化 のサポートで "許可されていない dma 対応バス/デバイスが検出されました"の対処

Windows でセキュリティー関係を見ているのですが、とあるPCでmsinfo32で確認すると"デバイス暗号化のサポート"で"許可されていない dma 対応バス/デバイスが検出されました"と出ていました。このPCの場合、それ以外はOK(なにも表示されない)だったのですが、ネットでしらべるとMSのドキュメントではハードウェアベンダーに問い合わせるなどと敷居が高く具体的にどこが引っかかっているかわかりません。そこでほかに方法はないかとしらべやってみたところ、"前提条件をみたしています"まで持って行けたので、本稿を挙げた次第です。 具体的には、以下のようにします。 1-a. 許可するDMA対応バス・デバイスを指定するレジストリの所有権と書き込み設定をおこなう。 以下のレジストリキーの所有者を自分自身(管理ユーザ)のものにし、フルコントロール権を付与する。 HKLM\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses もしくは 1-b. MicrosoftよりPsExecをダウンロードし、System権限でRegeditを立ち上げ編集する。 Microsoftより、https://docs.microsoft.com/en-us/sysinternals/downloads/psexec にある こちら をダウンロードし、解凍する。解凍すると、x64の場合、PsExec64.exeがあるので、管理者権限で以下を実行し、システム権限でregeditを立ち上げることが出来るようになる。 cd Downloads\PSTools .\PsExec64.exe -sid C:\Windows\regedit.exe 2-a. パワーシェルスクリプトを実行し、PnPデバイスのうちインスタンスがPCIで始まるものを"AllowedBuses"に追加する。 以下のパワーシェルスクリプトを作成する。たとえばDocuments\allow-dma-bus-device.ps1として作成する。( こちらの記事のものを使用させていただきました: Thank you! ) $tmpfile = "$($env:T...

フレッツ光クロス:MAP-E ROUTER by Debian Box (iptables)

フレッツ光クロスがようやく開通したので、Debianにてrouterを構成し接続してみました。なお、プロバイダーを選ぶにあたっては、IPoE方式がそれぞれ異なるため検討したところ、IPoEでは、MAP-Eでもv6plusとocnバーチャルコネクトがあり、前者がポート数240なのに対し、後者は約4倍のポート数が使えるようなネットの情報をみて、OCNバーチャルコネクトを選択しました。(プロバイダーとしてはぷららです。なおDS-LiteはCE側でのNATではないので今回は見送りました。)そこで、OCN バーチャルコネクトをDebian(iptables)で実現するとどうなるかと思い、ネットの情報を頼りにしつつ、設定した次第です。 実際に試した結果、とりあえず通信できていますが、MAP-Eは本来マッピングルールをマップサーバから取得するはずなので、今回のやり方が正解とはいえませんし、仕様変更されると通信できなくなる可能性があります。あくまでも参考程度ですが、本稿をUPしてみました。 2023/03/16追記: こちら にゲームコンソールNAT越え(Nintendo Switch ナットタイプ A判定)対応版を投稿しました。 2023/03/28追記:※1の記述および3行無効化によりNAT越え(Nintendo Switch ナットタイプ B判定)できるようになりました。 構成は以下の通りです。 ルーターがDebianで回線がOCNバーチャルコネクトであること以外はなにも特別なところはない構成です。 さて、いきなり設定ですが、まず、割り当てられたプレフィックスを確認します。 確認は、 dhclient -6 -d -P enp2s0 とします。出力の中に 前略 RCV: | | X-- IAPREFIX 2400:4050:5c71:af00::/56 後略 このようにプレフィックスが表示されるので、その確認したプレフィックスを書き留めておきます。これを こちらで 入力します。すると、 CE: 2400:4050:5c71:af00:99:f171:c600:2f00 IPv4 アドレス: 153.241.113.198 ポート番号:(1776-1791 2800-2815 3824-3839) 4848-4863 5872-5887 6896-...