40G / 10G 및 100G / 25G 이더넷의 직렬화 및 직렬화 시간


15

최근에 OpenStack 플랫폼을 호스팅하기 위해 Leaf / Spine (또는 CLOS) 네트워크의 가장 낮은 지연 시간 요구 사항에 대한 토론에 참여했습니다.

시스템 아키텍트는 트랜잭션 (블록 스토리지 및 향후 RDMA 시나리오)에 대해 가능한 가장 낮은 RTT를 위해 노력하고 있으며, 100G / 25G는 40G / 10G에 비해 직렬화 지연이 크게 줄었다 고 주장했다. 관련된 모든 사람들은 엔드 투 엔드 게임 (RTT를 손상 시키거나 도울 수있는)에는 NIC 및 스위치 포트 직렬화 지연보다 훨씬 많은 요소가 있다는 것을 알고 있습니다. 그럼에도 불구하고 직렬화 지연에 대한 주제는 계속해서 많은 비용이 소요되는 기술 격차를 뛰어 넘지 않으면 서 최적화하기가 어렵 기 때문에 계속 나타납니다.

약간 단순화 된 (인코딩 방식을 생략) 직렬화 시간은 비트 수 / 비트 레이트 로 계산할 수 있으므로 10G ~ 1.2μs에서 시작할 수 있습니다 ( wiki.geant.org 참조 ).

For a 1518 byte frame with 12'144bits,
at 10G (assuming 10*10^9 bits/s), this will give us ~1.2μs
at 25G (assuming 25*10^9 bits/s), this would be reduced to ~0.48μs 
at 40G (assuming 40*10^9 bits/s), one might expect to see ~0.3μs
at 100G (assuming 100*10^9 bits/s), one might expect to see ~0.12μs

이제 흥미로운 부분입니다. 물리 계층에서 40G는 일반적으로 10G의 4 레인으로 수행되고 100G는 25G의 4 레인으로 수행됩니다. QSFP + 또는 QSFP28 변형에 따라, 이것은 때때로 4 쌍의 파이버 스트랜드로 이루어지며, 때로는 단일 파이버 쌍에서 람다로 나뉘며, QSFP 모듈은 일부 xWDM을 자체적으로 수행합니다. 나는 1x 40G 또는 2x 50G 또는 1x 100G 레인에 대한 사양이 있다는 것을 알고 있지만, 잠시 동안 옆에 두자.

다중 레인 40G 또는 100G와 관련하여 직렬화 지연을 추정하려면 100G 및 40G NIC 및 스위치 포트가 실제로 "비트를 와이어 (세트)에 분배하는 방법"을 알아야합니다. 여기서 무엇을하고 있습니까?

Etherchannel / LAG와 비슷합니까? NIC / 스위치 포트는 하나의 특정 채널을 통해 하나의 "흐름"(읽기 : 프레임의 범위에서 사용되는 해싱 알고리즘의 동일한 해싱 결과)의 프레임을 전송합니까? 이 경우 10G 및 25G와 같은 직렬화 지연이 각각 예상됩니다. 그러나 기본적으로 40G 링크는 LAG를 4x10G로 만들어 단일 흐름 처리량을 1x10G로 줄입니다.

비트 단위 라운드 로빈과 같은 것입니까? 각 비트는 4 개 (서브) 채널에 라운드 로빈 분산되어 있습니까? 실제로 병렬화로 인해 직렬화 지연이 줄어들 수 있지만 주문 배달에 대한 몇 가지 질문이 발생합니다.

프레임 방식의 라운드 로빈과 같은 것입니까? 전체 이더넷 프레임 (또는 다른 적절한 크기의 비트 청크)이 4 채널을 통해 전송되며 라운드 로빈 방식으로 배포됩니까?

다음과 같이 완전히 다른 것이 있습니까?

귀하의 의견과 조언에 감사드립니다.

답변:


14

여러 레인으로 분할하는 부분을 IEEE 802.3ba 표준에서 Physical Coding Sublayer 라고 합니다. 게리 니콜 (Gary Nicholl)의 프레젠테이션 은 이에 대한 좋은 개요를 제공합니다.

간단한 설명은 데이터가 각각 64 비트 블록 단위로 여러 레인으로 나뉘어져 있다는 것 입니다 (클럭 복구를 위해 66 비트로 유선으로 인코딩 됨 ). 따라서 패킷 크기가 N * 64 비트 (4 레인의 경우 32 바이트)를 초과하면 모든 레인을 완전히 활용할 수 있습니다. 인코딩에는 약간의 지연이있을 수 있지만 구현에 따라 다를 수 있습니다.

이 다이어그램은 위에 링크 된 프레젠테이션에서 가져온 것입니다. 물리 코딩 서브 레이어 기능


1
"인코딩에 약간의 지연이있을 것 입니다. " 이제 다른 벌레 캔을 열었습니다! 지연은 얼마입니까? 전체 패킷 지연에 영향을 줍니까? 기타 ...
파이프

1
아, 고마워 내가 이해하는 방식으로,이 "단어"는 원래 게시물에 넣을 때 "적절한 크기의 비트 단위"입니다. 그게 다가 와요?
Marc 'netztier'Luethi

1
@ Marc'netztier'Luethi 정확합니다.
jpa

@pipe 그래. 다행히 "관련된 모든 사람들은 더 많은 요소가 있다는 것을 알고 있습니다":)
jpa

2
@pipe 잘, 나는 우리가 그것을 제쳐두고 떠날 것 같아요. 지금부터 제기 된 모든 문제에 대해, "NIC / 포트가 4 개의 레인을 라운드 로빈 할 수 있도록 충분한 데이터를 한 번에 (32 바이트) 전송하는 한 짧게 / 병렬화 된 직렬화 지연을 얻을 수 있습니다. 당신은 너무 많이 후입니다 ". 물론 IP 헤더가 있고 페이로드가없는 반 베이크 이더넷 프레임은 이미 그 한계를 넘을 것입니다. 따라서 : 신경 쓰지 마십시오.
Marc 'netztier'Luethi

16

당신은 너무 생각하고 있습니다.

사용 된 레인 수는 실제로 중요하지 않습니다. 1, 2 또는 5 레인을 통해 50Gbit / s를 전송하든 직렬화 지연은 20ps / bit입니다. 따라서 사용 된 레인에 관계없이 100ps마다 5 비트를 얻게됩니다. 레인으로의 데이터 분할 및 재결합은 PCS 하위 계층에서 발생하며 물리 계층 위에는 보이지 않습니다. 상황에 관계없이 100G PHY가 단일 레인 (각 10ps, 총 100ps)을 통해 순차적으로 10 비트를 직렬화하는지 또는 10 레인 (병렬로 100ps, 총 100ps)을 통해 병렬로 10 비트를 직렬화하는지는 중요하지 않습니다. 그 PHY를 재건하십시오.

당연히 100 Gbit / s는 50 Gbit / s 등의 절반 지연 시간을 가지므로 (물리적 계층에서) 직렬화 속도가 빠를수록 프레임 전송 속도가 빨라집니다.

인터페이스의 내부 직렬화에 관심이 있다면 속도 클래스에 사용되는 MII 변형을 살펴 봐야합니다. 그러나이 직렬화는 즉석에서 또는 실제 MDI 직렬화와 동시에 이루어집니다. 시간이 조금 걸리지 만 실제 하드웨어에 따라 다르며 예측하기가 불가능할 수도 있습니다 (2-5 ps 정도). 100 Gbit / s에 대한 내 추측). 더 큰 요소가 관련되어 있기 때문에 실제로는 걱정하지 않습니다. 10ps는 추가 2 밀리미터 (!)의 케이블에서 얻을 수있는 전송 지연의 순서입니다.

40Gbit / s에 각각 10Gbit / s의 레인 4 개를 사용하는 것은 4 개의 10Gbit / s 링크를 집계하는 것과 다릅니다. 레인 수에 관계없이 40Gbit / s 링크는 LAGged 10Gbit / s 링크로는 할 수없는 단일 40Gbit / s 스트림을 전송할 수 있습니다. 또한 40G의 직렬화 지연은 10G의 직렬화 지연에 불과합니다.


3
귀하의 의견에 감사드립니다. 따라서 10 / 25 / 40 / 100G에서 프레임 당 비트 수 / 비트 속도 = 직렬화 지연 의 경험 법칙은 주어진 물리 계층이 사용하는 레인 수에 관계없이 유효합니다. 약간의 차이가 있습니다)?
Marc 'netztier'Luethi

6
예. 멀티 레인 이더넷은 이런 점에서 통합 링크와는 매우 다릅니다.
Zac67
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.