Tại sao chúng ta cần IPv6?


44

Đây sẽ là một loại câu hỏi dành cho người mới nhưng tôi không chắc tại sao chúng ta thực sự cần IPv6. AFAIK, câu chuyện như sau:

Vào thời xa xưa, khi máy tính không dồi dào, địa chỉ IP 32 bit là đủ cho tất cả mọi người. Vào những thời điểm này, mặt nạ mạng con được ẩn. Sau đó, số lượng máy tính đã tăng lên và 32 bit bắt đầu trở nên không đủ.

Vì vậy, mặt nạ mạng con bắt đầu trở nên rõ ràng. Về cơ bản kích thước của một địa chỉ IP đã tăng lên.

Câu hỏi của tôi là, nhược điểm của việc tiếp tục địa chỉ với mặt nạ mạng con là gì? Ví dụ: khi chúng không đủ, chúng ta có thể tiếp tục sử dụng "mặt nạ mạng con" không, v.v.?

Tôi hiểu rằng nó tiêu tốn nhiều dung lượng hơn so với IPv4 gốc (và có thể không khác nhiều so với sử dụng IPv6) nhưng không phải là mặt nạ mạng con rõ ràng là một giải pháp đủ? Nếu không, tại sao chúng là một giải pháp không đủ?


13
Cảnh báo: có vẻ như thuật ngữ 'mặt nạ mạng con' được sử dụng sai cách ở đây. Mặt nạ mạng con là 255.255.255.0v.v ... Điều được nói đến ở đây là một thứ khác: giả mạo, được gọi là NAT (Dịch địa chỉ mạng).
Sander Steffann

@SanderSteffann Thật ra là có. Sau đó tôi nhận ra rằng tôi đã không sử dụng thuật ngữ chính xác. Xin vui lòng chỉnh sửa câu hỏi. Tôi không hoàn toàn chắc chắn những điều khoản nào là chính xác để sử dụng. (Đặc biệt là phần "mặt nạ mạng con-mạng con")
Utku

Đó là một chút nhiều vì vậy tôi đặt nó trong một câu trả lời :)
Sander Steffann

Không ai đề cập đến việc IPv6 dễ dàng hơn nhiều so với kết nối mạng.
Jacob Evans

1
Một trong những vấn đề với bất kỳ câu hỏi nào về IPv6 là bạn sẽ tìm thấy rất nhiều lòng nhiệt thành gần như đáng tin cậy. Tôi thường chỉ trả lời các câu hỏi IPv6 bằng các bình luận, để giữ cho những người quá khích không làm tổn hại đến điểm danh tiếng của tôi. Sự thật là, IPv6 có thể bắt kịp hoặc có thể không. Nó có quá nhiều thiếu sót để đặt cược chắc chắn, và có những lựa chọn khác ngoài kia.
Kevin Keane

Câu trả lời:


80

Hai điều đang bị lẫn lộn ở đây:

  • địa chỉ lớp học vs CIDR
  • Masquerading / NAT

Đi từ việc định địa chỉ lớp sang Định tuyến tên miền không phân loại (CIDR) là một cải tiến giúp phân phối địa chỉ cho các ISP và tổ chức hiệu quả hơn, do đó cũng tăng tuổi thọ của IPv4. Trong địa chỉ đầy đủ, một tổ chức sẽ nhận được một trong những điều sau:

  • một mạng lớp A (a / 8 theo thuật ngữ CIDR, với netmask 255.0.0.0)
  • mạng lớp B (a / 16 theo thuật ngữ CIDR, với netmask 255.255.0.0)
  • mạng lớp C (a / 24 theo thuật ngữ CIDR, với netmask 255.255.255.0)

Tất cả các lớp này được phân bổ từ phạm vi cố định. Lớp A chứa tất cả các địa chỉ có chữ số đầu tiên nằm trong khoảng từ 1 đến 126, lớp B là từ 128 đến 191 và lớp C từ 192 đến 223. Định tuyến giữa các tổ chức có tất cả các mã này được mã hóa cứng vào các giao thức.

Trong những ngày tuyệt vời khi một tổ chức cần ví dụ 4000 địa chỉ, có hai tùy chọn: cung cấp cho họ 16 khối C lớp (16 x 256 = 4096 địa chỉ) hoặc cung cấp cho họ một khối B (địa chỉ 65536). Do các kích thước được mã hóa cứng, 16 khối C riêng biệt sẽ phải được định tuyến riêng. Vì vậy, nhiều người có một khối B, chứa nhiều địa chỉ hơn họ thực sự cần. Nhiều tổ chức lớn sẽ có được một khối A (16.777.216 địa chỉ) ngay cả khi chỉ cần vài trăm nghìn. Điều này lãng phí rất nhiều địa chỉ.

CIDR đã loại bỏ những hạn chế này. Các lớp A, B và C không còn tồn tại nữa (kể từ ± 1993) và việc định tuyến giữa các tổ chức có thể xảy ra trên bất kỳ độ dài tiền tố nào (mặc dù thứ gì đó nhỏ hơn a / 24 thường không được chấp nhận để ngăn chặn nhiều khối nhỏ làm tăng kích thước của bảng định tuyến ). Vì vậy, kể từ đó, có thể định tuyến các khối có kích thước khác nhau và phân bổ chúng từ bất kỳ phần ABC-class nào trước đây của không gian địa chỉ. Một tổ chức cần 4000 địa chỉ có thể nhận được 20, tức là 4096 địa chỉ.

Chia mạng có nghĩa là chia khối địa chỉ được phân bổ của bạn thành các khối nhỏ hơn. Các khối nhỏ hơn sau đó có thể được cấu hình trên các mạng vật lý, v.v ... Nó không tạo ra nhiều địa chỉ một cách kỳ diệu. Nó chỉ có nghĩa là bạn chia phân bổ của bạn theo cách bạn muốn sử dụng nó.

Thứ đã tạo ra nhiều địa chỉ hơn là Masquerading, được gọi là NAT (Dịch địa chỉ mạng). Với NAT một thiết bị có một địa chỉ công cộng duy nhất cung cấp kết nối cho toàn bộ mạng với các địa chỉ riêng (bên trong) phía sau nó. Mọi thiết bị trên mạng cục bộ đều nghĩ rằng nó được kết nối với internet, ngay cả khi nó không thực sự. Bộ định tuyến NAT sẽ xem xét lưu lượng truy cập đi và thay thế địa chỉ riêng của thiết bị cục bộ bằng địa chỉ công khai của chính nó, giả vờ là nguồn của gói (đó là lý do tại sao nó còn được gọi là giả mạo). Nó nhớ những bản dịch mà nó đã thực hiện để cho bất kỳ câu trả lời nào trở lại, nó có thể đặt lại địa chỉ riêng ban đầu của thiết bị cục bộ. Đây thường được coi là một hack, nhưng nó đã hoạt động và nó cho phép nhiều thiết bị gửi lưu lượng truy cập lên internet trong khi sử dụng ít địa chỉ công cộng hơn.

Có thể có nhiều thiết bị NAT phía sau nhau. Điều này được thực hiện ví dụ bởi các ISP không có đủ địa chỉ IPv4 công khai. ISP có một số bộ định tuyến NAT khổng lồ có một số địa chỉ IPv4 công cộng. Các khách hàng sau đó được kết nối bằng một dải địa chỉ IPv4 đặc biệt ( 100.64.0.0/10mặc dù đôi khi họ cũng sử dụng địa chỉ riêng thông thường) làm địa chỉ bên ngoài. Các khách hàng sau đó lại có bộ định tuyến NAT sử dụng địa chỉ duy nhất mà họ nhận được ở bên ngoài và thực hiện NAT để kết nối toàn bộ mạng nội bộ sử dụng địa chỉ riêng thông thường.

Có một vài nhược điểm khi có bộ định tuyến NAT:

  • kết nối đến: các thiết bị phía sau bộ định tuyến NAT chỉ có thể tạo kết nối ra ngoài vì chúng không có địa chỉ 'thực' của riêng chúng để chấp nhận kết nối đến
  • chuyển tiếp cổng: điều này thường ít gây ra sự cố khi chuyển tiếp cổng, trong đó NAT định tuyến dành một số cổng UDP và / hoặc TCP trên địa chỉ công khai của nó cho một thiết bị nội bộ. Sau đó, bộ định tuyến NAT có thể chuyển tiếp lưu lượng đến trên các cổng đó đến thiết bị nội bộ đó. Điều này cần người dùng định cấu hình các chuyển tiếp đó trên bộ định tuyến NAT
  • lớp tàu sân bay NAT: là nơi ISP thực hiện NAT. Bạn sẽ không thể định cấu hình bất kỳ chuyển tiếp cổng nào, do đó, việc chấp nhận mọi kết nối đến trở thành (bit torrent, có máy chủ VPN / web / mail / etc của riêng bạn) là không thể
  • chia sẻ số phận: thế giới bên ngoài chỉ nhìn thấy một thiết bị duy nhất: bộ định tuyến NAT đó. Do đó, tất cả các thiết bị đằng sau bộ định tuyến NAT đều chia sẻ số phận của nó. Nếu một thiết bị phía sau bộ định tuyến NAT hoạt động sai, đó là địa chỉ của bộ định tuyến NAT kết thúc trong danh sách đen, do đó cũng chặn mọi thiết bị nội bộ khác
  • dự phòng: một bộ định tuyến NAT phải nhớ những thiết bị nội bộ nào đang liên lạc qua nó để nó có thể gửi trả lời đến đúng thiết bị. Do đó, tất cả lưu lượng truy cập của một nhóm người dùng phải đi qua một bộ định tuyến NAT. Các bộ định tuyến thông thường không phải nhớ bất cứ điều gì và vì vậy thật dễ dàng để xây dựng các tuyến đường dự phòng. Với NAT thì không.
  • điểm duy nhất của sự cố: khi bộ định tuyến NAT bị lỗi, nó sẽ quên tất cả các liên lạc hiện có, do đó tất cả các kết nối hiện có thông qua nó sẽ bị hỏng
  • bộ định tuyến NAT trung tâm lớn là đắt tiền

Như bạn có thể thấy cả CIDR và ​​NAT đã kéo dài tuổi thọ của IPv4 trong nhiều năm. Nhưng CIDR không thể tạo thêm địa chỉ, chỉ phân bổ các địa chỉ hiện có hiệu quả hơn. Và NAT hoạt động, nhưng chỉ dành cho lưu lượng truy cập đi ra ngoài và có rủi ro hiệu suất và độ ổn định cao hơn và ít chức năng hơn so với việc có địa chỉ công cộng.

Đó là lý do IPv6 được phát minh: Rất nhiều địa chỉ và địa chỉ công cộng cho mọi thiết bị. Vì vậy, thiết bị của bạn (hoặc tường lửa ở phía trước) có thể tự quyết định những kết nối gửi đến mà nó muốn chấp nhận. Nếu bạn muốn chạy máy chủ thư của riêng mình, và nếu bạn không muốn bất kỳ ai từ bên ngoài kết nối với bạn: điều đó cũng có thể :) IPv6 cung cấp cho bạn các tùy chọn mà bạn đã từng có trước khi NAT được giới thiệu và bạn có thể tự do sử dụng chúng nếu bạn muốn.


1
Wow rất thông qua câu trả lời. Cảm ơn. Về lớp tàu sân bay NAT: Bạn đã nói rằng bit torrent sẽ kết thúc. Nhưng tôi không thể hiểu tại sao nó lại xảy ra. Chính xác hơn, tôi nghĩ rằng nó đã kết thúc ngay cả hôm nay nếu đó là trường hợp. Hãy để tôi giải thích: Tôi đoán rằng nhiều người dùng gia đình sử dụng bộ định tuyến NAT và điều này khiến tôi nghĩ rằng một "con đỉa" không thể lấy từ người dùng sử dụng bộ định tuyến NAT, vì con leecher sẽ không biết địa chỉ của máy tính để kết nối. Vì wecher woul không thể tìm thấy seeder, điều này có nghĩa là kết thúc nếu bit torrent ngay cả ngày hôm nay. Bạn có thể làm rõ điều này cho tôi?
Utku

5
Chuyển tiếp cổng có thể được cấu hình trên các bộ định tuyến gia đình bởi người dùng để cho phép các kết nối đến hoặc máy khách BitTorrent cục bộ sử dụng một giao thức đặc biệt để làm cho bộ định tuyến NAT cài đặt chuyển tiếp cổng tự động. Một bộ định tuyến NAT lớp tàu sân bay sẽ không cho phép chuyển tiếp cổng như vậy. BitTorrent vẫn hoạt động mà không có kết nối đến, nhưng gần như không tốt.
Sander Steffann

4
@Utku, câu trả lời glib là "nó không". đó là, bạn đã đúng rằng các kết nối đến với nhiều nút bittorrent của NAT không thể được thiết lập. điều đó nói rằng, nút đó có thể thiết lập các kết nối đến các nút khác trong mạng và do dữ liệu truyền cả hai hướng qua một kết nối, chúng vẫn có thể đóng góp cho mạng bằng cách truyền các khối mà một trong các đồng nghiệp của chúng có cho các mạng khác.
Rob Starling

3
Trên bittorrent & NAT: xem superuser.com/questions/104462/iêu . Tóm tắt: kết nối đến cõng trên kết nối đi của bạn; một số khách hàng sử dụng hệ thống chuyển tiếp để cho phép các kết nối đến từ một người dùng mới trên các kết nối với một mạng ngang hàng được chia sẻ. Điều này là ít hiệu quả hơn, và bạn sẽ nhận được tốc độ thấp hơn. Không thể nếu tất cả các đồng nghiệp đứng sau NAT mà không chuyển tiếp cổng.
Timbo

2
trên Fate Sharing, một giai thoại có liên quan: techcrunch.com/2007/01/01/wikipedia-bans-qatar
njzk2

15

Giao thức Internet (IP) được thiết kế để cung cấp kết nối đầu cuối.

32 bit của một địa chỉ IPv4 chỉ cho phép khoảng 4,3 tỷ địa chỉ duy nhất. Sau đó, bạn phải trừ một loạt các địa chỉ cho những thứ như multicast, và có rất nhiều phép toán cho thấy rằng bạn không bao giờ có thể sử dụng toàn bộ dung lượng của mạng con, vì vậy có rất nhiều địa chỉ bị lãng phí.

Có khoảng hai lần số người có địa chỉ IPv4 có thể sử dụng được và nhiều người trong số họ sử dụng nhiều địa chỉ IP. Điều này thậm chí không chạm đến nhu cầu kinh doanh cho các địa chỉ IP.

Việc sử dụng NAT để thỏa mãn cơn đói địa chỉ IP phá vỡ mô hình kết nối đầu cuối IP. Nó trở nên khó khăn để lộ đủ địa chỉ IP công cộng. Hãy suy nghĩ trong một phút, bạn, với tư cách là người dùng gia đình chỉ có một địa chỉ IP công cộng, sẽ làm gì nếu bạn muốn cho phép nhiều thiết bị sử dụng cùng một giao thức truyền tải và cổng, nói rằng hai máy chủ web, theo quy ước sử dụng cổng TCP 80, sẽ là truy cập từ Internet công cộng. Bạn có thể chuyển tiếp cổng TCP 80 trên địa chỉ IP công cộng của mình sang một địa chỉ IP riêng, nhưng còn máy chủ web khác thì sao? Kịch bản này sẽ yêu cầu bạn nhảy qua một số vòng mà một người dùng gia đình thông thường không được trang bị để xử lý. Bây giờ, hãy nghĩ về Internet of Things. , một số hoặc tất cả trong số đó muốn sử dụng cùng các giao thức và cổng vận chuyển cụ thể. Bây giờ, hãy nghĩ về các doanh nghiệp có địa chỉ IP cần cung cấp cho khách hàng, nhà cung cấp và đối tác của họ kết nối.

IP được thiết kế để kết nối đầu cuối, do đó, cho dù có bao nhiêu máy chủ khác nhau sử dụng cùng một giao thức truyền tải và cổng, chúng vẫn được xác định duy nhất bởi địa chỉ IP của chúng. NAT phá vỡ điều này và nó giới hạn IP theo những cách mà nó không bao giờ có ý định giới hạn. NAT được tạo ra một cách đơn giản như một cách để kéo dài tuổi thọ của IPv4 cho đến khi phiên bản IP tiếp theo (IPv6) có thể được chấp nhận.

IPv6 cung cấp đủ địa chỉ công cộng để khôi phục mô hình IP ban đầu. IPv6 hiện có 1/8 địa chỉ IPv6 trong toàn bộ khối địa chỉ IPv6 được dành riêng cho các địa chỉ IPv6 có thể định tuyến toàn cầu. Giả sử có 17 tỷ người trên trái đất vào năm 2100 (không phải là không thực tế), phạm vi địa chỉ IPv6 toàn cầu hiện tại (1/8 khối địa chỉ IPv6) cung cấp hơn 2000/48 mạng cho mỗi một trong số 17 tỷ người đó. Mỗi / 48 mạng là 65.536 / 64 mạng con với 18.446.744.073.709.551.616 địa chỉ trên mỗi mạng con.


Vậy NAT thực chất là một "miếng vá" phải không? Một bản vá vi phạm một nguyên tắc thiết yếu của internet.
Utku

7
NAT có thể được gọi là một bản vá, nhưng nhiều người đã gọi nó là hack, hoặc tệ hơn.
Ron Maupin

7
Câu thứ hai của bạn rất quan trọng! NAT tạo ra sự bất cân xứng giữa những người có thể chạy máy chủ và những người không thể (dễ dàng). Đó là một sự vi phạm cơ bản của các nguyên tắc dân chủ cốt lõi của Internet. Tất nhiên có ai đó quan tâm đến điều đó hay không, là một câu hỏi khác nhau. Hầu hết những người ngồi sau NAT không quan tâm. Nhiều nhà cung cấp nội dung làm cẩn thận khi đưa càng nhiều người càng tốt đằng sau một NAT, bởi vì sau đó họ có thể kiểm soát những gì (đa số) Internet thấy.
Jörg W Mittag

1
@ JörgWMittag, "Hầu hết những người ngồi sau NAT không quan tâm." Cho đến khi trò chơi nhiều người chơi, ứng dụng hoặc đồ chơi mới sáng bóng của họ không hoạt động như họ mong đợi, thì họ chắc chắn quan tâm. "Nhiều nhà cung cấp nội dung quan tâm đến việc đặt càng nhiều người càng tốt đằng sau một NAT, bởi vì sau đó họ có thể kiểm soát những gì ... Internet nhìn thấy." Nó không mất NAT để kiểm soát truy cập. Nó có thể được thực hiện dễ dàng (nếu không phải như vậy) mà không cần NAT. NAT làm cho nhiều nhà cung cấp dịch vụ / nội dung trở nên khó khăn hơn và trong số những người tôi biết đang điều hành các mạng như vậy, tôi không biết ai sử dụng NAT nếu họ có thể tránh được.
YLearn

9

Nói một cách đơn giản, không có thêm địa chỉ IPv4. Tất cả (hoặc gần như tất cả) các địa chỉ IPv4 có sẵn đã được phân bổ. Sự bùng nổ của các thiết bị IP, máy tính xách tay, điện thoại, máy tính bảng, máy ảnh, thiết bị bảo mật, v.v., đã sử dụng hết không gian địa chỉ.


1
Điều đó không hoàn toàn đúng, phần lớn không gian bị lãng phí vì nó không được cho thuê tốt để bắt đầu. Bây giờ org có rất nhiều địa chỉ mà họ không sử dụng làm địa chỉ công cộng nhưng để trả lại cho họ sẽ cần nỗ lực đáng kể trong việc tái cấu trúc mạng của họ.
JamesRyan

7
Vâng, rất nhiều không gian bị lãng phí. Nhưng sự thật vẫn là không gian có sẵn đã cạn kiệt.
Ron Trunk

1
@JamesRyan Ngoài ra còn có toàn bộ phạm vi "Lớp E" có thể (bất cứ lúc nào) có thể được mở cho nhiệm vụ unicast chung. Điều đó sẽ cung cấp cho thế giới thêm 16/8 giây (khoảng 134 triệu địa chỉ nữa). Nhưng sau đó thì? Tất cả những gì nó sẽ làm là hoãn lại "sự cạn kiệt cuối cùng" của tất cả các địa chỉ. Vì vậy, bất kể có bao nhiêu địa chỉ IPv4 được thu hồi hoặc phân bổ lại, sự cạn kiệt là không thể tránh khỏi. IPv6 là giải pháp lâu dài.
Eddie

3
@Eddie, theo lý thuyết , phạm vi "Lớp E" có thể được mở ra. Trong thực tế, 34 năm mọi người cho rằng phạm vi này là "dành riêng, không sử dụng" có nghĩa là bất kỳ ai nhận được một trong những địa chỉ đó sẽ có kết nối hạn chế.
Đánh dấu

1
@Mark Đồng ý. Quan điểm của tôi đơn giản là có rất nhiều không gian IPv4 chúng ta có thể cố gắng sử dụng để kéo dài tuổi thọ của nó, nhưng tại sao phải bận tâm, IPv6 là không thể tránh khỏi. (Tôi chắc chắn không nói rằng chúng ta nên kéo dài tuổi thọ của IPv4) .
Eddie

4

Trước hết, kỹ thuật mặt nạ mạng con thay đổi đã trở nên không đủ. Đó là lý do tại sao mọi người phát minh ra kỹ thuật dịch địa chỉ Mạng nơi bạn có thể sử dụng IP công cộng để che giấu nhiều IP riêng. Ngay cả với kỹ thuật này, chúng tôi gần như đã hết IP để phân bổ. Ngoài ra NAT phá vỡ một trong những nguyên tắc sáng lập của Internet: nguyên tắc từ đầu đến cuối.

Vì vậy, lý do chính để sử dụng IPv6 là mọi người sẽ có sẵn nhiều IP công cộng như họ cần và tất cả sự phức tạp của việc sử dụng NAT sẽ biến mất.

IPv6 cũng cung cấp các chức năng khác mà tôi sẽ không đi sâu vào chi tiết: bảo mật bắt buộc ở cấp IP, cho phép cấu hình tự động địa chỉ Statless, không phát sóng chỉ phát đa hướng và cung cấp xử lý hiệu quả hơn bởi các bộ định tuyến bằng cách đơn giản hóa tiêu đề. Cũng trong thời đại thiết bị di động này, nó có hỗ trợ rõ ràng cho tính di động dưới dạng IPv6 di động.

Về đề xuất của bạn về việc sử dụng mặt nạ mạng con / mạng con: có vẻ không khả thi vì việc triển khai sẽ phá vỡ tất cả các ứng dụng hiện có và nó không thực sự thanh lịch. Nếu bạn phải thay đổi mọi thứ tại sao không tìm kiếm một cái gì đó mới và suy nghĩ tốt.


NAT không được phát minh vì thiếu địa chỉ hoặc thiếu các mạng con có chiều dài thay đổi. Nó trở nên phổ biến đơn giản vì nhiều ISP sẽ tính phí nhiều hơn cho các dịch vụ "cấp doanh nghiệp" với không gian IP được phân bổ.
Alnitak

1

Tổ chức chính phân phối IP cho tổ chức orgs trong khu vực đã hoàn toàn cạn kiệt. ARIN - tổ chức org khu vực ở Mỹ đã cạn kiệt trong vài tháng qua. Tổ chức org duy nhất trong khu vực vẫn còn một số IP là AfriNIC.

Có rất nhiều công ty / tổ chức, như Ford, MIT, v.v ... có phạm vi IP Hạng A đầy đủ. Quay lại khi họ có được chúng, không ai nghĩ chúng tôi sẽ hết nhanh như vậy.

Tại thời điểm này, để mua IP, bạn có thể đợi một công ty ngừng hoạt động và mua nó trên thị trường màu xám hoặc bạn cố gắng mua các IP không sử dụng từ một công ty khác.

IP được thiết kế cho một khu vực, không thể được sử dụng ở khu vực khác. Vâng, họ có thể, nhưng nó rất nản lòng (Geo-IP).

Tại thời điểm này, rất nhiều công ty đã sẵn sàng cho IPv6. Việc chuyển đổi không dễ dàng vì rất tốn kém để mua thiết bị mới hỗ trợ IPv6 đầy đủ cho những người có 10 nghìn máy chủ.


2
IP không thực sự "được thiết kế cho một khu vực" - chúng được gán tùy ý cho một trong 5 RIR (tương ứng với năm châu lục). Điều thực sự khá phổ biến là các khối IP được chuyển (thường, được bán) từ một RIR vẫn còn một số (ngày nay, chỉ có Châu Phi còn lại) cho một khối khác. GeoIP chỉ là một bản hack, không phải thứ gì đó được thiết kế trong giao thức IP.
Kevin Keane
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.