Ogólna enkapsulacja routingu — Generic Routing Encapsulation
| Protokół komunikacyjny | |
| Cel, powód | Tunelowanie sieci |
|---|---|
| Deweloper(zy) | Systemy Cisco |
| Wprowadzono | 1994 |
| RFC | RFC1701, RFC1702, RFC2784 |
Generic Routing Encapsulation ( GRE ) to protokół tunelowania opracowany przez firmę Cisco Systems, który umożliwia hermetyzację szerokiej gamy protokołów warstwy sieci w wirtualnych łączach typu punkt-punkt lub łączach punkt-wielopunkt w sieci protokołu internetowego .
Przykładowe zastosowania
- W połączeniu z PPTP do tworzenia VPN .
- W połączeniu z IPsec VPN, aby umożliwić przekazywanie informacji o routingu między połączonymi sieciami.
- W protokołach mobilności .
- W interfejsach A8/A10 do enkapsulacji danych IP do/z funkcji kontroli pakietów (PCF).
- Linux i BSD mogą ustanawiać ad-hoc IP przez tunele GRE, które są kompatybilne ze sprzętem Cisco.
- Urządzenie chronione rozproszoną odmową usługi (DDoS) do niechronionego punktu końcowego .
Przykładowy stos protokołów
| Warstwa modelu OSI | Protokół |
|---|---|
| 5. Sesja | X.225 |
| 4. Transport | UDP |
| 3. Sieć (enkapsulacja GRE) | IPv4 |
| Kapsułkowanie | GRE |
| 3. Sieć | IPv6 |
| 2. Łącze danych | Ethernet |
| 1. Fizyczne | Warstwa fizyczna Ethernet |
W oparciu o zasady tworzenia warstw protokołu w OSI, enkapsulacja protokołu, a nie konkretnie GRE, łamie porządek warstw. Może być postrzegany jako separator między dwoma różnymi stosami protokołów, z których jeden działa jako nośnik dla drugiego.
IP jako protokół dostarczania
Pakiety GRE, które są enkapsulowane w IP, korzystają z protokołu IP typu 47 .
Nagłówek pakietu
Rozszerzony nagłówek pakietu GRE (RFC 2890)
Rozszerzona wersja nagłówka pakietu GRE zgodnie z definicją RFC 2890 .
| Bity 0–3 | 4-12 | 13-15 | 16–31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | K | S | Zarezerwowane0 | Wersja | Typ protokołu | ||||||||||||||||||||||||||
| Suma kontrolna (opcjonalnie) | Zarezerwowane 1 (opcjonalnie) | ||||||||||||||||||||||||||||||
| Klucz (opcjonalnie) | |||||||||||||||||||||||||||||||
| Numer porządkowy (opcjonalnie) | |||||||||||||||||||||||||||||||
- C
- Bit sumy kontrolnej . Ustaw na 1, jeśli suma kontrolna jest obecna.
- K
- Kluczowy bit. Ustaw na 1, jeśli klucz jest obecny.
- S
- Bit numeru sekwencyjnego. Ustaw na 1, jeśli obecny jest numer sekwencji.
- Zarezerwowane0
- Zarezerwowane bity; ustawiony na 0.
- Wersja
- Numer wersji GRE; ustawiony na 0.
- Typ protokołu
- Wskazuje typ protokołu ether kapsułkowanego ładunku. (W przypadku IPv4 będzie to szesnastkowy 0800.)
- Suma kontrolna
- Obecny, jeśli ustawiony jest bit C; zawiera sumę kontrolną nagłówka i ładunku GRE.
- Zarezerwowane1
- Obecny, jeśli ustawiony jest bit C; jest ustawiony na 0.
- Klucz
- Obecny, jeśli ustawiony jest bit K; zawiera wartość klucza specyficznego dla aplikacji.
- Numer sekwencji
- Obecny, jeśli ustawiony jest bit S; zawiera numer sekwencyjny pakietu GRE.
Standardowy nagłówek pakietu GRE (RFC 2784)
Na poniższym schemacie przedstawiono standardową strukturę nagłówka pakietu GRE , określoną w dokumentach RFC 2784 i RFC 2890 .
| 0 | Bity 1–12 | 13-15 | 16–31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | Zarezerwowane0 | Wersja | Typ protokołu | ||||||||||||||||||||||||||||
| Suma kontrolna (opcjonalnie) | Zarezerwowane1 (opcjonalnie) | ||||||||||||||||||||||||||||||
- C
- Bit sumy kontrolnej . Ustaw na 1, jeśli suma kontrolna jest obecna.
- Zarezerwowane0
- Zarezerwowane bity; ustawiony na 0.
- Wersja
- Numer wersji GRE; ustawiony na 0.
- Typ protokołu
- Wskazuje typ protokołu ether kapsułkowanego ładunku. (W przypadku IPv4 będzie to szesnastkowy 0800.)
- Suma kontrolna
- Obecny, jeśli ustawiony jest bit C; zawiera sumę kontrolną nagłówka i ładunku GRE.
- Zarezerwowane1
- Obecny, jeśli ustawiony jest bit C; jest ustawiony na 0.
Standardowy nagłówek pakietu GRE (RFC 1701, przestarzały)
Nowsza struktura zastąpiła oryginalną strukturę zdefiniowaną w RFC 1701 :
| Bity 0–4 | 5–7 | 8-12 | 13-15 | 16–31 | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | r | K | S | s | Powtarzać się | Flagi | Wersja | Typ protokołu | |||||||||||||||||||||||
| Suma kontrolna (opcjonalnie) | Przesunięcie (opcjonalnie) | ||||||||||||||||||||||||||||||
| Klucz (opcjonalnie) | |||||||||||||||||||||||||||||||
| Numer porządkowy (opcjonalnie) | |||||||||||||||||||||||||||||||
| Trasowanie (opcjonalne, zmienna długość) | |||||||||||||||||||||||||||||||
Oryginalny GRE RFC zdefiniował kolejne pola w nagłówku pakietu, które stały się przestarzałe w obecnym standardzie:
- r
- Bit routingu. Ustaw na 1, jeśli dostępne są informacje o trasowaniu i odsunięciu.
- K
- Kluczowy bit. Ustaw na 1, jeśli klucz jest obecny.
- S
- Bit numeru sekwencyjnego. Ustaw na 1, jeśli obecny jest numer sekwencji.
- s
- Ścisły bit trasy źródłowej.
- Powtarzać się
- Bity kontrolne rekurencji .
- Flagi
- Zarezerwowane do wykorzystania w przyszłości, ustawione na 0.
- Zrównoważyć
- Obecny, jeśli ustawiony jest bit R lub C; zawiera prawidłowe informacje, tylko jeśli ustawiony jest bit R. Pole przesunięcia wskazujące przesunięcie w polu Routing do aktywnego wpisu trasy źródłowej
- Klucz
- Obecny, jeśli ustawiony jest bit K; zawiera wartość klucza specyficznego dla aplikacji.
- Numer sekwencji
- Obecny, jeśli ustawiony jest bit S; zawiera numer sekwencyjny pakietu GRE.
- Rozgromienie
- Obecny, jeśli ustawiony jest bit R; zawiera listę wpisów trasy źródłowej, dlatego ma zmienną długość
Nagłówek pakietu PPTP GRE
Point-to-Point Protocol tunelowania (PPTP), zdefiniowane w RFC 2637 , wykorzystuje się strukturę nagłówka pakietu wariant GRE przedstawioną poniżej. PPTP tworzy tunel GRE, przez który wysyłane są pakiety PPTP GRE.
| Bity 0–4 | 5–7 | 8 | 9-12 | 13-15 | 16–31 | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C | r | K | S | s | Powtarzać się | A | Flagi | Wersja | Typ protokołu | ||||||||||||||||||||||
| Długość ładowności klucza | Kluczowy identyfikator połączenia | ||||||||||||||||||||||||||||||
| Numer porządkowy (opcjonalnie) | |||||||||||||||||||||||||||||||
| Numer potwierdzenia (opcjonalnie) | |||||||||||||||||||||||||||||||
- C
- Bit sumy kontrolnej . Dla pakietów PPTP GRE jest to ustawione na 0.
- r
- Bit routingu. Dla pakietów PPTP GRE jest to ustawione na 0.
- K
- Kluczowy bit. W przypadku pakietów PPTP GRE jest to ustawione na 1. (Wszystkie pakiety PPTP GRE zawierają klucz).
- S
- Bit numeru sekwencyjnego. Ustaw na 1, jeśli podano numer sekwencyjny, wskazując pakiet danych PPTP GRE.
- s
- Ścisły bit trasy źródłowej. Dla pakietów PPTP GRE jest to ustawione na 0.
- Powtarzać się
- Bity kontrolne rekurencji . W przypadku pakietów PPTP GRE są one ustawione na 0.
- A
- Obecny numer potwierdzenia. Ustaw na 1, jeśli podano numer potwierdzenia, wskazując pakiet potwierdzenia PPTP GRE.
- Flagi
- Bity flagowe. W przypadku pakietów PPTP GRE są one ustawione na 0.
- Wersja
- Numer wersji GRE. W przypadku pakietów PPTP GRE jest to ustawione na 1.
- Typ protokołu
- Dla pakietów PPTP GRE jest to ustawione na 880B w systemie szesnastkowym.
- Długość ładowności klucza
- Zawiera rozmiar ładunku, bez nagłówka GRE.
- Kluczowy identyfikator połączenia
- Zawiera identyfikator połączenia peera dla sesji, do której należy pakiet.
- Numer sekwencji
- Obecny, jeśli ustawiony jest bit S; zawiera numer sekwencji ładunku GRE.
- Numer potwierdzenia
- Obecny, jeśli ustawiony jest bit A; zawiera numer sekwencyjny najwyższego pakietu danych GRE odebranego przez nadawcę.
Normy
- RFC 1701 : Generic Routing Encapsulation (GRE) (informacyjny)
- RFC 1702 : Generic Routing Encapsulation w sieciach IPv4 (informacyjne)
- RFC 2637 : Protokół tunelowania punkt-punkt (informacyjny)
- RFC 2784 : Generic Routing Encapsulation (GRE) (proponowany standard, zaktualizowany przez RFC 2890)
- RFC 2890 : Rozszerzenia kluczy i numerów sekwencji do GRE (proponowany standard)
- RFC 8086 : Enkapsulacja GRE-in-UDP (proponowany standard)
Zobacz też
- Wirtualizacja sieci przy użyciu ogólnej enkapsulacji routingu — przenosi pakiety L2 przez GRE
Bibliografia
Zewnętrzne linki
- Generic Routing Encapsulation , strona główna podprotokołu w Cisco
- Generic Routing Encapsulation , wpis w Cisco DocWiki (wcześniej znany jako „Podręcznik technologii internetowej”)