Anycast und Anycast DNS Grundlagen und Anwendung an der Uni Köln
Grundlagen IP Anycast: eine IP mit mehreren Zielen Router kennen verschiedene Wege zum Ziel, wählen den kürzesten/ billigsten Grundsätzlich statisch möglich, aber nur dynamisch sinnvoll Deshalb nicht gut für TCP geeignet
134.95.127.1 134.95.127.1 134.95.127.1 Router 1 Client Client Client
Verbreitetes Beispiel: 6to4 IPv6 wird (noch?) nicht flächendeckend betrieben Mechanismus zur einfachen Tunnelung durch IPv4: 6to4 (RFC 3056) Erweiterung für Anycast in RFC 3068: IPv4 192.88.99.1 und IPv6 2002:c058:6301::
[a0620@tyrion:~ (1)]% traceroute 192.88.99.1 traceroute to 192.88.99.1 (192.88.99.1), 64 hops max, 52 byte packets 1 rzkr-gw (134.95.128.172) 0.582 ms 0.358 ms 0.319 ms 2 lficore-gw (134.95.4.66) 0.277 ms 0.315 ms 0.257 ms 3 border-gw (134.95.4.162) 0.305 ms 0.298 ms 0.263 ms 4 rtint-s5.netcologne.de (194.8.221.121) 0.439 ms 0.427 ms 0.481 ms 5 xr-bir1-ge8-6.x-win.dfn.de (188.1.232.213) 1.646 ms 1.607 ms 1.677 ms 6 zr-fra1-te0-7-0-5.x-win.dfn.de (188.1.145.46) 4.796 ms 4.242 ms 4.264 ms 7 zr-erl1-te0-0-0-4.x-win.dfn.de (188.1.145.197) 8.192 ms 9.630 ms 8.886 ms 8 xr-erl1-te2-1.x-win.dfn.de (188.1.145.166) 8.220 ms * 8.316 ms [a0620@tyrion:~ (1)]% traceroute6 ipv6.google.com traceroute6: Warning: ipv6.l.google.com has multiple addresses; using 2a00:1450:8006::63 traceroute6 to ipv6.l.google.com (2a00:1450:8006::63) from 2002:865f:8001:1::1, 64 hops max, 12 byte packets 1 * * * 2 2001:638:c:c049::2 8.795 ms 8.556 ms 8.896 ms 3 * * * 4 de-cix10.net.google.com 11.267 ms 28.702 ms 11.667 ms 5 2001:4860::1:0:10 12.013 ms 13.350 ms 10.773 ms 6 2001:4860::1:0:8 17.458 ms 16.405 ms 18.079 ms
Warum Anycast DNS? DNS ideal für Anycast: (überwiegend) UDP-basiert kleine Pakete Probleme bei traditionellem DNS Timeouts bei Ausfall von Servern keine Lastverteilung Vorteile von Anycast DNS minimale bis keine Timeouts eingebaute Lastverteilung
Umsetzung an der Uni Köln Quagga: Open Source Routing-Suite unterstützt RIP, OSPF, BGP,... Syntax wie IOS BIND cfengine
Quagga 1: zebra braucht zusätzliche Loopbackadresse für Service-IP: lo:0 Link encap:lokale Schleife inet Adresse:134.95.127.1 Maske:255.255.255.255 UP LOOPBACK RUNNING MTU:16436 Metric:1 primärer Prozess heißt zebra : hostname anycast-rzkr.rrz.uni-koeln.de password xxx interface eth0 ip address 134.95.4.142/30 interface lo:0 ip address 134.95.127.1/32
Quagga 2: telnet-interface [a0620@anycast-rzkr:~ (1)]% telnet localhost zebra Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. Hello, this is Quagga (version 0.98.6). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: anycast-rzkr.rrz.uni-koeln.de> ena anycast-rzkr.rrz.uni-koeln.de# sh run Current configuration: hostname anycast-rzkr.rrz.uni-koeln.de password xxx interface eth0 ip address 134.95.4.142/30 interface lo interface lo:0 ip address 134.95.127.1/32 ipv6 forwarding line vty end
Quagga 3: OSPF in Quagga hostname anycast-rzkr.rrz.uni-koeln.de password xxx interface eth0 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 foobar ip ospf priority 0 enable password please-set-at-here router ospf log-adjacency-changes ospf router-id 134.95.4.142 area 134.95.4.142 authentication message-digest area 134.95.4.142 nssa network 134.95.4.140/30 area 134.95.4.142 redistribute connected metric-type 1 distribute-list ANYCAST out connected access-list ANYCAST permit 134.95.127.1/32 log file /var/log/quagga/ospfd.log debugging
OSPF-Refresher: NSSA Not-so-stubby-area (NSSA): echte Stub-Areas propagieren keine externen Routen die Anycast-IP ist extern, weil sie über redistribute generiert wird (d.h. der Router ist ein ASBR) NSSAs erlauben externe Summary-Routes die Anycast-IP wird mit LSA Typ 7 annonciert
NSSA 2 rzkr-gw#sh ip ospf database nssa-external OSPF Router with ID (134.95.127.99) (Process ID 13495)... Type-7 AS External Link States (Area 134.95.4.142) Routing Bit Set on this LSA LS age: 976 Options: (No TOS-capability, Type 7/5 translation, No DC) LS Type: AS External Link Link State ID: 134.95.127.1 (External Network Number ) Advertising Router: 134.95.4.142 LS Seq Number: 80000515 Checksum: 0xA123 Length: 36 Network Mask: /32 Metric Type: 1 (Comparable directly to link state metric) TOS: 0 Metric: 20 Forward Address: 134.95.4.142 External Route Tag: 0
Quagga 4: OSPF auf IOS-Router interface Vlan933 description Anycast Transfernetz RZKR ip address 134.95.4.141 255.255.255.252 ip access-group 180 in ip access-group 181 out ip pim sparse-dense-mode ip ospf message-digest-key 1 md5 7 1303181D090D16 end router ospf 13495... area 134.95.4.142 authentication message-digest area 134.95.4.142 nssa... no passive-interface Vlan933... network 134.95.4.140 0.0.0.3 area 134.95.4.142
Quagga 5, Kontrolle rzkr-gw#sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 134.95.127.110 1 FULL/BDR 00:00:38 134.95.4.66 TenGigabitEthernet3/1 134.95.4.142 0 FULL/DROTHER 00:00:39 134.95.4.142 Vlan933 [a0620@anycast-rzkr:~ (0)]% telnet localhost ospfd Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. Hello, this is Quagga (version 0.98.6). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: anycast-rzkr.rrz.uni-koeln.de> ena anycast-rzkr.rrz.uni-koeln.de# sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 134.95.127.99 1 Full/DR 00:00:38 134.95.4.141 eth0:134.95.4.142 0 0 0
BIND-Konfiguration [a0620@dialog5:anycast (0)]% pwd /afs/.rrz.uni-koeln.de/admin/cfengine/config/anycast [a0620@dialog5:anycast (0)]% cat named.conf //# $Id: named.conf,v 1.9 2010/01/07 16:55:21 a0620 Exp $... options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; listen-on { 134.95.127.1; }; listen-on port 5353 { ${HOST_IP}; }; allow-recursion { uklan; }; query-source address ${HOST_IP} port *; transfer-source ${HOST_IP} port *; };
Troubleshooting Bei Problemen ist die erste Frage: wo? traceroute/mtr zeigt den letzten Router Stimmt die Serial im SOA-Record? Im Zweifel: sudo ifdown lo:0 Nach Fehlerbehebung: sudo ifup lo:0
Weitere mögliche Anwendungen für Anycast? RADIUS (geht nicht mit EAP/802.1x) NTP Kerberos
Vielen Dank