Apa itu "anycast" dan apa manfaatnya?


85

Saya belum pernah mendengar ada siaran sampai beberapa detik yang lalu ketika saya membaca " Apa trik server / jaringan yang keren atau berguna? ".

Artikel wikipedia " Anycast " di dalamnya cukup formal dan tidak benar-benar membangkitkan gambaran mental tentang bagaimana ia akan digunakan.

Dapatkah seseorang menjelaskan dalam beberapa kalimat informal apa "siaran" itu, bagaimana Anda mengkonfigurasinya (hanya dalam pengertian umum), dan apa manfaatnya (apa yang membuatnya lebih mudah)?

Jawaban:


88

Anycast adalah teknik jaringan tempat awalan IP yang sama diiklankan dari berbagai lokasi. Jaringan kemudian memutuskan lokasi untuk merutekan permintaan pengguna, berdasarkan biaya protokol routing dan mungkin 'kesehatan' dari server iklan.

Ada beberapa manfaat bagi siaran mana pun. Pertama, dalam kondisi mapan, pengguna layanan anycast (DNS adalah contoh yang sangat baik) akan selalu terhubung ke server DNS 'terdekat' (dari perspektif protokol routing). Ini mengurangi latensi, serta menyediakan tingkat penyeimbangan beban (dengan asumsi bahwa konsumen Anda didistribusikan secara merata di seluruh jaringan Anda).

Keuntungan lain adalah kemudahan manajemen konfigurasi. Daripada harus mengkonfigurasi server DNS yang berbeda tergantung di mana server / workstation digunakan (Asia, Amerika, Eropa), Anda memiliki satu alamat IP yang dikonfigurasi di setiap lokasi.

Bergantung pada bagaimana siaran diterapkan, itu juga dapat memberikan tingkat ketersediaan tinggi. Jika iklan dari rute siaran mana pun tergantung pada semacam pemeriksaan kesehatan (misalnya, permintaan DNS untuk domain yang terkenal, dalam contoh ini), maka segera setelah server gagal, rutenya dapat dihapus. Setelah jaringan berkumpul kembali, permintaan pengguna akan diteruskan dengan mulus ke instance DNS terdekat berikutnya, tanpa perlu intervensi manual atau konfigurasi ulang.

Keuntungan akhir adalah penskalaan horizontal; jika Anda menemukan bahwa satu server kelebihan beban, cukup gunakan yang lain di lokasi yang memungkinkannya mengambil sebagian permintaan server yang kelebihan beban. Sekali lagi, karena tidak ada konfigurasi klien yang diperlukan, ini dapat dilakukan dengan sangat cepat.


Apakah anycast menggunakan lebih banyak bandwidth dibandingkan dengan unicast? Bayangkan kita punya seribu server semua berbagi alamat IP yang sama, ketika kita mengirim paket ke yang alamat, tidak akan mengambil lebih banyak bandwidth daripada dibandingkan dengan unicasting?
Pacerier

5
Tidak - lalu lintas yang dikirim ke alamat broadcast mana pun hanya akan tiba di satu lokasi yang mengiklankan alamat tersebut. Anda mungkin berpikir tentang multicast , di mana paket yang dikirim ke alamat grup multicast dikirim ke semua host yang tertarik pada grup itu.
Murali Suriar

Bukankah masalah " Daripada harus mengkonfigurasi server DNS yang berbeda tergantung di mana server / workstation digunakan " dipecahkan oleh nama domain? Jadi apa gunanya anycast ketika itu hanya menduplikasi nama domain apa yang sudah dilakukan?
Pacerier

1
@Pacerier - Anda tidak dapat menggunakan nama domain untuk menemukan server DNS Anda - itu adalah ketergantungan melingkar. Contoh: konfigurasikan dns.foo.com. sebagai server DNS Anda. Alamat IP apa yang saya kirimi permintaan ke dns.foo.com? Saya tahu, saya akan mencarinya di DNS. dll
Murali Suriar

32

Salah satu hal yang sering membingungkan saya dalam memahami "siaran" adalah bahwa, meskipun merupakan istilah tingkat tinggi, dalam implementasi praktis biasanya bermuara pada dua contoh:

  1. Router menggunakan BGP untuk mengiklankan blok IP yang sama melalui beberapa jalur AS sebagai cara kasar mengarahkan pengguna ke situs "lebih dekat". Pada saat yang sama ia memberikan failover yang hampir transparan ke situs lain dengan hanya menarik rute dari situs yang bermasalah. Ini dapat berguna untuk hampir semua protokol, meskipun jelas itu menimbulkan banyak masalah sinkronisasi data backend.

  2. Mengiklankan IP layanan yang sama dari banyak titik dalam jaringan Anda sendiri (melalui perutean statis , OSPF , EIGRP , atau apa pun). Jika rute ditimbang berbeda, ia bertindak sebagai mekanisme failover. Jika rute ditimbang secara merata, itu dapat memanfaatkan kapabilitas per-paket atau per-aliran load-balancing dari sebagian besar router vendor-merek-merek. Anda harus berhati-hati bahwa protokol lapisan aplikasi nyaman dengan ini, itu sebabnya Anda hampir selalu mendengarnya digunakan dengan DNSdi mana permintaan selalu satu paket dan semuanya tanpa kewarganegaraan. Secara pribadi, saya melihat ini sebagai intrusi hacky menyangkut lapisan aplikasi ke dalam lapisan jaringan ketika kombinasi DNS dan load-balancers yang tepat hampir selalu menjadi solusi yang lebih baik.


+1 untuk menyebutkan satu paket dan kewarganegaraan
nponeccop

3
masalah dengan DNS adalah bahwa seseorang dapat menggunakan google atau resolver jarak jauh lainnya dan server terdekat ke resolver mungkin berbeda dari pada pengguna. Tentu saja ini berlaku hanya siaran apa pun untuk penggunaan non DNS (mis. Tcp anycast atau penggunaan lainnya).
akostadinov

@cagenut, Apakah HTTP akan putus jika ada per-paket load balancing (karena bobot yang merata atau sebaliknya)?
Pacerier

16

Terutama digunakan untuk layanan berbasis UDP seperti DNS. Pada dasarnya, Anda mengumumkan rute yang sama dari beberapa pusat data di seluruh dunia. Dengan cara ini, klien Anda akan dikirim ke pusat data "terbaik" dan "terdekat" berdasarkan rute BGP. Saya memberikan tanda kutip "terbaik" dan "paling dekat" karena penyedia jaringan dapat memainkan game dan mengarahkan lalu lintas dari jaringan tertentu secara berbeda. Secara umum, segala sesuatunya berjalan baik dengan siaran apa pun, tetapi itu bukan jaminan.

Contohnya adalah untuk mendaftarkan server DNS Anda sebagai 1.2.3.4 dan 1.2.3.5. Router Anda akan mengumumkan rute untuk 1.2.3 / 24 dari beberapa pusat data. Jika Anda berada di Jepang dan memiliki pusat data di sana, kemungkinan Anda akan berakhir di sana. Jika Anda berada di AS, Anda akan dikirim ke pusat data AS Anda. Sekali lagi, ini didasarkan pada perutean BGP dan bukan perutean geografis yang sebenarnya, tetapi biasanya itulah yang terjadi.


1
Bagaimana cara menghindari konflik?
Pacerier

Saya tidak yakin apa yang Anda maksud dengan konflik. BGP tidak benar-benar membiarkan konflik. Itu hanya mengambil rute. Satu (sering diabaikan) masalah dengan siaran mana pun legal. Secara teknis, penyiaran mana pun dicakup oleh berbagai paten. Tidak ada yang memberlakukan ini, tetapi jenis lalu lintas yang berbeda (CDN, DNS, TCP vs UDP) dicakup oleh berbagai paten. Paragraf ini harus ditutup dengan IANAL.
diq

Jadi maksud Anda bahwa layanan ip2location tidak akurat? Karena tidak ada lokasi resmi untuk IP dan bisa di mana saja tergantung pada komputer BGP mana Anda berbicara?
Pacerier

9

Berdasarkan tanggapan asli saya, saya baru saja memposting dua artikel lagi di blog saya yang berjudul: Anycast DNS - Bagian 3, Menggunakan RIP dan Anycast DNS - Bagian 3, Menggunakan RIP (lanjutan). Yang terakhir masuk ke rincian lebih lanjut, tetapi di www.netlinxinc.com/netlinx-blog.html Anda akan menemukan resep yang sebenarnya tentang cara mengkonfigurasi router Cisco dan perangkat lunak routing berbasis host Quagga Open Source untuk Anycast DNS menggunakan RIP.

Saat ini saya sedang mengerjakan penulisan artikel keempat dalam seri ini. Ini akan memberikan penerima tentang cara menggunakan DNS Anycast menggunakan OSPF. Terakhir dalam seri ini, saya akan menunjukkan resep untuk menggunakan Anycast DNS menggunakan BGP.

DNS Anycast - Bagian 1, Ikhtisar

Anycast DNS - Bagian 2, Menggunakan Rute Statis

Anycast DNS - Bagian 3, Menggunakan RIP

DNS Anycast - Bagian 3, Menggunakan RIP (lanjutan)


Jadi apakah benar bahwa karena siaran apa pun, ada kemungkinan bahwa orang lain di internet di seluruh dunia mungkin memiliki IP publik yang sama dengan yang diberikan ISP Anda kepada Anda?
Pacerier

Bukankah benar bahwa hanya ISP yang dapat menggunakan server siaran?
Pacerier

Bahkan, Anda perlu memiliki beberapa ISP untuk melakukan siaran apa pun.
Pacerier

4

Mengingat ini terutama DNS saat ini ...

Secara informal itu membuat layanan Anda lebih tangguh dan dengan akses / latensi / kecepatan jaringan yang lebih baik dengan memungkinkan Anda untuk mengatur layanan yang sama di beberapa lokasi di seluruh dunia semua menggunakan alamat yang sama. Ketika seseorang menanyakan alamat itu, mereka diberikan rute terdekat / terbaik.

Dari perspektif server:

Jika unicast Anda pergi ke satu orang, dan multicast Anda pergi ke beberapa orang, dan siaran adalah Anda pergi ke semua orang, maka setiap siaran menjadi schitzophrenic dan memiliki banyak kepribadian di mana kepribadian yang paling cocok untuk setiap orang terhubung dengan mereka. Hmm. Bukan analogi terbaik.


3

Penggunaan anycast yang sangat menarik adalah DNS. Anda dapat menempatkan 5 server DNS yang berbeda di berbagai lokasi fisik dan jaringan tetapi berbagi satu alamat (atau kadang-kadang DNS primer dan sekunder). Tergantung di mana sumbernya, mereka diarahkan ke simpul terdekat mereka. Ini melakukan beberapa keseimbangan lalu lintas ditambah menyediakan redundansi jika server DNS mati.


Tetapi bukankah redundansi sudah disediakan oleh sistem DNS?
Pacerier

2

Menurut salah satu kolega saya, ini juga berguna sebagai teknik mitigasi serangan DoS, karena orang-orang hanya dapat menyerang alamat IP broadcast mana saja yang "terdekat", jadi jika ada banyak zombie di, katakanlah, AS, situs Euro Anda akan menjadi sebagian besar tidak terpengaruh, karena mereka tidak dapat benar-benar mengirim paket ke sana.

Juga dimungkinkan untuk menggunakannya sebagai cara untuk (agak naif) menyaring paket palsu jika mereka jelas datang dari suatu tempat yang tidak mungkin diiklankan di BGP sebagai rute yang benar (misalnya paket yang datang ke Eropa ketika ASN menunjukkan N Amerika) blok).


1
Yah, bahkan dalam kasus sederhana yang hanya akan menghentikan orang-orang yang jalur AS pergi ke server itu --- misalnya Anda dapat menghentikan orang-orang yang menghubungi Anda dari Comcast, tetapi tidak pada AT&T. Jika Anda sudah mengatur "dengan benar" untuk failover (melacak layanan L7, berhenti mengumumkan ketika ia turun), maka sebenarnya jauh lebih sulit untuk menangani serangan DoS karena itu akan mengeluarkan satu server kemudian pindah ke yang berikutnya ketika itu pengumuman diturunkan ...
James Cape

@ JamesCape, Menarik, Tetapi ketika mereka pindah ke yang berikutnya, dos telah gagal karena orang tidak dapat terhubung kan?
Pacerier

@Pacerier Dalam kasus paling sederhana, di mana Anda hanya mengiklankan IP yang sama di mana-mana tanpa intelijen di dalamnya, ya. Namun, jika Anda mencoba untuk menjadi pintar dan menarik iklan di AS karena layanannya tidak merespons, maka satu-satunya iklan yang tersisa adalah yang ada di Eropa. Jadi semua zombie AS kemudian akan menekan server yang tersedia berikutnya, dan membunuh yang itu juga.
James Cape

2

Juga baik untuk dicatat bahwa Anycast tidak baik atau tidak dapat diandalkan untuk beberapa koneksi TCP yang tidak dapat bertahan ulang atau percakapan panjang.

IP Anycast, menggunakan BGP, memberi tahu internet bahwa ada 2, 3 atau lebih jalur ke HOST tertentu , namun pada kenyataannya ini BUKAN host yang sama , mereka adalah replika persis host yang diiklankan di beberapa pusat data untuk mencapai koneksi latensi yang lebih rendah.

Sebagai contoh, saya memiliki 3 server melakukan 301 redirection non-www untuk 198.251.86.133, jika Anda melakukan ping host ini, Anda mungkin mendapatkan tanggapan DUPLICATE di kali, atau bahkan turun tergantung di mana Anda berada, karena server saya adalah US-East, US -West, dan EUR. untuk koneksi singkat waktunya (seperti 301 yang cache browser) ini memberikan respons cepat oleh server lokal di pusat data terdekat.

Dari sudut pandang redundansi tidak ada yang dibangun ke dalam siaran, Anda masih perlu redundansi independen di setiap situs karena IP akan (dalam skenario khas) selalu mengarah ke pusat data tersebut.


Re "ping"; bukan ping koneksi UDP?
Pacerier

Re "karena IP akan (dalam skenario khas) selalu menunjuk ke pusat data itu"; apakah kamu yakin Jika server itu mati, mereka akan mulai menunjuk ke server terdekat berikutnya bukan?
Pacerier
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.