Archive for July, 2014

0184 | Limit bandwidth ขาเข้าบน Cisco Catalyst Switch

Sunday, July 27th, 2014 Posted in IP Network | No Comments »

ทำไมรู้สึกว่าช่วงนี้อัพ blog รัวไปนะ (ฮา)

ก่อนอื่นต้องพูดเรื่องคำว่า “ขาเข้าบน switch” ก่อน…

มันคือ traffic ที่ส่งออกมาจากเครื่อง server มาครับ เวลามองให้มองที่การเชื่อมต่อคือ server –> access switch –> core switch/router –> internet
พอมองจาก switch traffic ขา download ของ server ก็ คือขาออกจาก switch ส่งไปหา server
เพราะงั้น ขา upload (ขาออก) ของ server ก็เลยกลายเป็น traffic ขาเข้าบน switch (ซึ่งในฝั่ง network จะเรียกว่า ingress traffic) วิธีการก็ดังนี้ครับ

  • ก่อนอื่น เปิดการทำ qos ก่อนครับ

mls qos

  • แล้วก็สร้าง policy map ขึ้นมาระบุความเร็ว

policy-map POLICY_SLAP
class class-default
police 50m 10000 exceed-action drop

ตรง POLICY_SLAP คือชื่อของ rule ที่ใช้ บรรทัดที่สองเป็นการระบุ class หลัก (กรณีหลุดมาจาก class อื่น ==> จริงๆ มันทำเงื่อนไขการ shape ได้เยอะมากเลย) ส่วนบรรทัด police ตัวเลขชุดแรกคือความเร็ว (หน่วย bps) ชุดที่สองคือ burst (การอนุญาตให้ packet ส่วนเกินผ่านได้ในระยะเวลาสั้นๆ) ส่วนที่เหลือคือข้อบังคับครับ ถ้าเกินให้โยน packet ทิ้ง

  • เอาไป apply ที่ interface

interface GigabitEthernet0/1
service-policy input POLICY_SLAP

ความเร็วที่ได้จะเกินจากที่เราระบุใน rule ไว้พอควร (เนื่องจากค่า burst) ก็ลองปรับค่า burst ให้เหมาะสมดูครับ แต่มันก็ตั้งได้ต่ำสุดแค่ 8000 อะนะ

เรียบเรียงจาก Slaptijack blog ครับ

0183 | TCP MSS Clamping

Sunday, July 27th, 2014 Posted in IP Network, Linux | No Comments »

MSS => Maximum segment size คือค่า parameter ระบุขนาด packet สูงสุดที่ server ทั้งสองฝ่ายรับรู้ เพื่อป้องกันไม่ให้ packet มีขนาดมากเกินว่าค่า MTU ใน Layer 2 ซึ่งถ้าเกินจะทำให้ packet โดน drop หายไปกลางทาง ตามก็ไม่เจอ trace ก็ไม่เห็นว่า loss (เพราะตอน trace ไม่ได้ใช้ packet ขนาดเท่ากะที่ loss) สนุกสนานมาก

เนื่องด้วย TCP เป็น 2-way communication เพราะงั้นก็เลยมี option MSS ไว้ระบุว่าทั้งสองฝั่งจะคุยกันด้วยขนาด packet ไม่เกินเท่าไหร่ ส่งตอบไปตอบกลับตอน 3-way handshake แล้วก็จะพยายามส่ง packet ขนาดไม่เกินเท่านั้นตลอด

MTU interface ปกติคือ 1500 ถ้า traffic ต้องวิ่งผ่าน interface ที่มี encapsulation เพิ่มเช่น pppoe หรือ tunnel ต่างๆ ก็ต้องหัก header ของการ encapsulation นี้ออกไปทำให้ MTU ลดลงไปอีกด้วย ถ้าเครื่องต้นทางและปลายทาง config ไว้ไม่ดีก็อาจทำให้ packet loss ได้

iptables มีตัวช่วยคือ mangle TCP MSS ที่ช่วยแก้ไขค่า MSS ใน packet ให้อยู่ในระดับที่เหมาะสมได้ดังนี้ครับ

iptables -t mangle -A POSTROUTING -p tcp –tcp-flags SYN,RST SYN -m tcpmss –mss 1453:1536 -j TCPMSS –set-mss 1452

คำสั่งแก้ไขเพิ่มเติมจากโพสของพี่นิวตรอน

คำสั่งเดียวเอง แก้ปัญหา packet วิ่งข้าม tunnel แล้ว loss ได้แล้ว แต่มีผลเฉพาะ tcp นะครับ