Добрый день!
В данной статье я кратко расскажу, как элементы EPC сети ведут в себя в случае возникновения ошибок на одном из элементов.
Существует два типа процедур:
- Полное восстановление (Node Restart Handling) — процедура активируется, когда происходит перезагрузка одного из сетевых элементов. При остальные, подключенные к нему, сетевые элементы удаляют все ресурсы (информацию о мобильных станциях и их сессиях), связанные с этим элементом. Затем после восстановления данного элемента, он начинает заново обмениваться данными с остальными элементами
- Частичное восстановление (Partial Failure Handling) — процедура активируется, когда в результате ошибок на одном из сетевых элементов затронуто только часть ресурсов.
Далее я расскажу подробнее про каждую процедуру восстановления. Для упрощения рассмотрим только элементы классической LTE сети — MME, SGW и PGW и протокол GTP.
Полное восстановление
Каждый элемент, который подключен по протоколу GTP к другим элементам, имеет два внутренних счетчика:
- Local Restart Counter — счетчик, который содержит количество рестартов данного элемента. После каждого рестарта этот счетчик увеличивается на единицу.
- Remote Restart Counter — счетчик, который содержит количество рестартов подключенных элементов. Т.е например, на SGW, который подключен к PGW и MME, будет два счетчика Remote Restart Counter для MME и PGW. Если элемент перезагружается, то значения всех счетчиков Remote Restart Counter обнуляются
Все элементы, подключенные по протоколу GTP, периодически обмениваются сообщениями Echo Request/Response, которые используются для проверки подключения между ними. Сообщения Echo Request/Response содержат два очень важных поля — Node Features (о нем чуть позже) и Recovery. Поле Recovery содержит количество рестартов сетевого элемента, т.е его значение Local Restart Counter.
Как происходит обмен данными? Для примера возьмем SGW и MME
- MME генерирует сообщение Echo Request, в поле Recovery записывает значение своего Local Restart Counter и отправляет это сообщение SGW
- SGW получает это сообщение, значение Recovery записывает в Remote Restart Counter для данного MME, генерирует сообщение Echo Response, записывает в поле Recovery значение своего Local Restart Counter и отправляет сообщение MME
- MME получает сообщение и записывает значение поля Recovery в Remote Restart Counter для данного SGW
Тем самым все элементы синхронизируют количество рестартов.
Рассмотрим, что происходит, когда один из элементов перезагружается. Для примера возьмем опять MME и SGW
- Происходит рестарт MME. Значение счетчика Local Restart Counter увеличивается на единицу.
- После полного восстановления, MME получает сообщение Echo Request от подключенного к нему SGW. MME также может отправить Echo Request в сторону SGW
- MME генерирует сообщение Echo Response (в ответ на Echo Request от SGW) или Echo Request, и в поле Recovery указывает текущее значение счетчика Local Restart Counter. Затем он отправляет сообщение SGW
- SGW, получив сообщение от MME, видит, что значение, указанное в поле Recovery превышает значение Remote Restart Counter, которое хранится на SGW для данного MME. Тем самым SGW «понимает», что был выполнен рестарт MME, и тем самым иницицирует процедуру удаления всех ресурсов, которые были связаны с этим MME. После чего, SGW записывает новое значение в Remote Restart Counter
- После этих процедур MME и SGW начинают, как говорится, «с чистого листа»
То же самое происходит между SGW и PGW. Стоит отметить, что в случае перезагрузки PGW, об этом «узнает» только SGW, так как PGW не подключен напрямую к SGW. Для того чтобы MME также «узнал» о перезагрузке PGW, в Release 10 добавили новую функцию — PGW Restart Notification.
PGW Restart Notification — это флаг в поле Node Features, которое содержится в сообщении Echo Request/Response. Если MME эту функцию поддерживает, то он добавляет этот флаг в поле Node Features. По аналогии, если SGW поддерживает эту функцию, то он также добавляет этот флаг в поле Node Features. Соответственно, если оба элемента эту функцию поддерживают, то после рестарта PGW и обмена сообщениями с SGW (по аналогии с описанным выше), SGW дополнительно генерирует сообщение PGW Restart Notification и отправляет его MME, тем самым уведомляя его о том, что был выполнен рестарт PGW. MME, получив это сообщение, также выполняет необходимые операции (зависит от производителя)
Подытоживая все вышесказанное, процедура полного восстановления — это четкая и понятная процедура, при которой все сетевые элементы, анализируя счетчики рестартов каждого из элементов, синхронизируются между собой
Частичное восстановление (Partial Failure Handling — PFH)
Функция, которая появилась в 3GPP Release 10. Идея очень проста. Разбить все сессии, обрабатываемые сетевым элементом на части, которые называются Connection Set и присвоить каждому Connection Set свой идентификатор — Connection Set Identifier (CSID). Каждый Connection Set имеет локальный идентификатор (CSID) и глобальный (FQ-CSID), который состоит из идентификатора сетевого элемента и CSID.
Для того чтобы остальные сетевые элементы «знали» об этих идентификаторах, каждый сетевой элемент добавляет эти идентификаторы в соответствующие сообщения при подключении мобильной станции — Create Session Request/Response. При этом в сообщение добавляется именно глобальный идентификатор — FQ-CSID.
- Во время процедуры подключения MME шлет в сторону SGW Create Session Request, который содержит MME FQ-CSID
- SGW записывает MME FQ-CSID для данной сессии, присваивает ей свой CSID, и шлет Create Session Request, в котором указывает свой CSID — SGW FQ-CSID, а также MME FQ-CSID.
- PGW записывает эти значения для данной сессии, присваивает ей MME FQ-CSID и SGW FQ-CSID и отправляет Create Session Response, в котором указывает свой CSID — PGW FQ-CSID.
- SGW записывает это значение для данной сессии, и шлет Create Session Response в сторону MME, в котором указывает свой CSID и PGW FQ-CSID.
- MME получает это сообщение и записывает эти значения для текущей сессии
Теперь на каждом элементе сессия имеет три идентификатора — MME FQ-CSID, SGW FQ-CSID и PGW FQ-CSID. Теперь, если на каком-то элементе возникает ошибка, которая затрагивает определенный Connection Set, то вместо процедуры постепенного удаления всех ресурсов, элемент генерирует сообщение Delete PDN Connection Set Request, в который включает все CSID (добавляя к ним свой глобальный идентификатор), которые были затронуты ошибкой, и шлет это сообщение остальным элементам. Элементы, получив это сообщение, удаляют ресурсы, соответствующие этим CSID.
В самом простом случае каждый элемент имеет один CSID (все сессии элемента) и один соответствующий ему FQ-CSID. Но количество Connection Set можно увеличить, например, присвоив разные идентификаторы сессиям, которые обрабатываются, например, разными платами или разными программными модулями. Если плата выходит из строя, то элемент «знает», что необходимо удалить ресурсы с определенными CSID, и сообщить об этом остальным элементам.
Пример PFH
У нас есть следующие элементы:
- Два MME: MME-1 (MME1 FQ-CSID) и MME-2 (MME2 FQ-CSID)
- Один Serving GW: SGW1 (SGW1 FQ-CSID)
- Один PDN GW: PGW1 (PGW1 FQ-CSID)
- Итак, две мобильные станции подключаюся к сети — одна через MME-1, вторая — через MME-2. В результате подключения на каждом элементе имеется две сессии:
Сессия 1 = MME1 FQ-CSID + SGW1 FQ-CSID + PGW1 FQ-CSID
Cессия 2 = MME2 FQ-CSID + SGW1 FQ-CSID + PGW1 FQ-CSID - На SGW возникает ошибка. SGW генерирует сообщение Delete PDN Connection Set Request, добавляет в него идентификатор SGW1 FQ-CSID, и отправляет сообщение MME-1, MME-2 и PGW1
- MME-1, MME-2 и PGW1 получают сообщение и удаляют все сессии с идентификатором SGW1 FQ-CSID. При этом остальные сессии (если они есть) остаются нетронутыми.
Спасибо за внимание
Ссылки
Автор: Alexey06