Chương 4. Giao thức tầng mạng (network layer)

 Truyền các gói tin (packets) từ sending host tới receiving host.  segment  packets (datagrams).  Network layer được cài đặt tại router và cả end system.  Chức năng:  chọn đường (path selection): có nhiều đường đi, gói tin sẽ đi theo đường nào?  chuyển mạch (switching, forwarding): chuyển gói tin từ cổng vào tới cổng ra của router một cách thích hợp.  thiết lập liên kết (call setup): một số kiến trúc mạng cần thiết lập kênh truyền trước khi truyền.

pdf39 trang | Chia sẻ: lylyngoc | Lượt xem: 2793 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Chương 4. Giao thức tầng mạng (network layer), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 4. Giao thức tầng mạng (network layer) Trần Quang Hải Bằng Faculty of Information Technology University of Communication and Transport (Branch 2) Office location: Administration building, Block D3, Room 6 Office phone: 38962018 Cell phone: N/A Email: tqhbang@utc2.edu.vn Chương 4. Giao thức tầng mạng 223/08 - 10/10/2010 Ch4. The Network Layer 4.1 - Giới thiệu và chức năng của tầng mạng. 4.2 - Network service model (VC and Datagram). 4.3 - Thiết bị tầng mạng - Bộ định tuyến (router). 4.4 - Giao thức IP (Internet Protocol). 4.5 - Giải thuật chọn đường (Routing Algorithms). 4.6 - Chọn đường trong mạng Internet. Chương 4. Giao thức tầng mạng 323/08 - 10/10/2010 Chức năng của tầng mạng  Truyền các gói tin (packets) từ sending host tới receiving host.  segment  packets (datagrams).  Network layer được cài đặt tại router và cả end system.  Chức năng:  chọn đường (path selection): có nhiều đường đi, gói tin sẽ đi theo đường nào?  chuyển mạch (switching, forwarding): chuyển gói tin từ cổng vào tới cổng ra của router một cách thích hợp.  thiết lập liên kết (call setup): một số kiến trúc mạng cần thiết lập kênh truyền trước khi truyền. network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical network data link physical application transport network data link physical application transport network data link physical Chương 4. Giao thức tầng mạng 423/08 - 10/10/2010 Routing & switching in routers 1 23 0111 value in arriving packet’s header routing algorithm local forwarding table header value output link 0100 0101 0111 1001 3 2 2 1 Chương 4. Giao thức tầng mạng 523/08 - 10/10/2010 Ch4. The Network Layer 4.1 - Giới thiệu và chức năng của tầng mạng. 4.2 - Network service model (VC and Datagram). 4.3 - Thiết bị tầng mạng - Bộ định tuyến (router). 4.4 - Giao thức IP (Internet Protocol). 4.5 - Giải thuật chọn đường (Routing Algorithms). 4.6 - Chọn đường trong mạng Internet. Chương 4. Giao thức tầng mạng 623/08 - 10/10/2010 Network service model  Tầng mạng cung cấp dịch vụ cho tầng Transport:  tin cậy vào tầng network? các gói tin có đến đích đúng thứ tự đã gửi?  thời gian truyền có được đảm bảo? có phản hồi về tình trạng nghẽn mạng?  Hai model cơ bản của tầng mạng: kênh ảo (virtual circuit)  lược đồ (gam) dữ liệu (datagram) Chương 4. Giao thức tầng mạng 723/08 - 10/10/2010 Virtual Circuit  Thiết lập liên kết trước khi truyền dữ liệu và huỷ bỏ liên kết sau khi truyền xong.  VC setup: trước khi truyền, tầng mạng phải thiết lập một kênh truyền ảo (VC) từ sender tới receiver (đã biết địa chỉ).  Data transfer: dữ liệu được truyền qua VC.  VC teardown: một khi sender hoặc receiver muốn ngắt VC, nó thông báo cho network layer biết, network layer sẽ huỷ bỏ VC.  Còn được gọi là connection-oriented  Mỗi gói tin chứa thêm thông tin về kênh mà nó sẽ đi qua (VC identifier number).  Các routers/packet switches trên kênh ảo (VC) luôn nắm giữ trạng thái của kênh đi qua nó. Chương 4. Giao thức tầng mạng 823/08 - 10/10/2010 Virtual Circuit: Signaling protocol  Giao thức truyền các thông điệp giữa end system và network layer để yêu cầu thiết lập, huỷ bỏ VC; giữa các thiết bị chuyển mạch (switches) để thiết lập VC.  Được sử dụng trong mạng ATM, Frame Relay, X.25. application transport network data link physical application transport network data link physical 1. Initiate call 2. incoming call 3. Accept call4. Call connected 5. Data flow begins 6. Receive data Chương 4. Giao thức tầng mạng 923/08 - 10/10/2010 Sự khác biệt giữa liên kết tại tầng Transport và Network? host A server B application transport network data link physical application transport network data link physical application transport network data link physical application transport network data link physical Chương 4. Giao thức tầng mạng 1023/08 - 10/10/2010 Datagram network  Không thiết lập kênh truyền.  Các thiết bị chuyển mạch không cần nắm giữ trạng thái các kênh.  Gói tin được truyền dựa trên địa chỉ của receiving host.  Đường đi của các gói tin giữa hai host có thể khác nhau. application transport network data link physical application transport network data link physical 1. Send data 2. Receive data Chương 4. Giao thức tầng mạng 1123/08 - 10/10/2010 Network taxonomy (review) circuit-switched networks (vd. telephone) communication networks switched networks broadcast networks (vd. Radio, Broadcast TV) packet-switched networks datagram networks (vd. Internet) virtual circuit- switched networks (vd. ATM) FDM TDM Chương 4. Giao thức tầng mạng 1223/08 - 10/10/2010 Datagram or VC network: why? Internet  Mạng máy tính:  dịch vụ nhạy cảm.  không giới hạn thời gian.  Các hệ thống cuối “thông minh” (computer):  có khả năng thích nghi, kiểm soát, khôi phục lỗi.  kiến trúc bên trong mạng đơn giản nhưng kết nối các mạng phức tạp.  Nhiều dạng liên kết mạng dẫn đến một dịch vụ thuần nhất (kênh) là không thích hợp. ATM  Mạng điện thoại (chuyển mạch kênh).  Tương tác người-người đòi hỏi:  thời gian truyền.  độ tin cậy.  dịch vụ phải được đảm bảo.  Các thiết bị cuối đơn giản, dường như cố định:  điện thoại.  mức độ phức tạp nằm bên trong mạng. Chương 4. Giao thức tầng mạng 1323/08 - 10/10/2010 Ch4. The Network Layer 4.1 - Giới thiệu và chức năng của tầng mạng. 4.2 - Network service model (VC and Datagram). 4.3 - Thiết bị tầng mạng - Bộ định tuyến (router). 4.4 - Giao thức IP (Internet Protocol). 4.5 - Giải thuật chọn đường (Routing Algorithms). 4.6 - Chọn đường trong mạng Internet. Chương 4. Giao thức tầng mạng 1423/08 - 10/10/2010 Bộ định tuyến – router  Thực thi các giải thuật chọn đường (routing algorithms).  Chuyển tiếp (forwarding) các gói tin từ cổng vào tới cổng ra thích hợp. Chương 4. Giao thức tầng mạng 1523/08 - 10/10/2010 Input ports Decentralized switching:  sử dụng forwarding table có trong input port memory để tra cứu output port  queuing: nếu các gam dữ liệu (datagram) đến nhanh quá, cần phải xếp hàng chờ xử lý. Physical layer: bit-level reception Data link layer: e.g., Ethernet Chương 4. Giao thức tầng mạng 1623/08 - 10/10/2010 Các cơ cấu chuyển mạch (switching fabrics) Chương 4. Giao thức tầng mạng 1723/08 - 10/10/2010 Output ports  Buffering: khi datagram được gửi ra nhanh hơn tốc độ xử lý, cần đưa vào bộ đệm.  Scheduling discipline: cơ chế lựa chọn datagram từ bộ đệm để tiếp tục gửi đi. Chương 4. Giao thức tầng mạng 1823/08 - 10/10/2010 Ch4. The Network Layer 4.1 - Giới thiệu và chức năng của tầng mạng. 4.2 - Network service model (VC and Datagram). 4.3 - Thiết bị tầng mạng - Bộ định tuyến (router). 4.4 - Giao thức IP (Internet Protocol). 4.5 - Giải thuật chọn đường (Routing Algorithms). 4.6 - Chọn đường trong mạng Internet. Chương 4. Giao thức tầng mạng 1923/08 - 10/10/2010 The Internet (TCP/IP) network layer routing table Network layer được thực thi tại end system cũng như tại router! Routing protocols •path selection •RIP, OSPF, BGP IP protocol •addressing conventions •datagram format •packet handling conventions ICMP protocol •error reporting •router “signaling” Transport layer: TCP, UDP Link layer physical layer Network layer Chương 4. Giao thức tầng mạng 2023/08 - 10/10/2010 IP datagram format ver length 32 bits data (variable length, typically a TCP or UDP segment) 16-bit identifier Internet checksum time to live 32 bit source IP address IP protocol version number header length (bytes) max number remaining hops (decremented at each router) for fragmentation/ reassembly total datagram length (bytes) upper layer protocol to deliver payload to 6 = TCP; 17 = UDP head. len type of service “type” of data flgs fragment offset upper layer 32 bit destination IP address Options (if any) E.g. timestamp, record route taken, specify list of routers to visit. Chương 4. Giao thức tầng mạng 2123/08 - 10/10/2010 IP datagram - example Receiver’s MAC address Sender’s MAC address Type of upper layer’s protocol ( 0x0800 = IP ) Chương 4. Giao thức tầng mạng 2223/08 - 10/10/2010 IP’s HeaderIP version: 4 Header length: 20 bytes TOSTotal length: 72 bytes Id Flags & Fragment’s offset TTL Transport’s protocol: UDP Checksum Source’s IP: 192.168.1.10 Chương 4. Giao thức tầng mạng 2323/08 - 10/10/2010 IP’s Header Dest’s IP: 203.162.4.190 Chương 4. Giao thức tầng mạng 2423/08 - 10/10/2010 Phân tích gói tin tầng Internet - Transport  Địa chỉ MAC của sender & receiver ?  Địa chỉ IP của sender và receiver ?  Độ dài tổng của IP datagram ?  TTL của IP datagram?  Source’s IP, destination’s IP ?  Giao thức sử dụng ở tầng Application ? What are your answers ? Chương 4. Giao thức tầng mạng 2523/08 - 10/10/2010 IP Fragmentation & Reassembly  Fragmentation: gam dữ liệu (datagram) lớn được chia thành nhiều gam dữ liệu nhỏ.  Do mỗi đường truyền giữa các nút (link) có tốc độ giới hạn, chỉ cho phép truyền đơn vị dữ liệu có kích thước tối đa là MTU (Max Transfer Unit)  Reassembly: Các gam dữ liệu nhỏ được hợp nhất thành gam dữ liệu lớn (ngược lại) tại điểm đến cuối cùng fragmentation: in: one large datagram out: 3 smaller datagrams reassembly Chương 4. Giao thức tầng mạng 2623/08 - 10/10/2010 ID =x offset =0 fragflag =0 length =4000 ID =x offset =0 fragflag =1 length =1500 ID =x offset =185 fragflag =1 length =1500 ID =x offset =370 fragflag =0 length =1040 gam dữ liệu lớn được chia thành nhiều gam dữ liệu nhỏ hơn Example  4000 byte datagram  MTU = 1500 bytes 1480 bytes in data field offset = 1480/8 Chương 4. Giao thức tầng mạng 2723/08 - 10/10/2010 IPv4 Addressing: introduction  IP address: Số 32-bit định danh giao diện mạng (interface).  Interface (NIC - Network Interface Card): giao diện kết nối mạng từ nút mạng tới mạng.  host interface: mỗi máy tính thường có một NIC, cho phép nối vào một đường liên kết.  router interface: router thường có nhiều giao diện mạng. 223.1.1.1 223.1.1.2 223.1.1.3 223.1.1.4 223.1.2.9 223.1.2.2 223.1.2.1 223.1.3.2223.1.3.1 223.1.3.27 223.1.1.1 = 11011111 00000001 00000001 00000001 223 1 11 32-bit = 4 số 8-bit  dạng thập phân dễ nhớ: Chương 4. Giao thức tầng mạng 2823/08 - 10/10/2010 Mạng & mạng con (subnet)  Internet = network of networks.  Địa chỉ IP bao gồm 2 phần:  Các bit cao dành cho network.  Các bit thấp dành cho host.  Network:  Mạng tạo bởi các interface có phần network trong IP addr giống nhau.  Các host cùng network có thể trao đổi dữ liệu không cần thông qua router. 223.1.1.1 223.1.1.2 223.1.1.3 223.1.1.4 223.1.2.9 223.1.2.2 223.1.2.1 223.1.3.2223.1.3.1 223.1.3.27 network = 3 IP networks LAN Chương 4. Giao thức tầng mạng 2923/08 - 10/10/2010 IP addressing: Class-full Chương 4. Giao thức tầng mạng 3023/08 - 10/10/2010 Subnet  Đôi khi cần chia nhỏ một mạng thành các mạng nhỏ hơn (subnet)  Ví dụ: Chương 4. Giao thức tầng mạng 3123/08 - 10/10/2010 Subnet mask  Một interface trong mạng cần có:  IP address  Mặt nạ mạng con (subnet mask):  Là một số 32 bit bao gồm các bit cao = 1 và các bit thấp = 0. Các bit 1 quy định subnet, các bit 0 quy định địa chỉ host.  từ subnet mask có thể xác định ranh giới giữa địa chỉ mạng và địa chỉ của interface (host).  Ví dụ: Subnet gồm các host 192.168.10.x, một host có thể có thông số như sau:  IP = 192.168.10.1  SM = 255.255.255.0 (111111111.11111111.11111111.00000000)  Kiểm tra xem hai IP có cùng một subnet không?  (IP1 XOR IP2) AND SM = 0? Chương 4. Giao thức tầng mạng 3223/08 - 10/10/2010 Network addr, Broadcast và loopback  Để ám chỉ một mạng, thay địa chỉ host bằng các bit 0, ví dụ: 192.168.10.0  Broadcast: Địa chỉ host thay bằng các bit 1, vd: 192.168.10.255 Các gói tin có ip đích dạng broadcast sẽ được gửi cho mọi host trong mạng.  Loopback ip: 127.x.x.x các gói tin được coi như được gửi tới từ nút khác.  thường dùng 127.0.0.1 Chương 4. Giao thức tầng mạng 3323/08 - 10/10/2010 IP addressing: CIDR  Class-full addressing: sự phân lớp cứng nhắc, không còn thích hợp nữa.  CIDR (Classless InterDomain Routing): Vị trí ngăn cách giữa net addr và host addr tuỳ ý. addr format: a.b.c.d/x, với x là số lượng bit dành cho net addr. 11001000 00010111 00010000 00000000 network part host part 200.23.16.0/23 Chương 4. Giao thức tầng mạng 3423/08 - 10/10/2010 IP addresses: how to get one?  Làm thế nào để có địa chỉ IP cho host?  Người quản trị hệ thống thiết lập (TCP/IP properties trong Windows 2000/XP).  RARP (Reverse Address Resolution Protocol):  RARP server cung cấp IP cho client dựa trên bảng cấu hình sẵn có (từ địa chỉ vật lý (MAC)  IP).  BOOTP (BOOTstrap Protocol):  BOOTP server cung cấp IP cho client dựa trên bảng cấu hình sẵn có.  DHCP (Dynamic Host Configuration Protocol):  Giao thức cấp phát địa chỉ IP động.  DHCP server phụ trách việc cấp phát/thu hồi IP cho/từ các DHCP client. Client có thể nhận IP khác nhau tuỳ thời điểm kết nối. Chương 4. Giao thức tầng mạng 3523/08 - 10/10/2010 Phân cấp địa chỉ Internet - ISP “Send me anything with addresses beginning 200.23.16.0/20” 200.23.16.0/23 200.23.18.0/23 200.23.30.0/23 Fly-By-Night-ISP Organization 0 Organization 7 Internet Organization 1 ISPs-R-Us “Send me anything with addresses beginning 199.31.0.0/16” 200.23.20.0/23 Organization 2 ... ... ISP's block 11001000 00010111 00010000 00000000 200.23.16.0/20 Organization 0 11001000 00010111 00010000 00000000 200.23.16.0/23 Organization 1 11001000 00010111 00010010 00000000 200.23.18.0/23 Organization 2 11001000 00010111 00010100 00000000 200.23.20.0/23 ... *.. *. *. Organization 7 11001000 00010111 00011110 00000000 200.23.30.0/23 ICANN: Internet Corporation for Assigned Names and Numbers Chương 4. Giao thức tầng mạng 3623/08 - 10/10/2010 NAT: Network Address Translation 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4 138.76.29.7 local network (e.g., home network) 10.0.0/24 rest of Internet Datagrams with source or destination in this network have 10.0.0/24 address for source, destination (as usual) All datagrams leaving local network have same single source NAT IP address: 138.76.29.7, different source port numbers Chương 4. Giao thức tầng mạng 3723/08 - 10/10/2010 NAT: Network Address Translation (cont)  Một LAN chỉ sử dụng một IP duy nhất khi giao tiếp với mạng ngoài.  Từ đó: Không cần tìm dải IP từ ISP để cấp phát cho các thiết bị mạng trong (máy trạm) vì chỉ dùng 1 IP. Thay đổi IP của máy trạm nội bộ mà không ảnh hưởng tới mạng ngoài. Thay đổi ISP mà không cần thay đổi địa chỉ các thiết bị mạng trong. Các thiết bị mạng trong không “nhìn thấy” được từ mạng ngoài. Chương 4. Giao thức tầng mạng 3823/08 - 10/10/2010 NAT: Implementation NAT router:  outgoing datagrams: replace (source IP address, port #) of every outgoing datagram to (NAT IP address, new port #) . . . remote clients/servers will respond using (NAT IP address, new port #) as destination addr.  remember (in NAT translation table) every (source IP address, port #) to (NAT IP address, new port #) translation pair  incoming datagrams: replace (NAT IP address, new port #) in dest fields of every incoming datagram with corresponding (source IP address, port #) stored in NAT table Chương 4. Giao thức tầng mạng 3923/08 - 10/10/2010 NAT example 10.0.0.1 10.0.0.2 10.0.0.3 S: 10.0.0.1, 3345 D: 128.119.40.186, 80 1 10.0.0.4 138.76.29.7 1: host 10.0.0.1 sends datagram to 128.119.40, 80 NAT translation table WAN side addr LAN side addr 138.76.29.7, 5001 10.0.0.1, 3345 …… …… S: 128.119.40.186, 80 D: 10.0.0.1, 3345 4 S: 138.76.29.7, 5001 D: 128.119.40.186, 802 2: NAT router changes datagram source addr from 10.0.0.1, 3345 to 138.76.29.7, 5001, updates table S: 128.119.40.186, 80 D: 138.76.29.7, 5001 3 3: Reply arrives dest. address: 138.76.29.7, 5001 4: NAT router changes datagram dest addr from 138.76.29.7, 5001 to 10.0.0.1, 3345 Chương 4. Giao thức tầng mạng 4023/08 - 10/10/2010 ICMP (Internet Control Message Protocol)  Giao tiếp ở mức mạng giữa các hosts, routers  thông báo lỗi (vd: không tìm được đường đi, không gửi tin được tới host, port…).  echo request/reply.  ICMP có thể coi là một thành phần của IP  về mặt kiến trúc, ICMP thuộc về tầng ứng dụng.  sử dụng UDP.  ICMP msg  được đóng gói trong IP datagrams/packet.  type + code + 8 bytes of IP datagram. Type Code description 0 0 echo reply (ping) 3 0 dest. network unreachable 3 1 dest host unreachable 3 2 dest protocol unreachable 3 3 dest port unreachable 3 6 dest network unknown 3 7 dest host unknown 4 0 source quench (congestion control - not used) 8 0 echo request (ping) 9 0 route advertisement 10 0 router discovery 11 0 TTL expired 12 0 bad IP header Chương 4. Giao thức tầng mạng 4123/08 - 10/10/2010 IPv6  IPv4: sử dụng 32-bit địa chỉ IP sẽ là không đủ???  IPv6: sử dụng 128-bit địa chỉ. phần tiêu đề (header) cung cấp khả năng xử lý nhanh hơn, chất lượng hơn (QoS). 40 bytes header. không cho phép phân mảnh (fragmentation).  ICMP v6. [RFC 1885] Chương 4. Giao thức tầng mạng 4223/08 - 10/10/2010 IPv6: datagram format  ver: phiên bản (6=v6, 4#v4!!).  priority: thứ tự các gói tin trong cùng flow.  flow: nhãn của luồng mà gói tin thuộc về  các ứng dụng đòi hỏi chất lượng cao  flow.  ứng dụng không đòi hỏi chất lượng  không được coi là flow.  next header: giao thức tầng trên. Chương 4. Giao thức tầng mạng 4323/08 - 10/10/2010 IPv6 datagram analysis (example) 0000: 00 A0 24 6F B6 A3 00 A0 24 6F B7 02 86 DD 60 00 ..$o....$o....`. 0010: 00 00 00 CB 06 40 5F 15 50 00 82 C0 0E 00 00 BD .....@_.P....... 0020: 00 A0 24 6F B7 02 5F 15 50 00 82 C0 0E 00 00 BD ..$o.._.P....... 0030: 00 A0 24 6F B6 A3 23 3F 04 06 63 A9 BC 4A 1E 41 ..$o..#?..c..J.A 0040: B0 80 80 18 43 80 74 8A 00 00 01 01 08 0A 00 0A ....C.t......... 0050: 96 D9 00 00 14 D5 4C 61 73 74 20 6C 6F 67 69 6E ......Last login 0060: 3A 20 54 75 65 20 4A 61 6E 20 20 37 20 31 37 3A : Tue Jan 7 17: 0070: 30 33 3A 34 36 20 66 72 6F 6D 20 61 6C 69 63 65 03:46 from alice 0080: 2D 76 36 2E 69 70 76 36 0D 0A 57 61 72 6E 69 6E -v6.ipv6..Warnin 0090: 67 3A 20 6E 6F 20 4B 65 72 62 65 72 6F 73 20 74 g: no Kerberos t 00A0: 69 63 6B 65 74 73 20 69 73 73 75 65 64 2E 0D 0A ickets issued... 00B0: 4F 70 65 6E 42 53 44 20 31 2E 32 20 28 49 50 4E OpenBSD 1.2 (IPN 00C0: 47 4B 45 52 29 20 23 31 3A 20 46 72 69 20 4E 6F GKER) #1: Fri No 00D0: 76 20 31 35 20 30 38 3A 30 33 3A 34 32 20 50 53 v 15 08:03:42 PS 00E0: 54 20 31 39 39 36 0D 0A 0D 0A 57 65 6C 63 6F 6D T 1996....Welcom 00F0: 65 20 74 6F 20 4F 70 65 6E 42 53 44 2E 0D 0A 0D e to OpenBSD.... 0100: 0A A3 5F 44 A9 .._D. Receiver’s MAC Sender’s MAC Type: 0x86DD (IPv6) Chương 4. Giao thức tầng mạng 4423/08 - 10/10/2010 IPv6 datagram analysis (example) cnt. 0000: 00 A0 24 6F B6 A3 00 A0 24 6F B7 02 86 DD 60 00 ..$o....$o....`. 0010: 00 00 00 CB 06 40 5F 15 50 00 82 C0 0E 00 00 BD .....@_.P....... 0020: 00 A0 24 6F B7 02 5F 15 50 00 82 C0 0E 00 00 BD ..$o.._.P....... 0030: 00 A0 24 6F B6 A3 23 3F 04 06 63 A9 BC 4A 1E 41 ..$o..#?..c..J.A 0040: B0 80 80 18 43 80 74 8A 00 00 01 01 08 0A 00 0A ....C.t......... 0050: 96 D9 00 00 14 D5 4C 61 73 74 20 6C 6F 67 69 6E ......Last login 0060: 3A 20 54 75 65 20 4A 61 6E 20 20 37 20 31 37 3A : Tue Jan 7 17: 0070: 30 33 3A 34 36 20 66 72 6F 6D 20 61 6C 69 63 65 03:46 from alice 0080: 2D 76 36 2E 69 70 76 36 0D 0A 57 61 72 6E 69 6E -v6.ipv6..Warnin 0090: 67 3A 20 6E 6F 20 4B 65 72 62 65 72 6F 73 20 74 g: no Kerberos t 0
Tài liệu liên quan