งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

การจัดการแบนด์วิธในเครือข่ายด้วยลินุกซ์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "การจัดการแบนด์วิธในเครือข่ายด้วยลินุกซ์"— ใบสำเนางานนำเสนอ:

1 การจัดการแบนด์วิธในเครือข่ายด้วยลินุกซ์
Bandwidth Management using Linux สุทธิชัย สุทธิทศธรรม สำนักการศึกษาระบบสารสนเทศ สถาบันบัณฑิตพัฒนบริหารศาสตร์

2 วัตถุประสงค์ของโครงการ
ศึกษากลไกการทำงานในส่วนการควบคุมแบนด์วิธของลินุกซ์ เพื่อสร้างระบบที่สามารถจัดการแบนด์วิธ ที่ มีประสิทธิภาพ ไม่ต้องลงทุนสูง สนับสนุนการประยุกต์ใช้งานระบบปฏิบัติการลินุกซ์

3 โครงสร้างการจัดการทราฟฟิกในลินุกซ์
เน้นการจัดการที่ส่วนของ ขาออก ของการ์ดเครือข่าย (Output Queuing หรือ Egress) default queue = FIFO (First In First Out)

4 Queuing Disciplines หรือ qdisc
qdisc ที่ต่ออยู่กับการ์ดเครือข่ายแต่ละการ์ด เรียก root qdisc ประเภท qdisc Classless qdisc : FIFO, TBF, SFQ Classful qdisc : PRIO, CBQ, HTB

5 Classless qdisc เป็นคิวอย่างง่ายที่ไม่สามารถสร้างคลาสย่อยภายใต้ root qdiscได้แก่ pfifo_fast TBF (Token Bucket Filter) SFQ (Stochastic Fairness Queuing)

6 pfifo_fast จัดแพคเกตเข้า Band ด้วยฟิลด์ Type of Service (TOS)
แบ่งเป็น 3 band คือ FIFO 0,1,2 ลำดับการส่ง 0,1,2 จัดแพคเกตเข้า Band ด้วยฟิลด์ Type of Service (TOS) Band 0 สำหรับแพคเกตประเภท minimize delay เช่น TELNET, FTP-control, SMTP-command, DNS-udp-query

7 TBF (Token Bucket Filter)
ใช้ Tokens buffer ในการควบคุมการส่งข้อมูล บังคับให้การส่งข้อมูลแต่ละชิ้น จะต้องมี Token ใน Token Buffer อัตราเร็วในการส่งออกข้อมูลจะเท่ากับอัตราการสร้าง Token

8 SFQ (Stochastic Fairness Queuing)
ใช้ในกรณีที่อัตราการส่งข้อมูลไกล้เคียงกับแบนด์วิธที่มีอยู่ แยกแพคเกตที่เข้ามาไปไว้ในคิว ตาม tcp session, udp stream ทำการเวียนส่งแพคเกตในคิวสลับกันไปมา เพื่อให้แพคเกตที่ส่งมีการกระจายอย่างสม่ำเสมอ ไม่ให้เกิดการชงักของบาง session

9 Classful qdisc สามารถสร้างคลาสย่อยและกำหนดเงื่อนไขเรื่องความเร็ว รวมทั้งการจัดลำดับความสำคัญของแพคเกตที่จะส่งออกไปได้แก่ PRIO CBQ (Classes Based Queue) HTB qdisc (Hierarchical Token Bucket)

10 ส่วนประกอบของ Classful qdisc
Queuing discipline Classes Filters Policer

11 PRIO qdisc ลำดับส่งแพคเกตในคลาส 1,2,3
3 คลาส แต่ละคลาสมีคิวแบบ pfifo ติดอยู่ ลำดับส่งแพคเกตในคลาส 1,2,3 filter ใช้ในการคัดแยกแพคเกตเข้าคลาส (default ตาม TOS, เปลี่ยนได้) ข้อควรระวัง หากคลาส 1 มีปริมาณทราฟฟิคสูงเป็นเวลานานอาจทำให้คลาสอื่นไม่ได้ส่งข้อมูลเลย -> วิธีแก้ไข เปลี่ยนคลาส 1 เป็นคิวแบบ SFQ

12 สามารถสร้าง filter เพื่อใช้ในการคัดแยกแพคเกตเข้าคลาส
CBQ qdisc สามารถจัดสร้างคลาสในลักษณะที่เป็นเชิงชั้นได้ สามารถจัดสร้างคลาสสำหรับ ผู้ใช้หลายราย และรับประกันแบนด์วิธให้กับลูกค้า แต่ละรายได้ ในกรณีที่มีการใช้สายอย่างแออัด สามารถสร้าง filter เพื่อใช้ในการคัดแยกแพคเกตเข้าคลาส สามารถสร้างคลาสย่อยภายไต้ผู้ใช้งานแต่ละราย เพื่อบริหารจัดการทราฟฟิกภายในคลาสแม่อีกได้ สามารถนำแบนด์วิธที่เหลือใช้จากผู้ใช้รายหนึ่งไปให้กับผู้ใช้อีกรายหนึ่งได้

13 HTB qdisc ลักษณะการทำงานคล้ายกับ CBQ และมีประสิทธิภาพใกล้เคียงกัน มีความซับซ้อนน้อยกว่า CBQ CBQ มีความซับซ้อนมากและอาจมีปัญหาในด้านการควบคุมแบนด์ วิธ หรือมีความไม่ถูกต้องบ้างในบางครั้ง มีเอกสารประกอบการใช้งานที่ชัดเจน

14 HTB qdisc – ตัวอย่างที่ 1
คำสั่งที่ใช้ในการจัดการทราฟิกในลินุกซ์คือ tc คำสั่งเปลี่ยน root qdisc เป็น HTB qdisc tc qdisc add dev eth0 root handle 1: htb default 12 (kbps = kilo bytes per sec)

15 HTB qdisc – ตัวอย่างที่ 1
สร้างคลาสที่มีโครงสร้างตามเงื่อนไข ด้วยคำสั่ง tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps tc class add dev eth0 parent 1:1 classid 1:11 htb rate 10kbps ceil 100kbps tc class add dev eth0 parent 1:1 classid 1:12 htb rate 60kbps ceil 100kbps

16 HTB qdisc – ตัวอย่างที่ 1
สร้าง filter เพื่อคัดแยกแพคเกตเข้าสู่คลาส tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src match ip dport 80 0xffff flowid 1:10 tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src flowid 1:11

17 HTB qdisc – ตัวอย่างที่ 1
สร้าง Classless qdisc เพื่อติดตั้งไว้กับคลาสที่เป็น leaf class tc qdisc add dev eth0 parent 1:10 handle 20: pfifo limit 5 tc qdisc add dev eth0 parent 1:11 handle 30: pfifo limit 5 tc qdisc add dev eth0 parent 1:12 handle 40: sfq perturb 10

18 HTB qdisc – ตัวอย่างที่ 1
ผลการทำงาน ในกรณีที่ทั้ง 3 คลาสมีทราฟฟิกเกิน rate ทั้งหมด HTB จะรับประกันแบนด์วิธสำหรับ A/WWW อย่างน้อย 30 kbps และ A/other 10 kbps ส่วน B ได้อัตราอย่างน้อย 60 kbps หากทราฟฟิกของ A/WWW หมดไป HTB จะนำเอาแบนด์วิธ 30 kbps ของ A/WWW ไปแบ่งกันระหว่างอีก 2 คลาสที่เหลือตามสัดส่วนของค่า rate ที่กำหนดไว้ในแต่ละคลาส คือ A/other ได้แบนด์วิธเท่ากับ 10/70 ของ 30 kbps B ได้แบนด์วิธเท่ากับ 60/70 ของ 30 kbps

19 HTB qdisc – ตัวอย่างที่ 2
จุดประสงค์ที่เปลี่ยนแปลง แบนด์วิธของ A แบ่งกันใช้ได้ ระหว่าง WWW กับ other ก่อน หากแบนด์วิธของ A เหลือจึงแบ่งให้ B ใช้ ในทางกลับกันถ้าแบนด์วิธของ B เหลือจะแบ่งให้ A ใช้ได้

20 HTB qdisc – ตัวอย่างที่ 2
สร้างคลาสที่มีโครงสร้างตามเงื่อนไข ด้วยคำสั่ง tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps tc class add dev eth0 parent 1:1 classid 1:2 htb rate 40kbps ceil 100kbps tc class add dev eth0 parent 1:2 classid 1:10 htb rate 30kbps ceil 100kbps tc class add dev eth0 parent 1:2 classid 1:11 htb rate 10kbps ceil 100kbps tc class add dev eth0 parent 1:1 classid 1:12 htb rate 60kbps ceil 100kbps

21 HTB qdisc – ตัวอย่างที่ 2
ผลการทำงาน ในกรณีที่ A/WWW มีทราฟฟิกน้อยกว่า 30 kbps แบนด์วิธที่เหลือจาก A/WWW จะนำไปให้กับ A/other แทนที่จะไปแบ่งกับ B ด้วย หาก B มีแบนด์วิธเหลือ ก็สามารถให้ A ยืมได้ และในทางกลับกันหาก A มีแบนด์วิธเหลือก็สามารถให้ B ยืมได้ ทั้งนี้แบนด์วิธรวมของ A หรือ B ต้องไม่เกิน ceil ที่ตั้งไว้เนื่องจาก A และ B อยู่ภายไต้ root class เดียวกัน

22 HTB qdisc – ตัวอย่างที่ 3
หากกำหนดให้ ceil ของ A เป็น 60 kbps และ A/other เป็น 20 kbps หมายถึง A สามารถยืมแบนด์วิธจาก B มาได้อีก 20 kbps A/other สามารถยืมแบนด์วิธจาก A/WWW มาได้อีก 10 kbps

23 HTB qdisc – ตัวอย่างที่ 3
กรณีที่ไม่มีทราฟฟิกของ A/WWW แบนด์วิธของ A/WWW จะนำไปให้กับ A/other จนเต็ม ceil คือ A/other ยืมได้อีก 10 kbps ดังนั้น A/other ส่งได้ 20 kbps ส่วนที่เหลืออีก 20 kbps จะส่งให้ B ยืมได้ กรณีที่ไม่มีทราฟฟิกของ B แบนด์วิธของ B จะนำไปให้ A ยืมได้ ซึ่ง A สามารถได้รับแบนด์วิธไม่เกิน ceil ที่กำหนดไว้คือ 60 kbps ดังนั้นแบนด์วิธที่เหลือในส่วนของ B จะถูกทิ้งไป ถือว่าเป็นข้อดีสำหรับ ISP ที่ต้องการจำกัดแบนด์วิธของลูกค้าแต่ละรายไว้ ถึงแม้ว่าลูกค้ารายอื่นที่เหลือจะไม่มีการใช้แบนด์วิธก็ตาม

24 เครื่องมือที่ช่วยในการปรับแต่ง HTB/CBQ qdisc
แบ่งเป็น 3 ประเภท สคริปต์ที่เขียนลักษณะเรียกเป็นชุดคำสั่ง(script) ที่สร้างคำสั่ง tc เพื่อสั่งงานไปยังลินุกซ์ ได้แก่ htb.init, cbq.init โปรแกรมแบบ Web-based เพื่อช่วยสร้าง class, filter เพื่อช่วยสร้างคำสั่ง tc ได้ง่ายขึ้น ได้แก่ QOS Configurator โปรแกรมที่มีการสร้างชั้นที่ติดต่อกับคำสั่ง tc ขึ้นมาอีก 1 ระดับ โดยสร้างเป็นภาษาที่มีการกำหนดไวยากรณ์และมีตัวแปลภาษา ได้แก่ tcng (tc next generation)

25 ตัวอย่างการใช้ CBQ qdisc
ชื่อไฟล์ cbq-028.backbone-client DEVICE=eth1,10Mbit,1Mbit RATE=28Kbit WEIGHT=2Kbit PRIO=5 RULE= ไฟล์ที่ 1 สร้างคลาสที่มี class-id เท่ากับ 028 และกำหนดทราฟฟิกขาออกของ eth1 ซึ่งหมายถึงจาก backbone เข้าสู่เครื่อง client (download) ที่มี IP Address เท่ากับ ด้วยอัตราเร็วไม่เกิน 28 kbit/sec

26 ตัวอย่างการใช้ CBQ qdisc
ชื่อไฟล์ cbq-128.client-backbone DEVICE=eth0,10Mbit,1Mbit RATE=128Kbit WEIGHT=10Kbit PRIO=5 RULE= , สร้างคลาสที่มี class-id เท่ากับ 128 และกำหนดทราฟฟิกขาออกจาก eth0 ซึ่งหมายถึงจาก client เข้าสู่ backbone (upload) ด้วยอัตราเร็วไม่เกิน 128 kbit/sec

27 ตัวอย่างการใช้ HTB qdisc
ไฟล์ที่ 1: eth0 ระบุ Default class เท่ากับ 30 ไฟล์ที่ 2: eth0-2.root สำหรับสร้าง root class มี class-id เท่ากับ 2 ที่การ์ดเครือข่าย eth0 และกำหนดความเร็วสูงสุด 5 Mbits/sec ไฟล์ที่ 3: eth0-2:10.www สร้างคลาสย่อยภายไต้ class-id 2 โดยตัวเองมี class-id เท่ากับ 10 และกำหนดความเร็ว 5Mbits/sec มี filter เป็น source-port เป็น 80 และใช้เป็น leaf queue ที่ใช้คิวแบบ sfq ไฟล์ที่ 4: eth0-2:20.smtp สร้างคลาสย่อยภายไต้ class-id 2 เช่นเดียวกับไฟล์ที่ 3 โดยมีความเร็ว 3 Mbits/sec และ ความเร็วสูงสุด (ceil) เท่ากับ 5 Mbits/sec มี filter เป็น destination-port เป็น 25 ไฟล์ที่ 5: eth0-2:30.dfl สร้างคลาสย่อยภายไต้ class-id 2 เช่นเดียวกับไฟล์ที่ 3 โดยมีความเร็ว 1 Kbit/sec และ ความเร็วสูงสุด (ceil) เท่ากับ 5 Mbits/sec มี class-id เท่ากับ 30 ซึ่งเป็น default class

28 สรุป จากการทดลองใช้งานและศึกษาผลการนำลินุกซ์มาควบคุมแบนด์วิธในเครือข่ายพบว่าสามารถควบคุมและจัดการแบนด์วิธได้ในระดับที่น่าพอใจ ปัจจุบันมีบริษัทหลายรายนำเอาลินุกซ์ไปสร้างเป็นอุปกรณ์ (Appliance) สำหรับทำงานด้านเครือข่ายเป็นจำนวนมาก โดยนำไปเป็นระบบปฏิบัติการที่ฝังในอุปกรณ์และ/หรือนำเอาความสามารถในด้านเครือข่ายไปใช้ เช่น Juniper ซึ่งเป็นอุปกรณ์ด้านการหาเส้นทาง, SARAN เป็นอุปกรณ์ด้านการป้องกันการบุกรุก เป็นต้น หากผู้พัฒนาในประเทศได้นำความสามารถด้านการควบคุมแบนด์วิธไปสร้างเป็นอุปกรณ์ที่มีราคาไม่แพงและพัฒนาเครื่องมือที่สามารถให้ผู้ใช้ติดตั้งและทำการปรับแต่งค่าในการควบคุมแบนด์วิธได้ง่ายแล้ว จะช่วยลดค่าใช้จ่ายในการซื้ออุปกรณ์จากต่างประเทศที่มีราคาแพงได้

29 Thanks you.


ดาวน์โหลด ppt การจัดการแบนด์วิธในเครือข่ายด้วยลินุกซ์

งานนำเสนอที่คล้ายกัน


Ads by Google