Értesítés a torlódásokról - Explicit Congestion Notification

Az Explicit Congestion Notification ( ECN ) az Internet Protocol és az Transmission Control Protocol kiterjesztése, és az RFC 3168 (2001) szabvány határozza meg. Az ECN lehetővé teszi a végpontok közötti értesítést a hálózati torlódásokról csomagok ejtése nélkül. Az ECN opcionális szolgáltatás, amely két ECN-kompatibilis végpont között használható, ha az alapul szolgáló hálózati infrastruktúra is támogatja azt.

Hagyományosan a TCP/IP hálózatok csomagok ejtésével jelzik a torlódást. Ha sikeresen tárgyalnak az ECN-ről, akkor az ECN-érzékeny útválasztó jelzést adhat az IP-fejlécben a csomag leejtése helyett, jelezve a közelgő torlódásokat. A csomag vevője visszhangozza a torlódás jelzést a feladónak, ami csökkenti az átviteli sebességet, mintha elejtett csomagot észlelne.

Ahelyett, hogy megfelelően reagálna, vagy figyelmen kívül hagyná a biteket, néhány elavult vagy hibás hálózati berendezés történelmileg leesett vagy zavart csomagokat tartalmaz, amelyekben ECN bitek vannak beállítva. 2015 -től a mérések azt sugallták, hogy a nyilvános interneten található webszerverek azon része, amelyek ECN beállítása megakadályozza a hálózati kapcsolatokat, kevesebb mint 1%-ra csökkent.

A passzív támogatás az Ubuntu Linux rendszerben 12.04 óta, a Windows Serverben pedig 2012 óta létezik. A legnépszerűbb webhelyek passzív támogatása a 2012. évi 8,5% -ról 2017 májusában meghaladta a 70% -ot. 2015 júniusában az Apple bejelentette, hogy az ECN alapértelmezés szerint engedélyezve lesz a támogatott és jövőbeni termékein, hogy elősegítse az ECN jelzés bevezetését az egész iparágban.

Művelet

Az ECN speciális támogatást igényel mind az Internet, mind a szállítási rétegben a következő okok miatt:

  • A TCP/IP -ben az útválasztók az Internet rétegen belül működnek, míg az átviteli sebességet a szállítási réteg végpontjai kezelik.
  • A torlódást csak az adó kezelheti, de mivel az ismert, hogy csak egy csomag elküldése után történt, a vevőnek a torlódásjelzés visszhangját kell adnia az adónak.

ECN nélkül a torlódást jelző visszhang közvetve érhető el az elveszett csomagok észlelésével. Az ECN esetében a torlódást az jelzi, ha az IP -csomagon belüli ECN mezőt CE -re állítja, és a vevő visszaviszi az adóhoz a megfelelő bitek beállításával a szállítási protokoll fejlécében. Például a TCP használatakor a torlódás jelzése visszhangozódik az ECE bit beállításával.

Az ECN működése IP -vel

Az ECN négy különböző kódpont kódolására használja az IPv4 vagy IPv6 fejléc Traffic Class mezőjének két legkevésbé szignifikáns (jobb oldali) bitjét :

  • 00 -Nem ECN-képes szállítás, nem ECT
  • 10 - ECN -képes szállítás, ECT (0)
  • 01 - ECN képes szállítás, ECT (1)
  • 11 - Torlódás, CE.

Ha mindkét végpont támogatja az ECN -t, akkor csomagjaikat ECT (0) vagy ECT (1) jelöli. A forgalomirányítók egyenértékűnek tekintik az ECT (0) és az ECT (1) kódpontokat. Ha a csomag áthalad egy aktív sorkezelő (AQM) soron (pl. Egy sor, amely véletlenszerű korai észlelést (RED) használ ), és túlterhelést tapasztal, és a megfelelő útválasztó támogatja az ECN -t , akkor a csomag ejtéseCE helyett megváltoztathatja a kódpontot erre . Ezt a cselekményt „jelölésnek” nevezik, és célja a fogadó végpont tájékoztatása a közelgő torlódásokról . A fogadó végponton ezt a torlódásjelzést a felső réteg protokoll ( szállítási réteg protokoll) kezeli, és vissza kell hangolni az adó csomóponthoz, hogy jelezze, hogy csökkentse az átviteli sebességet.

Mivel a CE jelzést csak az azt támogató felső réteg protokoll tudja hatékonyan kezelni, az ECN csak a felső réteg protokolljaival, például a TCP -vel együtt használható , amelyek támogatják a torlódásszabályozást, és rendelkeznek módszerrel a CE jelzésnek az átviteli végponthoz való visszhangolására. .

Az ECN működése TCP -vel

A TCP támogatja az ECN -t két jelző használatával a TCP fejlécben. Az első, ECN-Echo (ECE) a torlódásjelzés visszhangozására szolgál (azaz jelzi a küldőt, hogy csökkentse az átviteli sebességet). A második, torlódási ablak csökkentett (CWR), annak nyugtázására, hogy a torlódásjelzés visszhangja megérkezett. Az ECN használata TCP -kapcsolaton opcionális; Az ECN használatához a kapcsolat létrehozásakor egyeztetni kell, a megfelelő opcióknak a SYN és a SYN-ACK szegmensekbe való bevonásával.

Amikor az ECN -t egyeztetik egy TCP -kapcsolaton, a feladó jelzi, hogy az adott kapcsolat TCP -szegmenseit hordozó IP -csomagok ECT -képes szállításból továbbítják a forgalmat. Ez lehetővé teszi, hogy az ECN -t támogató közbenső útválasztók az IP -csomagokat a CE -kódponttal jelöljék, ahelyett, hogy eldobnák őket, jelezve a közelgő torlódásokat.

A torlódás tapasztalt kódponttal rendelkező IP -csomag fogadásakor a TCP -vevő a TCP -fejlécben található ECE jelző használatával visszhangozza ezt a torlódásjelzést. Amikor egy végpont ECP bittel kap egy TCP szegmenst, akkor csökkenti annak torlódási ablakát, mint egy csomagcsökkenés esetén. Ezután nyugtázza a torlódásjelzést, elküldve egy szegmenst a CWR bitkészlettel.

Egy csomópont folyamatosan továbbítja a TCP szegmenseket az ECE bitkészlettel, amíg meg nem kap egy szegmenst a CWR bitkészlettel.

A tcpdump -ot tartalmazó csomagok megtekintéséhez használja a szűrő predikátumot (tcp[13] & 0xc0 != 0).

ECN és TCP vezérlőcsomagok

Mivel a Transmission Control Protocol (TCP) nem végez torlódásszabályozást a vezérlőcsomagokon (tiszta ACK, SYN, FIN szegmensek), a vezérlőcsomagokat általában nem jelölik ECN-képesnek.

Egy 2009-es javaslat azt javasolja, hogy a SYN-ACK csomagokat ECN-képesként jelöljék meg. Ez a fejlesztés, ECN+néven, bebizonyította, hogy drámai javulást nyújt a rövid élettartamú TCP-kapcsolatok teljesítményében.

Az ECN működése más szállítási protokollokkal

Az ECN más szállítási réteg protokollokra is meghatározott, amelyek torlódásszabályozást végeznek, nevezetesen DCCP és Stream Control Transmission Protocol (SCTP). Az általános elv hasonló a TCP-hez, bár a vezeték nélküli kódolás részletei eltérnek.

Lehetőség van az ECN használatára az UDP felett rétegezett protokollokkal . Az UDP azonban megköveteli, hogy a torlódásszabályozást az alkalmazás végezze, és a korai UDP -alapú protokollok, például a DNS , nem használták az ECN -t . Az újabb UDP -alapú protokollok, például a QUIC , ECN -t használnak a torlódások ellenőrzésére.

Hatások a teljesítményre

Mivel az ECN csak az Active Queue Management (AQM) házirenddel kombinálva hatékony , az ECN előnyei a használt AQM pontos használatától függenek. Néhány megfigyelés azonban úgy tűnik, hogy érvényes a különböző AQM -ekre.

Ahogy az várható volt, az ECN csökkenti a TCP -kapcsolat által eldobott csomagok számát, ami az újraküldés elkerülése révén csökkenti a késleltetést és különösen a remegést. Ez a hatás akkor a legdrasztikusabb, ha a TCP -kapcsolat egyetlen kiemelkedő szegmenssel rendelkezik, amikor képes elkerülni az RTO -időtúllépést; ez gyakran előfordul az interaktív kapcsolatoknál, például távoli bejelentkezéseknél és tranzakciós protokolloknál, például a HTTP -kéréseknél, az SMTP beszélgetési szakaszánál vagy az SQL -kéréseknél.

Az ECN ömlesztett adatátvitelre gyakorolt ​​hatásai kevésbé egyértelműek, mert a modern TCP -megvalósítások meglehetősen jól tudják időben visszaküldeni a kiesett szegmenseket, amikor a feladó ablaka nagy.

Az ECN használata károsnak bizonyult a túlterhelt hálózatok teljesítményére, ha olyan csomagokat soha nem dobó AQM algoritmusokat használ. A modern AQM -implementációk elkerülik ezt a csapdát azzal, hogy a csomagokat leejtik, nem pedig megjelölik nagyon nagy terhelésnél.

Megvalósítások

A TCP/IP protokollcsomag számos modern megvalósítása támogatja az ECN -t; általában azonban ECN -t tiltva szállítanak.

ECN támogatás a TCP -ben a házigazdák által

Microsoft Windows

A Windows verziók a Windows Server 2008 és a Windows Vista óta támogatják az ECN -t a TCP -hez. A Windows Server 2012 óta alapértelmezés szerint engedélyezve van a Windows Server verziókban, mivel a Data Center Transmission Control Protocol (DCTCP) protokollt használja. A korábbi Windows és a nem szerver verziókban alapértelmezés szerint le van tiltva.

Az ECN támogatást egy shell parancs használatával lehet engedélyezni, például a netsh interface tcp set global ecncapability = enabled .

BSD

A FreeBSD , ECN TCP segítségével konfigurálható a net.inet.tcp.ecn.enable sysctl . Alapértelmezés szerint csak az azt kérő bejövő kapcsolatoknál van engedélyezve. Azt is engedélyezheti minden kapcsolatra, vagy teljesen letilthatja.

A NetBSD  4.0 megvalósítja a TCP ECN támogatását; a sysctl interfészen keresztül aktiválható az 1 érték beállításával a sysctl net.inet.tcp.ecn.enable paraméterhez.

Hasonlóképpen, a sysctl net.inet.tcp.ecn használható OpenBSD -ben .

Linux

A Linux kernel 2002 novemberében kiadott 2.4.20 verziója óta a Linux támogatja a TCP ECN három működési módját, a sysctl interfészen keresztül konfigurálva a /proc/sys/net/ipv4/tcp_ecn paraméter beállításával a következők egyikére értékek:

  • 0  - tiltsa le az ECN -t, és ne kezdeményezze és ne fogadja el
  • 1  - engedélyezze az ECN -t, ha a bejövő kapcsolatok kéri, és kérje az ECN -t a kimenő csatlakozási kísérleteknél is
  • 2  - (alapértelmezett) engedélyezi az ECN -t, ha a bejövő kapcsolatok ezt kérik, de ne kérjen ECN -t a kimenő kapcsolatoknál

A Linux kernel 2015 júniusában kiadott 4.1 -es verziójától kezdve a tcp_ecn_fallback mechanizmus az RFC 3168 6.1.1.1 szakaszában meghatározottak szerint alapértelmezés szerint engedélyezve van, ha az ECN engedélyezve van (1 érték). A tartalékmechanizmus megkísérli az ECN csatlakozást a kimenő kapcsolatok kezdeti beállításakor, kecses tartalékkal az ECN-képesség nélküli átvitelhez, enyhítve az ECN-intoleráns gazdagépekkel vagy tűzfalakkal kapcsolatos problémákat.

Mac OS X

A Mac OS X 10.5 és 10.6 ECN támogatást valósít meg a TCP számára. Vezérlése a logikai sysctl változókkal történik: net.inet.tcp.ecn_negotiate_in és net.inet.tcp.ecn_initiate_out . Az első változó lehetővé teszi az ECN -t azokon a bejövő kapcsolatokon, amelyeken már be vannak állítva az ECN -jelzők; a második megpróbál kimenő kapcsolatokat kezdeményezni, ha az ECN engedélyezve van. Mindkét változó alapértelmezett értéke 0 , de beállítható 1 -re a megfelelő viselkedés engedélyezéséhez.

2015 júniusában az Apple Inc. bejelentette, hogy az OS X 10.11 alapértelmezés szerint bekapcsolja az ECN -t, de az operációs rendszert az alapértelmezett viselkedés nélkül szállítják. A macOS Sierra rendszerben az ECN engedélyezve van a TCP -munkamenetek felében.

iOS

2015 júniusában az Apple Inc. bejelentette, hogy az iOS 9 , az iOS következő verziója támogatja az ECN -t, és alapértelmezés szerint bekapcsolja. A TCP ECN egyeztetés engedélyezve van a véletlenszerűen kiválasztott kapcsolatok 5% -án Wi-Fi / Ethernet kapcsolaton keresztül az iOS 9 rendszeren és 50% -án a véletlenszerűen kiválasztott kapcsolatokon Wi-Fi / Ethernet kapcsolaton keresztül és néhány mobilszolgáltatón iOS 10-en, és 100% iOS 11 esetén

Solaris

A Solaris kernel támogatja az ECN három állapotát a TCP számára:

  • soha  - nincs ECN
  • aktív  - használja az ECN -t
  • passzív  - csak akkor hirdesse az ECN támogatását, ha kérik.

Az alapértelmezett viselkedés passzív . A Solaris 11 -től kezdve a teljes ECN használat aktiválható az ipadm set -prop -p ecn = active tcp segítségével .

ECN támogatás IP útválasztók által

Mivel az útválasztók ECN jelölése az aktív sorkezelés valamilyen formájától függ , az útválasztókat megfelelő sorfegyelemmel kell konfigurálni az ECN jelölés végrehajtásához.

A Cisco IOS útválasztók ECN jelölést hajtanak végre, ha a 12.2 (8) T verzió óta a WRED sorbaállítási fegyelmezettel vannak konfigurálva .

Linux útválasztóink ECN jelölést, ha a beállított az egyik RED vagy GRED sorban tudományágak explicit ECN paraméter segítségével a SFB fegyelem segítségével CODEL Fair Queuing (fq_codel) fegyelem, illetve a tortán sorkezelõ.

A modern BSD -implementációk, mint például a FreeBSD , a NetBSD és az OpenBSD , támogatják az ECN -jelölést az ALTQ sorbanállás megvalósításában számos sorozási területen , különösen a RED és a Blue esetében . A FreeBSD 11 magában foglalta a CoDel , PIE, FQ-CoDel és FQ-PIE sorba állításokat az ipfw /dummynet keretrendszerben, ECN jelölési képességgel.

Adatközpont TCP

Az adatközpont átvitelvezérlési protokollja ( Data Center TCP vagy DCTCP ) az ECN -t használja a Transmission Control Protocol torlódásvezérlő algoritmusának javítására . Ezt alkalmazzák a adatközpont hálózatok. Míg a standard TCP torlódásvezérlő algoritmus csak a torlódások jelenlétét képes észlelni , addig a DCTCP az ECN segítségével képes felmérni a torlódás mértékét .

A DCTCP módosítja a TCP vevőt, hogy mindig továbbítsa a bejövő csomagok pontos ECN -jelölését azon az áron, hogy figyelmen kívül hagyja a jelzés megbízhatóságának megőrzésére szolgáló funkciót. Ezáltal a DCTCP -küldő sebezhetővé válik a vevő ACK -k elvesztése miatt, és nincs mechanizmusa annak észlelésére vagy kezelésére. 2014 júliusától aktív kutatási téma azok az algoritmusok, amelyek megbízhatóbb megközelítésben egyenértékű vagy jobb vevői visszajelzést biztosítanak.

Lásd még

Hivatkozások

Külső linkek