やりたかったこと
containerlab で使っている vJunos-switch に色々つなぎたくなった。
You can specify the number of active ports for the vJunos-switch to match the number of NICs added to the VFP VM. The default number of ports is 10, but you can specify any value in the range of 1 through 96.
Run the
user@host# set chassis fpc 0 pic 0 number-of-ports 96
command to specify the number of active ports. Configure the number of ports at the [edit chassis fpc 0 pic 0] hierarchy level.
とあるので実行しポート数を増やしてみた。
しかし、show interface
してみると ge-0/0/11
以降のポートのLinkがDownになっており通信できなかった。
結論
普通に使えばポート数は最大11(ge-0/0/10まで)。
launch.pyのnum_nics
を変更すれば、12個までは増やすことができた。
それ以上にする方法は分からなかった(vrnetlabのコードを読めば分かるかもしれない...)
原因
containerlab でのコンテナにはeth12
等のNICも作成されているが、コンテナ内部で動くvJunos-switch のVMに接続されていないことが原因だった。
docker logs
で起動ログを確認するとコンテナ内部で実行されたQEMUのコマンドを確認できるが、そこでは tap11
までしか作成されていない。コンテナのシェルに入りインタフェースを確認してもtap11
までしかないことが分かる(分かりづらいが、tapXとethXの番号は1-indexなので、0-indexであるge-0/0/Xの値よりも1大きくなる)。
QEMUでのVM作成時にもっといっぱいtapを作成して繋いでくれたら嬉しい。vJunos-switchのDockerfileを読むとlaunch.py
が実行されているようなので確認すると、num_nics
というそれっぽい値が見つかった。
これを16に変更してみたが、
vrnetlab DEBUG highest allocated interface id determined to be: 12...
と出力され、1個増えただけであった。
コンテナ内部の vrnetlab.py
を確認し、gen_nics()
という関数がこれらNICの処理をしていることまでは分かった。が、これ以上の調査はかなり沼になりそうなので一旦12個まででなんとかすることにした。
また時間があるときにvrnetlabのコードを読んでみようと思う。