결과적으로 현재사용하고 있지는 않지만, Channel Bonding을 위해 조사했던 자료를 백업한다.
Bonding 할 IP는 10.0.0.10, Gateway는 10.0.0.1, Interface는 em0, em1로 가정한다.
첫번째.
kldload ng_ether
kldload ng_one2many
ifconfig em0 promisc -arp up
ifconfig em1 promisc -arp up
ngctl mkpeer . eiface hook ether
ngctl mkpeer ngeth0: one2many lower one
ngctl connect em0: ngeth0:lower lower many0
ngctl connect em1: ngeth0:lower lower many1
ifconfig ngeth0 -arp up
ifconfig ngeth0 10.0.0.10
one2many라는 Kernel Module을 사용한 방법이다. 조사했던 FreeBSD에서의 Bonding 방법들은 거의 모두 ng 모듈을 쓰는데, NETGRAPH라는 모듈인것 같고, Kernel을 Build 할때 활성화 해 주어야 한다.
두번째.
kldload ng_ether
ifconfig em0 promisc -arp up
ifconfig em1 promisc -arp up
ngctl -f - << EOF
mkpeer eiface dummy ether
name .:dummy bond0
EOF
ngctl mkpeer bond0: one2many ether one
ngctl connect em0: bond0:ether lower many0
ngctl connect em1: bond0:ether lower many1
ifconfig ngeth0 10.0.0.10 netmask 255.255.255.0
route add default 10.0.0.1
ifconfig ngeth0 -arp up
역시 one2many라는 모듈을 쓰고 있기는 하나, 적용 방법이 약간 다르다. 첫번째와 두번째 중 하나는 아예 안되었던 것 같고, 하나는 되긴 했지만 조금 미진했던 것 같다.
세번째.
ngctl mkpeer fec dummy fec
ngctl msg fec0: add_iface '"em0"'
ngctl msg fec0: add_iface '"em1"'
ngctl msg fec0: set_mode_mac
ifconfig fec0 10.0.0.10 netmask 255.255.255.0
route add default 10.0.0.1
ifconfig fec0 up
ifconfig em0 promisc up
ifconfig em1 promisc up
ifconfig fec0 promisc up
ifconfig fec0 up
route add default -iface fec0
ngctl shutdown fec0:
fec이라는 모듈을 사용한 방법이다. 이것도 어느정도 동작했던 것 같다.
(가장 유력했던 방법으로 기억한다.)네번째.
ifconfig agr0 create
ifconfig agr0 agrport em0
ifconfig agr0 agrport em1
ifconfig agr0 -agrport em0
ifconfig agr0 -agrport em1
ifconfig agr0 destroy
이것은 단순히 Network Device들을 aggregate만 시켜주는 것 같다.