Làm thế nào thụ động theo dõi mất gói tcp? (Linux)


61

Làm cách nào tôi có thể theo dõi thụ động việc mất gói trên các kết nối TCP đến / từ máy của tôi?

Về cơ bản, tôi muốn một công cụ nằm ở phía sau và xem TCP ack / nak / truyền lại để tạo một báo cáo về việc các địa chỉ IP ngang hàng "dường như" đang bị tổn thất nặng nề.

Hầu hết các câu hỏi như thế này mà tôi tìm thấy về SF đề xuất sử dụng các công cụ như iperf. Nhưng, tôi cần theo dõi các kết nối đến / từ một ứng dụng thực trên máy của mình.

Có phải dữ liệu này chỉ nằm ở đó trong ngăn xếp TCP của Linux?

Câu trả lời:


50

Đối với ý nghĩa chung về quy mô của vấn đề của bạn netstat -ssẽ theo dõi tổng số lần truyền lại của bạn.

# netstat -s | grep retransmitted
     368644 segments retransmitted

Bạn có thể tìm kiếm segmentsđể có cái nhìn chi tiết hơn:

# netstat -s | grep segments
         149840 segments received
         150373 segments sent out
         161 segments retransmitted
         13 bad segments received

Để lặn sâu hơn, có lẽ bạn sẽ muốn kích hoạt Wireshark.

Trong Wireshark, đặt bộ lọc của bạn tcp.analysis.retransmissionđể xem truyền lại theo luồng.

Đó là lựa chọn tốt nhất tôi có thể đưa ra.

Những ngõ cụt khác được khám phá:

  • công cụ netfilter / conntrack dường như không giữ truyền lại
  • straces netstat -scho thấy rằng nó chỉ là in ấn/proc/net/netstat
  • cột 9 in / Proc / net / tcp có vẻ đầy hứa hẹn, nhưng không may là nó không được sử dụng.

và bạn có thể theo dõi các gói bị mất bằng # watch 'netstat -s | grep truyền lại '
không có

Điều này sẽ chỉ hiển thị các vấn đề bên ngoài. "phân đoạn netstat -s | grep" có vẻ hợp lý hơn đối với tôi.
akostadinov

1
Nếu bạn đang quản lý một mạng có kích thước hợp lý, thì tôi khuyên bạn nên dùng pastmon qua wireshark để theo dõi liên tục - pastmon.sourceforge.net/Wikka-1.1.6.5/wikka.php?wakka=HomePage
symcbean

4
Vì một số lý do, nó đánh vần retransmitedcho tôi (Ubuntu Server 14).
sudo

1
một tỷ lệ tốt để truyền lại so với gửi hoặc nhận?
abourget

12

Các thống kê này nằm trong / Proc / net / netstat và collectlsẽ theo dõi chúng để bạn tương tác hoặc ghi vào đĩa để phát lại sau:

[root@poker ~]# collectl -st
waiting for 1 second sample...
#<------------TCP------------->
#PureAcks HPAcks   Loss FTrans
        3      0      0      0
        1      0      0      0

Tất nhiên, nếu bạn muốn xem thì side-by-side với lưu lượng mạng, chỉ bao gồm n-s:

[root@poker ~]# collectl -stn
waiting for 1 second sample...
#<----------Network----------><------------TCP------------->
#  KBIn  PktIn  KBOut  PktOut PureAcks HPAcks   Loss FTrans
      0      1      0       1        1      0      0      0
      0      1      0       1        1      0      0      0

7

Bạn có thể sử dụng sscông cụ để lấy số liệu thống kê TCP chi tiết:

$ /sbin/ss -ti

Trong Debian, sử dụng apt-get install iprouteđể có được nhị phân.


Lưu ý rằng người đặt câu hỏi đang tìm kiếm một công cụ mà họ có thể xem đầu ra. Mặc dù một số lệnh được đề cập cho đến nay không hoạt động theo cách này, tất cả các câu trả lời được nâng cấp bao gồm ít nhất một phương thức để thực hiện.
Andrew B

2
@AndrewB: Bạn có thể làm watch ss -ti.
John Zwinck

3

Có vẻ như một số kẻ tại Đại học Bắc Carolina (UNC) đã xây dựng một tiện ích để điều tra chính xác điều này:

Phương pháp luận

TCP là một ví dụ cổ điển về giao thức kế thừa phải chịu sự điều chỉnh. Thật không may, đánh giá một cái gì đó cơ bản như cơ chế phát hiện / phục hồi mất mát của TCP là không toàn diện. Mục tiêu của chúng tôi là thực hiện đánh giá thực tế hoàn toàn về tổn thất TCP và tác động của nó đến hiệu suất TCP.

Tôi dựa vào phân tích thụ động các kết nối TCP trong thế giới thực để đạt được mức độ chi tiết và hiện thực cần thiết trong phân tích của tôi.

http://www.cs.unc.edu/~jasleen/Research-passivetcp.htm#Tool

Dụng cụ

Mục đích của công cụ là cung cấp kết quả đầy đủ và chính xác hơn để xác định và mô tả các phân đoạn ngoài chuỗi so với các phân đoạn được cung cấp bởi các công cụ trước đó như tcpanaly, tcpflows, LEAST và Mystery. Phương pháp của chúng tôi phân loại từng phân đoạn xuất hiện ngoài chuỗi (OOS) trong theo dõi gói thành một trong các loại sau: sắp xếp lại mạng hoặc truyền lại TCP được kích hoạt bởi một trong những thời gian chờ, ACK trùng lặp, ACK một phần, ACK chọn lọc hoặc phục hồi ngầm. Hơn nữa, mỗi lần truyền lại cũng được đánh giá xem có cần thiết hay không.

Tôi sẽ không nói đó là chất lượng sản xuất. Trước đây tôi đã xây dựng các tập lệnh perl nhanh để lưu trữ các bộ dữ liệu ip / port / ack trong bộ nhớ và sau đó báo cáo dữ liệu trùng lặp từ quá trình quét pcap, điều này có vẻ như nó cung cấp phân tích kỹ lưỡng hơn.



0

Rõ ràng sar cũ tốt có thể thu thập truyền lại (và các thống kê tcp khác), cùng với tất cả các loại thống kê hệ thống khác cũng có thể thú vị nếu bạn điều tra một vấn đề như cpu, bộ nhớ, I / O đĩa, v.v.

Bạn có thể cần cài đặt gói: sysstat và kích hoạt loại thống kê cụ thể này với công tắc -S SNMP, trên RHEL / OracleLinux, đây là cấu hình trong /etc/cron.d/sysstat trong đó / usr / lib64 / sa / sa1 được gọi cứ sau 5 phút, nhưng điều đó cũng có thể được điều chỉnh.

Để phân tích dữ liệu này sử dụng:

  • sar (dòng lệnh, văn bản dựa trên)
  • sadf tạo SVG theo http://sebastien.godard.pagesperso-orange.fr/matrix.html
  • ksar (có thể vẽ đồ thị đẹp và chạy trên Java - có một số bản sao khác nhau xung quanh để chọn trên sf.net và github nếu tôi nhớ chính xác)
  • http://www.sargraph.com (dựa trên PHP, mà tôi không có kinh nghiệm với bất cứ điều gì - nhớ bạn, ứng dụng, không phải ngôn ngữ lập trình)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.