SSHポートフォワーディングを使ったテレワークによるFPGA開発
テレワークでFPGAを開発したいけど、
- 会社がVPNに対応してくれない
- 外からの接続を受け付けない
- NATが超えられない
- 情報管理部門が許してくれない
- 回線が細くてリモートデスクトップするに耐えられない
- 会社のVPNがすぐ切れる
こんな悩みはありませんか?
状況としては、自宅のPCでFPGAのビルドをするけど、機械は会社や学校にあるという場合を想定します。
い。
Vivadoを使ってFPGAの書き込みやデバッグだけはしたい! というのであれば、SSHポートフォワーディングをすると何とかなります。
SSHポートフォワーディングを使うにはグローバルIPを持ったSSHサーバが必要ですが、自宅も会社(学校)もTCPのクライアント側になるので、NATを越えられるし、ファイアーウォールも越えられるからです。つまり、インターネット上にあるSSHが動くサーバを介して、任意の2点間でトンネルを作ることができます。
Vivadoのリモート対応
VivadoのJTAGまわりのツールはもともとネットワークに対応していて、概ね次の図のようになっています。
実はローカルPCでVivadoを使っていても、内部ではhw_server というプログラムが動いて、TCPの3121で待ち受けています。そして、VivadoやXILINX SDKがFPGAに書き込むときにTCP 3121を通じていろいろなコマンドを与えています。
したがって、hw_server.exeを起動しておけばVivadoは元からリモート接続に対応しているので、遠隔操作ができるのです。
hw_server.exeは、Vivadoをインストールしたフォルダのbinの中にある hw_server.batをダブルクリックすることで起動できます。
起動するとDOSプロンプトの以下のような画面が開きます。これで待ち受けはOKです。
サーバを借りよう!
やるべきことは、グローバルIPアドレスを持ったサーバを借りることです。
AmazonのAWSで、一番安いサーバで十分でしょう。私はUbuntu Linuxの動く最小構成のサーバを借りました。そして、セキュリティグループというのを開き、通したいポートのインバウンドルールを追加します。ログインしてからufwで設定するのではなく、ファイアーウォールの設定はWebのこの画面から行えばよいようです。
VivadoのJTAG通信はTCP:3121ですが、同じ番号だと困ることになるので、3121に10000を足して13121番を開けることにしました。sshd_configの設定は特にありません。サーバ上で作業することもありません。
Amazonで借りられるサーバにログインするにはキーペアという証明書が必要で、サーバを作ったときに配布されます。それがないと絶対にログインできないので、かなり安全です。
会社と家庭、それぞれの準備
JTAGサーバ(会社)側の準備
会社の中でhw_serverを起動したPCでTeraTermを起動します。そして設定→SSH転送の設定を開きます。
SSHポート転送の設定は、リモートサーバのポートを13121にして、ポートを3121にします。
この設定をして会社のPCからSSHサーバに22番で普通に接続すると、リモートサーバの13121へのアクセスが会社サーバの3121に転送されます。
家庭側の作業
Vivadoを起動し、Open Hardware ManagerでConnected toにRemote serverを選び、リモートサーバのIPアドレスを入れます。また、TCPのポート番号は先ほどの13121とします。
接続方法のまとめ
- リモートのSSHサーバを立てておく。
- リモートサーバではTCP:13121(任意)を開けておく
- 会社PCでhw_server.batを起動しておく
- 会社PCからリモートサーバにSSH(TCP:22)でつなぐ
- 自宅PCでVivadoを起動し、Remoteの13121につなぐ
- リモートサーバと会社PCのTeraTermの間でトンネルが作られ、会社PCのTCP:3121に転送される
- 自宅PCから会社PCのhw_serverに接続できる
というわけです。
繰り返しになりますが、会社からリモートサーバへただのSSHのセッションを張るだけなので、ファイアーウォールもNATも越えられるというわけなのです。
性能はどうか
ZYNQ UltraScale+のXCZU2CGに書き込む時間を比べてみました。
- ローカルPCでダイレクト接続・・・2秒
- 会社と自宅でVPNを張った(L2TP)場合・・3~6秒
- TCPポートフォワーディングの場合・・5秒
リモート接続してもそんなに遅くはならないという印象です。AWSがいいバックボーンを持っていると思われ、かなり安定してトンネルできます。
VIOもロジアナも使えるので、テレワークでFPGAを開発するのが少しだけ楽になるかと思います。
| 固定リンク





コメント