VPSs y mas.

miércoles, 4 de diciembre de 2019

Python3: Una solucion a UnicodeEncodeError: 'ascii' codec can't encode character '\xe1' in position 26: ordinal not in range(128)

Situación:

  Al ejecutar un script en python3 se recibe un error similar a:


UnicodeEncodeError: 'ascii' codec can't encode character '\xe1' in position 26: ordinal not in range(128)


Solución:

  El problema viene dado (tal como lo explica el mensaje) por manejo de strings y unicode, muy seguramente el código contiene algún tipo de carácteres en  
español, portugués, árabe u otro idioma no cubierto por ASCII

  Si lees en Internet hay DECENAS de maneras de solucionar esto, yo solo voy a mencionar una que funciona y es MUY sencilla.

  Si te encuentras en Linux o MAC es tan sencillo como colocar esto antes de ejecutar tu script (dentro de bash):




export PYTHONIOENCODING=utf8


  Lo que se esta haciendo es declarar la variable de entorno PYTHONIOENCODING a utf8, python3 al ser ejecutado utilizará esta variable como encoding y tu problema será resuelto.

  Claro, pudieses colocar dicha variable al entrar a tu sesión, o dentro de un script en bash que posteriormente llame a tu .py, etc, etc.

Suerte, espero haya sido útil.

 

jueves, 31 de octubre de 2019

Una mirada al uso de BGP AS_SET en la DFZ

Introducción:
   Como algunos de ustedes saben, en BGP existe un argumento llamado AS-SET, en muchas nomenclaturas lo conseguiremos como route-aggregation.

¿Qué es BGP AS-SET?
  El AS-SET en pocas palabras lo que permite es agregar/sumarizar varias rutas en un prefijo más grande. Como muchas cosas, tiene ventajas (reducir el tamaño de la tabla global BGP) y además tiene inconvenientes (prevenir loops y validación de origen RPKI).

¿Por qué el estudio?
  Para el momento que se escriben estas líneas (Octubre 2019), en IETF existe un draft (que pensamos se convertirá en estándar) donde se propone que AS-SET pase a ser obsoleto. El draft puede se conseguido en: https://datatracker.ietf.org/doc/draft-ietf-idr-deprecate-as-set-confed-set/?include_text=1

  Si este draft pase a ser RFC eventualmente los fabricantes van a dejar de soportar AS-SET y puede existir (pero no pensamos que ocurra) algún riesgo de perder algunos prefijos & ASs en la tabla global

Origen de la data para el presente estudio
Se utilizó las tablas BGP de Potaroo.net. Se pueden obtener en: 
  IPv4: http://bgp.potaroo.net/as2.0/bgptable.txt

Para la información sobre los recursos se utilizó los APIs de RIPE. 

Fecha del estudio
  Mes de Octubre de 2019

Estudios realizados 
  1. Buscar AS que hagan AS_SET
  2. Buscar prefijos que sean sometidos a AS_SET

¿Cómo se identifica un AS-SET en la tabla BGP?
  Identificar AS-SET puede variar según el vendor/fabricante del software que realiza BGP.
  Para el presente estudio utilizamos la tabla BGP publicada por Potaroo.net, la misma es una salida BGP del comando “show ip bgp” de Cisco.
  En la salida del comando se puede apreciar líneas similares a:

* i2001:QWER::/32    QWER:300::6     0 152 0 65412 65001 {65002,65003} 

  La salida anterior se puede leer:
  1. AS 65002 realiza al menos un anuncio BGP
  2. AS 65003 realiza al menos un anuncio BGP
  3. AS 65001 Realiza AS-SET y anuncia el prefijo 2001:cd8::/32 (una supernet de los prefijos recibidos por 65002 y 65002)
  4. 65412 hace tránsito a los AS anteriores sin embargo no es relevante para este estudio

   Gracias a las llaves ( { } ) es sencillo ubicar quien hace el AS-SET 


Resultados generales:

Tabla #1 Resumen General


IPv4
IPv6
Prefijos en la tabla
803999
77438
Prefijos sometidos a AS-SET
387
26
ASs únicos haciendo AS-SET
128
20
ASs haciendo AS-SET en IPv4 e IPv6
7
7





Resultados específicos por RIR:



IPv4
IPv6
  RIPE ASs
52
9
  RIPE Prefijos  
111
9
  ARIN ASs
50
5
  ARIN Prefijos
127
10
  APNIC ASs  
11
4
  APNIC Prefijos
46
8
  AFRINIC ASs
1
0
  AFRINIC Prefijos
7
0
  LACNIC ASs
14
2
  LACNIC Prefijos
96
7




Colocando la lupa sobre LACNIC

Datos específicos sobre LACNIC (IPv4):

Resumen:
.- 96 prefijos únicos a los cuales se les hace AS-SET
.- Existen prefijos de LACNIC anunciados por ASs de RIPE, ARIN y LACNIC
.- Se consiguió un AS de LACNIC que realiza AS-SET de prefijos de ARIN
.- Conseguimos 14 ASs haciendo AS-SET


Datos específicos sobre LACNIC (IPv6):

Resumen:
  • Se obtuvieron 7 prefijos
  • 2 AS diferentes que se consiguieron haciendo AS-SET
  • Hubo un caso interesante donde el mismo prefijo se le hace AS-SET desde 2 ASs diferentes y además uno es de LACNIC y el otro de RIPE
  • Prefijos de LACNIC son anunciados por ASs de LACNIC, RIPE y/o ARIN
  • ASs de LACNIC no hacen AS-SET de prefijos no-LACNIC 



Referencias: