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

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

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

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


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

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

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

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

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

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

6 pfifo_fast  แบ่งเป็น 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 Queuing discipline Classes Classes Filters Filters Policer Policer

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

12 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 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 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 ใช้แบนด์วิธของ A แบ่งกันใช้ได้ ระหว่าง WWW กับ other ก่อน หาก แบนด์วิธของ A เหลือจึงแบ่งให้ B ใช้ ในทางกลับกันถ้าแบนด์วิธของ B เหลือจะแบ่งให้ A ใช้ได้ในทางกลับกันถ้าแบนด์วิธของ 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 หมายถึง หากกำหนดให้ ceil ของ A เป็น 60 kbps และ A/other เป็น 20 kbps หมายถึง A สามารถยืมแบนด์วิธจาก B มาได้อีก 20 kbps A สามารถยืมแบนด์วิธจาก B มาได้อีก 20 kbps A/other สามารถยืมแบนด์วิธจาก A/WWW มาได้อีก 10 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 ยืมได้ กรณีที่ไม่มีทราฟฟิกของ 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 ที่ต้องการจำกัดแบนด์วิธของลูกค้าแต่ละรายไว้ ถึงแม้ว่าลูกค้ารายอื่นที่เหลือจะไม่มีการใช้แบนด์วิธก็ตาม กรณีที่ไม่มีทราฟฟิกของ B แบนด์วิธของ B จะนำไปให้ A ยืมได้ ซึ่ง A สามารถได้รับ แบนด์วิธไม่เกิน ceil ที่กำหนดไว้คือ 60 kbps ดังนั้นแบนด์วิธที่เหลือในส่วนของ B จะ ถูกทิ้งไป ถือว่าเป็นข้อดีสำหรับ ISP ที่ต้องการจำกัดแบนด์วิธของลูกค้าแต่ละรายไว้ ถึงแม้ว่าลูกค้ารายอื่นที่เหลือจะไม่มีการใช้แบนด์วิธก็ตาม

24 เครื่องมือที่ช่วยในการปรับแต่ง HTB/CBQ qdisc แบ่งเป็น 3 ประเภท สคริปต์ที่เขียนลักษณะเรียกเป็นชุดคำสั่ง(script) ที่สร้างคำสั่ง tc เพื่อสั่งงานไปยังลินุกซ์ ได้แก่ htb.init, cbq.init สคริปต์ที่เขียนลักษณะเรียกเป็นชุดคำสั่ง(script) ที่สร้างคำสั่ง tc เพื่อสั่งงานไปยังลินุกซ์ ได้แก่ htb.init, cbq.init โปรแกรมแบบ Web-based เพื่อช่วยสร้าง class, filter เพื่อช่วย สร้างคำสั่ง tc ได้ง่ายขึ้น ได้แก่ QOS Configurator โปรแกรมแบบ Web-based เพื่อช่วยสร้าง class, filter เพื่อช่วย สร้างคำสั่ง tc ได้ง่ายขึ้น ได้แก่ QOS Configurator โปรแกรมที่มีการสร้างชั้นที่ติดต่อกับคำสั่ง tc ขึ้นมาอีก 1 ระดับ โดยสร้างเป็นภาษาที่มีการกำหนดไวยากรณ์และมีตัวแปลภาษา ได้แก่ tcng (tc next generation) โปรแกรมที่มีการสร้างชั้นที่ติดต่อกับคำสั่ง 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ไฟล์ที่ 1: eth0 ระบุ Default class เท่ากับ 30 ไฟล์ที่ 2: eth0-2.rootไฟล์ที่ 2: eth0-2.root สำหรับสร้าง root class มี class-id เท่ากับ 2 ที่การ์ดเครือข่าย eth0 และกำหนดความเร็วสูงสุด 5 Mbits/sec ไฟล์ที่ 3: eth0-2:10.wwwไฟล์ที่ 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ไฟล์ที่ 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ไฟล์ที่ 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 เป็นอุปกรณ์ด้านการป้องกันการบุกรุก เป็น ต้น ปัจจุบันมีบริษัทหลายรายนำเอาลินุกซ์ไปสร้างเป็นอุปกรณ์ (Appliance) สำหรับทำงานด้านเครือข่ายเป็นจำนวนมาก โดยนำไปเป็นระบบปฏิบัติการที่ฝังใน อุปกรณ์และ/หรือนำเอาความสามารถในด้านเครือข่ายไปใช้ เช่น Juniper ซึ่งเป็น อุปกรณ์ด้านการหาเส้นทาง, SARAN เป็นอุปกรณ์ด้านการป้องกันการบุกรุก เป็น ต้น หากผู้พัฒนาในประเทศได้นำความสามารถด้านการควบคุมแบนด์วิธไปสร้างเป็น อุปกรณ์ที่มีราคาไม่แพงและพัฒนาเครื่องมือที่สามารถให้ผู้ใช้ติดตั้งและทำการ ปรับแต่งค่าในการควบคุมแบนด์วิธได้ง่ายแล้ว จะช่วยลดค่าใช้จ่ายในการซื้อ อุปกรณ์จากต่างประเทศที่มีราคาแพงได้ หากผู้พัฒนาในประเทศได้นำความสามารถด้านการควบคุมแบนด์วิธไปสร้างเป็น อุปกรณ์ที่มีราคาไม่แพงและพัฒนาเครื่องมือที่สามารถให้ผู้ใช้ติดตั้งและทำการ ปรับแต่งค่าในการควบคุมแบนด์วิธได้ง่ายแล้ว จะช่วยลดค่าใช้จ่ายในการซื้อ อุปกรณ์จากต่างประเทศที่มีราคาแพงได้

29 Thanks you.


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

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


Ads by Google