Bonding Mode 0

[B]ผมทำ Bridge + Bond จุดประสงคืออยากขยายแบนวิต ให้มากกว่า 1G ครับ

มีโครงสร้างแบบนี้

Mode 0

มีการ์ดแลน 4 ตัว สมมุติเป็น l0 , l1 , l2 , l3
สร้างเพิ่มมาอีก 2 ตัว br0 , bond0

  1. ตั้งค่าไอพีที่ br0 เป็น bridge

  2. bond0
    bridge=br0

  3. ตั้ง l0 , l1 เป็น Slave ของ bond0 รับสายแลนพอทละเส้นจากสวิช

  4. ส่วน l2 , l3 เป็นบริดกับ br0 ต่อเข้าเครื่องภายใน


[COLOR=#ff0000]เวลที่ใช้ mode 0 แล้วเครื่องภายในที่ต่อจากตัวนี้ ทราฟฟิค จะ มาๆ หายๆ
ผมเลยไปเช็คใน message ดูแล้วมันฟ้องประมาณนี้ครับ[/COLOR]

/var/log/messages
Jan 5 13:36:56 localhost kernel: bond0: received packet with own address as source address
Jan 5 13:39:01 localhost kernel: bond0: received packet with own address as source address
Jan 5 13:39:01 localhost kernel: bond0: received packet with own address as source address
Jan 5 13:41:06 localhost kernel: bond0: received packet with own address as source address
Jan 5 13:41:06 localhost kernel: bond0: received packet with own address as source address

ใครมีประสบการเรืองนี้แนะนำที ^^
ขอบคุณครับ
[/B]

เซต switch แล้วยังคัรบ?

มันต้องทำทั้งฝั่ง switch ทั้งเครื่องเรานะ
แล้วก็… ต้องเซต mode ให้ตรงกันด้วย ส่วนมากบน linux ต้องใช้ mode 802.3ad (ถ้าจำไม่ผิด mode 4) นะครับ เพื่อให้เข้ากันกับ switch

สวิชสำหรับ Mode0 ผมใช้เป็น Active คับ
เมื่อคืนผมปรับมาเป็น Mode4 ส่วนฝั่งสวิชอ่านในเว็บซิสโก้ เห้นว่าให้ตั้งแบบ Passive ก็ตั้งไปแล้ว
แต่โหมด 4 การ์ด แลนที่ทำบอนดิ้ง มันเหมือนยังไม่รวมกัน ตอนโดนยิงเข้ามาก็ยังวิ่งได้แค่ 1G เหมือนเดิม
ยังคงอึนๆ อยู่คับ 55

ฝั่ง switch ถ้าเป็น cisco ใช้ mode active เลยครับ มันคือ 802.3ad ตัวเดียวกัน
config ประมาณนี้

port-channel load-balance src-dst-ip
!
Interface GigabitEthernet0/1
switchport mode access
channel-group 1 mode active
!

สังเกตบรรทัดแรกนะครับ คำสั่งนั้นเป็นเรื่องการทำ hashing “ขาออกจาก switch” ว่าจะให้กระจายข้อมูลให้เครื่องคู่ปลายทางยังไง
วิธี balance ตาม src-dst-ip ก็ตรงตัวครับ ดูจาก ip ของต้นทาง+ปลายทาง ถ้า ip เดิมก็จะวิ่งเส้นเดิมเสมอครับ
ถ้าเป็นการยิงมาแบบ fix ip ต้นทางแค่ ip เดียว ยิงไปที่เครื่องปลายทางเครื่องเดียว (หรือหลาย ip แต่ดันซวย hash ตกเส้นเดียวกันหมด) ก็จะวิ่งได้แค่ 1 เส้น 1gbps ครับ เป็น L3 load balance (ดูแค่ถึง IP)

แต่ถ้าเป็น L3 switch รุ่นสูงๆ หน่อย (4948 หรือ 4500/6500 series) มันจะมีคำสั่ง port-channel load-balance src-dst-mixed-ip-port เพิ่มมาให้คำนวณจาก port ด้วย (เรียกว่า L3+L4 loadbalance) ทำให้ traffic balance มากกว่าเดิม (แต่ก็เปลือง switching cpu เพิ่มขึ้นอีกหน่อย)

แล้วก็ พอ config แล้วลองตรวจสอบความเรียบร้อยที่ทั้งสองฝั่งด้วยครับ

ฝั่ง switch

sh int po1

ดูตรงแถวๆ bandwidth ต้องขึ้น 2000000Kbit/sec

ฝั่ง server

cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
[U][B]Transmit Hash Policy: layer3+4 (1)[/B][/U]
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 2
[U][B] Number of ports: 2[/B][/U]
Actor Key: 17
Partner Key: 3
Partner Mac Address: 00:18:74:47:a3:80

[U][B]Slave Interface: em1[/B][/U]
[U][B]MII Status: up[/B][/U]
[U][B]Speed: 1000 Mbps[/B][/U]
Duplex: full
Link Failure Count: 4
Permanent HW addr:
Aggregator ID: 2
Slave queue ID: 0

[U][B]Slave Interface: em2[/B][/U]
[U][B]MII Status: up[/B][/U]
[U][B]Speed: 1000 Mbps[/B][/U]
Duplex: full
Link Failure Count: 8
Permanent HW addr:
Aggregator ID: 2
Slave queue ID: 0

ขอบคุณคับ