Blog

Office 365 ในบริษัทช้า และไม่เสถียร

yura-fresh-760057-unsplash.jpg

ทำไม Office 365 จึงช้าเวลาเรานั่งทำงานอยู่ในระบบ network ของบริษัท แต่พอจับเครื่องคอมพิวเตอร์ต่อ Internet ผ่านมือถือ หรือนั่งทำงานอยู่ที่บ้านกลับเร็ว?

ที่เป็นเช่นนี้ (ส่วนใหญ่) เนื่องมาจาก ตอนที่เรานั่งทำงานอยู่บ้าน หรือกำลังเชื่อมต่อ Internet ผ่านมือถือ เรากำลังคุยกับ Office 365 โดยตรง แต่ระบบ network ภายในบริษัทอาจมีอุปกรณ์กั้นตรงกลางระหว่างเรากับ Office 365 เช่น proxy หรือ firewall ที่อาจยังไม่ได้ปรับแต่งค่าให้เหมาะสม จึงอาจเป็นสาเหตุหลักที่ทำให้เกิดปัญหาในการใช้งาน Office 365 วันนี้เรามาไล่ดูกันครับ

. . .

TCP windows scaling

ใน TCP header จะมีฟิลด์ขนาด 16 bit ใช้ระบุขนาดของ windows size ซึ่งมีค่าสูงสุดได้ที่ 2^16 หรือ 65,535 bytes ค่านี้เปรียบเสมือนขนาด buffer ของผู้รับ เป็นปริมาณข้อมูลที่ผู้ส่งจะสามารถทยอยส่งไปหาผู้รับได้โดยไม่ต้องรอ ACK จากทุกๆ TCP packet ที่ส่งไป

ในระบบ network ที่มี latency สูง เช่น Internet ที่บางครั้งอาจมี latency สูงกว่า 100 ms จะทำให้ ACK packet จากผู้รับเดินทางไปหาผู้ส่งได้ช้า ทำให้ผู้ส่งต้องกัก (back off) ข้อมูลส่วนถัดไป (ที่ต้องส่งต่อ) ไว้นานเกินไป ส่งผลให้การรับส่งข้อมูลจนครบทั้งหมดต้องใช้เวลานานกว่าที่ควรจะเป็น

เราอาจแก้ไขค่า latency ได้ยาก แต่เราสามารถปรับ windows size ให้มีขนาดใหญ่ขึ้นได้ด้วย “scaling factor” จาก RFC 1323 ครับ

ค่า scaling factor จะช่วยขยายขนาด windows size ให้กลายเป็น (2^ScalingFactor) x windows size ตัวอย่างเช่น เครื่องคอมพิวเตอร์ของผม enable TCP windows scaling ไว้ จึงมีขนาด windows size ใหม่เท่ากับ 2^8 x 8192 = 2 MB ทำให้ Office 365 สามารถส่งข้อมูลมาหาผมได้จนถึง 2 MB ก่อนจะ back off เพื่อรอ ACK แล้วจึงส่งข้อมูลต่อ

mylaptop outlook.office365.com TCP TCP:Flags=......S., SrcPort=65087, DstPort=HTTPS(443), PayloadLen=0, Seq=2163480252, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192 {TCP:36, IPv4:35}
outlook.office365.com mylaptop TCP TCP:Flags=...A..S., SrcPort=HTTPS(443), DstPort=65087, PayloadLen=0, Seq=907930248, Ack=2163480253, Win=8190 ( Negotiated scale factor 0x4 ) = 131040 {TCP:36, IPv4:35}

ถ้าเราเชื่อมต่อ Office 365 ผ่าน proxy เราจะต้อง capture network trace จาก proxy หากพบ scaling factor = 0 ใน SYN packet แสดงว่า TCP windows scaling ไม่ได้ถูก enable ไว้ หรือ enable ไว้แต่ไม่ทำงานเหมือนตัวอย่างนี้ครับ

myproxy outlook.office365.com TCP TCP:Flags=......S., SrcPort=65252, DstPort=HTTPS(443), PayloadLen=0, Seq=4254329414, Ack=0, Win=65535 ( Negotiating scale factor 0x0 ) = 65535 {TCP:22, IPv4:21}
outlook.office365.com myproxy TCP TCP:Flags=...A..S., SrcPort=HTTPS(443), DstPort=65252, PayloadLen=0, Seq=1041964150, Ack=4254329415, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152 {TCP:22, IPv4:21}

แล้วถ้าเราไม่ได้เป็นผู้ดูแล proxy เราจะทำยังไง?

แบบนี้ก็ต้องเดาดูครับ ให้สังเกต SYN/ACK จาก 3-ways handshake เพื่อดู packet ที่ proxy ตอบกลับมาหาเรา หากพบ scaling factor = 0 ก็อาจเป็นไปได้ว่า proxy จะใช้ค่านี้คุยกับ Office 365 เช่นกันครับ

คำแนะนำ – enable TCP windows scaling เพื่อขยายขนาด windows size

หมายเหตุ – สำหรับ Blue Coat ProxySG บางรุ่น แม้ RFC 1323 จะ enable แล้ว แต่ TCP windows scaling ก็อาจจะยังไม่ทำงาน ดูเพิ่มเติมได้ ที่นี่

. . .

Proxy/firewall authentication

หาก proxy หรือ firewall ถูกตั้งค่าให้ทำ authentication กับ client ในทุกๆ connection อาจทำให้การเชื่อมต่อไปยัง Office 365 ช้าลง และตัว proxy เองก็ต้องทำงานหนักขึ้น ในบางครั้งเราอาจต้องใช้เวลามากกว่า 3 วินาที ในแต่ละ connection เพื่อรอให้ proxy ตรวจสอบตัวตนของเรากับ Active Directory ก่อน ในระบบที่มี client จำนวนมากเรามักพบความล่าช้าในการเชื่อมต่อที่มีสาเหตุมาจาก proxy authentication ครับ

คำแนะนำ – Bypass proxy หรือ firewall authentication สำหรับ Office 365 URL และ IP

. . .

Network traffic inspection

เมื่อก่อน client เข้าถึง server ภายในบริษัทโดยไม่มีอุปกรณ์ตรวจจับผู้บุกรุกมาขวางกั้น แต่ตอนนี้ server ทำงานอยู่ใน Internet หากไม่ต้องการเพิ่มปัญหา เราควรปิด network traffic inspection สำหรับ Office 365 network traffic แต่ถ้าเป็น network traffic อื่นๆ อาจเปิดได้ไม่ว่ากันครับ

คำแนะนำ – ปิด network traffic inspection สำหรับ Office 365 URL และ IP

. . .

Inbound (International) network bandwidth

เมื่อครั้งที่ mail server อยู่บริษัท เราเคยส่ง mail 5 MB ไปหาคน 1,000 คน ได้อย่างสบายๆ แต่ตอนนี้ถ้าเราทำแบบนั้นความรู้สึกในการใช้งานอาจเริ่มไม่เหมือนเดิมครับ เราอาจจะเริ่มรู้สึกว่าเรารับ mail ได้ช้าลง ที่เป็นแบบนี้เนื่องจาก outbound network traffic ถูกใช้เพียง 5 MB แต่คน 1,000 คนต้อง sync mail จากต่างประเทศกลับมาที่ Outlook ภายในบริษัทด้วยขา inbound โดยมีปริมาณรวมกันอยู่ที่ 5 MB x 1,000 = 5 GB!

คำแนะนำ – อย่าลืม monitor ปริมาณการใช้งาน International link ขา inbound แล้วจัดเตรียมให้เพียงพอต่อการใช้งาน

. . .

Round Trip Time (RTT)

ระบบ network ที่มี latency สูงจะมีค่า RTT สูงไปด้วย ในการใช้งาน Office 365 ค่า RTT ที่มากกว่า 300 ms จะทำให้เราเริ่มรู้สึกช้า โดยทั่วไปเราควรจะเห็น RTT < 100 ms จากประเทศไทยไปยัง ingress point ที่สิงคโปร์ หากทดสอบด้วยการ ping ไม่ได้ (เนื่องจาก ICMP packet อาจถูก block) อาจลองใช้ psping แทนดูได้ครับ

คำแนะนำ – RTT ต่ำกว่า 100 ms กำลังดี

. . .

Proxy/firewall scalability

เมื่อเรามี public IP อยู่ 1 เบอร์ proxy หรือ firewall จะต้อง map connection ทั้งหมด จาก client ทุกเครื่องด้วย port ที่ตัวเองมี เพื่อให้สามารถรับส่งข้อมูลระหว่าง server ใน internet กับ application ต่างๆ บน client เครื่องใดๆ ได้อย่างถูกต้อง โดยทั่วไปอุปกรณ์ proxy หรือ firewall จะมีจำนวน port ที่สามารถใช้งานได้อยู่ที่ประมาณ 60,000 port ต่อ 1 public IP

จำนวน client ที่มากเกินไปอาจทำให้ port บน firewall และ proxy ไม่เพียงพอต่อการใช้งาน เมื่อไม่มี port เหลือ ก็ไม่สามารถสร้าง connection ใหม่ให้ client เพื่อออก internet ได้ เมื่อเราเปิด Outlook แล้วพบอาการ disconnected ก็อาจจะมาจากสาเหตุนี้ได้ครับ

คำแนะนำ – เพิ่ม public IP ขาออก Internet หากจำนวน port ใกล้แตะ 60,000

. . .

Geo DNS resolution

Microsoft Global WAN เป็นระบบ network หลังบ้านของ Microsoft ที่มี latency ต่ำมากๆ ต่อให้ข้อมูลของเราอยู่ใน data center ที่ห่างไกลเพียงใดก็ไม่ใช่ปัญหา แค่เราสามารถเชื่อมต่อไปยัง ingress point ที่ใกล้ที่สุดได้ก็เพียงพอแล้ว เช่น เราอยู่ประเทศไทย solve DNS ได้ ingress point ที่สิงคโปร์ ซึ่งมี RTT < 100 ms ต่อให้ข้อมูลเราอยู่ใน data center ที่ยุโรปก็จะไม่พบความล่าช้าในการใช้งานครับ

คำแนะนำ – ใช้ DNS server ที่ resolve Office 365 URL แล้วได้ ingress point ใน region เดียวกัน

. . .

สาเหตุอื่นๆ ที่เหลือ

ถ้าแก้หมดแล้วยังไม่หายถือว่าโชคไม่ไดี ต้องเหนื่อยต่ออีกนิด ดูเพิ่มเติม ที่นี่ เดี่ยวก็แก้ได้ครับ

. . .

Office 365 ทำงานอยู่ใน Microsoft data center ในต่างประเทศ มี reliability และ performance สูง ถ้ารู้สึกว่าเราใช้งานได้ช้า ลองเปรียบเทียบความเร็วเมื่ออยู่ภายนอกระบบ network ของบริษัทดู หากเร็วขึ้น ลองตรวจสอบค่า configuration บางค่าในระบบ network ก่อน อาจจะนำไปสู่สาเหตุและช่วยแก้ปัญหาได้ในที่สุดครับ

จาก Top 10 Tips for Optimising & Troubleshooting your Office 365 Network Connectivity

INC