ทำ Network Bonding
การทำ Network Bonding เป็นการนำการ์ดแลนหลายๆ ใบ มาใช้งานร่วมกันเสมือนเป็นการ์ดแลนใบเดียวที่เร็วขึ้น ซึ่งในลินุกซ์สามารถทำได้หลายวิธี ขึ้นอยู่กับความเหมาะสม และสวิตช์นำมาใช้งานร่วมกันสนับสนุนหรือไม่
รูปแบบการใช้งาน
ในที่นี้จะใช้งานในแบบที่ไม่ต้องการความสามารถพิเศษของสวิตช์ ซึ่งสามารถทำได้ 2 วิธี คือ
- Mode 5 หรือ balance-tlb (Adaptive Transmit Load Balancing) เป็นการเฉลี่ยส่งข้อมูลออกทางการ์ดแลนหลายใบ แต่รับข้อมูลทางการ์ดแลนใบแรกเพียงใบเดียว ถ้ามีการ์ดแลนเสียในระหว่างการใช้งาน ก็จะตัดการ์ดแลนใบดังกล่าวออกจากการรวม ในกรณีที่การ์ดแลนใบแรกเสียก็จะรับข้อมูลทางการ์ดแลนใบอื่นแทน การ์ดแลนที่จะใช้งานในโหมดนี้จะต้องมีคุณสมบัติดังนี้
- รองรับ ethtool เพื่อให้ไดรเวอร์ตรวจสอบความเร็วของการ์ดแลนได้
- Mode 6 หรือ balance-alb (Adaptive Load Balancing) เป็นการเฉลี่ยการส่ง และการรับข้อมูลผ่านทางการ์ดแลนหลายใบ ถ้ามีการ์ดแลนเสียในระหว่างการใช้งาน ก็จะตัดการ์ดแลนใบดังกล่าวออกจากการรวม การ์ดแลนที่จะใช้งานในโหมดนี้จะต้องมีคุณสมบัติดังนี้
- รองรับ ethtool เพื่อให้ไดรเวอร์ตรวจสอบความเร็วของการ์ดแลนได้
- รองรับการเปลี่ยน MAC Address ในระหว่างการใช้งาน
จากการใช้งาน ไดรเวอร์ตระกูล Realtek Gigabit (เช่น 8169, 8168, 8111) สามารถใช้งานได้ทั้ง โหมด 5 และ 6 ส่วนไดรเวอร์ตระกูล Atheros สามารถใช้งานได้เฉพาะโหมด 5
โปรแกรม ifenslave
การใช้งาน Network Bonding จะเรียกผ่านโปรแกรม ifenslave ซึ่งซอร์สโค้ดของโปรแกรมนี้จะอยู่ใน kernel ของลินุกซ์
หากใช้ kernel ของ Slackware 13.37 โดยไม่ได้คอมไพล์ kernel ใหม่ ซอร์สโค้ดจะอยู่ที่ /usr/src/linux/Documentation/networking/ifenslave.c หากคอมไพล์ kernel ใหม่ ซอร์สโค้ดก็จะอยู่ที Documentation/networking/ifenslave.c ภายใต้ไดเรกทอรีที่แตกไฟล์ซอร์สโค้ดของลินุกซ์ออกมา
การคอมไพล์ และติดตั้งโปรแกรมใช้คำสั่งดังนี้
# cd /usr/src/linux/Documentation/networking/ # gcc -Wall -O -I../../include ifenslave.c -o ifenslave # cp ifenslave /sbin/ifenslave
ทดลองเรียกโปรแกรม โดยใช้คำสั่งดังนี้
# ifenslave --help
การเรียกใช้
การเรียกใช้งาน Network Bonding จะเป็นการติดตั้งโมดูล bonding แล้วระบุพารามิเตอร์ที่ต้องการ ในที่นี้จะเพิ่มคำสั่งการเรียกใช้งานในไฟล์ /etc/rc.d/rc.modules โดยแก้ไขท้ายไฟล์ดังนี้
[...]
fi # End enabling CPU scaling support
/sbin/modprobe bonding mode=balance-tlb
# We are done with these variables now:
unset NEWMODS RELEASE CPUFREQ SCALING_GOVERNOR SYSCPUFILE
สีน้ำเงินคือคำสั่งที่เพิ่มเข้าไป โดยในที่นี้เลือกใช้แบบ balance-tlb
คำสั่งนี้จะสร้างดีไวซ์ชื่อ bond0 เตรียมไว้ ซึ่งในขั้นตอนต่อไปก็จะต้องกำหนดค่า Network ให้กับดีไวซ์นี้ และนำการ์ดแลนเข้ามาอยู่ภายใต้ดีไวซ์นี้ (รายละเอียดในหัวข้อ กำหนดค่า Network)