Thời gian đi về và khoảng cách giữa các gói
Đại lượng ngoài hệ · biểu thị bằng giây SI · RTT và Δt giữa các gói
Năm 1983 Mike Muuss, trong khi lần tìm một hỏng hóc trên mạng, đã viết trong một tối một chương trình nhỏ: nó gửi cho một máy một yêu cầu ngắn rồi in ra thời gian trôi qua cho đến lúc có hồi đáp. Cái tên ông lấy từ những người làm dò âm: tàu ngầm phát một tiếng tách rồi lắng nghe tiếng dội, và khoảng cách được tính từ một hiệu thời gian duy nhất. Chính từ thói quen đo ấy mà đơn vị ra đời: cái được ghi lại không phải đường đi, cũng không phải đường về, mà là trọn vòng.
Cái tinh tế nằm ở chỗ chuyến đi về được đo bằng một chiếc đồng hồ duy nhất: yêu cầu rời khỏi chính cái máy mà hồi đáp sẽ tới, nên hiệu của hai số đọc không phụ thuộc vào việc đồng hồ ở đầu kia có khớp hay không. Trễ một chiều thì không dễ có đến thế — cần những đồng hồ chỉnh khớp mịn hơn cả bản thân cái trễ, tức là hoặc một giao thức riêng để truyền thời khắc, hoặc một máy thu thời gian vệ tinh ở mỗi đầu.
01 · Định nghĩa
Thời gian đi về là khoảng giữa lúc gửi một gói và lúc hồi đáp cho nó tới nơi, đo bằng một và cùng một chiếc đồng hồ. Khoảng cách giữa các gói là thời gian giữa hai lần thả hai gói kề nhau của cùng một dòng; nó không do mạng đặt ra mà do kẻ chất tải lên mạng.
Chuyến đi về gồm ba phần khác nhau về bản chất, và phân biệt chúng là điều có ý nghĩa, bởi mỗi phần chữa một cách. Phần thứ nhất là thời gian lan truyền, do chiều dài tuyến và tốc độ ánh sáng trong sợi quang quyết định, và nó chẳng chịu nhường gì ngoài một sợi cáp ngắn hơn. Phần thứ hai là xếp chuỗi, thời gian đẩy gói ra đường dây, và tuyến càng nhanh thì nó càng nhỏ. Phần thứ ba là chờ hàng trong bộ đệm của các nút giữa đường, và chỉ riêng nó phụ thuộc vào việc mạng lúc ấy đông đến mức nào.
Từ đó nảy ra một tình huống ít ai để ý: có thể nới tuyến rộng gấp mười mà chuyến đi về chẳng thay đổi chút nào, bởi việc nới chỉ lấy đi phần xếp chuỗi, còn các hàng chờ và chiều dài tuyến vẫn nguyên chỗ cũ. Hơn thế nữa, trong những bộ đệm làm dư dả «phòng khi cần», các gói không mất đi mà đứng đợi, và dưới tải chuyến đi về lớn lên đến hàng giây — đó chính là cái họa được đặt tên bufferbloat.
Khoảng cách giữa các gói đứng cạnh không phải ngẫu nhiên: gần như mọi chuyện xảy ra với một dòng đều do tỉ số giữa khoảng cách và chuyến đi về định đoạt. Chừng nào các gói ra đi nhiều hơn số xác nhận trở về, người gửi làm việc trong mù mờ và phải giữ trên tuyến đúng bằng lượng dữ liệu mà tuyến chứa nổi về mặt vật lý — và lượng ấy chính là tích của tốc độ với chuyến đi về.
Hãy chọn một tuyến rồi kéo con trượt trên kích thước gói. Gói màu lam rời tủ bên trái sang tủ bên phải rồi trở về màu cam; dải nằm dưới tuyến tách chuyến đi về thành ba phần, để thấy nó thực sự tiêu vào đâu. Nới tuyến chỉ rút ngắn phần giữa — đúng cái phần vốn đã nhỏ nhất trên những tuyến dài.
Bộ nhớ rẻ đi trước khi các thuật toán thay đổi, thế là nhà sản xuất bắt đầu nhét vào thiết bị những hàng chờ hàng trăm gói, tưởng rằng thừa một chút bộ đệm thì hại gì. Hóa ra ngược lại: hàng chờ đầy không làm mất gói mà giữ chúng lại, người gửi chẳng nhận được dấu hiệu nghẽn nào và cứ chất thêm. Chuyến đi về trên một tuyến gia đình dưới tải lớn lên đến một giây rưỡi, trong khi tốc độ vẫn y nguyên.
02 · Quy đổi
Chuyến đi về, ống dẫn và dòng gói
Hãy nhập một chuyến đi về bằng đơn vị nào tùy ý, phiếu sẽ đổi nó sang các đơn vị khác rồi tính những gì phụ thuộc vào nó: ở các tốc độ khác nhau tuyến chứa được bao nhiêu dữ liệu, cửa sổ đặt ra giới hạn nào, và các bộ mã khác nhau chọn khoảng cách giữa các gói ra sao.
Tốc độ dùng để tính sức chứa lấy từ tuyến đã chọn ở phần tương tác; trong các thiết lập tinh có thể ghim ở một gigabit.
Ping không đo đúng cái mà một chương trình ứng dụng cần. Việc xử lý yêu cầu dội ở một nút xa đi theo một lối riêng, thường vòng qua bộ tính chính, nên trễ của nó không trùng với trễ của một kết nối thật; những thiết bị khác lại trả lời các yêu cầu như vậy sau cùng, hoặc chẳng trả lời. Bởi thế ping lớn không phải bao giờ cũng nghĩa là kết nối chậm, còn ping nhỏ chẳng bảo đảm một kết nối nhanh.
| Giá trị | Ghi chú | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Bậc độ lớn
thang lôgarit: từ micro giây đến giây04 · Dụng cụ đo
Bắt thời gian đi về bằng gì
Chương trình gửi đi một gói có dấu thời gian rồi đợi nó trở lại, và hiệu của hai số đọc chính là chuyến đi về. Cái hay của nó là chỉ cần một chiếc đồng hồ và chẳng đòi hỏi gì ở phía bên kia ngoài thiện chí trả lời; cái dở là bên ấy trả lời theo một lối riêng, không nhất thiết nhanh.
Ghi lại cả cuộc trao đổi thì chuyến đi về rút ra được từ chính dòng ấy: từ thời gian giữa lúc một đoạn ra đi và lúc xác nhận cho nó tới nơi. Như vậy đo được đúng cái trễ mà chương trình ứng dụng nhìn thấy, và hơn nữa độ tản cũng hiện ra — thứ mà trong chuyện trò còn phiền hơn một cái trễ đều đặn.
Những thiết bị đóng dấu thời gian ngay trong chip mạng gạt bỏ sự bất định do hệ điều hành đưa vào và đẩy độ phân giải xuống hàng chục nano giây. Chúng trao đổi theo một thỏa thuận riêng, trong đó mỗi đầu đặt hai dấu — và chính điều ấy cho phép tách chuyến đi về thành hai nửa không bằng nhau.
Trễ một chiều chỉ đo được ở nơi đồng hồ hai đầu đã được đưa về một thời khắc chung mịn hơn cả bản thân cái trễ — muốn vậy phải cắm mốc cho các tuyến bằng một giao thức đồng bộ riêng, hoặc dựng các máy thu thời gian vệ tinh. Không có thế thì chuyến đi về vẫn là con số trung thực duy nhất.
05 · Quy tắc viết
Chuyến đi về kèm đơn vị, độ tản riêng
Ký hiệu viết bằng ba chữ hoa La-tinh, không chấm; giá trị viết kèm đơn vị và kèm lời cho biết đã đo cái gì: một lần đo lẻ, trung bình của một loạt, hay trung vị của loạt ấy. Độ tản ghi bên cạnh như một con số riêng, bởi trung bình một mình chẳng nói gì về việc các gói có đi đều hay không.
Cách viết thứ nhất bỏ qua đơn vị, và cùng với đơn vị là bỏ qua cả nghĩa: một trăm ba mươi cái gì — mili giây hay micro giây? Cách thứ hai đem một giả định ra làm phép đo, trong khi đường đi và đường về thường theo những lối khác nhau và hai nửa hóa ra không bằng nhau. Cách thứ ba lặp lại lỗi phổ biến nhất, coi chuyến đi về là thuộc tính của tuyến chứ không phải của trọn đường. Cách thứ tư lẫn lộn các đại lượng: khoảng cách giữa các gói không phải là chuyến đi về.
06 · Đơn vị lân cận
Chuyến đi về mô tả tuyến từ phía thời gian, tốc độ mô tả từ phía lượng, và tích của chúng cho đại lượng thứ ba là sức chứa của tuyến, thiếu nó thì chẳng chỉnh nổi một kết nối nhanh nào ở cự ly xa. Bên cạnh là độ tản của trễ, thứ mà trong chuyện trò và trong trò chơi còn phiền hơn một sự chậm đều đặn.
một giây chứa được bao nhiêu
tốc độ × chuyến đi về
rung theo RFC 3550
Trong các phiếu của Simetrium bên cạnh là bit và byte, những thứ dùng để tính sức chứa của tuyến, giây, cái mà cả hai đại lượng rốt cuộc đều quy về, decibel từ bảng cân đối tuyến và nhịp đồng hồ, cái đặt ra giới hạn phân giải cho dấu thời gian của phần cứng.
07 · Phần lịch sử
Tiếng tách và tiếng dội
Khi chữ đầu tiên được truyền giữa Đại học California và viện ở Menlo Park, người trực đọc nó qua điện thoại và chờ xác nhận từng chữ cái một. Tuyến đứt ở chữ thứ ba, nhưng chính cái trình tự ấy — gửi đi, chờ hồi đáp, nhìn đồng hồ — lại đúng là cái đang dùng cho đến hôm nay.
Mike Muuss viết chương trình của mình trong một tối, giữa lúc lần tìm hỏng hóc, và đặt tên theo tiếng của máy dò sâu: một cú đẩy ngắn, rồi chờ tia dội. Cái tên đắt đến mức động từ «ping» đi vào ngôn ngữ vượt xa nghề mạng, và giờ đây chỉ bất cứ mẩu tin ngắn nào gửi đi để xem có ai ở đó hay không.
Mùa thu 1986 lưu lượng của một tuyến đại học tụt xuống một phần nghìn: những người gửi không nhận được xác nhận nên cứ gửi thêm bản sao mới và làm tuyến chết hẳn. Van Jacobson đưa ra phương thuốc đến nay vẫn công hiệu: canh chừng chuyến đi về cùng độ tản của nó, và coi sự lớn lên của chúng là dấu hiệu nghẽn, tức ghìm việc gửi lại trước khi mất mát bắt đầu.
Các thuật toán điều dòng ngày nay không còn canh mất mát nữa mà canh thẳng vào việc chuyến đi về lớn lên ra sao, và ghìm việc gửi trước khi hàng chờ kịp đầy. Bộ định tuyến gia đình đã có những kỷ luật cố ý giữ bộ đệm cho ngắn — và trên chính tuyến ấy, chuyến đi về dưới tải tụt từ một giây rưỡi xuống hàng chục mili giây.
Một nửa chuyến đi về là giả định, không phải phép đo
Chuyến đi về tiện ở chỗ nó không đòi đồng hồ phải khớp nhau: cả lúc gửi lẫn lúc nhận đều do một thiết bị đóng dấu, nên sự lệch nhau của các thang đơn giản là không lọt vào hiệu số. Chính vì thế ping chạy được khắp nơi và chẳng cần chỉnh, còn trễ một chiều là đại lượng đỏng đảnh hơn nhiều, đòi một sự đồng bộ mịn hơn cả cái đang đo.
Thói quen chia đôi chuyến đi về trụ được là vì lẽ ấy, dẫu chẳng mấy điều bênh vực nó: dòng đi tới phía bên kia và dòng trở về thường theo những tuyến khác nhau, dài ngắn khác nhau và tải khác nhau, nên hai nửa thật có thể chênh nhau gấp đôi. Đại lượng dễ đo nhất trong cả nghề mạng đồng thời cũng là đại lượng bị đọc sai nhiều nhất.
Danh mục · đơn vị đo
Mỗi đại lượng một phiếu
Bảy đơn vị cơ bản của SI, hai mươi hai đơn vị dẫn xuất có tên riêng và các đại lượng ngoài hệ, thiếu chúng thì kỹ thuật lẫn lịch đều không chạy.