Patent PL-410390-A1 (PL)
Inventor: KAMISIŃSKI ANDRZEJ
IPC: H04L45/18
Filed: 2014-12-04
Abstract: Sposób usuwania pętli w rutingu pakietów, polega na utrzymywaniu przez każdy ruter (R) tablicy przekazywania przepływów (FFT) zawierającej jednoznaczne przypisanie aktywnych przepływów do wyznaczonych interfejsów wyjściowych rutera, przy czym każde przypisanie składa się z ustalonej listy deskryptorów (DL). Charakteryzuje się tym, że listę deskryptorów (DL) opisujących przepływ rozszerza się o co najmniej jeden deskryptor określający indeks i' (i') interfejsu rutera, na którym został przyjęty pierwszy pakiet należący do powiązanego przepływu (f). Pakiet przychodzący do rutera na interfejsie oznaczonym przez indeks i (i), a reprezentujący powiązany przepływ (f) analizuje się w zakresie wybranych pól nagłówka i przyporządkowuje do tego przepływu poprzez nadanie unikalnego w ramach tablicy przekazywania przepływów (FFT) identyfikatora przepływu (FID). W przypadku, gdy powiązany przepływ (f) został już wcześniej zarejestrowany w tablicy przekazywania przepływów (FFT), nowy wpis nie jest tworzony, ale zamiast tego z tablicy przekazywania przepływów (FFT) pobiera się indeks i' (i') interfejsu, na którym przyjęto pierwszy pakiet powiązanego przepływu (f). Pobiera się również indeks j (j) interfejsu, na który zostanie skierowany pakiet. Równocześnie, w pamięci rutera przechowuje się indeks i (i) interfejsu, na którym przyjęto pakiet, przy czym każdemu z zewnętrznych interfejsów sieciowych przypisuje się różne między sobą indeksy będące liczbami nieujemnymi. W przypadku, gdy pakiet został wygenerowany lokalnie w danym ruterze i nie został przyjęty na żadnym z zewnętrznych interfejsów sieciowych, przypisuje się indeksowi i (i) wartość -1. Jeśli indeks i (i) interfejsu, na którym przyjęto pakiet, oraz indeks i' (i') interfejsu wejściowego zapisany w tablicy przekazywania przepływów (FFT) dla pierwszego pakietu powiązanego przepływu odnoszą się do tego samego interfejsu sieciowego rutera, czyli nie stwierdzono pętli w rutingu, to aktualizuje się wartość deskryptora zapisanego w tablicy (FFT) i określającego czas przyjęcia ostatniego pakietu dla powiązanego przepływu (f), a następnie pakiet wysyła się przez interfejs o indeksie j (j). W przypadku, gdy porównanie indeksu i (i) interfejsu, na którym przyjęto pakiet, oraz indeksu i' (i') wejściowego interfejsu, zapisanego w tablicy (FFT) dla pierwszego pakietu powiązanego przepływu (f), wykaże ich nierówność, stwierdza się wystąpienie pętli w rutingu. Ponadto, jeśli interfejs o indeksie j (j), na który w ogólnym przypadku kierowany jest pakiet, jest tym samym interfejsem co interfejs o indeksie i (i), na którym faktycznie przyjęto pakiet, to wówczas wysyła się pakiet przez interfejs o indeksie i (i'), a następnie usuwa się z tablicy przekazywania przepływów (FFT) wpis dotyczący powiązanego przepływu (f). Gdy jednak interfejs o indeksie j (j), na który w ogólnym przypadku kierowany jest pakiet, jest innym interfejsem niż interfejs o indeksie i (i), na którym faktycznie przyjęto pakiet, to wtedy wysyła się pakiet przez interfejs o indeksie i (i), na którym faktycznie przyjęto pakiet, po czym usuwa się z tablicy przekazywania przepływów (FFT) wpis dotyczący powiązanego przepływu (f). Gdy w momencie przyjęcia pakietu, powiązany przepływ (f) nie jest zarejestrowany w tablicy przekazywania przepływów (FFT), indeks (j) interfejsu, na który zostanie skierowany pakiet, ustala się na podstawie aktualnej zawartości tablicy rutingu, a następnie do tablicy przekazywania przepływów (FFT) dodaje się nowy wpis skojarzony z tym przepływem. Następnie aktualizuje się wartość deskryptora określającego czas przyjęcia ostatniego pakietu dla powiązanego przepływu (f) i wysyła się pakiet przez interfejs o indeksie j (j).